(辽宁科技大学,辽宁鞍山114000)
摘要:文章介绍基于PCI总线的多通道数据采集系统设计方法。本系统由高速高精度A/D转换芯片、高性能FPGA芯片、PCI总线接口芯片等组成,重点阐述系统的硬件设计及FPGA各个模块逻辑功能的实现,以此实现了以FPGA为控制核心可同时采集的多通道数据采集系统。
关键词:PCI;多通道数据采集;FPGA
PCI总线(PeripheralComponentInterconnect)是Intel公司推出的一种高性能32/64位局部总线,其最大数据传输速率为132~264Mb/s,是目前使用较为广泛的一种总线。
1设计原理
1.1系统设计框
该数据采集系统的设计主要包括前端的信号输入保护电路,ADC(MAX1312ECM)转换电路、FPGA(XC3S200)模块以及PCI总线接口(PCI9052)。
保护电路的作用主要是保护MAX1312ECM输入不被超出其允许电压范围(±10V)的高电压破坏,在MAX1312ECM的每个模拟输入通道上接上具有正负10V反向击穿电压的双向二极管,便能起到保护MAX1312ECM不会被输入的超高电压损害,该保护电路设计方法简单而实用。
1.2系统PCB设计
板卡的PCB设计要遵循高速信号PCB走线的要求,该板卡采用4层板,两层信号层,一层电源,一层地。系统的PCB设计需要注意的是MAX1312ECM的模拟地和数字地要单点连接;MAX1312ECM芯片下面尽可能不要走数字线;为了降低电源噪声的影响,在靠近MAX1312ECM的数字和模拟电源管脚处加上滤波电容或磁珠。要注意PCI总线端PCI9052与PCI插槽“金手指”的走线:普通信号线长度,从插槽“金手指”的中心到PCI9052长度不超过1.5英寸,33MHz的PCI总线时钟信号走线长度为2.5±0.1英寸。因为PCI总线端的信号采用反射波方式即总线驱动靠反射波叠加使信号电压达到要求的振幅,而电压上升的过渡时间相当于总线周期的三分之一。因此PCI总线端的信号与普通芯片的入射波信号不同,不能直接互连,所以PCI9052内部就完成了信号波形和信号格式的转换。为了满足反射条件,要严格按照上面所说的两个条件进行布线,实际布线中该系统PCB设计对时钟信号采用了蛇形走线,走线长度约为2.5英寸。
2FPGA控制逻辑设计
XC3S200在系统中的作用主要包括对MAX1312ECM的控制、转换数据存储、对PCI9052的数据传输控制等。
MAX1312ECM的采样CONVST信号为采样控制输入信号,在每个CONVST的上升沿对模拟输入信号进行采样保持;EOC是每个通道转换结束输出信号,每次跳变到低电平表示一个通道转换结束,在下一个CLK的上升沿或CONVST的下降沿跳变回高电平;EOLC是最后通道转换结束输出信号,当EOLC信号跳变为低电平表示最后一个通道的转换结束,当CONVST跳变为低电平时,该信号跳变为高电平;CS为MAX1312ECM的片选信号,在该设计中,CS信号输入常低电平,CS信号一直有效;RD信号为读输入信号,RD信号为低电平时启动数据总线的读操作,可以把数据总线的数据读回来;D0~D11为12位的数据总线。
采样控制时序系统复位后,状态在S0,CONVST输出‘1’;上位机软件设置XC3S200中的启动信号adc_start=‘1’启动第一次采样;当adc_start=‘1’时,状态机跳转到S1,CONVST输出‘0’,CONVST信号至少保持低电平0.1us,再通过软件设置adc_start=‘0’停止第一次的采样,状态机跳转到S2;在状态为S2时,CONVST输出‘1’,在CONVST的上升沿,MAX1312ECM采样保持输入电压,并开始转换,与此同时XC3S200不断检测EOC输入信号,EOC输入直接作为RD输出信号输出。当同时启动多个采样通道时,为了可以分辨各个通道到的转换而值,可以通过通道计数器来标志通道号。通道计数器是一个3位计数器。它由EOC的上升沿触发,当检测到EOC的上升沿时,计数器加1,其输出值便作为3位通道号“000”~“111”。当EOLC变低电平时,则复位计数器为0。通过数据合成逻辑,将通道号加上对应的转换数据合并成为16位的数据(最高位常为‘0’)。异步FIFO的FIFO_WR信号直接用EOC进行触发,在FIFO_WR上升沿将FIFO数据线上的16位数据存储到FIFO中。当EOLC=‘0’时,表示MAX1312最后的通道转换结束,状态机跳转到S3,并且CONVST输出‘0’,开始下一次的采样。在一个时钟周期后,状态机无条件跳转到S4,同时CONVST保持低电平,在经过一个时钟周期后状态机无条件跳转到S2,CONVST输出‘1’,MAX1312采样保持第二次需要转换的电压值,XC3S200开始等待读取转换数据。状态机如此循环控制采样以及读取转换数据,直到上位机发出停止采样命令adc_start=‘0’或复位,状态机则跳转到S0等待重新启动采样命令。
3驱动设计
设备驱动程序提供链接到PCI板卡的软件接口,在Windows98和Windows2000中,设备驱动程序可以根据Windows驱动程序模型(WDM)设计。设备驱动程序的关键是如何完成硬件操作,基本功能是完成设备的初始化、对端口的读写操作、内存的直接读写,该PCI数据采集卡的软件利用NuMega公司提供的DriverStudio完成了驱动程序的开发,DriverWorks是DriverStudio的一个组成部分,能够非常方便地实现针对WDM驱动程序的开发。DriverWorks中的类库封装了针对驱动程序的各种通用操作,可以大大缩短驱动程序的开发周期。驱动程序主要完成两项功能,PCI目标单周期写,PCI目标突发读。单周期写和突发读都比较简单,直接用KIoRange以及KmemeryRang的读写成员函数就可以完成。此外,为了方便应用软件的调用控制,软件设计了DLL动态链接库接口,用户可以方便地通过LABVIEW调用函数控制数据采集卡工作。
4结论
PCI9052以其强大的功能和简单的用户接口,为PCI总线接口的开发提供了一种简单的方法。设计者只需设计局部总线接口控制电路,即可实现与PCI总线的高速数据传。在高速数据采集系统中,利用PCI总线的高速特性实时传输和存储采集数据,有效地解决了数据传输和处理的实时性。本设计正是融合了PCI数据传输的高速性能、FPGA设计的高度灵活性以及MAX1312ECM高速高精度特性,使得本系统可以方便地应用于各种需要多通道同时采集数据的场合。经过长时间的采样测试,本卡能够可靠地工作,为后续的信号处理提供了有效的数据。
参考文献
[1]王锐.基于FPGA的数据采集卡的CPCI接口设计[J].电子技术,2010,(2).
[2]李晖.基于DSP和FPGA的高精度数据采集卡设计[J].电子设计应用,2006,(9).
[3]EDA先锋工作室.FPGA/CPLD设计工具XilinxISE5.X[M].北京:人民邮电出版社,2003.
[4]任晓东,文博.CPLD/FPGA高级应用开发指南[M].北京:电子工业出版社,2003