基于FPGA的高速数据采集系统设计
扫描二维码
随时随地手机看文章
随着科学研究和工业生产对数据采集系统的速度、稳定性、准确性要求的不断提高,传统数据采集系统已经逐渐不能满足上述需求。传统的数据采集系统通常使用单片机或DSP作为控制核心,而且需要连接复杂的外围电路和外接存储器,才能完成整个数据采集任务。其中,以单片机做为主控芯片的系统,由于单片机采用串行工作方式,且操作指令周期较长。在应对多路高速数据输入时,采集速率很低.且运行不稳定,很难保证高速数据采集的实时性和同步性。而以DSP作为主控芯片的数据采集系统中,虽然DSP有较高的工作时钟,能满足高速数据采集对速度的需求,但是数据采集工作的完成还需要外围的存储器和相应的逻辑控制模块的辅助,这样就造成设计电路板的面积较大,成本偏高。
正因为传统数据采集系统的上述缺陷,基于FPGA的高速数据采集系统应运而生,成为解决上述问题的有效手段。FPGA芯片具有时钟频率高、内部延时小、工作效率高、扩展方便、I/O资源丰富、存储方式多样、设计灵活通用、全部控制逻辑由硬件完成等优点。通过Verilog硬件描述语言对FPGA进行功能模块设计不同于传统的C语言对单片机的设计,数据在FPGA内部运算、传输等为并行处理,恰好适合多路高频数据处理要求。因此,本文设计了一个基于FPGA的高速数据采集系统,不需搭建复杂的外围电路和外接存储器,在系统的时效性、稳定性和设计成本上均有较大优势。
1 系统结构与方案
本文所设计高速数据采集系统结构如图1所示。本系统FPGA采用Xilinx公司的XC3S200AN-4-FT256-C芯片。该芯片拥有20万门逻辑单元,内含16个18KB的块存储器(Block RA M)与30 KB分布存储器(Distributed RAM),最高工作频率为326 MHz,完全可以满足本系统对时序的需求。系统所用AD转换芯片为ADI公司生产的高速高精度流水线型AD9233模数转换芯片。该系统与PC机之间的数据通信使用串口通信。
2 系统逻辑设计
逻辑部分方案框图如图2所示。
逻辑部分主要由AD芯片控制逻辑、脉冲检测控制逻辑、PC指令解析逻辑、系统运行逻辑4部分组成。
随机序列经过脉冲检测控制逻辑中的包含的上升沿检测逻辑检测到后,输出脉冲信号。每有一个上升沿输入,上升沿检测逻辑就输出一个脉冲信号。上升沿检测逻辑输出的脉冲信号经过脉冲检测控制逻辑内包含的上升沿计数逻辑对上升沿计数,计数结果为当前时刻256μs时间窗内上升沿个数。PC端与采集系统连接采用串口通信。PC指令解析逻辑对PC机的串口指令进行解析,将解析的指令送到控制逻辑,控制逻辑控制统计计数和数据传送。在PC端对采集到的数据通过串口助手来显示。当解析出开始检测指令时,控制逻辑根据两个检测点时刻(一个检测点为随机输入序列的上升沿,另一个检测点为上升沿延时1 ms)使能锁存器对上升沿计数器的计数结果进行锁存,并以该计数值为地址将对应的统计计数器加1。当解析停止检测指令时控制逻辑禁能锁存器和统计计数器。当解析清除指令时,控制逻辑将统计计数器清零。当解析传送数据指令时,控制逻辑将两统计计数器的值分别传送,通过多路选择器分别锁存统计计数器结果,然后启动串口发送逻辑发送锁存器中的数值。
2.1 AD芯片控制逻辑
模拟信号输入到AD芯片进行由连续模拟信号到离散数字信号的转换。AD9233芯片是由1.8 V模拟电源供电、1.8~3.3 V数字电源供电、精度为12位的模数转换器,有80/105/125 Msps三种转换速率的芯片。AD9233的模数转换时序图如图3所示。
图中CLK为AD9233的工作采样时钟,是由FPGA提供的。由FPGA内部的分频电路对系统时钟进行分频,分频后的时钟做为AD9233的工作采样时钟。AD9233的使能端也是由FPGA逻辑来控制的,通过FPGA系统运行逻辑提供的关于AD芯片工作状态指示的信号来控制其工作状态。图中DATA为数字信号输出。用Verilog HDL编写的数据传输部分程序如下:
Rstn低电平有效,对寄存器Shift_Register进行初始化。或者当Shift_Register_En为高电平时开始对14位的寄存器Shift_Register移位赋值。当有模拟信号进入AD转换芯片,根据系统提供的工作采样时钟来将转换出的数字信号输入通过数据以14位为一组传送端口送入FPGA内部,然后数据进入脉冲检测控制逻辑。
2.2 脉冲检测控制逻辑
脉冲控制逻辑主要针对采集到AD转换芯片内部传送到FPGA的数字脉冲信号。主要内容为上升沿计数逻辑。主要由14 bit计数器和脉冲时间节拍计数器组成。CLK250M为系统时钟(250 MHz/4 ns),Rstn为系统复位信号,低电平有效。DI信号为上升沿检测到的脉冲信号。输入信号每有一个上升沿脉冲,就输出一个脉冲信号,脉冲信号的脉宽为一个系统时钟周期。DI信号同时输入到14 bit计数器和时间节拍计数器记录此时刻。14 bit计数器和时间节拍计数器在系统复位时 初始化为0。计数器根据时间节拍计数器最小值与当前时间节拍差值与时间窗比较来决定计数器是加1、减1、保持原值不变。计数器操作情况如下:
当CLK_D_value<=CLK_Window时计数器保持原值不变。
当Pulse=1时,计数器加1。
当CLK_D_value>CLK_Window时,计数器减1,时间节拍计数器加1。
上升沿计数逻辑中计数器的计数值为256 μs时间段内输入随机序列上升沿个数。
脉冲检测控制逻辑仿真时所用仿真软件为ModelSim10.1。测试脚本编写语言为Verilog HDL测试脚本文件中设置系统时钟为25 MHz,复位信号Rstn为高电平,输入的脉冲序列频率为3.125 MHz。仿真结果如图4所示。
2.3 PC指令解析逻辑
PC机与系统之间的数据传输采用RS-232标准进行串口通信。PC指令解析逻辑通过分析PC机通过串口通讯模块发送过来的数据对系统运行模块进行控制。发送接收数据说明如图5所示。信号线从高电平变为低电平开始数据传输,与图中不同之处在于,本文中传输数据位数为8位,替代了图中奇偶校验位,直到接收到停止位,终止这一组数据传输。
通过设置固定的8 bit数据分别作为“开始”、“复位”、“停止”信号,由PC机端串口助手发送数据到FPGA来控制系统完成开始采集数据、清空存储器数据、停止数据采集等工作。同时,配合系统运行逻辑,当有数据被采集时,存储到数据存储器后,通过串口发送到PC端。
2.4 系统运行逻辑
系统运行逻辑为系统中主要逻辑部分。主要功能是协调各个其他逻辑模块的配合工作,处理其他逻辑模块反馈信号,发送控制信号,使数据采集工作完成。当PC机通过串口发送开始检测数据到系统时,经由PC指令解析逻辑分析,发送开始检测信号给系统运行逻辑,系统运行逻辑做出相应反应,给数据存储器提供复位信号,清空存储器中数据,准备存入新采集到的数据,同时使AD控制逻辑给AD转换芯片使能端赋值,使其开始工作。
当有数据被采集到系统时,模数转换芯片将其转换为数字脉冲信号。脉冲信号进入脉冲检测控制逻辑,同时系统控制逻辑部分接到脉冲检测控制逻辑信号,将数据暂时存入数据存储系统。然后将数据存储器中的的数据传送至串口,按8位数据的宽度多次发送给串口控制模块,然后传输至PC机,PC端实时显示所采集到数据。系统采集的部分数据在串口助手软件显示如图6所示。
3 结束语
设计了一种基于FPGA的高速数据采集系统。采用高速模数转换芯片+FPGA芯片+PC机的硬件结构,发挥FPGA的并行数据处理能力,与传统的以DSP和单片机为主要处理芯片的数据采集系统相比,不需要搭建复杂的外围电路,主要功能模块均在FPGA内部通过Verilog HDL语言设计完成,在数据采集速度和系统运行稳定性上均有较大优势,可以满足高速数据采集需求。