|
基于PC104和CPLD的高速/多通道数据采集系统 | 梅红伟,吴学杰,商秋芳,庞 维(西南交通大学 牵引动力国家重点实验室 四川 成都 610031)
| 1 引言
PC104总线以针孔堆叠方式组成。具有结构紧凑、抗震性好等优点,可以工作在恶劣的工作环境下,与PCI标准兼容,适于高速数据传输。而且他还具有高可靠性以及多操作系统支持等优点,使他在雷达、声纳、工业控制等数据采集系统获得了广泛应用。CPLD(复杂可编程逻辑器件)因其属于大规模在系统可编程专用集成电路而且具有高密度、高速度、高可靠性等特点。因此CPLD应用于高速/多通道数据采集系统大大提高系统设计的灵活性,提高了系统的扩展性。为此我们设计了这款集成度较高的速/多通道数据采集系统应用于液压伺服控制系统中,降低了系统的设计成本又提高了系统的可扩展性,获得了令人满意的结果。此高速/多通道数据采集系统基于PC104总线,因此只要支持PC104总线的主板CPU都可以通过总线直连此数据采集系统的各个功能电路。
2 系统结构原理框图和基本设计思想
本系统由A/D,FIFO,CPLD控制逻辑、PC104总线接口等组成16路数据采集电路,系统的原理框图如图1所示。
图中模拟输入量1至模拟输入量16是指需要ADC转换的通道数,模拟量经过滤波器滤波处理后再经多路开关(Multi-channel Switches)分时切换进入模数转换器,模数转换器的时钟由PC104的CPU板提供的外部时钟经过CPLD分频后得到,这样ADC模块的启动和停止很容易通过CPLD控制。而且在CPLD的控制下,16个通道循环采样一次,并将采样值和通道号同时送入FIFO中,采样完成后,CPU可直接根据定时中断从FIFO中读出数据,读完数据后复位FIFO器件,打开CPLD中产生的ADC模块的时钟,进入下一轮采样。如此循环,完成模拟信号的高速实时采样。采样过程中完全不需要CPU的参与,CPU可以并行处理主程序中的数据,提高了效率。
3 系统硬件设计原理及部分芯片介绍
多通道高速A/D采集系统的采集部分原理图如图2所示。
他由2片ADG408,1片AD9221组成,ADG408是一款高速、低功率的8路多模拟开关,本设计中输入了16路模拟信号,CPLD输出4根地址线就可以控制2片ADG408完成多路模拟信号的切换。CPLD输出的地址信号的低3位分别接ADG408的A0,A1和A2,最高的那位地址译码后分别接2片ADG408的使能端就完成了对ADG408的扩展。AD9221采用单5V供电,是一款接口简洁、功耗较低的12位AD转换芯片,而且还有溢出标志位,直接二进制输出。可与许多DSP,MCU配合使用。其模拟量的输入范围高度灵活,既可以是单端输入,也可以是差分输入,幅度可以在较大范围内根据不同的外接电路进行配置。 CPLD输出的ADCLK时钟信号有效时启动AD9221将经过ADG408切换的模拟信号由模拟量到数字量转换,得到12位的数字量,再直接送入FIFO芯片中。AD9221转换后的数字信号是12位,可以把他分为低8位和高4位同时分别送人2片FIFO芯片,如图3所示。
由于只用到了PC104的低8位数据总线,不能将FIFO中存的数据直接通过PC104读出。图中从2片FIFO中读出的数据分别送入74LS573中锁存,CPU再依次从74LS573中读出数据即可得到AD9221转换的12位数字信号。另外CPLD输出信号对FIFO芯片的读写的驱动能力不够,因此必须在CPLD的输出信号和电源VCC间加上拉电阻RFIFOW1和RFIFOR1提高其驱动能力。
4 程序设计
程序设计包括2个部分:一个是实现CPLD功能的程序,另一个是CPU的控制程序。
4.1 CPLD内部硬件设计
高速/多通道数据采集系统的CPLD内部硬件设计采用LATTICE公司的ispLEVER软件为开发工具,使用A-BEL语言设计程序,设计主要包括:地址分配和译码电路、A/D模块的控制电路、开关量输入输出控制电路。
4.1.1 地址分配
在基于PC104总线的系统设计时,最首要的一条就是将接口板的基地址设定在CPU提供的外部板卡可以使用的开放地址范围内,基地址的设定由5位拨码开关完成,如果地址总线上A5~A9和拨码开关设定的完全一致,则地址比较芯片74HC688的输出为低,否则输出为高。将74HC688和总线上的低5位地址A0~A4接人CPLD,通过对CPLD编程就可控制指定芯片的片选信号,地址比较芯片74HC688的利用提高了外部板卡的地址使用范围,而且节省了CPLD的I/O口和系统资源。
4.1.2 AD模块控制电路
AD模块控制电路的控制逻辑电路如图4所示。主要由3部分组成:
(1) 对多路模拟开关的控制,主要是产生ADG408的输入地址选择信号AA0,AA1,AA2和使能信号DGEN1,DGEN2;为便于以后扩展,预留AA4和AA5。可以利用AA3和AA4通过二四译码逻辑模块产生DGEN1~DGEN4,或者利用AA3,AA4和AA5通过三八译码逻辑模块产生DGEN1~DGEN8,因此很方便以后的扩展。
(2) AD9221的时钟信号的产生与控制,AD9221的转换时序如图5所示,其最小时钟周期为667ns,而且从图5可以看出,经过3个时钟的滞后,每1个时钟才可以完成1次采样,因此从FIFO里存入FIFO里的第4个数之后的数据才为采集到的数据。输入AD9221的时钟信号AD-CLK是由CPU板上提供的外部时钟信号SYSCLK分频延时后再与一个计数器的输出相与后得到,如图4所示。计数器的计数值到了设定的一个CPU定时周期内AD模块转换的次数时,计数器停止计数,而且计数器的输出EN从高变为低,从而控制AD模块的时钟信号。
(3) FIFO的写信号的控制,写信号必须保证数据不会丢失。
4.1.3 开关量输入输出的控制电路
8路开关量输入模块电路由1片74HC573及相应的地址信号构成,8路的开关量输出模块电路由1片74HC573和相应的地址信号构成。CPLD只需要对2片74HC573分配地址,实现CPU可通过总线直接访问开关量即可。
4.2 CPU程序设计
本数据采集系统用于实时控制系统,控制系统的控制周期为1 ms,因此我们采用硬件定时器来实现1 ms的控制周期,在每一控制周期中需要完成数据采集、控制算法的计算、输出控制等工作,其中数据采集部分是通过定时读出FIFO中的数据来完成的,其流程图如图6和图7所示。
5 结语
该高速/多通道数据采集系统已经成功应用到液压伺服控制系统中,成功地完成了对液压控制系统中力、位移和载荷等模拟信号的采集。采用PL104总线和CPLD技术大大提高了系统的可靠性、灵活性。
|
|
|