专利名称:基于fpga实现数字示波器数据压缩的方法
技术领域:
本发明涉及示波器数字信号处理领域,尤其涉及一种基于FPGA实现数字示波器数据压缩的方法。
背景技术:
数字示波器通过模数转换器(以下简称ADC)将模拟量转换为数字信号,通过FPGA采集最终显示到屏幕上。存储深度是数字示波器的重要指标参数。存储深度越高,在相同的采样时间内,示波器可以显示出越明显的波形细节,更利于用户观察波形。刷新率也是示波器的一个参数,刷新率越快,可以让用户看到更加连续的波形,提高示波器的捕获率。但是存储深度的越来越高,一次的采样的时间内需要存取的ADC数据也将变多,如果直接将全部ADC数据进行显示的话,会导致示波器的刷新速度变慢,波形的捕获率变低。
发明内容
本发明的目的在于提供一种既提高了示波器的存储深度,同时又不降低示波器刷新速度的基于FPGA实现数字示波器数据压缩的方法。为了实现上述目的,本发明如下技术方案
一种基于FPGA实现数字示波器数据压缩的方法,所述示波器包括
外部存储器,存储外部的模拟信号经模数转化器采集到的数字信号数据;
FPGA,处理所述外部存储器中数字信号数据;
屏幕,显示经所述FPGA处理后的数字信号;
所述外部存储器、FPGA和屏幕依次电性连接,其特征在于
所述基于FPGA实现数字示波器数据压缩的方法为通过FPGA对经模数转化器转化后的数字信号数据进行压缩,模数转化器转换后的数字信号存储在外部存储器中,采集到的信号总量定义为T,FPGA压缩率定义为N,每一组数据信号量为a,组数为T/N,根据给定的压缩率,FPGA先从外部存储器存储的数字信号中取出a个数字信号存入存储器FIFOl内,并从a个数据信号量中找出该组数字信号中的第一个值、最大值、最小值和最后一个值经压缩模块存入存储器FIF02内,在FPGA处理数字信号同时,将外部存储器中未处理的数字信号存入存储器FIFOl内为取值做准备,对每一组数据进行循环取值处理,直到FPGA经循环T/N次处理完存储在外部存储器中的信号总量T为止,当存储器FIF02内数据量达到设定值,存储器FIF02将不再存取数据,将存储器FIF02内的数据送给示波器屏幕显示。所述方法具体步骤如下
I).判断FPGA中存储器FIFOl内存储的数据量,若FPGA中存储器FIFOl内存储的数据量小于设定值,则将外部存储器中的数据存入存储器FIFOl内,若FPGA中存储器FIFOl内存储的数据量大于设定值,则外部存储器中的数据不存入存储器FIFOl内; 2).对存入到FPGA中存储器FIFOl内的每一组数字信号按公差为I等差数列方式进行编号,存入的第一个数字信号编号为a,存入的最后一个数字信号编号为1,将这组带有编号的数字信号按编号公差为I进行递减比对,将求出的这组数字信号中第一个数据值、最大数据值、最小数据值和最后一个数据值经压缩模块存入FPGA中存储器FIF02内;
3).对存入到FPGA中存储器FIFOl内的每组数字信号重复步骤2);
4).判断FPGA中存储器FIF02内存储的数据量,达到设定的数据量值,则不再存取数据,将FPGA中存储器FIF02内存储的数据发送给示波器屏幕显示,未达到设定的数据量值,则继续存取数据。所述的外部存储器、存储器FIFOl和存储器FIF02为先进先出式存储器。所述的模数转化器收集模拟信号,并将转化的数字信号存入外部存储器中。本发明采用以上技术方案,利用FPGA对模拟信号经模数转化器采集到的数字信号数据进行压缩,FPGA先将外部存储器中的数据存入存储器FIFOl内,根据给定的压缩率,从一组数据中找出数据的第一个值、最大值、最小值和最后一个值经压缩模块存入存储器FIF02内,之后不断的对外部存储器中的数据循环处理,当存储器FIF02内数据量达到设定值,存储器FIF02将不再存取数据,将存储器FIF02内的数据送给示波器屏幕显示,本发明既提高了示波器的存储深度,同时加快了示波器刷新速度,得到更加连续的波形,提高示波器的捕获率。
现结合附图对本发明做进一步详述
图1是本发明FPGA数据压缩的流程示意 图2是本发明FPGA数据压缩算法的流程图。
具体实施例方式请参阅图1-2之一所示,本发明包括外部存储器1,存储外部的模拟信号经模数转化器采集到的数字信号数据,FPGA2,处理所述外部存储器中数字信号数据,屏幕3,显示经所述FPGA2处理后的数字信号,所述外部存储器1、FPGA2和屏幕3依次电性连接。请参阅图1,在此实施例中,介绍了 ADC数据在FPGA内部压缩的基本流程。所述基于FPGA实现数字示波器数据压缩的方法为通过FPGA2对经模数转化器7转化后的数字信号数据进行压缩,模数转化器7转化后的数字信号存储在外部存储器I中,采集到的信号总量定义为T,FPGA压缩率定义为N,每一组数据信号量为a,组数为T/N,根据给定的压缩率,FPGA2先从外部存储器存储I的数字信号中取出a个数字信号存入存储器FIFOl 4内,并从a个数据信号量中找出该组数字信号中的第一个值、最大值、最小值和最后一个值经压缩模块存入存储器FIF02 6内,在FPGA2处理数字信号同时,将外部存储器I中未处理的数字信号存入存储器FIFOl 4内为取值做准备,对每一组数据进行循环取值处理,直到FPGA2经循环T/N次处理完存储在外部存储器I中的信号总量T为止,当存储器FIF02 6内数据量达到设定值,存储器FIF02 6将不再存取数据,将存储器FIF02 6内的数据送给示波器屏幕3显示。在此提供一优先实施例,将结合给定的数据压缩率进一步对本发明做说明,设定外部存储器I模拟信号经模数转化器7采集到T=IOM的数字信号数据,数据压缩率N为10000:1,每一组的信号量定义为a,具体步骤如下
I).判断FPGA2中存储器FIFOl 4内存储的数据量,若FPGA2中存储器FIFOl 4内存储的数据量小于设定值,则将外部存储器I中的数据存入存储器FIFOl 4内,若FPGA2中存储器FIFOl 4内存储的数据量大于设定值,则外部存储器中的数据不存入存储器FIFOl 4内,具体方法如下
判断存储器FIFOl 4内存储的数据量是否小于64个,若存储器FIFOl 4内存储的数据量小于64个,则将外部存储器I中的数据存入存储器FIFOl 4内,若存储器FIFOl 4内存储的数据量大于64,则外部存储器中的数据不存入存储器FIFOl 4内;
本发明此实施例中判断FPGA 2中存储器FIFOl 4内存储的数据量步骤中设定值为64,应当理解,这里的设定值仅仅出于解释目的,并不是限制本发明的权利范围,本实施例中设定值与存储器FIFOl 4从外部存储器I每一次读取的数字信号量相同,存储器类型不同则每次读取的数字信号量不同,可根据存储器的类型进行设定,一般设定值为存储器每次读取的信号量值。2).对存入到FPGA2中存储器FIFOl 4内的每一组数字信号按公差为I等差数列方式进行编号,存入的第一个数字信号编号为a,存入的最后一个数字信号编号为1,将这组带有编号的数字信号按编号公差为I进行递减比对,将求出的这组数字信号中第一个数据值、最大数据值、最小数据值和最后一个数据值经压缩模块5存入FPGA2中存储器FIF026内,具体方法如下
a).将信号量a赋值为N,对a进行自减,即将信号量a赋值为10000,并将信号量a的编号按公差为I依次递减,为方便数字信号循环分组,在此将每组信号量定义为压缩率,a=N,如图2步骤SI;
b).判断信号量a是否为N,即当信号量a= 10000时,压缩模块中RD_en置为1,WR_en置为1,将存储器FIFOl内的读取的第一个数据值经压缩模块5存入FPGA 2中存储器FIF02 6内,如图2步骤Sll;
c).判断信号量是否在l〈a〈N之间,即当信号量a在l〈a〈10000,压缩模块5中RD_en置为1,WR_en置为0,将每一个数据读出,并且与上一个数据进行比较,求出数据的最大值和最小值,经压缩模块5存入FPGA 2中存储器FIF02 6内,如图2步骤S12;
d).判断信号量是否为1,即当信号量a=I时,压缩模块中RD_en置为1,WR_en置为0,将存储器FIFOl内的读取的最后一个个数据值经压缩模块5存入FPGA 2中存储器FIF026内,如图2步骤S13;
3).对存入到FPGA2中存储器FIFOl 4内的每组数字信号重复步骤2);
当信号量a的值为I时,再将信号量a赋值为10000,开始循环,如图2步骤S2
4).判断FPGA2中存储器FIF02 6内存储的数据量,达到设定的数据量值,则不再存取数据,将FPGA 2中存储器FIF02 6内存储的数据发送给示波器屏幕3显示,未达到设定的数据量值,则继续存取数据。此实施例中,外部存储器中存储的数据量为10M,数据压缩率N为10000:1,在每此循环中,将求出的这组数字信号中第一个数据值、最大数据值、最小数据值和最后一个数据值经压缩模块5存入FPGA2中存储器FIF026内,每一组中的10000个数据经本实施例中的方法变成4个数据,所以当存储器FIF02 6内的数据量未达到4000时,则继续存取数据,当存储器中的数据量达到4000时,存储器FIF02 6将不再存取数据,将存储器FIF02 6的数据送给示波器屏幕显示,至此数据在示波器屏幕上显示的更加光滑,另需要强调一点,本发明在对每组中的数字信号进行编号时,编号由所附压缩率值由大到小进行编号,仅为方便实施例说明,并非对本发明方法的限制。本实施例中的描述的方法在对数据做处理时,相对一传统的处理方式既提高了示波器的存储深度,同时加快了示波器刷新速度,得到更加连续的波形,提高示波器的捕获率。由以上实施方式的详述,希望能更加清楚描述本发明的特征,倘若本领域的技术人员对本发明进行各种改动和变形属于本发明权利要求及其等同技术范围的,则本发明也包括这些改动和变形在内。
权利要求
1.一种基于FPGA实现数字示波器数据压缩的方法,所述示波器包括外部存储器,存储外部的模拟信号经模数转化器采集到的数字信号数据;FPGA,处理所述外部存储器中数字信号数据;屏幕,显示经所述FPGA处理后的数字信号;所述外部存储器、FPGA和屏幕依次电性连接,其特征在于所述基于FPGA实现数字示波器数据压缩的方法为通过FPGA对经模数转化器转化后的数字信号数据进行压缩,模数转化器转化后的数字信号存储在外部存储器中,采集到的信号总量定义为T,FPGA压缩率定义为N,每一组数据信号量为a,组数为T/N,根据给定的压缩率,FPGA先从外部存储器存储的数字信号中取出a个数字信号存入存储器FIFOl内, 并从a个数据信号量中找出该组数字信号中的第一个值、最大值、最小值和最后一个值经压缩模块存入存储器FIF02内,在FPGA处理数字信号同时,将外部存储器中未处理的数字信号存入存储器FIFOl内为取值做准备,对每一组数据进行循环取值处理,直到FPGA经循环T/N次处理完存储在外部存储器中的信号总量T为止,当存储器FIF02内数据量达到设定值,存储器FIF02将不再存取数据,将存储器FIF02内的数据送给示波器屏幕显示。
2.根据权利要求1所述的基于FPGA实现数字示波器数据压缩的方法,其特征在于 所述方法具体步骤如下1).判断FPGA中存储器FIFOl内存储的数据量,若FPGA中存储器FIFOl内存储的数据量小于设定值,则将外部存储器中的数据存入存储器FIFOl内,若FPGA中存储器FIFOl 内存储的数据量大于设定值,则外部存储器中的数据不存入存储器FIFOl内;2).对存入到FPGA中存储器FIFOl内的每一组数字信号按公差为I的等差数列方式进行编号,存入的第一个数字信号编号为a,,存入的最后一个数字信号编号为1,将这组带有编号的数字信号按编号公差为I进行递减比对,将求出的这组数字信号中第一个数据值、最大数据值、最小数据值和最后一个数据值经压缩模块存入FPGA中存储器FIF02内;3).对存入到FPGA中存储器FIFOl内的每组数字信号重复步骤2);4).判断FPGA中存储器FIF02内存储的数据量,达到设定的数据量值,则不再存取数据,将FPGA中存储器FIF02内存储的数据发送给示波器屏幕显示,未达到设定的数据量值, 则继续存取数据。
3.根据权利要求1或2所述的基于FPGA实现数字示波器数据压缩的方法,其特征在于所述的外部存储器、存储器FIFOl和存储器FIF02为先进先出式存储器。
4.根据权利要求1或2所述的基于FPGA实现数字示波器数据压缩的方法,其特征在于所述的模数转化器收集模拟信号,并将转化的数字信号存入外部存储器中。
全文摘要
本发明公开了一种基于FPGA实现数字示波器数据压缩的方法通过FPGA对模拟信号经模数转化器采集到的数字信号数据进行压缩,FPGA先将外部存储器中的数据存入存储器FIFO1内,根据给定的压缩率,从一组数据中找出数据的第一个值、最大值、最小值和最后一个值经压缩模块存入存储器FIFO2内,并对外部存储器中的数字信号循环处理,当存储器FIFO2内数据量达到设定值,存储器FIFO2将不再存取数据,将存储器FIFO2内的数据送给示波器屏幕显示,本发明既提高了示波器的存储深度,同时加快了示波器刷新速度,得到更加连续的波形,提高示波器的捕获率。
文档编号G01R13/02GK102998501SQ201210583140
公开日2013年3月27日 申请日期2012年12月28日 优先权日2012年12月28日
发明者蔡振越, 庄双集, 陈焕洵 申请人:福建利利普光电科技有限公司