单片机/CPLD结构体系在电子设计中的应用

2018-04-02来源: eefocus关键字:单片机  CPLD  结构体系

    自20世纪80年代单片机引入我国以来,学习和应用单片机的热潮始终不减,特别是MCS51系列。这是由单片机的特点决定的。实际上,从单片机/CPLD应用通用数字集成电路系统,到广泛应用单片机,是我国电子设计在智能化应用水平上质的飞跃。据统计分析,单片机的销量单片机/CPLD到目前为止依然逐年递增,而且在很长一段的时间内,单片机依然会是电子设计的主角(虽然这一地址已经受到了CPLD的挑战)。

 

    1 纯单片机系统优缺点

    ①大量单片机/CPLD的外围芯片和接口电路使得单片机应用系统的设计变得简单而且快捷,新型单片机的上市和高级语言的支持(如C51)进一步延长了单片机的寿命。

    ②长期稳定的发展和使单片机性价比非常高,而且单片机/CPLD积累了大量的资料并拥有了大量的工程技术为员。这一点是CPLD目前难以达到的。

    但是,单片机的缺点也有目共睹:

    ①低速。即使是高速度单片机也只能工作在μs级,这是由单片机串行工作的特点所决定的。

    ②低可靠性。虽然单片机/CPLD目前有很多器件与设计在一定程序上解决了部分问题,如看门狗的广泛应用,但在某些情况下瞬间的复位也会造成严重后果。

    2 纯CPLD设计的优缺点

    即使单纯单片机/CPLD的单片机结构能完成的功能,在某些情况下也宁可使用纯数字电路完成。而当前开始流行的CPLD,则不但克服了单片机的缺点,而且由于可采用VHDL语言编程,进一步单片机/CPLD打破了软硬件工程师的界限,加速了产品的开发过程,使纯数字电路的设计变得简单。人们甚至在讨论用C作为下一代硬件描述语言。

    难怪有专家指出,电子设计的单片机时代即将过去,而以PLD为核心的EDA(电子设计自动化)将是单片机/CPLD未来设计的方向。由于超大规模集成电路技术的发展,单片PLD芯片上已经可以集成上百万门,就系统规模而言,将单片机设计在内也没什么问题。美国的可编程器件厂商已经以软核和硬核嵌入两种形式(将单片机电路嵌入PLD)为设计人员提供帮助。PLD器件取代单片机是早晚的事。但是,在我国当前的普遍应用中,单纯依靠PLD器件还有点早,原因如下:

    ①由于历史单片机/CPLD的原因,我国的电子设计人员大部分应用的是MCS51系列单片机,还没听说哪家公司提供软核或硬核集成。而让这么多人改学其它系列单片机还需要一段时间,而且原有的程序更使人不愿改动。

    ②单片机价格低廉,而PLD如果增加单片机内核的话,至少在目前形势下价格会比较昂贵。

    所以,由于单片机和PLD的互补性,利用单片机加PLD的结构至少在近期内将一种较好的选择。下面通过作者设计的实例,介绍MCS51+EMP703S结构体系的特点及注意事项。

    3 单片机+CPLD结构体系设计实例

    本设计用于单片机/CPLD自动化控制,设计要求如图1所示。

     

6

    对于一个熟悉单片机系统设计的工程师而言,上述设计不会有技术上的困难,问题在于:

    ①要用两个全双工串口;

    ②要求比较多的输入输出口。如果用传统设计方法,势必要用比较多的芯片,电路板的设计也较麻烦,一旦设计有误,必须重新设计整个电路板,费时、费力、费钱。而采用MCS51+EMP7032S设计后,基本上做到了模块化设计,电路的修改只是编程而已。从开始设计到定型所用的时间,基本上就是制作电路板的时间。由于设计了输出信号锁存,完全避免了单片机程序跑飞和看门狗复位所引起的输出的跳变,这时设备完全至关重要。图2是设计原理电路图。

7

    从设计的原理图可以看出,主要部分单片机/CPLD只需要两片集成电路:单片机AT89C51和CPLD——EPM7032S,并且电路板采用模块化设计,预留了扩展接口,只需要配上不同的处理模块,就可以实现数据采集、键盘扫描、显示驱动和继电器控制等许多功能。单片机和EPM7032S之间采用了类似SPI接口的通信方法。如图2所示。采用这种方法,既实现了单片机和CPLD之间的通信,又具有灵活性,并且节约了大量的端口资源。

    EPM7032S有36个I/O口,除去用于和单片机通信的7个端口,还有29个端口可以使用。可满足大部分对于端口扩展设计的需求。图3是为EPM7032编写的测试程序的波形仿真图。

7

     

    图3中:CLK为同步时钟;SEND为数据接收;END为SEND信号的控制端;S为位选端,用业控制串行通信端口选择;RXD、TDX为单片机和EPM7032之间的串行通信端口;RXD1、TXD1、RXD2、TDX2为串行通信扩展口。这种方案,已经过多次检验,对于节省PCB板的面积和布线难度、提高设计可靠性和提高设计效率都非常有帮助。


    单片机程序

    sdosend:

    setb clk

    setb end

    mov r7,#06h

    ssend:

    rrc a

    mov send,c

    nop

    nop

    clr clk

    nop

    nop

    setb clk

    djnz r7,ssend

    nop

    nop

    clr end

    nop

    nop

    setb end

    ret

    VHDL 语言程序

    Library ieee;

    Use ieee.STd_logIC_1164.all;

    Entity pldse1 is

    Port

    (

    so,clk,send :in std_logic

    );

    end pldse1;

    architecture io1 of pldse 1 is

    begin

    process(cs)

    begin

    if(cs='0')then

    casep qout is

    when "000000"=>

    when "000001"=>

    when "000010"=>

    ··················

    when "000100"=>

    when "000101"=>

    when others=>null;

    end case;

    else null;

    end if;

    end procESS;

    process(clk)

    begin

    if(clk'event and clk='0')then

    qout<=data &qout(5 downto 1)

    else null;

    end if;

    end process;

    end io 1;

    通过程序单片机/CPLD可以看出,利用CLK和SEND线发送控制信号;利用END作为结束位,无论什么情况,如果没有结束位的下降沿脉冲,PLD的输出端口不会改变,这样可确保输出信号的稳定。这种输出锁存使单片机在死机复位时依然不影响继电器原输出。PLD在接收到单片机的控制信号后首先暂存,直到收到END的下降沿脉冲时再把数据输出,作出相应的置高低电平的动作。

    由上述设计可以看出,单片机和PLD在使用上有很强的互补性:在逻辑运算、智能控制方面,单片机具有不可替代的优越性;而在高速稳定等方面,PLD无疑是首选。因此,在目前的电子设计中,充分利用单片机+PLD结构将起到事半功倍的效果。


关键字:单片机  CPLD  结构体系 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2018040238493.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于单片机的压力测量控制系统设计
下一篇:利用AT89C51单片机控制剪板机

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机常用芯片MAX7219驱动
一次接收16位数据,在接收的16位数据中:D15~D12可以与操作无关,可以任意写入,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。工作时序图见图7。由于51是8位单片机故需要分两次来送数据。具体操作见驱动程序详解。图7  数据读写时序3 电路原理图电路原理图电路原理图如图7,MAX7219与单片机的连接只需要3条线:LOAD(CS)片选引脚、CLK串行时钟引脚、DIN
发表于 2019-11-08
单片机常用芯片MAX7219驱动
avr单片机八位流水灯程序
八位流水灯程序单片机源程序如下:#include<iom16v.h>#define uint unsigned int#define uchar unsigned charvoid Delay_ms(uint k){         uint i,j;         for(;k>0;k--)                 for(i=142;i>0;i--)       
发表于 2019-11-08
LCD+PIC单片机12864串行显示程序
程序代码:#include<pic.h>#define uchar unsigned char#define uint  unsigned int__CONFIG(HS&WDTDIS);#include "Drive_Serial.h"uchar   line1_data[] = {"顶顶电子欢迎您!"};uchar   line2_data[] = {"  www*ddmcu*com   "};uchar   line3_data[] = {"DD-900实验开发板"};u
发表于 2019-11-08
用PIC10F202单片机制作两路开关源程序
可通过程序顶端的参数进行方便的设置,以满足现场需求。             4.GP1、GP2在单片机默认状态和复位后输出电平为低。        5.待机功耗为400uA(@5V),长按键功耗为500uA(@5V)。        6.已启用内部弱上拉,按键可以不加上拉电阻,如果要保证信号可靠,可以加上拉电阻,          建议选择>=100K的电阻,以降低长时间按下按键在电阻上的功耗。   
发表于 2019-11-08
TM1640与PIC12F629单片机的结合
TM1640是驱动数码管的专用集成电路,可以直接驱动16位共阴数码管,手册请下载附件。/********************************本程序直接驱动16位共阴数码管,各数码管分别驱动0、1、2、……E、F。*/#include <pic.h>  //PIC12F629__CONFIG(0x3F84); #define clk GPIO0  //时钟信号#define dio GPIO1   //数据/地址数据#define uchar unsigned char#define uint unsigned int       
发表于 2019-11-08
AT89S52单片机16LED摇摇棒设计
比较与论证所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡器。而目前能够实现这种功能的器件有很多种,不同的类型的器件也能够很好的完成。本作品本着方便、价格低廉的原则,采用单片机控制,由水银开关的闭合对单片机产生外部中断,从而对中断进行采集。到达一定数量便进行图象的转换。整个系统由单片机控制模块,开关及电源模块和输出显示模块三个部分构成。2、主要部件原理   (1)单片机控制模块    用单片机想要控制LED显示只需要定时输出就可以,但每个人摇动的速度不一样,如何准确的并稳定的变换图案呢?这就
发表于 2019-11-08
AT89S52单片机16LED摇摇棒设计
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved