一种PC104温度采集卡的设计
摘要:介绍了一种用于12路通道温度采集的PC104采集卡的设计。重点描述了实现通道校正、采集数据的控制器的设计过程。该控制器提供了一定的数据缓冲能力和多种参数的工作方式,使得PC104采集卡的功能比较强大和全面,并且非常灵活。其设计思路值得以后类似的采集卡借鉴。实际运行结果表明,该采集卡的设计是成功的,并且工作可靠。
关键词:温度采集 AD7711 PC104 控制器 CPLD
PC104总线是一种出现已久的栈式总线,基本上属于ISA总线的变型。模块尺寸很小(90mm×96mm),多个模块通过针孔结构堆叠而成,形成的系统结构紧凑、抗冲击性能好,加上现在广泛应用的低功耗技术,使PC104总线特别适于用户自行开发特殊应用产品。
对于低速率、高精度的测量系统而言,A/D芯片AD7711是个功能完事的模拟前端。它直接从传感器接收信号,通过一个可编程的增益控制后将信号送到模拟调节器,再经滤波后输出一个16位的串行数字字。它的主要结构特点是:内部包含有一个∑-Δ A/D转换器,具有非常高的转换精度;两个通道的可编程增益前端;带内部SRAM的校正控制器,使得校正因子可读可写;时钟发生器;低通数字滤波器,具有可编程的通阻带分截点;一个双向串行通信端口,能较方便地与微处理器接口;可以单电压或双电压供电,具有较低的功耗。
对于RTD(电阻式温度检测)传感器的应用,AD7711是一款很不错的选择。本文介绍的PC104采集卡主要用于分布式温度点采集测量,上面集成了12个AD7711,形成12个通道,每个通道可以输入两路模拟信号,其中一路为单极性输入,另一路为双极性输入。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 电路原理
PC104温度采集卡主要由12个AD7711、通道控制器、PC104栈式连接器组成,其原理框图如图1所示。板卡地址输入由拨盘开关完成。串口E2PROM用来保存每个通道的校准参数和一些板卡工作参数。另外还提供了配置ROM EPC2。
通道控制器采用Altera公司的CPLD器件FLEX10K50QC240来实现。PC104主机首先初始化通道控制器,通过板卡命令对板卡进行操作,如启动、停止、设置工作参数(如中断选择、每分钟采校次数、输出因子等)。然后通道控制器对各个AD7711通道进行操作,如写AD7711的控制寄存器、读写其校准寄存器里的校正因子、读取每个通道的采样数据。通道控制器的另一个功能是模拟PC104主机的指示对串口E2PROM进行读写操作,并提供结果。
采样频率有1Hz、2Hz、4Hz、8Hz、16Hz、32Hz、64Hz等,指定每个通道每分钟等间隔采样次数。板卡的控制器提供数据缓冲能力,每个采样周期都将12个通道的数据保存在缓冲器里。在存储了若干个采样周期的数据后,向主机发出中断,让PC104总线读走数据,输出因子则指定每次中断采样周期的个数。板卡提供八个ISA中断,主机可以选择其中一个。
AD7711每次采样16位数据,所以主机PC104总线从通道控制器读取数据时,使用16位I/O访问,因此/IOCS16和SBHE信号应当被驱动,而IOCHRDY则被用来插入等待周期。由于通道控制器和AD7711都采用10MHz时钟,所以对于CPU主频比较快的PC104总线,其ALE、/IOW、/IOR、AEN等信号的有效电平脉宽是与时钟周期有关系的,此时它们的脉宽可能比板卡的时钟周期100ns要小,故不能用它们直接作为时钟使能,而应当利用它们的沿来锁存地址,并触发得到宽脉冲信号完成使能,锁存数据。
AD7711采用自时钟方式。SCLK提供串行时钟输出;SDATA是串行数据位;/DRDY的下降沿表明数据字准备好,当传送完毕时恢复到高电平;/TFS、/RFS是发送和接收数据帧同步信号;A0是地址输入,表明是对AD7711控制寄存器操作,还是对AD7711数据或校准寄存器操作。
图2
2 通道控制器的设计
2.1 逻辑框图
这里采用CPLD器件FLEX10K50QC240来实现通道控制器的所有逻辑。其内部逻辑原理框图如图2所示。主要的功能有:①包含有若干个控制或状态寄存器,主要用来设置工作参数和对AD7711通道进行控制;②对AD7711的数字界面提供接口;③提供足够的数据缓冲能力;④具有可编程的采样时钟发生器;⑤具有内部RAM和控制读取片外串口E2PROM的能力。
当主机的PC104总线地址被驱动时,则在ALE的下降沿锁存地址。当选中板卡地址时(这里以0x280~0x28f为例),则利用/IOW的上升沿锁存数据,并根据地址译码的不同,锁存到不同的寄存器里。这里有四个控制寄存器,即通道操作寄存器(CtlReg,0x282)、板卡命令寄存器(CmdReg,0x286)、用于串口E2PROM和内部RAM的存储器操作控制寄存器(EepReg,其中包括用于控制的16位寄存器0x288和数据寄存器0x289)及参数寄存器(ParaReg,0x280)。由于通道操作寄存器是32位,主机对同一个口地址(如0x282)连续进行两个16位写操作,因此利用两个连续的/IOW写数据。通道操作寄存器低24位是写入AD7711的数据,即24位控制字或校准数据。高8位的含义如下:
R/W | F1 | F0 | CH | CH3 | CH2 | CH1 | CH0 |
R/W:0表示写,1表示读。
F1,F0:00表示对AD7711控制寄存器操作,11表示对AD7711校准寄存器操作,01则是读取数据。
CHCH3CH3CH1CH0:1xxxx表示全通道操作,0xxxx表示某单通道操作。
因为分配给每块采集卡的I/O地址空间有限,所以利用板