文献标识码: B
文章编号: 0258-7998(2014)09-0075-03
随着航空器以高度自动化的趋势发展,传感器数据需要被快速采集和高精度转换,以便飞行控制系统使用和处理。传统的集成于DSP的A/D转换芯片往往不能满足速度和精度的要求,因此需要使用独立的A/D转换芯片实现传感器数据的采集和转换。同时,随着嵌入式计算机种类的多样化,部分嵌入式计算机不再集成A/D芯片,由于各种因素在选择不含A/D转换功能的嵌入式计算机时,也必须考虑如何对独立A/D芯片进行控制以实现对模拟信号的快速采集与转换。在项目的研发中,通过使用SBS公司的CDT2000模块,实现了对AD7891芯片的控制,取得了快速、精确的转换效果。CDT2000含有丰富的I/O口,同时电位值与普通A/D芯片的引脚电位吻合,因此可以方便地与A/D芯片引脚连接;而且其I/O的电位变化迅速,能够满足高速转换的要求。文中给出了系统主要的硬件电路和CDT2000 I/O对AD7891芯片的控制方法,同时对A/D转换结果做了数据分析。
1 系统硬件构成
1.1 系统概况
本转换系统要求转换频率不低于100 Hz,对于0~10 V的输入电压,转换误差不大于10 mV。为达到以上要求, 系统选用的硬件包括SBS公司的嵌入式PC/104计算机、CDT2000模块,ADI公司的AD7891型号芯片和Fairchild公司的DM74LS73A型号JK触发器。
1.2 PC/104与CDT2000 I/O口
PC/104是嵌入式PC的机械电气标准,它秉承了IBM-PC开放式总线结构的优点,与IBM-PC 100%兼容。
CDT2000是16位计数器/定时器与数字量I/O模块,通过总线与PC/104模块连接,可将由PC/104模块构成的系统变成一个高性能的控制系统。CDT2000有48通道TTL/CMOS 兼容的数字量I/O,这些I/O由模块上的71055可编程外围接口(PPI)芯片提供,由I/O连接器引出。端口能直接与外部设备或信号连接,端口高电位为5 V,低电位为0 V。
CDT2000的48通道数字量I/O在硬件上以两排I/O口排列,每排包括24路数字量I/O;这24路I/O又分为口0(8条线)、口1(8条线)、口2(8条线)3组,每组I/O都分配有独立的基地址,因此可以单独决定每组I/O的输入/输出模式。
1.3 AD7891芯片
AD7891是一款8通道、12位数据采集系统,有并行和串行两种接口模式。本系统采用的输入量程为-10 V~
+10 V,理论转换精度可达4.88 mV。
在单通道输入,采用硬件启动转换时,AD7891的转换速率可达454.5 kS/s。芯片的每个输入通道都拥有过电压保护机制,允许的过压值为±17 V。
AD7891可以通过MODE引脚来选择并行或串行接口模式。无论是串行还是并行工作模式,芯片均能提供标准控制输入及快速数据访问时间特性,确保与现代微处理器、微控制器和数字信号处理器轻松对接[2]。由于CDT2000模块提供丰富的I/O口,本转换系统采用并行接口方式。芯片端口的控制以及数据的读写全部通过CDT2000的I/O口实现,既满足转换的快速性要求,在硬件上也较容易实现。
1.4 DM74LS73A型号JK触发器
DM74LS73A是负脉冲边缘触发型的主-从JK触发器,当触发器CLK端电位由低升高时,可触发输出端Q、的电位变化。
A/D转换结束时,AD7891的EOC端输出脉宽为80 ns的负脉冲。但CDT2000没有捕捉负脉冲的功能,因此在AD7891与CDT2000之间增加一个JK触发器,由触发器CLK端捕捉EOC引脚输出的负脉冲。EOC引脚输出的负脉冲使JK触发器Q端的电位变化时,表明A/D转换结束。
1.5 系统硬件连接
根据以上系统各硬件的性能及特性,设计系统硬件连接电路如图1所示。
图1中,由CDT2000 I/O指向AD7891和JK触发器的箭头线表示CDT2000 I/O口以输出模式与AD7891和JK触发器的引脚连接,I/O通过输出电位的变化实现AD7891和JK触发器中与之连接的各引脚的功能;由AD7891和JK触发器指向CDT2000 I/O的箭头线表示CDT2000 I/O口以输入模式与AD7891和JK触发器的引脚连接,I/O口读取AD7891和JK触发器中与之连接的各引脚的电位,通过总线传递给PC/104;CDT2000 I/O与AD7891间的双向箭头线表示AD7891上的引脚为复用端口,I/O口既要以输出模式控制该引脚的电位,又要在A/D转换结束时,以输入模式读取该引脚的电位。
在A/D转换过程中,CDT2000 I/O始终向AD7891的STANDBY和MODE引脚输出高电位,以使AD7891处于正常工作状态和并行工作模式;向JK触发器的J引脚和K引脚分别给予低电位和高电位,以使A/D转换开始前JK触发器的Q输出端为低电位。A/D转换结束时由AD7891的EOC引脚输出的负脉冲将使Q输出端的低电位转换为高电位,经I/O口读取后告知PC/104 A/D转换结束。同时在每次A/D转换开始前,向JK触发器的CLR引脚给予一不小于30 ns的负脉冲,使Q输出端恢复低电位。
2 系统软件实现
2.1 AD7891时序分析
为实现系统的高速转换,首先对AD7891的转换时序进行分析。并行接口模式下AD7891的转换时序见图2。
图2中,t1为从CS到RD/WR的触发时间,为0 ns;t2为写脉冲宽度,不小于35 ns;t3为写有效数据时间,不小于25 ns;t4为有效数据保持时间,不小于5 ns;t5为CS到RD/WR的保持时间,为0 ns;t6为CONVST脉冲宽度时间,不小于35 ns;t7为EOC脉冲宽度时间,不小于55 ns;t8为读脉冲宽度,不小于35 ns;t9为RD下降沿之后读数据时间,不小于25 ns;tCONV为A/D转换时间,不大于1.6 μs;t10不小于30 ns。
2.2 I/O口对AD7891工作时序的控制
AD7891的工作时序由CDT2000的I/O口控制,因此在操作I/O口的电位变化时,必须根据AD7891的转换时序,合理地分配以上时间,以实现快速高效的转换。
在硬件层,PC/104核心处理器的晶振频率为100 MHz,单周期指令的执行时间为10 ns。PC/104通过总线操作改变CDT2000的I/O口的电位。一次总线操作的时间在1 μs以上,即C语言操纵I/O口电位变化的代码执行时间在1 μs以上,远大于时序中要求的各负脉冲时间。因此在连续改变I/O口电位时,无需考虑延时。
AD7891的DB0~DB5为复用数据线,写入数据时,通过这6个引脚改变AD7891控制寄存器的数值;读取数据时,通过这6个引脚获得A/D转换结果的低6位数值。因此在每次A/D转换中,与这6个引脚连接的I/O口都要进行一次输入/输出模式的转换。而CDT2000 I/O的特性是在某一路I/O由输入模式转变为输出模式时,同一排I/O中所有输出口的电位都会清零,因此必须保证与AD7891 DB0~DB5连接的6个I/O口的输入/输出模式改变时,不会影响其他输出端口的电位,否则将导致转换失败。为实现以上条件,需将与AD7891 DB0~DB5连接的6个I/O口单独安排在CDT2000 I/O的一排,而与AD7891其他引脚连接的I/O口在另一排。
使用CDT2000 I/O对AD7891的控制操作中,首先向JK触发器的CLR引脚输出一负脉冲,使其Q输出端恢复低电位;然后将与AD7891芯片DB0~DB5引脚连接的I/O置为输出模式,并向其输出电位以选择A/D输入通道和转换结果输出格式;然后向WR引脚输出负脉冲,将DB0~DB5引脚的电位数据写入控制寄存器;随后向CONVST引脚输出负脉冲启动A/D转换,待Q端电位升高后,将与DB0~DB5引脚连接的I/O改为输入模式;然后将RD引脚电位置底,读取DB0~DB11引脚的电位值,获得A/D转换结果;最后将RD引脚电位置高,完成A/D转换。以上为完成一次A/D转换的操作流程,其执行时间不超过25 μs,转换频率可达4×104 Hz,满足系统对转换频率大于100 Hz的要求。
3 试验结果
AD7891转换数值的输出格式既可以是普通二进制形式也可以是补码形式,由FORMAT引脚的电位控制。普通二进制形式时,输出范围为0~4 095;补码形式时,输出范围为-2 048~2 047。转换数值理论上与输入电压呈线性关系。由于项目要求采集的电压范围为0~10 V,因此本转换系统选择的输出格式为普通二进制形式。试验中输入电压由稳压电源提供,在输入电压固定时,取转换数值的平均值作为转换结果,试验数据如图3所示。
对试验转换值线性拟合获得的参数中,R平方值(相关系数)为1,说明A/D转换结果与输入电压呈现良好的线性关系,这与理论相符合。对试验转换值拟合得到的线性函数为:
式(1)、(2)中y为A/D转换值,x为输入电压。对比式(1)和式(2)表明,试验转换结果相较理论值存在2 077.26-2 047.50=29.76的偏差,即零漂值。将零漂值修正后,试验值与理论值的差值为:
式(3)说明转换误差随着采集电压增大而增大,当输入电压范围为0~10 V时,试验转换值与理论值的最大差值为0.4,转换误差在最低有效位以内。对于12位的A/D转换器,一个最低有效位的误差表征4.88 mV转换误差,因此该系统满足转换误差不大于10 mV的设计要求。
本文基于CDT2000 I/O对A/D芯片的控制,设计了一种A/D高速采集转换系统,通过使用CDT2000 I/O对AD7891和JK触发器各引脚电位的控制及读取,实现了对模拟数据的高速采集和转换。系统完成一次A/D转换的时间小于25 μs,满足系统对转换频率大于100 Hz的要求;对转换结果中存在的固定偏差修正后,转换误差不超过4.88 mV,满足系统对采集精度的要求。本系统具有硬件结构简单、编程容易、易于实现的特点。
参考文献
[1] 何学辉,苏涛.TMS320VC5402 DSP与串行AD73360 A/D转换器的接口设计[J].电子技术应用,2003,29(11):67-70.
[2] 赵纲领,蔚永强,张宁,等.基于DSP I/O口的多路高速数据采集系统设计[J].电测与仪表,2007,44(2):54-56.
[3] 刘春生,游志刚,李小波.AD7891高速数据采集系统的原理与应用[J].国外电子元器件,2001(3):6-9.
[4] 陈劲操.利用增强型并行口设计12位数据采集系统[J].电子工程师,2001,27(7):1-3
[5] 邝坚.Tornado/VxWorks入门与提高[M].北京:科学出版社,2004.
[6] 谭浩强.C程序设计(第3版)[M].北京:清华大学出版社,2005.