CPLD在远程多路数据采集系统中的应用
关键词:CPLD;单片机;译码;RS-232;VHDL; EPM7256SQC208
CPLD(Complex Programmable Logic Device?复杂可编程逻辑器件)是在传统的PAL、GAL基础上发展起来的。目前,CPLD已在通讯、DSP及微机系统中有着非常广泛的应用,它不仅可使设计的产品小型化、集成化和稳定可靠,而且还具有在系统或在芯片直接编程的能力,从而使电子系统的设计、开发、更新与维护变得更为方便,更便于装配和批量生产。因此,利用CPLD可大大缩短设计周期,减少设计费用,降低设计风险。远程多路数据采集系统,不但需要较多的片选信号,而且模块测试所占用的I/O口资源也较多,用一般的芯片较难实现,而用CPLD/FPGA则不但可以较好地实现其功能,而且还可大大提高设计能力和设计效率。
1 系统组成思路
本远程多路数据采集系统以Altera公司7000S系列CPLD产品中的EPM7256SQC208-10为控制核心,并由A/D(模拟量采集)模块、DI(数字量采集)模块、D/A(模拟量输出)模块、DO(数字量输出)模块、MCU模块、电源模块及I/O接口模块组成,其系统组成原理图如图1所示。
图中,MCU模块主要由CAN总线模块、RS-485模块、RS-232模块、时钟和复位模块、CPLD模块等组成,MCU模块的电路原理图如图2所示。该远程多路数据采集系统的I/O接口板共有14个插槽,其中12个插槽可实现A/D模块、D/A模块、DI模块、DO模块等四种模块的任意配置。因此,单个数据采集系统最大可采集192路模拟量或192路数字量,也可以提供最大96路模拟量输出或192路数字量输出。多个数据采集系统也可以根据实际和现场需要通过CAN总线、RS-485总线或RS-232总线进行连接,从而实现上百个或上千个采集频率不高的远程数据采集。该远程多路数据采集系统可采集0~5V的电压信号和4~20mA的电流信号,数字量输出电平为12V,可直接控制12V的继电器。(凹丫丫范文网fanwen.oyaya.net收集整理)
显而易见,传统的设计思路不但要使用大量的外围芯片,而且需要主处理器直接控制各种采集模块和控制模块,并完成各模块和通道的自检。因此,这种解决方案需要占用主处理器大量的I/O资源和处理时间。然而,一般处理器的 I/O资源极其有限,而且又要求大量的汇编软件配合,这就使设计移植变得比较困难;此外,由于I/O的频繁操作也不利于系统调度软件的设计和其他软件模块的实时执行,因而在现场更难以组成分布式控制管理系统(FCS)。可见,如果采用传统的设计方法,不但使系统设计较为庞大,而且开发成本高、设计周期长、设计效率低。所以,传统的设计思路在远程多路数据采集系统中是不可取的,而使用CPLD或FPGA器件则可以较好地解决上述问题。
2 CPLD设计
2.1 顶层软件设计
上述功能可在MAX+PLUSII 9.5环境下设计完成。该系统的软件设计采用“自顶向下”、“软硬兼施”的设计方法,主要设计了五大功能模块,分别是DECODE?地址译码?模块、AD?模拟量输入数据处理?模块。DATA?数据处理?模块、TEST?模块自动识别?模块、UART?串口扩展?模块,其设计原理图如图3所示。其中译码模块用于完成处理器对CPLD片内和片外模块的寻址和译码,这是一种简单的译码逻辑和触发电路,共产生34个片选信号。AD模块用于完成对10位A/D 转换芯片TLV1578高位D8、D9的处理以及实现D9/A1、D8/A0的分时复用,是一般组合逻辑电路和数据缓冲及锁存电路。TEST模块用于完成对各种模块的自动识别,包括识别某一插槽有无模块以及具体是何种模块,该模块共需处理36个测试信号。DATA模块用于简单处理各种数据,包括数据的缓冲、锁存以及驱动放大等。由于该系统中单片机的串口被RS-485占用,因此,UART模块一般用于实现RS-232串口扩展。
2.2 底层软件设计
底层软件设计是基于顶层软件中五大功能模块而设计的,其中UART模块设计采用VHDL语言描述完成,而DECODE模块、TEST模块、DATA模块和AD模块由于原理和时序相对简单,则采用图形输入设计方法,并通过编译、综合、仿真后生成底层设计文件(即生成相应的设计符号*.sym),以供顶层设计调用。
为了突出重点,这里只简单介绍UART模块的底层设计。UART模块是一个8位全双工异步接收发送器模块,该模块主要由四个子模块构成,即并入串出模块、串入并出模块、接口模块、时钟产生模块。该UART模块的主要功能是:从计算机接收8位并行数据并发送到串口
《CPLD在远程多路数据采集系统中的应用》