About The Site

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus a erat. Nulla quis felis quis libero ultricies vestibulum. Etiam eros elit, porttitor vel, imperdiet venenatis, tristique vel, lacus. Nunc eros lacus, condimentum ut, suscipit id, elementum ut, eros. Sed lorem. Proin aliquet suscipit sapien. Cras sit amet nulla. Aenean vitae metus. Suspendisse elementum varius mi. Duis malesuada, turpis ut luctus faucibus, justo leo tristique.

CPLD在远程多路数据采集系统中的应用

摘要: 采用VHDL语言和图形输入设计方法,给出了用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的继电器。

显而易见,传统的设计思路不但要使用大量的外围芯片,而且需要主处理器直接控制各种采集模块和控制模块,并完成各模块和通道的自检。因此,这种解决方案需要占用主处理器大量的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位并行数据并发送到串口输出;二是从串口读入外部串行数据并将其转换为8位并行数据送到计算机。



并入串出操作由输入信号的高电平触发的,串行输出结束后,结束信号变为‘0'。而串入并出操作则由串行输入的下降沿触发,且串行输入要保持低电平持续半个周期以上。此半周期时钟同时可作为输入移位时钟,8位数据输入结束后,结束信号变为‘0'并维持到下次数据输入。数据口是8位双向三态I/O口。

时钟产生模块产生的时钟用于并入串出模块和串入并出模块。在串入并出操作中,工作时钟只有高于移位时钟,才能检测是否开始一次新的输入过程,因此,工作时钟是移位时钟的4倍。其时钟产生模块的VHDL源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL ; 

ENTITY clkgen IS

PORT (iclk,oclk:BUFFER STD_LOGIC);

END clkgen;

ARCHITECTURE clk OF clkgen IS

SIGNAL iclk_lag,oclk_lag:TIME:=0 ns;

SIGNAL temp_iclk,temp_oclk:STD_LOGIC;

BEGIN

PROCESS(temp_iclk,temp_oclk)

BEGIN

temp_iclk<=NOT temp_iclk AFTER iclk_lag/4;

temp_oclk<=NOT temp_oclk AFTER oclk_ lag;

END PROCESS;

iclk<=temp_iclk;

oclk<=temp_oclk;

END clk;

限于篇幅,UART模块的其它底层模块设计这里不作一一介绍。

图3

3 系统仿真和验证

软件设计完成后,可根据Protel99SE中的电路原理图进行引脚锁定,然后启动编译程序来编译项目。编译器将进行错误检查、网表提取、逻辑综合和器件适配,然后进行行为仿真、功能仿真和时序仿真。最后采用并口下载电缆ByteBlaster并通过JTAG编程方式将top.pof文件下载到EPM7256SQC208-10芯片中,从而生成硬件电路。4 结束语

为了将该远程多路数据采集系统应用到污水处理自动控制系统中,笔者设计了以计算机为核心的分布式控制管理系统(FCS),从而高性价比地实现了污水处理设备的自动化控制和信息化管理,稳定可靠地发挥了污水处理设备的作用,实现了现场数据信息传递的完全数字化,同时保证了数据采集的准确性和控制功能的可靠性。

借助先进的MAX+PLUSII EDA设计软件和高可靠性的CPLD/FPGA芯片开发的这种分布式控制管理系统,不但可大大节省电路开发费用,而且能提高设计效率,同时还可有效实现电路的数字化与微型化。