学海荡舟手机网

主页 > 实用文摘 > 教育文摘_07 > > 详细内容

一种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个通道,每个通道可以输入两路模拟信号,其中一路为单极性输入,另一路为双极性输入。

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/wf1f0chch3ch2ch1ch0

r/w:0表示写,1表示读。

f1,f0:00表示对ad7711控制寄存器操作,11表示对ad7711校准寄存器操作,01则是读取数据。

chch3ch3ch1ch0:1xxxx表示全通道操作,0xxxx表示某单通道操作。

因为分配给每块采集卡的i/o地址空间有限,所以利用板卡命令寄存器的低8位作为参数数据,高8位作为命令/参数类型。为了稳定可靠地锁存数据,参数寄存器的使能信号由板卡命令寄存器写造中信号延时两个野兔周期得到。参数类型是指采样速率、输出因子、中断号。板卡命令寄存器高8位提供的命令有启动(start)、停止、同步(驱动ad7711的/sync线)、复位、fifo清零等命令。

图2中的粗线表示数据的流向。通道主控器(chnmaster)与ad7711数字界面接口,负责产生ad7711的所有读写时序。一共有12个通道主控器,可以并行地工作,由通道触发电路(chntrigger)触发和指定串/并工作方式。它将通道操作寄存器给出的并行24位控制字或校准数据(由ctlreg.f1f0决定)转换成串行数据,由sdata发送出去,或者读取ad7711的数据寄存器和控制/校准寄存器,将串行数据转换成24位和16位的并行数据。当通道主控器产生rdy信号时表示接收完毕,新的数据已经获得。

根据通道操作寄存器的24~28位,有全通道和单通道工作方式。

当ch=1时,为全通道的数据采集并行工作方式。如果板卡命令start有效,可编程时钟发生器(progclkgen)则根据采样速率输出采样时钟。采样时钟直接或经定时器(timer)延时后产生tpt信号输入到通道触发电路,产生通道使能信号ena,从而触发通道主控器开始工作。每个通道的通道主控器读取ad7711的数据,当16位数据读完时,输出rdy信号。控制分配器(director)接收采样时钟和rdy信号。当所有通道的rdy信号都收到时,输出通道选择信号到4~16多路选择器,依次选通各个通道的数据,并产生fifo写控制信号,将每个通道的数据写入fifo里。当采样次数达到输出因子大小时,就通过中断产生模块(intrgen)输出一个指定的中断脉冲。pc104主机接收到中断后,读取参数寄存器(0x280)的值,其大小即为输出数据的个数。控制分配器还对主机连续读取数据的/ior信号进行计数,若该次中断读取的数据完毕,产生中断处理结束信号,允许下次对fifo进行写操作。

当ch=0时,由ch3ch2ch1ch0决定对哪个通道操作,一般对ad7711读写控制字和校准字时使用单通道的操作。当pc104主机写控制寄存器时,内部产生一个表示写新控制字完毕的脉冲信号,触发通道触发电路使之产生一个通道使能信号ena,使相应的通道主控器开始工作。如果写ad7711控制/校准寄存器,则通道主控器将24位数据锁存,进行并-串转换发送出去。如果读ad7711控制/校准豁口,则通道主控器接收串行数据并转换成24位并行数据。通道操作寄存器的通道号决定多路选择器的输出,将数据锁存到通道寄存器数据锁存器(0x284)里。操作完成后,状态寄存器的busy位为0,主机就可以从地址0x284读取到相应ad7711控制/校准寄存器里的数据。

图2里还包括了内部ram和对外部串口e2prom。可以初始化ram,使cpld在上电时就保存有各通道校准参数,但是若修改固化参数,必须重新编译和对外部配置器件编程,用户主机不能修改。若将参数保存在片外的串口e2prom,则可以对其读和写,以方便用户主机根据实际情况校准各个通道,并保存新的校准参数。

2.2 通道主控器的设计

通道主控器的主要结构如图3所示,包括左移移位寄存器、/rfs和tfs生成模块、sclk计数器。发送时,内部输入数据通过lodsht锁存,通过移位从sdata_o输出;接收时,串行数据从sdata_i输入,通过移位得到并行数据(24位)输出到内部。clrsht和enasht分别是清零和使能信号。

2.3 fifo和ram

fifo提供数据缓冲能力。flex10k50qc240能够提供2880个逻辑单元、10个嵌入式阵列块(eab),总计20480个ram位。根据板卡的要求,最大的输出因子为32,它所需的最大ram位为32×12×16=6144。每个eab只能配置成256×8bit,深度为384、数据位宽为16的fifo需要占用4个eab。所以fiex10k50qc240完全可以满足要求,实际上它可以实现最大输出因子为64所需要的fifo缓冲。这里使用altera公司提供的参数化模块lpm_fifo来实现所需的模块。它是一个单时钟同步fifo,支持同时读和写。

    2.4 控制分配器

控制分配器主要输出通道选择信号和fifo的写控制信号。当条件满足时,便输出从1~12个fifo写控制信号。这里休用状态机实现这一过程。

2.5 可编程时钟发生器

采样脉冲由10mhz时钟计数分频得到,其频率由主机写到参数寄存器的参数决定。计数器的预置值与参数存在一一对应关系。方法一是采用译码器,由于输出的预置值是24位,则逻辑复杂,需占用大量的逻辑单元资源。方法二是使用查找表,采用三段8位的rom来实现,仅占用若干ram位,简单有效。

通道控制器内部逻辑的原理设计完成后,所有的详细设计都采用硬件描述语言vhdl实现,并在max+pulsii集成环境下编译、模拟、综合,最后下载到外部配置器件epc2中。首先规划好每个子功能块的模型,子功能模型可以使用状态模型,也可以使用时序图进程模型来描绘。其次选择适当的描述方式编写代码。编写代码的方式非常重要,因为vhdl综合工具将依据设计代码方式映射成相应的器件逻辑,vhdl代码的编写方式将直接影响到设计的结果。

本文介绍的pc104温度采集卡不仅完成了代码设计和功能仿真验证,最后还在实际系统中得到成功应用。结果表明,这款pc104温度采集卡不仅设计紧凑、功能强大而且非常灵活,很适合用于过程控制、智能传感器、便携式工业设备、分布式工业测量等场合。其中通道控制器是采集卡的设计核心,它的详细设计过程对其它类似的采集卡控制器设计也有一定的借鉴意义。