基于FPGA的高速实时数据采集系统设计
扫描二维码
随时随地手机看文章
摘 要:设计一款基于FPGA的高速实时数据采集系统,该系统采用FPGA作为控制器,主要完成通道选择控制及增益设置、A/D转换控制、数据缓冲异步FIFO三部分功能。系统采用Verilog HDL语言,通过软件编程控制硬件实现通道的选择和可编程增益放大器放大倍数的设置,利用FPGA内部自带的RAM设计16位的FIFO,实现数据的缓冲存储。这种基于FPGA的同步采集、实时读取采集数据的方案,可以提高系统采集和传输速度。系统的仿真验证结果显示,所设计的高速实时数据采集系统达到了预期的功能。
关键词:数据采集系统;FPGA;DSP;FIFO
O 引 言
随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制和科学研究中已成为必不可少的部分。在信号测量、图像处理、音频信号处理等一些高速、高精度的测量中都需要进行高性能的数据采集。
传统的数据采集系统往往采用单片机或数字信号处理器(DSP)作为控制器,控制模/数转换器(ADC)、存储器和其他外围电路的工作。但由于单片机本身的指令周期以及处理速度的影响,其时钟频率较低,各种功能都要靠软件的运行来实现,软件运行时间在整个采样时间中占有很大的比例,效率较低,很难满足系统对数据采集系统实时性和同步性的要求。然而基于DSP的数据采集系统,虽然处理速度快,但成本较高,过于频繁的中断会使CPU的效率降低,响应速度变差。
采用可编程逻辑器件设计数据采集系统,具有开发周期短,集成度高,功耗低,工作频率高,设计费用低,编程配置灵活等一系列优点。此外,还可以在FPGA芯片内进行采集控制、缓冲、处理、传输控制、通信。但采用FPGA作为数据采集系统的控制器也存在一些问题,主要是一般都要外挂数据缓冲区,降低了系统的传输速度,同时增加了成本。这里给出一种基于FPGA的同步采集、实时读取采集数据的数据采集方案,提高了系统采集和传输速度。FPGA作为数据采集系统的控制器,其主要完成通道选择控制、增益设置、A/D转换控制、数据缓冲异步FIFO四部分功能。
l 主要器件的选取
1.1 可编程增益放大器的选取
由于传感器输出的信号一般比较微弱,为了能利用模/数转换器的满量程分辨率,需要将传感器输出的微弱信号放大,由于每个通道输出的信号一般不同,所以对每个通道提供的放大倍数也要不同。选用可编程增益放大器PGA202/203级联来为各个通道提供不同的放大倍数。PGA202/203是增益可数字控制的单片集成放大器,其中PGA202的增益范为1,10,100,1 000(10进制);PGA203的增益范为1,2,4,8(二进制)。采用PGA202/203级联可实现1~8 000等16种不同的放大倍数,完全能满足对不同信号采用不同的放大倍数以及对较宽范围内信号的检测要求以及微弱信号的采集的要求。
1.2 A/D转换器的选取
A/D转换器决定数据采集系统的精度和分辨率,所以A/D转换器的选取尤为重要。选取A/D转换器需要考虑的因数主要有分辨率、精度、速度、电源要求、接口及转换器的类型等。
因逐次逼近型A/D转换器具有转换速度快,精度较高,灵活和价格适中的特点,因此综合考虑精度、速度和成本后,选用选用TI公司生产的专门用于数据采集系统的逐次逼近型16位A/D转换器ADS8322。其主要性能指标如下:分辨率为16位;采样率最大为500 kHz;内带2.5 V的基准源;单极性输入;内带采样保持器;低功耗;在采样率为500 kHz时,功耗为85 mw;16位数据并行输出。ADS8322的最小时钟周期为100 ns;最大采集时间为0.4μs;最大转换时间为1.6μs;最大数据通过率为500 kHz。从由ADS8322的性能指标可以看出,ADS8322非常适合用于高速、高精度的数据采集系统中。
1.3 FPGA芯片的选取
FPGA主要用于控制整个系统协调工作。作为数据采集系统的控制器,主要负责控制A/D工作转换、通道选择、增益设置、作为数据采集系统的缓冲存储器等。综合考虑芯片性能和成本,选用A1tera公司的新一代低成本FPGA-CycloneⅡ系列EP2C50F484芯片,CycloneⅡFPGA是基于StratixⅡ的90 nm工艺推出的低成本FPGA。其在cyclone的基础上增加了硬的DSP块,最大的CycloneⅡ规模是Cyclone的3倍,在芯片总体性能上要优于Cyclone系列器件。EP2C50F484芯片具有50 528个逻辑单元,86个嵌入式18×18乘法器模块,4个锁相环,129个。M4K RAM,4个时钟控制块,16个全局时钟网络,总的RAM空间为594 432位,最大用户可用I/O引脚数294个。使得CycloneⅡ适合用于复杂逻辑以及有存储、缓冲功能的数据采集系统中。
2 系统整体结构
系统整体框图如图1所示。
整个系统由信号调理、采集转换、定时和逻辑控制、缓冲存储、以及高速数据传输接口等部分组成。信号调理电路主要包括信号放大和信号滤波电路,因为传感器输出的信号通常比较微弱,为了能充分利用A/D转换器的满量程分辨率,就需要对输入信号进行放大。由于对不同的输入信号一般需要不同的放大倍数,所以信号放大选用可编程增益放大器来完成。可编程增益放大器的放大倍数由FPGA编程控制;信号滤波则根据香农定理的要求。考虑到A/D的转换速率,对输入信号的带宽进行限制,以防止采样信号产生“混叠现象”;采集转换是用ADS8322转换芯片完成模拟信号的数字化;定时和逻辑以及缓冲存储都由FPGA来完成。FPGA主要负责采集通道的选择、可编程增益放大倍数的控制、A/D转换器的控制、采集数据的缓冲存储等任务。高速数据传输总线选用USB总线,uSB总线可即插即用。uSB 2.0协议中,数据传输速率最大可达480 Mb/s,这完全能满足高速数据采集和传输的要求。
基于Verilog设计的自动数据采集系统由硬件控制A/D转换器以及自动向FIFO存储器中存储数据。采样频率由FPGA的输出时钟决定,当FIFO中的数据写满时,FIFO的满标志(FULL)置1,数据通过USB总线传输到计算机进行存储,以待后续处理。由于先存入FIFO的数据先输出,所以采集不会中断,从而能实现连续的实时数据采集和实时数据处理。
3 仿真验证结果
3.1 通道选择及放大倍数设置
通道选择采用8选1数据选择器来完成,通过输入信号b[2:0]的不同组合选择不同的通道(Charmel);通过PGA202/203的级联,在PGA202/PGA203的放大倍数控制端a3a2/a1a0不同组合时,设置不同的放大倍数。例如,在a3a2 a1 a0=0000,设置增益gain为1;在a3 a2 al a0=0001,设置增益gain为2;在…a3a2al a0=11ll时,设置增益gain为8 000。增益gain可以从l~8 000设置,如波形图2中所示。较大范围增益的设置可实现对较宽范围内信号的检测以及微弱信号的采集。在Modelsim SE 6.1b软件中进行了FPGA控制通道选择及增益设置的仿真,仿真波形如图2所示。
3.2 FPGA控制ADS8322转换的设计
根据ADS8322的工作转换时序图,用VerilogHDL编写了FPGA控制ADS8322转换的程序。在QuartusⅡ7.2软件中进行了编译综合;在ModelsimSE 6.1b中进行了波形仿真,其仿真波形如图3所示。由仿真波形可以看出,其完全符合ADS8322的工作时序。
3.3 存储和传输模块设计
FPGA内部自带594 432位的RAM可作为数据缓冲存储器,这样可以充分利用FPGA的资源,提高系统的运行速度和节约系统成本,EP2C50F484芯片最大可用I/O引脚数达294个,用Verilog语言在EP2C50F484内部设计一个异步的FIFO(先入先出存储器)。在设计异步FIFO时,不可能仅靠设置一个计数器来记录FIFO剩余空间的增减,因为不可能让两个不同时钟控制同一个变量。所以必须通过比较读写指针来确定FIFO是空、是满,还是处于其他状态。由于在空状态和满状态时,读指针和写指针都相同,所以采取在每个指针前增加1个比特位来区别空状态和满状态的方法。如果写指针递增到超出了FIFO的末地址,新增加的比特位就改变1次,读指针也一样。这样,如果就两个指针的最高位不同,就表示FIFO处于满状态;如果两个指针完全相同,就表示处于空状态。
3.3.1 FIFO指针的设计
如果FIFO指针的增减采用二进制计数方式,在计数器增或减1时,就有可能出现不只1个比特位发生变化(如1011~1100)的情况,在一个时钟沿同步多个变化的信号比较困难。基于这个问题,采用格雷码计数法来改变指针,在每次时钟转换时只改变指针的1个比特位。
3.3.2 FIFO的软件程序
FIFO的软件程序由5个程序模块组成,即顶层模块(fifo)、存储模块(fifomem)、读指针同步模块(sync_r)、写指针同步模块(sync_w)和空状态判断模块(r_empty)、满状态判断模块(w_full)。每个模块均采用vetilog语言编程,在QuartusⅡ7.2中完成编译和综合,并在ModelSim SE 6.1b进行波形仿真。存储模块的仿真波形如图4所示,由波形可以看出,先进入存储器的数据(wdata)先输出;读地址(radder)和写地址(wadder)可以相同也可以不同。由仿真波形可看出,设计的FIFO达到了预期的功能。
4 结 语
实现了基于FPGA的高速实时数据采集系统设计。采用FPGA作为数据采集系统的控制核心,通过软件编程控制硬件实现通道的选择;通过可编程增益放大器实现放大倍数的控制;利用FPGA控制实现A/D转换,并给出控制转换波形。由此可见,控制波形完全符合ADS8322的转换时序,达到设计的目的。利用FPGA内部的自带RAM来设计16位的FIFO,可实现数据的缓冲存储,充分利用系统资源,节约系统成本,具有良好的可移植性和可扩展性,便于调试和修改。此外,基于先入先出存储器(FIFO)的先人先出特性,可以实现数据的实时高速采集。在高速实时数据采集方面有较好的应用前景。