CN104459259B - 一种用于示波器的改进型波形内插系统 - Google Patents
一种用于示波器的改进型波形内插系统 Download PDFInfo
- Publication number
- CN104459259B CN104459259B CN201410777803.8A CN201410777803A CN104459259B CN 104459259 B CN104459259 B CN 104459259B CN 201410777803 A CN201410777803 A CN 201410777803A CN 104459259 B CN104459259 B CN 104459259B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- interpolation
- multiplier
- accumulator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种用于示波器的改进型波形内插系统,其FPGA插值模块包括线性插值模块和正弦插值模块,本发明改进了传统的线性插值方法,省去乘法器,采用累加器实现相同的功能。本发明改进了正弦插值方法,即复用乘法器。复用乘法器对插值速度有影响,本发明采取一次复用的方法,节约一半资源同时降低一半速度,但是此速度还是快于软件插值的运算速度。由于本发明定位于低端的示波器,针对FPGA资源特别是硬件乘法器资源有限的情况下优化插值设计,兼顾资源和速度,所以本发明相对于现有技术实现较好较快的插值效果。
Description
技术领域
本发明涉及到数字示波器,特别是低成本的数字示波器。在FPGA上实现数字内插功能,节约硬件资源,丰富波形细节信息。
背景技术
数字示波器是电子测量领域中是一种常见的仪器,利用模数转换器对模拟信号进行数字量化采样,通过数据处理把采样数据存储到存储器内,需要时再把数据取出,在屏幕上通过连线或者点阵重现波形。低成本示波器受制于模数转换器芯片的工作速率,实时采集的数据在小时基档时很难看到比较细节的波形。此时可以通过数字内插计数很好的恢复和重建原信号。
常见的数字内插方法分为线性内插和正弦内插。线性插值主要用于三角波和方波的波形内插,实现过程如图1。y1,y2是t1,t2时刻的ADC值(t1<t2),插值倍数为m,则插值后的新数据为:
而正弦插值主要用于正弦波的内插。理论上当输入信号的频率的两倍小于采样频率时,通过正弦内插可以还原出波形来。插值公式如下:
由上式可以看出,正弦插值的实现过程就是采样序列和插值系数的乘积再相加,而插值系数为
在实际应用中,插值倍数有限,用来做运算的原始点也有限,即上式k是有限的。特定的k值和插值倍数完全可以确定插值系数。
一般低端插值运算通过软件实现。此时,在插值倍数比较大的情况下,软件运算量很大,运算速度跟不上波形的刷新速度。而软件还要负责示波器别的控制和计算,这样插值运算导致示波器整体性能下降。插值运算还可以通过硬件FPGA实现,由公式(2)可以看出,运算主要是通过乘法器和加法器实现,速度优势很明显,但是所耗费的资源也比较多。在低端示波器中,所用的逻辑资源特别是专用的乘法器的数量有限。
发明内容
针对低成本示波器的实际情况,本发明提供了一种采用复用乘法器以及采用累加器模块来代替乘法器,节约资源,软件直接读出插值数据,显示比较细节的波形信息,同时还会加快波形的显示速度的一种用于示波器的改进型波形内插系统。
为了解决以上问题本发明提供了一种用于示波器的改进型波形内插系统,其特征在于:包括ADC采样模块、数据缓存模块、FPGA插值模块、数据输出模块;
示波器中,模数转换器ADC采样模块将模拟信号转换为数字信号存入数据缓存模块,缓存后的数据进入FPGA插值模块,插值后的数据经过数据输出模块输出给CPU,软件读取数据显示波形。
本发明重点研究插值模块,涉及到的插值类型分为线性插值和正弦插值。根据公式(1),得到如图3所示的现有线性插值框图。现有线性插值方法先得到两个相邻的原始数据点的差值(差值可能为正,负或者0)。差值与插值倍数m(m≥2)的商就是步进量(同理,步进量也可能为正,负或者0)。第一个原始数据点数值加上步进量与插值序号n(n取值从0到m-1共m个数值)的乘积即为插值数据点的数值。一次插值运算结束后得到m个插值数据,然后缓存器输出新的原始数据点再进行插值。输出原始数据的时钟clk_div是插值运算时钟clk的m分频,这样保证了插值后数据的连续性。
由于低成本示波器FPGA逻辑资源,特别是硬件乘法器有限。本发明改进了传统的线性插值方法,如图4所示,省去乘法器,采用累加器模块实现相同的功能。步进量的取得和传统方法一样,还是由相邻的原始数据点的差值除以插值倍数得到。累加器模块输出的数据即为插值数据。
累加器模块的第一个输入端用于输入步进量,第二输入端用于输入前一次的累加结果;由于第一个插值数据点为第一个原始数据点,所以累加器模块第一输入端通过二选一数据选择器Ⅱ选择0,第二输入端通过二选一数据选择器Ⅰ选择第一个原始点数据,这样累加器模块第一次输出即为第一个原始点,以后的输出为二选一选择器Ⅱ选择步进量与二选一选择器Ⅰ选择前一次累加器模块的和相加,得到m个差值数据,不仅节省了硬件乘法器资源,而且不影响运算速度。之后原始点更新,得到新的步进量,进行下一轮的m个数据插值。
正弦插值实现过程比线性插值复杂多了。传统的正弦插值方法如下,根据示波器时基档位确定插值倍数m,参考公式3,先求出插值系数,考虑到插值效果,选用k个原始点来做插值(k最小为2,为偶数),得到m*k的系数矩阵,把每一列系数存于系数存储器中,共存k个系数存储器,每个存储深度为插值倍数m。数据缓存模块连续输出k个原始数据,输出时钟clk_div是插值运算时钟clk的m分频。系数存储器的输出时钟即为插值时钟clk,第一个clk到来时,k个系数存储器共输出k个系数分别与k个原始数据相乘。当乘法运算结束后,k个乘积相加即为一个插值点。下一个clk到来时,系数存储器的读地址增加一位,新的系数被读入,再与k个原始数据相乘相加得到新的插值点。插值点数达到插值倍数时,一次正弦插值结束,得到m个插值数据。数据缓存模块的读时钟读入下一个原始数据点,丢弃k个原始点里面最先采集的原始点,这样形成新的k个数据,进行插值得到新的m个插值数据。
正弦插值所耗费的乘法器资源较多,特别是多通道的数据同时插值时。按照现有技术,资源有限时,只能减少原始点的个数k值,即减少乘法器的个数。但是原始点越少,插值效果就越差。于是本发明提出改进型正弦插值方法,即复用乘法器。复用乘法器对插值速度有影响,本发明采取一次复用的方法,节约一半资源同时降低一半速度,但是此速度还是快于软件插值的运算速度。首先插值系数要做相应的变动,由于乘法器减半,需要把之前m*k矩阵的后k/2列隔行穿插到原来的矩阵中,得到新的2m*k/2系数矩阵。新矩阵的行数翻倍而列数减半,这样系数存储器个数也减半,每个存储器深度加倍。仍使用k个原始数据,第一个时钟clk来时,从k/2个系数存储器读出相应的系数,分别与二选一数据选择器Ⅲ选择的前k/2个原始数据相乘,结果存入相应的k/2个乘法寄存器。下一个时钟clk来时,系数存储器再读出新的系数,同时与数据选择器选择后k/2个数据进行乘法运算,结果存入另外的k/2个乘法寄存器,两次共k个乘积相加就得到了一个插值点。具体实现是每个乘法器前后两次的乘法结果先相加,然后k/2个加法结果再累加得到一个插值数据。当m次插值过程结束后得到m个插值数据后,原始点更新,各系数存储器从头再输出数据,再重复上面的流程得到新的m个插值数据。与传统的方法相比,本发明要用2m个时钟clk完成m个插值点数据,最终输出时钟为插值时钟clk的二分频时钟。虽然处理速度慢了一倍,但还是比纯软件插值快很多,另外节省了一半的硬件资源。
由于本发明定位于低端的示波器,针对FPGA资源特别是硬件乘法器资源有限的情况下优化插值设计,兼顾资源和速度,所以本发明相对于现有技术实现较好较快的插值效果。
附图说明
图1为线性插值示意图;
图2为系统整体框图;
图3为传统线性插值实现框图;
图4为本发明的线性插值改进框图;
图5为k=10时正弦插值现有实现框图;
图6为k=10时本发明的正弦插值改进框图。
具体实施方式:
本发明提供了一种用于示波器的改进型波形内插系统,包括ADC采样模块、数据缓存模块、插值模块、数据输出模块;示波器中,模数转换器ADC采样模块将模拟信号转换为数字信号存入数据缓存模块,缓存后的数据进入插值模块,插值后的数据经过数据输出模块输出给CPU,软件读取数据显示波形,所述的插值模块为FPGA插值模块,FPGA插值模块包括线性插值模块和正弦插值模块,
所述的线性插值模块包括步进量模块、累加器模块、数据输出模块;
步进量模块:先得到两个相邻的原始数据点的差值,该差值除以插值倍数m(m≥2),即得到步进量;
累加器模块:累加器模块输出的数据即为插值数据;累加器模块的第一个输入端用于输入步进量,第二输入端用于输入前一次的累加结果;由于第一个插值数据点为第一个原始数据点,所以累加器模块第一输入端通过二选一数据选择器Ⅱ选择0,第二输入端通过二选一数据选择器Ⅰ选择第一个原始点数据,这样累加器模块第一次输出即为第一个原始点,以后的输出为二选一选择器Ⅱ选择步进量与二选一选择器Ⅰ选择前一次累加器模块的和相加,得到m个差值数据;之后原始点更新,得到新的步进量,进行下一轮的m个数据插值;
数据输出模块;每次累加器模块完成累加后,得到的结果输出给软件,输出时钟为累加器模块的工作时钟;
所述正弦插值模块包括数据选择器模块、插值系数存储器模块、乘法器模块、累加器模块、数据输出模块;
数据选择器模块:使用k个原始点进行正弦插值时(k为大于等于2的偶数),用k/2个二选一数据选择器Ⅲ选择原始点数据,第一个时钟clk k/2个数据选择器依次分别选择D1–Dk/2,第二个时钟clk依次分别选择Dk/2+1-Dk;
插值系数存储器模块:使用k个数据进行m插值时,需要k/2个系数存储器,每个存储器在时钟clk到来时输出对应的是2m*k/2系数矩阵对应的列数据;即系数存储器一存储的第一列的数据,共2m个插值系数,系数存储器二存储的是第二列的数据,共2m个插值系数,其他类推;系数存储器数据输出时钟就是上面数据选择器模块的选择时钟clk;
乘法器模块:同上数据选择器模块,选用k/2个乘法器,每一个乘法器的第一个输入端为上述数据选择器模块选择的原始点数据;另外一个输入端为k/2个系数存储器输出的插值系数,每个时钟clk到来时,原始点与对应的插值系数分别相乘;
累加器模块:第1个时钟clk到来时,上述k/2个乘法器得到k/2个乘法结果,暂时寄存这k/2个结果;下一个时钟clk到来时,k/2个乘法器又得到另外k/2个乘法结果,这两组k/2组乘积累加就得到一个数据插值点;具体实现是每个乘法器前后两次的乘法结果先相加,然后k/2个加法结果再累加得到一个插值数据;当m次插值过程结束后得到m个插值数据后,原始点更新,各系数存储器从头再输出数据,再重复上面的流程得到新的m个插值数据;
数据输出模块:上述累加器模块每两个clk时钟才得到一个数据插值点,所以输出时钟为clk/2(clk的二分频)。
下面结合附图对本发明作进一步详细的描述。
如图4所示,一100MHz的正弦波以合适的幅度输入至一8位的模数转换器ADC,模数转换器ADC以最高速率1GHz对进行采样,输出的8位采样数据速率为1Gbps,每个原始点的间隔为1ns。示波器时基档位为5ns,每格时基档位里面有50个像素点,那每个像素点的时间间隔为100ps,即波形的显示点的时间间隔为100ps,就需要10倍的正弦插值才能达到这个显示效果。
如图6所示,缓存模块的读时钟为clk_div为6.25MHz,插值时钟clk为62.5MHz,m为10,k为10。第一个clk时五个二选一数据选择器Ⅲ分别选择D1到D5,和此时的插值系数分别相乘,得到的结果存入M1到M5。第二个时钟clk到来时,五个二选一数据选择器Ⅲ分别选择D6到D10,与新的系数相乘得到M6到M10,M1到M10依次相加得到一个数据插值点,用31.25MHz时钟存入波数据输出模块。20个clk后得到10个插值点。新的clk_div到来,原始点数据更新,再进行新的插值运算。当插值点数满足条件后,停止插值,软件直接读取显示。
以上所述仅为本发明的优选实施例而已,并不限制于本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (2)
1.一种用于示波器的改进型波形内插系统,包括ADC采样模块、数据缓存模块、插值模块、数据输出模块;示波器中,模数转换器ADC采样模块将模拟信号转换为数字信号存入数据缓存模块,缓存后的数据进入插值模块,插值后的数据经过数据输出模块输出给CPU,软件读取数据显示波形,其特征在于:所述的插值模块为FPGA插值模块,FPGA插值模块包括线性插值模块和正弦插值模块,
所述的线性插值模块包括步进量模块、累加器模块、数据输出模块;
步进量模块:先得到两个相邻的原始数据点的差值,该差值除以插值倍数m“m≥2”,即得到步进量;
累加器模块:累加器模块输出的数据即为插值数据;累加器模块的第一个输入端用于输入步进量,第二输入端用于输入前一次的累加结果;由于第一个插值数据点为第一个原始数据点,所以累加器模块第一输入端通过二选一数据选择器Ⅱ选择0,第二输入端通过二选一数据选择器Ⅰ选择第一个原始点数据,这样累加器模块第一次输出即为第一个原始点,以后的输出为二选一选择器Ⅱ选择步进量与二选一选择器Ⅰ选择前一次累加器模块的和相加,得到m个差值数据;之后原始点更新,得到新的步进量,进行下一轮的m个数据插值;
数据输出模块;每次累加器模块完成累加后,得到的结果输出给软件,输出时钟为累加器模块的工作时钟。
2.根据权利要求1所述的一种用于示波器的改进型波形内插系统,其特征在于:所述正弦插值模块包括数据选择器模块、插值系数存储器模块、乘法器模块、累加器模块、数据输出模块;
数据选择器模块:使用k个原始点进行正弦插值时“k为大于等于2的偶数”,用k/2个二选一数据选择器Ⅲ选择原始点数据,第一个时钟clk k/2个数据选择器依次分别选择D1–Dk/2,第二个时钟clk依次分别选择Dk/2+1-Dk;
插值系数存储器模块:使用k个数据进行m插值时,需要k/2个系数存储器,每个存储器在时钟clk到来时输出对应的是2m*k/2系数矩阵对应的列数据;即系数存储器N存储的第N列的数据,共2m个插值系数,其中1<N≤k/2;系数存储器数据输出时钟就是上面数据选择器模块的选择时钟clk;
乘法器模块:选用k/2个乘法器,每一个乘法器的第一个输入端为上述数据选择器模块选择的原始点数据;另外一个输入端为k/2个系数存储器输出的插值系数,每个时钟clk到来时,原始点与对应的插值系数分别相乘;
累加器模块:第1个时钟clk到来时,上述k/2个乘法器得到k/2个乘法结果,暂时寄存这k/2个结果;下一个时钟clk到来时,k/2个乘法器又得到另外k/2个乘法结果,这两组k/2组乘积累加就得到一个数据插值点;具体实现是每个乘法器前后两次的乘法结果先相加,然后k/2个加法结果再累加得到一个插值数据;当m次插值过程结束后得到m个插值数据后,原始点更新,各系数存储器从头再输出数据,再重复上面的流程得到新的m个插值数据;
数据输出模块:上述累加器模块每两个clk时钟才得到一个数据插值点,所以输出时钟为clk/2,clk的二分频。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410777803.8A CN104459259B (zh) | 2014-12-16 | 2014-12-16 | 一种用于示波器的改进型波形内插系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410777803.8A CN104459259B (zh) | 2014-12-16 | 2014-12-16 | 一种用于示波器的改进型波形内插系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104459259A CN104459259A (zh) | 2015-03-25 |
CN104459259B true CN104459259B (zh) | 2017-05-31 |
Family
ID=52905641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410777803.8A Active CN104459259B (zh) | 2014-12-16 | 2014-12-16 | 一种用于示波器的改进型波形内插系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104459259B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897020A (zh) * | 2017-01-13 | 2017-06-27 | 深圳市鼎阳科技有限公司 | 一种数字信号固定插值倍数的线性插值方法和装置 |
CN108663555B (zh) * | 2017-03-29 | 2022-05-20 | 普源精电科技股份有限公司 | 一种数字示波器的波形搜索方法及数字示波器 |
CN107579785A (zh) * | 2017-09-14 | 2018-01-12 | 中国电子科技集团公司第四十研究所 | 一种信号接收机扫频模式下的校准插值方法 |
CN113447692B (zh) * | 2021-08-31 | 2021-11-26 | 深圳市鼎阳科技股份有限公司 | 具有数据记录功能的示波器及其波形显示方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6965383B2 (en) * | 2001-12-11 | 2005-11-15 | Lecroy Corporation | Scaling persistence data with interpolation |
CN102109542B (zh) * | 2009-12-25 | 2015-10-07 | 北京普源精电科技有限公司 | 一种可配置复用数字内插和数字滤波功能的数字示波器 |
CN102565484B (zh) * | 2010-12-31 | 2015-12-02 | 北京普源精电科技有限公司 | 具有精细触发功能的数字示波器 |
CN104077492B (zh) * | 2014-07-08 | 2018-08-14 | 中国电子科技集团公司第四十一研究所 | 一种基于fpga的采样数据内插方法 |
-
2014
- 2014-12-16 CN CN201410777803.8A patent/CN104459259B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104459259A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104459259B (zh) | 一种用于示波器的改进型波形内插系统 | |
CN101847986B (zh) | 一种实现fft/ifft变换的电路及方法 | |
CN105718404A (zh) | 一种基于fpga的方波发生器及方法 | |
CN103870438B (zh) | 一种利用数论变换计算循环卷积的电路结构 | |
CN101710136B (zh) | 一种序列波形发生器 | |
CN102788891B (zh) | 一种复杂的波形序列发生器 | |
CN103676742B (zh) | 一种基于fpga的数据重组方法 | |
CN102109542B (zh) | 一种可配置复用数字内插和数字滤波功能的数字示波器 | |
CN102053186A (zh) | 一种具有可变阶数数字滤波器的数字示波器 | |
CN104393854B (zh) | 基于fpga的时分复用级联积分梳状抽取滤波器及其实现方法 | |
CN102437852A (zh) | 一种利用低速ADC实现2.5GSa/s数据采集电路及方法 | |
CN102916914A (zh) | 一种模拟前端的数据接收处理系统 | |
CN103226543A (zh) | 一种流水线结构的fft处理器 | |
CN101126772A (zh) | 一种示波器的高速信号重构方法 | |
CN107300632A (zh) | 一种荧光示波器的数字信号处理系统 | |
CN106502309A (zh) | 基于da归零保持函数的时域交织任意波形合成装置及方法 | |
CN103558434B (zh) | 一种快速定位数字示波器触发点系统 | |
CN101919706B (zh) | 抽取滤波的方法及装置 | |
CN103678729A (zh) | 一种基于fpga实现的高速a/d采样数据实时存储方法 | |
CN104133658A (zh) | 一种片内真随机数生成器 | |
CN105116318A (zh) | 一种逻辑分析仪中实现毛刺检测的方法 | |
CN102129419B (zh) | 基于快速傅立叶变换的处理器 | |
CN104777456B (zh) | 可配置的雷达数字信号处理器及其处理方法 | |
CN103020014A (zh) | 一种大点数fft的实现方法 | |
US5651014A (en) | Rate generator circuit for semiconductor test system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |