基于FPGA的PCI数据采集卡设计
扫描二维码
随时随地手机看文章
摘要 论述了基于FPGA的PCI数据采集卡设计,板卡实现了查询、中断和DMA等多种方式读取数据,可以实时采集数据、实现大容量数据的缓存,还有效地解决了对数据高速采集、传输的需求,设计采用FPGA实现数据采集控制逻辑,减少了开发周期,并可在线修改设计和进行设计升级。
关键词 FPGA;PCI;数据采集
数字信号处理的出现改变了信息与信号处理技术,而数据采集作为数字信号处理的前期工作,在整个数字系统中起到关键性作用。
1 数据采集系统
数据采集是指从待测设备中自动采集信息的过程。图1显示了基于PC机的典型数据采集系统的各项组成部分。
选用PC机作为控制系统操作平台,为了能和外部设备通信,PC机提供了外置的USB、串口、并口及内置的ISA、PCI等接口。PCI总线接口速度快、系统占用率低,有完备的即插即用管理体制,是目前计算机插卡式外设总线的事实标准。本文利用FPGA通过PCI接口芯片与计算机进行通信,FPGA外接FIFO存储器,A/D转换数据直接存储在FIFO中,实现了数据的高速采集与连续稳定数据流的输出。
2 数据采集硬件设计
PCI数据采集板卡的硬件整体框架如图2所示。
2.1 PCI总线接口设计
PCI总线是一个地址/数据、命令/字节选择信号复用的总线。它采用主从信号双向握手的方式来控制数据的传输,其接口电路设计和传统总线接口电路设计有较大的差别,所以必须严格遵守PCI总线规范所规定的技术规范。本文采用PLX公司的PC19054作为PCI总线的接口控制器。PCI9054是专用的PCI接口芯片,它主要是将复杂的PCI时序转换为简单的时序。
2.2 FPGA设计
FPGA设计用超高速集成电路硬件描述语言(Very High Speed Integrated Circuit hardware Dessription Language,VHDL)实现,设计软件选用Quartus II。VHDL设计主要分为:总线读写设计,A/D控制设计,D/A控制设计,定时/计数器设计及DIO设计。
2.2.1 总线读写设计
总线读写设计是FPGA设计的顶层模块,主要完成PCI9054与本地的通信,实现数据的正确传输。PCI9054单周期读、写和DMA读的VHDL语言时序控制状态机如图3所示。状态0为空闲状态,状态1为总线保持状态,状态2为DMA读状态,状态3为单周期写状态,状态4为读写操作完成状态。
2.2.2 控制信号说明
ADS#:地址选通信号,双向。表示地址有效及新的总线访问周期的开始,在总线访问周围的第一个时钟周期有效。BLAST#:突发传输结束信号,双向。由当前本地总线主动方驱动,用来表明总线传输的最后一个数据传输。LW/R#:写/读信号,双向。低位读,高为写。LHOL D:保持总线请求,输出。请求使用本地总线。当控制可以实现时,本地总线仲裁回应LHOLDA。
2.2.3 A/D控制设计
A/D控制是数据采集卡的主要部分,设计主要包括:A/D采样时钟的产生,分组采集控制,触发设置及FIFO读写控制等。
(1)A/D采样时钟的产生。采样时钟的产生主要是根据设定的采样频率产生具有一定低脉宽的信号,这是为了在转换完成时能正确地读出转换数据。值得注意的是,在FIFO溢出的情况下及分组采集的组间间隔时间段内要停止输出采集脉冲。
(2)分组采集控制。分组采集是按照内外时钟源分别进行设计的。首先根据组循环次数及首末通道设置计算出一组内总共要采集的点数,即:一组内总共要采集的点数=(末通道-首通道+1)*组循环次数。
在内时钟模式下,启动A/D转换后,在每次转换完成后采集点数加1,直至加到一组内总共要采集点数为止,此时停止输出转换脉冲,而后进入组问间隔时间,开始对基准时钟进行计数,计到设定的组间间隔值后输出转换脉冲,再次进入转换计数周期,依此重复下去。
在外时钟模式下,当检测到外时钟下降沿时开始输出转换脉冲并在转换完成后进行计数,直至加到一组内总共要采集的点数为止,此时停止输出转换脉冲,当再次出现外时钟的下降沿时,便开始新的一组分组采集。
(3)触发设置。触发设置是根据板卡控制字中的触发源、触发方向及触发类型共同决定的。
(4)FIFO读写控制。FIFO的读是由PCI9054发起的,在PCI9054读周期,在满足地址条件的情况下,产生FIFO的读信号,将A/D数据传输到主机。
FIFO的写信号是由A/D芯片的STS信号控制的,当STS信号由高变为低时表示本次转换完成,且数据线上数据有效,而FIFO是在下降沿启动写周期,上升沿将数据打入FIFO中,因此只需将STS信号取反后赋给FIFO的写信号。
3 硬件设计的测试
在板卡的设计过程中,硬件设计的测试是按如下步骤进行的:首先通过功能仿真及时序仿真排除设计上的大部分错误;其次通过PCItr ee软件进行测试,通过简单的功能测试,如开关量输入输出;然后通过简易演示程序测试;最后通过高级程序的全面测试。在不同的测试阶段会发现各种设计问题,再将设计回归到功能仿真及时序仿真,反复修改完善程序,直到最终满足功能设计要求。
4 结束语
本文完成了基于FPGA的PCI数据采集卡的设计,板卡实现了查询、中断和DMA等多种方式读取数据,可实时采集数据,实现大容量数据的缓存,有效地解决对数据高速采集和传输的需求。可直接插在PC机或与之兼容的计算机内任一PCI插槽中,构成各领域的数据采集、波形分析和处理系统,也可构成工业生产过程监控系统。