1 硬件设计原理
1.1 系统硬件设计框图
该数据采集系统的硬件设计框图如图1 所示,主要包括前端的信号输入保护电路,ADC(MAX1312ECM)转换电路、FPGA (XC3S200) 模块以及PCI 总线接口(PCI9052)。
保护电路的作用主要是保护MAX1312ECM输入不被超出其允许电压范围(±10V) 的高电压破坏,在MAX1312ECM的每个模拟输入通道上接上具有正负10V反向击穿电压的双向二极管, 便能起到保护MAX1312ECM不会被输入的超高电压损害,该保护电路设计方法简单而实用。
ADC 转换芯片采用的是MAXIM 公司的MAX1312ECM。该芯片的主要特点:具有12 位分辨率;20MHz 并行数字接口;8 个单端采集通道可同时采集;±10V 模拟输入范围;高吞吐率:单通道采集时可达1075ksps/ 通道,八通道同时采集时可达456ksps/ 通道。在本系统的ADC 硬件设计部分采用3.3V 的数字电源,基准采用内部+2.5V 基准模式,使用了20MHz 的外部时钟信号,该时钟信号由外部30MHZ 有源时钟通过FPGA 的DCM 进行1.5 倍分频后由全局时钟管脚输出提供。MAX1312ECM的数据线以及控制线与FPGA 直接相连。
FPGA 采用Xilinx 公司的Spartan3 系列芯片XC3S200。该芯片具有20 万系统门,并且具有丰富块存储(BLOCK RAM)资源、数字时钟管理(DCM)以及数量众多的用户I/O 口。XC3S200 在该系统中起到核心的控制作用,它控制着MAX1312ECM的采样启动/ 停止、通道选通设置、采样频率等以及提供采样数据的缓冲存储模块。另外XC3S200 还实现与PCI 接口的数据传输等功能。
PCI 接口模块采用了PLX 公司的PCI9052 作为PCI端与LOCAL 端的连接桥。本系统采用PCI9052 的16 位局部总线、地址数据总线采用非复用的方式,本地端时钟采用了与XC3S200 同一个时钟源。因为PCI9052 采用的是5V PCI 模式, 而XC3S200 采用的逻辑电平为LVCMOS3.3V, 因此为了电平兼容, 在XC3S200 与PCI9052 所有信号连接中间添加了多片TI 公司的电平转换芯片SN74ALVC164245,使信号可以在3.3V 与5V 逻辑电平之间相互转换。
1.2 系统PCB 设计
板卡的PCB 设计要遵循高速信号PCB 走线的要求,该板卡采用4 层板,两层信号层,一层电源,一层地。系统的PCB 设计主要关注以下两方面:①MAX1312ECM的布线:需要注意的是MAX1312ECM的模拟地和数字地要单点连接;MAX1312ECM芯片下面尽可能不要走数字线;为了降低电源噪声的影响,在靠近MAX1312ECM的数字和模拟电源管脚处加上滤波电容或磁珠。②要注意PCI总线端PCI9052 与PCI 插槽“金手指”的走线:普通信号线长度,从插槽“金手指”的中心到PCI9052 长度不超过1.5 英寸,33MHz 的PCI 总线时钟信号走线长度为2.5±0.1 英寸。因为PCI 总线端的信号采用反射波方式即总线驱动靠反射波叠加使信号电压达到要求的振幅,而电压上升的过渡时间相当于总线周期的三分之一。因此PCI总线端的信号与普通芯片的入射波信号不同,不能直接互连,所以PCI9052 内部就完成了信号波形和信号格式的转换。为了满足反射条件,要严格按照上面所说的两个条件进行布线,实际布线中该系统PCB 设计对时钟信号
采用了蛇形走线,走线长度约为2.5 英寸。
2 FPGA 控制逻辑设计
XC3S200 在系统中的作用主要包括对MAX1312ECM的控制、转换数据存储、对PCI9052 的数据传输控制等。
MAX1312ECM的采样控制时序如图2 所示,其中CONVST 信号为采样控制输入信号,在每个CONVST 的上升沿对模拟输入信号进行采样保持;EOC 是每个通道转换结束输出信号,每次跳变到低电平表示一个通道转换结束,在下一个CLK 的上升沿或CONVST 的下降沿跳变回高电平;EOLC 是最后通道转换结束输出信号,当EOLC 信号跳变为低电平表示最后一个通道的转换结束,当CONVST 跳变为低电平时,该信号跳变为高电平;CS为MAX1312ECM的片选信号,在该设计中,CS 信号输入常低电平,CS 信号一直有效;RD 信号为读输入信号,RD信号为低电平时启动数据总线的读操作,可以把数据总线的数据读回来;D0~D11 为12 位的数据总线。
采样控制时序是由图3 所示的状态机所控制。当系统复位后,状态在S0,CONVST 输出‘1’;上位机软件设置XC3S200 中的启动信号adc_start=‘1’启动第一次采样;当adc_start=‘1’时,状态机跳转到S1,CONVST 输出‘0’,CONVST 信号至少保持低电平0.1 us,再通过软件设置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 等待重新启动采样命令。通过异步FIFO 的方式,本系实现了跨时钟域设计。异步FIFO 的写时钟为了和MAX1312ECM同步,采用了同一个20 MHZ 的时钟信号。而异步FIFO 的读时钟采用了和PCI9052 本地端的同一个30 MHz 时钟信号。MAX1312ECM在20 MHz 的时钟驱动下,在8 通道同时采样的情况下,每通道的采样频率也可以达到500 KHz。因此对于一般多通道需要同时采集的应用是足够的。
3 软件设计
设备驱动程序提供链接到PCI 板卡的软件接口,在Windows98 和Windows2000 中,设备驱动程序可以根据Windows 驱动程序模型(WDM)设计。设备驱动程序的关键是如何完成硬件操作,基本功能是完成设备的初始化、对端口的读写操作、内存的直接读写,该PCI 数据采集卡的软件利用NuMega 公司提供的DriverStudio 完成了驱动程序的开发,DriverWorks 是DriverStudio 的一个组成部分,能够非常方便地实现针对WDM驱动程序的开发。DriverWorks 中的类库封装了针对驱动程序的各种通用操作,可以大大缩短驱动程序的开发周期。驱动程序主要完成两项功能,PCI 目标单周期写,PCI 目标突发读。单周期写和突发读都比较简单, 直接用KIoRange 以及KmemeryRang 的读写成员函数就可以完成。此外,为了方便应用软件的调用控制,软件设计了DLL 动态链接库接口,用户可以方便地通过LABVIEW调用函数控制数据采集卡工作。
4 结论
PCI 9052 以其强大的功能和简单的用户接口,为PCI 总线接口的开发提供了一种简单的方法。设计者只需设计局部总线接口控制电路,即可实现与PCI 总线的高速数据传。在高速数据采集系统中,利用PCI 总线的高速特性实时传输和存储采集数据,有效地解决了数据传输和处理的实时性。本设计正是融合了PCI 数据传输的高速性能、FPGA 设计的高度灵活性以及MAX1312ECM高速高精度特性,使得本系统可以方便地应用于各种需要多通道同时采集数据的场合。经过长时间的采样测试,本卡能够可靠地工作,为后续的信号处理提供了有效的数据。