发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种基于FPGA实现的高速A/D采样数据实时存储方法。
本发明的技术方案如下:
一种基于FPGA实现的高速A/D采样数据实时存储方法,其中,包括以下步骤:
步骤1:在A/D处理时钟的上升沿获取数据,将获取的4路12对A/D输入差分信号通过FPGA的差分信号输入缓冲器转换为单端信号后,组成4组12位数据字段的A/D输入数据值,所述4组分别设置为A、B、C、D,进入步骤2;
步骤2:;判断当前输入的A、B、C、D是缓冲降速组合中的第几次输入;若为第1次输入则进入步骤3;若为第2次输入则进入步骤4;若为第3次输入则进入步骤5;
步骤3:将A、B写入第一片SRAM临时缓冲的低24位,将C、D写入第二片SRAM临时缓冲的低24位,将数据输入缓冲计数值增加1,返回步骤1;
步骤4:将A、B写入第一片SRAM临时缓冲的高24位,将C、D写入第二片SRAM临时缓冲的高24位,将数据输入缓冲计数值增加1,返回步骤1;
步骤5:将第一片SRAM临时缓冲数据写入第一片SRAM数据缓冲的低48位,将新获得的A、B数据写入第一片SRAM数据缓冲的高24位;将第二片SRAM临时缓冲数据写入第二片SRAM数据缓冲的低48位,将新获得的C、D数据写入第二片SRAM数据缓冲的高24位;进入步骤6;数据输入缓冲计数值赋值为1,返回步骤1;
步骤6:在第一片SRAM及第二片SRAM处理时钟的下降沿将第一片SRAM数据缓冲中的72位数据放入第一片SRAM数据总线上,将第二片SRAM数据缓冲中的72位数据放入第二片SRAM数据总线上,进入步骤7;
步骤7:在第一片SRAM及第二片SRAM处理时钟的上升沿将第一片SRAM、第二片SRAM总线上的数据写入到第一片SRAM和第二片SRAM中,返回步骤6。
所述的存储方法,其中,所述步骤1中,所述差分信号输入数据的速率为500MHz。
所述的存储方法,其中,所述步骤1中,所述A/D转换器为2个双A/D内核转换器。
所述的存储方法,其中,所述步骤1中,所述A、B、C、D是在采样率2GSPS工作时交替双沿进行采样获得,并且设置A路数据在时间上先于B路数据,B路数据在时间上先于C路数据,C路数据在时间上先于D路数据。
采用上述方案,能够灵活的匹配高速A/D转换器和SRAM的操作速率和数据宽度。本方法充分发挥高速A/D转换器性能及工作方式,在2GSPS采样率情况下使用ADC12D1800CIUT交叉采样、双沿采样工作模式,有效降低A/D转换器数据输出速率,为后级数据处理及存储带来方便。本方法在FPGA中作数据处理,对高速A/D转换器输出的4路数据进行分路存储处理(A、B一路,C、D一路),这样有效降低了后端信号处理的压力和复杂性,能够和SRAM进行数据匹配。A/D采样数据每缓冲3次存1次SRAM的处理方式,使得A/D输出数据的速率和SRAM操作的速率进行合理匹配。同时高速A/D输出每2路数据经3次数据组合后数据宽度为72位,能够和SRAM72位位宽很好的匹配,SRAM资源充分利用,存储资源利用率100%。A/D处理时钟上升沿获取数据并组合,SRAM处理时钟下降沿将数据放入SRAM数据总线,SRAM在其时钟上升沿便可将数据进行写入操作的时序逻辑设计,其充分协调匹配了高速A/D数据处理及SRAM操作规则,使得高速A/D转换器和SRAM的工作逻辑无缝对接,无死区,充分发挥器件工作效率,也提高了采样系统的工作效率。数据存储采用了二级缓冲机制,有效解决了SRAM总线数据保持时间和高速A/D转换器数据更新速率之间的矛盾,使得可以将正确的A/D采样数据存入SRAM中,在提高系统工作效率的情况下保证了数据存储的质量。这样存储于SRAM的所有数据都是实时连续的A/D采样数据,无数据丢失。以上过程确保了整个存储数据过程的实时性、连续性、正确性和稳定性。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
实施例1
高速采集的数字信号首先在FPGA里进行处理,经降速、组合、存储,然后通过PCI总线传给上位端CPU进行处理,所以高速A/D数据的不丢失实时存储是整个采集系统的关键环节。本设计中高速A/D转换器选用的是National Semiconductor公司生产的12位精度,采样率可达3.6GSPS的型号为ADC12D1800CIUT的双A/D内核转换器,本设计中该高速A/D转换器工作于2GSPS的采样频率。FPGA选用的是XILINX公司Virtex-5系列的XC5VLX110-1FF1153,该型FPGA可用I/O端口最大可达800个,完全能够满足与高速A/D转换器和后端SRAM的接口连接。SRAM选用的是CypressSemiconductor公司的CY7C1474V33,其存储深度可达72Mbit,数据宽度为72位,最大存储速率可达200MHz。这里选用的FPGA和SRAM均为普通常用器件,其价格相对于高速A/D转换器要差10-20倍之多,所以在成本预算上要节省很大一部分。上述硬件只是优选的列举,在依托本发明的实现方法的基础上,任何只要实现本发明方法的硬件选用都应当在本发明的保护范围之内。
FPGA作为数据中转转换的中间部分,其在整个采样之中的关系如下图1所示,高速A/D经采样输出4路12位宽的差分数据送入FPGA进行处理,在FPGA中经降速处理、位宽扩展组合、数据缓冲及时序匹配等处理最终将高速A/D采样的数据不丢失的实时写入2片SRAM中。上述硬件中,优选的ADC12D1800CIUT在采样率2GSPS工作的情况下,其器件内部2个转换核交替双沿采样工作,最终如图1所示以4路形式输出,每路输出速率为500MHz。4路A/D采样数据分别拟命为A、B、C、D四路数据,同样也代表同时到达的A路数据在时间上先于B路数据,B路先于C路数据,C路先于D路数据。4路速率为500MHz的差分信号输入到FPGA中进行处理,由于Virtex-5系列FPGA-1速率的芯片最高处理速率为550MHz,所以500MHz速率的A/D采样数据已经基本达到FPGA的最高处理速率。
在FPGA中,首先须将接收到的差分数据转换为单端信号,然后组成4组12位数据字段。由于片外CY7C1474V33型高速SRAM最高处理速率可达200MHz,远远低于A/D采样降速组合输出的500MHz速率,所以A/D采样的数据不能够达到实时存储,必须再次进行降速、扩展重组操作才能进行有效的存储。在本发明设计中采用166.67MHz速率进行SRAM的存储,正好是A/D采样每路输出速率的三分之一,也在其最高可工作速率之下。这样A/D采样的数据需接收缓冲3次然后存1次SRAM。采用上述方案,解决了高速A/D数据输出速率和SRAM存储速率不匹配的问题。CY7C1474V33的数据宽度为72位,正好每片一次可以存储2路A/D采样的数据,使用2片这样的SRAM芯片即可实现4路A/D采样数据的存储,也就是说解决了高速A/D数据输出宽度与SRAM存储接口宽度不匹配的问题。
图2则展示了高速A/D数据缓冲、扩展组合、存储的过程。在该存储过程中,1片SRAM用于存取A、B两路的A/D转换数据,另1片SRAM用于存取C、D两路的A/D转换数据。两片SRAM可实现18M字节的存储深度,2GSPS采样下相当于12582912次采集,可存储6.291456ms长的连续不丢失实时采集数据。A/D及SRAM的数据操作基本时序如下图3所示,通过该时序可以获知:A/D数据在每个A/D处理时钟的上升沿就可获取,组合整理好的SRAM数据在SRAM处理时钟的下降沿放入SRAM的数据总线,这样在下一个SRAM时钟的上升沿便可将数据写入到SRAM中。依CY7C1474V33产品手册可知SRAM数据需在总线上保持至少其时钟周期的一半以上(1/166.7MHz/2=3ns)才能够写入SRAM中,而A/D输出数据的更新时间为2ns,所以这里不做特殊处理的话,没等数据写入到SRAM中,总线上的数据便已经发生了变化,将造成数据存储错误的发生。为了避免存储数据没来得及写入发生错误,这里需做二级缓冲,以使总线上的数据能够保持大于半个SRAM时钟周期(3ns),以确保能够将正确的数据写入SRAM中,采用上述方案解决了SRAM总线数据保持时间和高速A/D转换器数据更新速率之间的矛盾。图3的时序在二级缓冲设计下细化如下图4所示:
在500MHz速率下,A/D和SRAM的时序必须如以上所示,数据组1、2、3必须按次序进行存放,否则将发生严重的数据毛刺现象。第1次时将A、B数据写入SRAM1临时缓冲的低24位,将C、D数据写入SRAM2临时缓冲的低24位,将数据输入缓冲计数值增加1;第2次时将A、B数据写入SRAM1临时缓冲的高24位,将C、D数据写入SRAM2临时缓冲的高24位,将数据输入缓冲计数值增加1。前2次A/D采集数据组分别被存入相应的临时数据缓冲中,第3次时才将之前两次写入临时数据缓冲的数据和第3次的A/D数据一块写入SRAM数据缓冲中,将SRAM1临时缓冲数据写入SRAM1数据缓冲的低48位,将新获得的A、B数据写入SRAM1数据缓冲的高24位;将SRAM2临时缓冲数据写入SRAM2数据缓冲的低48位,将新获得的C、D数据写入SRAM2数据缓冲的高24位;然后在SRAM处理时钟的下降沿将SRAM缓冲数据放到SRAM数据总线上。这样SRAM总线上的数据只有在第3次A/D采样上升沿后才发生变化,其他的2.5个A/D数据周期共5ns的时间属于保持状态,足够FPGA将数据正确的写入SRAM中。前2次的A/D采集数据会被写入临时数据缓冲中,并不会影响SRAM数据总线上的数据,能够正确有效的进行数据的不丢失存储。
本方案中在FPGA里首先对A/D采样的同步时钟进行了2倍频处理,即得到500MHz的A/D处理时钟,这样只需在A/D处理时钟的上升沿进行数据的获取即可。由于处理时钟为500MHz的高速率,所以在数据传输路径上需添加严格的传输延时及时限限制,否则波形上将附着很多小毛刺,信号质量大大降低,很难处理。
经以上A/D降速输出、FPGA降速组合、A/D数据分路存储、并行使用SRAM、FPGA二级缓冲处理等操作,采样率高达2GSPS的12精度A/D采样数据便可不丢失的实时存储于SRAM之中。
实施例2
在上述实施例的基础上,进一步,一种基于FPGA实现的高速A/D采样数据实时存储方法,其中,包括以下步骤:
步骤1:在A/D处理时钟的上升沿获取数据,将获取的4路12对A/D输入差分信号通过FPGA的差分信号输入缓冲器转换为单端信号后,组成4组12位数据字段的A/D输入数据值,所述4组分别设置为A、B、C、D,进入步骤2;
步骤2:;判断当前输入的A、B、C、D是缓冲降速组合中的第几次输入;若为第1次输入则进入步骤3;若为第2次输入则进入步骤4;若为第3次输入则进入步骤5;
步骤3:将A、B写入第一片SRAM临时缓冲的低24位,将C、D写入第二片SRAM临时缓冲的低24位,将数据输入缓冲计数值增加1,返回步骤1;
步骤4:将A、B写入第一片SRAM临时缓冲的高24位,将C、D写入第二片SRAM临时缓冲的高24位,将数据输入缓冲计数值增加1,返回步骤1;
步骤5:将第一片SRAM临时缓冲数据写入第一片SRAM数据缓冲的低48位,将新获得的A、B数据写入第一片SRAM数据缓冲的高24位;将第二片SRAM临时缓冲数据写入第二片SRAM数据缓冲的低48位,将新获得的C、D数据写入第二片SRAM数据缓冲的高24位;进入步骤6;数据输入缓冲计数值赋值为1,返回步骤1;
步骤6:在第一片SRAM及第二片SRAM处理时钟的下降沿将第一片SRAM数据缓冲中的72位数据放入第一片SRAM数据总线上,将第二片SRAM数据缓冲中的72位数据放入第二片SRAM数据总线上,进入步骤7;
步骤7:在第一片SRAM及第二片SRAM处理时钟的上升沿将第一片SRAM、第二片SRAM总线上的数据写入到第一片SRAM和第二片SRAM中,返回步骤6。
所述步骤1中,所述差分信号输入数据的速率为500MHz。
所述步骤1中,所述A/D转换器为2个双A/D内核转换器。
所述步骤1中,所述A、B、C、D是在采样率2GSPS工作时交替双沿进行采样获得,并且设置A路数据在时间上先于B路数据,B路数据在时间上先于C路数据,C路数据在时间上先于D路数据。
采用上述方案,能够灵活的匹配高速A/D转换器和SRAM的操作速率和数据宽度。本方法充分发挥高速A/D转换器性能及工作方式,在2GSPS采样率情况下使用ADC12D1800CIUT交叉采样、双沿采样工作模式,有效降低A/D转换器数据输出速率,为后级数据处理及存储带来方便。本方法在FPGA中作数据处理,对高速A/D转换器输出的4路数据进行分路存储处理(A、B一路,C、D一路),这样有效降低了后端信号处理的压力和复杂性,能够和SRAM进行数据匹配。A/D采样数据每缓冲3次存1次SRAM的处理方式,使得A/D输出数据的速率和SRAM操作的速率进行合理匹配。同时高速A/D输出每2路数据经3次数据组合后数据宽度为72位,能够和SRAM72位位宽很好的匹配,SRAM资源充分利用,存储资源利用率100%。A/D处理时钟上升沿获取数据并组合,SRAM处理时钟下降沿将数据放入SRAM数据总线,SRAM在其时钟上升沿便可将数据进行写入操作的时序逻辑设计,其充分协调匹配了高速A/D数据处理及SRAM操作规则,使得高速A/D转换器和SRAM的工作逻辑无缝对接,无死区,充分发挥器件工作效率,也提高了采样系统的工作效率。数据存储采用了二级缓冲机制,有效解决了SRAM总线数据保持时间和高速A/D转换器数据更新速率之间的矛盾,使得可以将正确的A/D采样数据存入SRAM中,在提高系统工作效率的情况下保证了数据存储的质量。这样存储于SRAM的所有数据都是实时连续的A/D采样数据,无数据丢失。以上过程确保了整个存储数据过程的实时性、连续性、正确性和稳定性。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。