文献标识码: A
文章编号: 0258-7998(2014)10-0027-03
中文引用格式:崔迎炜,李猛.基于FPGA的PMC数据采集卡的设计[J].电子技术应用,2014,40(10):27-29.
0 引言
PCI[1]夹层卡PMC(PCI Mezzanine Cards)是IEEE P1386.1的标准,作为一个IEEE标准,PMC确保了任何符合该标准的主板或者模块能够与其他按照该标准设计的主板或者模块兼容[2]。从而用户可以任意组合、搭配主板及模块,具有很强的灵活性。依照这种结构组合,用户可以灵活设计具有不同I/O前端接口的模块,通过改变PMC上FPGA代码来实现所需功能。同时,相对于传统的以单片机为核心的数据处理系统,FPGA(现场可编程门阵列,field programmable gate array)以其高速、灵活、高集成度、高性能、抗干扰、现场可编程等优点,在数据采集系统中得到了广泛应用[3]。
根据应用需求,本设计在PMC规范基础之上,结合高效FPGA算法,设计出一款实时存储数据、事后读取数据的数据采集系统。
1 总体方案设计
PMC数据采集卡板载4路A/D和2路D/A,以FPGA芯片为控制核心,其总体方案设计如图1所示。A/D原始输入信号为单端信号,电压范围为±2.5 V,通过前面板SMA连接器进入A/D调理电路。信号经AD8138调理之后,由单端转为差分,电压范围调理为AD9248的输入范围±1 V,之后信号进入AD9248进行A/D转换;转换后数据经AXM连接器送入FPGA数据处理中心XC6SLX150,结合高效FPGA算法进行数据存储、读取等操作。根据应用需求,D/A最终输出信号范围为±5 V。经FPGA处理后数据首先由AD5547进行D/A转换,再由AD8620调理放大,通过SMA连接器输出。高速A/D、D/A转换,FPGA数据存储、处理,实现了数据的实时采集,达到了应用需求。
2 硬件电路设计
2.1 FPGA芯片选型与设计
为实现数据采集、处理的最佳性能,综合考虑FPGA内部存储单元数量、IO引脚数量、成本及功耗等因素,选择Xilinx公司的XC6SLX150用于功能模块开发。XC6SLX150可提供147 443个逻辑单元,提供全新且更高效的双寄存器6 输入查找表(LUT)逻辑和一系列丰富的内置系统级模块。
FPGA控制逻辑作为本数据采集卡的控制核心,主要涉及上位机接口模块、ADCFIFO模块、DACFIFO模块、DPRAM模块等功能模块,其功能结构划分如图2所示。通过上位机接口模块,数据采集卡与上位机进行通信,实现数据采集、存储、显示功能。ADCFIFO模块、DACFIFO模块分别对A/D及D/A转换后的数据进行缓存。同时,A/D转换后的数据存储于DPRAM模块中,可以随时从该模块中读取数据,进行分析。
2.2 A/D电路设计
数据采集卡的A/D原始输入信号为单端信号,电压范围为±2.5 V,而ADI公司的A/D转换芯片AD9248信号输入范围为±1 V,且输入为差分信号时达到最佳性能,故需将采集到的单端信号转换为差分信号,且将信号电压范围调理到AD9248的输入范围。设计中利用ADI公司的AD8138芯片进行信号调理,其差分调理电路基本模型如图3所示。
采集到的信号经AD8138调理后,直接接入AD9248。AD9248是一款双核、3 V、14 bit、20/40/65 MS/s模数转换器(ADC),集成了两个高性能采样保持放大器和一个基准电压源。它采用多级差分流水线架构,内置输出纠错逻辑,在最高65 MS/s数据速率时可提供14 bit精度,并保证在整个工作温度范围内无失码[4]。A/D工作时序如图4所示。
2.3 D/A电路设计
经FPGA核心处理器处理后的数据,根据设计需求,在输出之前需经过D/A转换、调理放大等处理。D/A转换芯片选用ADI公司的AD5547,其为单电源供电。为保证D/A转换有足够高的精度,需为D/A转换芯片提供非常稳定的电压源,故本设计采用ADR02精密带隙基准电压源,作为D/A芯片的参考电压。ADR02能在较宽的电压范围内提供极稳定的输出电压,具有高精度、高稳定性和低功耗等特性,将12 V的电压通过ADR02转换成稳定的5 V,供D/A芯片使用,从而保证了足够高的D/A转换精度。同时,采用AD8620做为D/A外加运放使用。AD8620为两通道运放,是高精度的JFET的放大器。两路D/A,每一路使用一片AD8620,其中一个通道用于参考电压的调制,另一个通道用于电流到电压的转换[4]。D/A工作时序如图5所示。
2.4 时钟及电源的设计
在数字电路中,时序的同步对系统的稳定性起着关键性的作用。本设计中,FPGA、DPRAM和AD9248都需要一个20 MHz的时钟。为保证时序同步,采集卡将板载的20 MHz时钟分成两路,分别利用MC74VHC1G进行时钟缓冲,一路供板载的AD9428使用,一路供FPGA使用。
电子系统中,电源的设计是保证系统正常工作的关键因素。电源设计需要考虑纹波和功耗等因素。本采集卡所有功率由PMC载板提供,并留有余量。本采集卡的电源涉及到模拟12 V和数字12 V、模拟-12 V和数字-12 V、模拟3.3 V和数字3.3 V、模拟5 V和数字5 V及D/A参考电压5 V。各模拟电压通过各数字电压LC滤波获得。所有芯片电源管脚都配有足够的电容网络,使电源纹波工作在容许范围内,保证芯片稳定工作。
3 FPGA程序设计
本采集卡FPGA逻辑设计采用Verilog代码[5]实现,主要实现数据采集、存储、读写等命令控制,其主流程图如图6所示。在PCI BAR2地址空间,分别定义了ADCFIFO寄存器、DACFIFO寄存器,通过这些寄存器分别控制A/D、D/A的状态。
ADCFIFO模块内定义了中断阈值可设的FIFO,FPGA使能A/D后,将A/D数据采样到FIFO中,当FIFO中的数据采集到设定的阈值后停止采样,发出中断给上位机,收到中断的上位机将数据读取到系统指定位置存储并显示。DACFIFO模块通过读写DAC模块所映射的寄存器控制D/A工作,模块内定义了中断阈值可设的FIFO,通过本地接口逻辑向FIFO中写数据,根据每个数据高三位的不同组合选择对应的D/A通道,输出所需模拟信号。DPRAM模块中定义一些和传输控制相关的寄存器,实现了DPRAM读写时序接口逻辑,能够正确地读写DPRAM端口,实现了A/D采集后数据的快速上传。DPRAM读写时序如图7所示。
4 结果分析与结论
仿真结果如图8~图10所示。由实验结果可知,采集系统将数据通过FPGA内部中的FIFO进行缓存,并根据相关指令,成功将数据存储于DPRAM中。上位机发出读取数据指令,并加以显示。该PMC数据采集系统成功实现了数据的实时采集、存储、显示等功能,目前已投入实际应用之中,具有较高的使用价值。
参考文献
[1] 李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.
[2] IEEE P1386.1.Draft standard physical and environmental layers for PCI mezzanine cards:PMC[S].2001.
[3] 罗苑棠.CPLD/FPGA常用模块与综合系统设计实例精讲[M].北京:电子工业出版社,2007.
[4] 阎石.数字电子技术基础第四版[M].北京:高等教育出版社,2004.
[5] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2009.