基于FPGA和AD768的高精度信号卡设计
摘要:遥测匹配装置的自检与测试是系统设计中不可缺少的一项功能,而信号卡是匹配装置自动测试系统的重要组成部分。本文介绍了一种高精度信号卡的设计,它采用Xilinx公司的可编程逻辑器件XCF2S50E及AD768来实现。采用FPGA简化了电路设计,提高了系统的设计灵活性;采用16位的D/A变换器AD768则提高了信号卡的精度。
关键词:高精度;信号卡;FPGA;AD768
1 引言
在导弹型号的研制过程中,匹配装置是用于遥测系统中信号变换的关键部件,是弹上所有关键部件的信息送到遥测设备的咽喉。匹配装置的精度和可靠性是影响遥测结果的重要因素。本课题是为遥测匹配装置自动测试系统提供高精度的信号,用于检验匹配装置自动测试系统的工作情况。从这个意义上来说,小型化、通用化信号卡的设计和实现是测试平台的必然要求。因此,必须采用先进的设计方法和大规模可编程逻辑器件加以实现才能适应这种发展趋势,CPLD/FPGA等大规模可编程逻辑器件的发展和VHDL硬件描述语言的成熟为此奠定了良好的软硬件基础。为了提高信号卡的精度,D/A的选择至关重要,选用Analog Device公司的16位D/A转换器AD768完全满足精度的设计要求。
本文着重介绍了一种基于FPGA和AD768,用VHDL硬件描述语言设计实现高精度信号卡的方案,理论和实验证明,该方案切实可行。
2 信号卡的方案设计
2.1 功能介绍
该信号卡输出为64路-15V~+15V 的可调电压。信号的调节精度不低于0.1%。每路信号的驱动电流不小于5mA,不大于20mA。另外根据需要,也可以在-15V~+15V范围内通过调整硬件任意选择极限输出范围,电压范围越小,绝对误差电压也相对越小。
2.2 信号卡原理框图
该信号卡由FPGA主控单元、单片机、电源模块、大容量存储器、DAC、后继调理电路及输出接口等部分组成。其中,波形数据由上位机通过软件编程产生,数据经主控卡传送到高速数字总线上,信号卡由单片机通过总线接口接收后送到FPGA,由FPGA送到大容量存储器存储。FPGA中心控制逻辑负责各种控制信号的产生,它控制数据从大容量存储器输出到DAC转换,并控制模拟开关的选通,信号经模拟开关后再经过保持放大电路输出。信号卡的原理框图如图1所示。
图1 高精度信号卡的原理框图
电源模块给各个部分供电(图中未标箭头)。继电器的控制信号由上位机给出,经主控卡传送到数字总线上,然后经单片机和FPGA给继电器。继电器控制后继调理电路的电源供电,以此来控制是否将信号输出给外部设备。
2.3 提高精度的一些措施
采用16位D/A能达到所要的1%的调节精度,但是由于信号传输中有串扰、噪声等一系列的干扰,难免会对精度产生影响,有鉴于此,我们在电路中加入以下措施来抑制干扰,提高精度。
1.电路板采用4层板设计,提高整个系统的抗干扰能力
2.模拟地和数字地分开,在一点处用0欧的电阻连接起来。整个信号源模块与测试台其他模块不共地。
3. 在接口与单片机之间采用光电隔离器进行隔离,抑制干扰。
4.采用独立电源供电,通过继电器给放大电路供电,保证电源电压不受干扰。
5.后续调理电路采用外部频率补偿法,降低环路增益,提高了信号的稳定性。
经验证,以上措施很好地抑制了系统地干扰,对提高系统地调节精度起到了很大的作用。
3 DAC单元电路设计
AD768是16位的高速模数转换器,转换速率高达30MSPS,根据要求,输出的模拟信号电压范围要求在-15V~+15V之间,转换电路采用AD811与AD824的组合,如图2所示。
图2 DAC信号转换电路
图2中,IOUTA为AD768的电流输出,数字输入全为1时满幅;REFOUT为AD768的参考输出电压,值为2.5V。AD768有两个互补的电流输出端IOUTA和IOUTB,它们具有相同的动态性能。可以配置成单端或差分两种工作模式。IOUTA和IOUTB可通过一个负载电阻R1转换成互补的单端电压输出VOUTA和VOUTB。而使差分电压存在于VOUTA和VOUTB之间,同时通过一个差分放大器来将差分信号转换成单端电压。本设计采用AD768的差分模式。通过设置IBipolar的值为最大反馈电流IFB的一半,使得输出电压的边界值对称。当参考输出电压REFOUT端接地时,AD768处于电流输出模式,输出电流IOUTA与参考电流IREFIN的关系式为:
IOUTA=(DACCODE/65536)(IREFIN4) (1)
式(1)中,DACCODE是16位数字输入码,在0~65535间变化。IREFIN的值为5mA。因此输出电流IOUTA最大不会超过20mA,能满足要求的驱动电流的要求。输出电流经过运算差分放大器AD811缓冲放大后,输出电压范围在-2.5V~+2.5V,再经过放大增益为6的放大电路,输出电压VOUT将在-15V~+15V之间,能够满足规定的要求。
4 FPGA内部逻辑控制
VHDL语言是一种硬件描述语言,描述能力极强,可覆盖逻辑设计的诸多领域和层次,并支持众多的硬件模型。与其它HDL语言相比有:设计技术齐全,方法灵活,支持广泛;系统硬件描述能力强;可以与工艺无关地进行编程;语言标准、规范,易于共享和复用;缩短设计周期,减少投资风险等优点。本设计的FPGA内部逻辑全部采用VHDL语言来编写。
4.1 FPGA内部原理图
图4 FPGA逻辑内部原理图
图4是由VHDL语言实现的信号卡FPGA内部原理图,FPGA在系统时钟信号(FOSC)的驱动下,判断上位机给出的控制信号,接收上位机发出的波形数据,然后输出各种控制信号,并将数据送到存储器中。另外,FPGA还给出指示灯的控制信号,通过指示灯指示其工作状态,方便了设备工作状态的判断及调试。
4.2 数据的二次编码
由于单片机与FPGA之间的数据传输是8位的,而我们用的D/A是16位的,因此产生的16位数据如在单片机与FPGA间传输是问题所在,为此,我们将计算机生成的16位数据分成3个8位的数据,用每个数据的高二位即DATA7和DATA6的组合来表示数据是高位、中位还是低位。单片机传给FPGA的8位的数据,FPGA要把它们还原成原来16位的数据,这就是数据的二次编码。数据的二次编码是整个程序的重点所在。图5是二次编码的流程图。
图5 数据二次编码流程
在总线写(即wr有效)的过程中,FPGA要判断收到单片机的数据是高位、中位还是低位,程序中, busdata(7 downto 6) = "00"表示接受到的数据是低位;busdata(7 downto 6) = "01"表示接受到的数据是中位;busdata(7 downto 6) = "10"表示接受到的数据是高位。FPGA将3个8位(实际是6位)的数据整合,写入到存储器及D/A转换器收到的数据就是转换以后的dataout[15 … 0]。
5 结论
信号卡的输出结果如图6所示,由图可见,波形稳定,失真度极低,较好地达到了设计的要求。
图6 信号卡输出波形
因此,采用可编程逻辑器件FPGA和16位D/A转换器AD768来进行设计的方案切实可行,本信号卡具有结构简单,性能稳定,有效性、可靠性高,此外还有便于修改和优化等优点,缩短了开发设计的周期。
参考文献:
[1] 朱卫华,黄乡佩等. 基于FPGA的高精度数字移相低频正弦波发生器设计. 微计算机信息. 2005,21(7):106~107。
[2] 任勇峰,庄新敏. VHDL与硬件实现速成. 国防工业出版社. 2005年7月。
[3] 宋涛,师奕兵等. 一种高速D/A卡的硬件电路及驱动程序设计. 中国测试技术. 2005,31(5):100~102。
[4] 宋跃,胡升平. 低频高精度DDS脉冲信号生成研究与FPGA实现. 微电子学与计算机. 2006,23(7):178~181。
评论