DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1738|回复: 1
打印 上一主题 下一主题

[待整理] CPLD在远程多路数据采集系统中的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 13:58:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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芯片开发的这种分布式控制管理系统,不但可大大节省电路开发费用,而且能提高设计效率,同时还可有效实现电路的数字化与微型化。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 09:34 , 耗时 0.089107 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表