由可编程逻辑器件与单片机构成的双控制器

发布者:Yaqi最新更新时间:2012-02-25 来源: 21IC关键字:CPLD  AT89C51  串行通信 手机看文章 扫描二维码
随时随地手机看文章

在传统的控制系统中,人们常常采用单片机作为控制核心。但这种方法硬件连线复杂,可靠性差,且单片机的端口数目、内部定时器和中断源的个数都有限,在实际应用中往往需要外加扩展芯片。这无疑对系统的设计带来诸多不便。

现在有很多系统采用可编程逻辑器件CPLD作为控制核心。它与传统设计相比较,不仅简化了接口和控制,提高了系统的整体性能及工作可靠性,也为系统集成创造了条件。但可编程逻辑器件的D触发器资源非常有限,而且可编程逻辑器件在控制时序方面不如单片机那样方便,很多不熟悉的应用者往往感到应用起来非常的困难。利用可编程逻辑器件和单片机构成的双向通信控制器克服了两者的缺点,且把二者的长处最大限度地发挥出来。

1 CPLD与单片机AT89C51双向串行通信原理

1.1 单片机到可编程逻辑器件的串行通信

单片机到CPLD的串行通信接口电路是利用VHDL语言在CPLD中设计一个串行输入并行输出的八位移位寄存器,其端口与单片机的P1.4~P1.7相连,如图1所示。CS 为单片机选信号,当其为低时使能八位寄存器;当DCLOCK信号的上升沿到达clk端口时,八位移位寄存器就会将单片机输出到cxin的一位数据移入;当单片机A寄存器中的八位数据欲传送给CPLD时,就在P1.6连续产生八次上升沿,单片机便顺次地将A中的数据移到cxin,八次后A中的数据段就会出现在CPLD的cxout中。其VHDL源程序如下:

entity cuanxing is

port (clk,cxin,cs:in std_logic;

cxout:out std_logic_vector(7 downto 0));

end;

architecture rtl of cuanxing is

signal shift:std_logic_vector(7 downto 0) ;八位暂存变量并行输出

begin

process(clk)

begin

if(cs='0')then

shift<=(others=>'0');若未被选中,输出全零

elsif(clk'event and clk='1')then ;若上升沿到达clk时,被选中。

shift(7 downto 1)<=shift(6 downto 0) ;八位数据前移一位

shift(0)<=cxin;最低位由cxin输入[page]

end if;

end process;

cxout<=shift;将八位变量送至端口

end rtl;

与之相对应的单片机控制子程序如下(待发数据存放在A中):

CS EQU P1.4

EN EQU P1.5

DCLOCK EQU P1.6

DOUT EQU P1.7

CONV:PUSH 07H

MOV R7,#8 ;将移位个数8存入R7

CLR DCLOCK

SETB CS ;选中移位寄存器

CLR EN

CLR C

JXL:RLC A ;左移一位,将待发数据送至CY

MOV DOUT,C ;送至端口

ACALL YS1MS

SETB DCLOCK ;给一个上升沿,将数据移入移位寄存器

ACALL YS1MS

CLR DCLOCK

DJNZ R7,JXL ;若未到8次则传送下一位

SETB EN ;八位命令字全部移入,给EN一个上升沿,使CPLD执行相应操作

ACALL YS1MS

POP 07H

RET

1.3 可编程逻辑器件到单片机的串行通信

可编程逻辑器件到单片机的串行通信与单片机到可编程逻辑器件的串行通信类似,只不过八位寄存器改为并入串出,其端口如图2所。当单片机的cs=1时,寄存器被选中;当load=1时,待发的数据被加载到bxin上;当clk上升沿到来时,将数据一位一位移出至bxout上,与此同时,单片机一位一位接收到自 bxout上的数据。在clk八个上升沿后,加载到bxin的数据便被传送至单片机的A寄存器中

2 双控制系统的实现原理

由于单片机端口有限,所以大部分外围器件的连线靠CPLD来完成,而对时序控制要求较高的那些外围器件则靠单片机来间接控制。所谓间接控制就是指应用者可以自定义很多个命令字,每个命令字对应着CPLD一项或一系列操作。当单片机想让某外部器件实现某种功能时,可以通过串行通信把命令字传送给可编程逻辑器件 CPLD。CPLD收到该命令字关判断命令字后,便在EN的上升沿到来后执行相应的操作。这里值得一提的是:命令字传送给CPLD后,只有在EN的上升到来后CPLD才能执行相应操作。这是为了防止命令字在字传送期间使CPLD误动作。

当外部器件有中断信号反馈到控制器时,也可将特定的命令字由CPLD传送给AT89C51,使 AT89C51产生中断进行处理。但无论有多少个外围器件需产生中断控制。在AT89CF51中断子程序中,运行由CPLD向单片机的串行通信程序,将特定的命令字读到A寄存器中,从而可知是如个外围器件产生的中断(由应用者自行定义),进而可知需何种外部操作。

本双控制系统在项目设计中应用起来非常灵活方便,这里采用的是八位命令字,最多可自定义256个命令字。由于同时采用了单片机和CPLD,因此编程非常灵活方便,工程人员可根据自身特点而相应选择。例如,有些人的单片机编程能力要比CPLD语言编程略好一些,那他可在VHDL语言编程中把命令字对应的操作定义得简单一些(最简单的莫过于使某个管脚变为高电平或低电平);若是想简化单片机的编程,则可使高电平或低电平);若是想简化单片机的编程,则可使VHDL语言编程中特定命令字对应的操作复杂一些。

单片机的编程过程就是对A寄存器写不同命令字,然后调用串行通信子程序的过程。若是VHDL的命令字,然后调用串行通信子程序的过程。若是VHDL的命令字对应程序简单些,则要完成对某特定外围器件的操作所需要的命令字调用就会多一些。反之亦然,仅此而已。

总之,用单片机与CPLD构成的双控制器,此用它们各自独立开发项目要容易得多。

关键字:CPLD  AT89C51  串行通信 引用地址:由可编程逻辑器件与单片机构成的双控制器

上一篇:用单片机实现数字相位变换器的设计方法
下一篇:廉价隔离型高精度D/A转换器

推荐阅读最新更新时间:2024-03-16 12:54

proteus与keil Cx51的单片机仿真(串行通信口)
单片机串行口工作于方式0,通过74LS164实现串并转换,来控制共阳极数码管的显示,当按下K01按钮显示2010,按下K02键显示1987,按下K03键显示0606,按下K04键显示1988,按下K05键显示1224。其中数字显示可由自己设定. 电路图: C程序: #include reg51.h #include stdio.h #include intrins.h #define uchar unsigned char//宏定义 sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P2_0=P2^
[单片机]
单片机I/O 口模拟串行通信设计
目前普遍采用的MCS51 和PIC 系列 单片机 通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。     1.串行接口的基本通信方式   串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(低电平)。    异步通信采用用异步传送格式   用来表示字符开始。其后为7 或8 位的数据编码,
[单片机]
单片机I/O 口模拟<font color='red'>串行通信</font>设计
TMS320F2812型数字信号处理器与PC的串行通信
摘要:讨论TMS320F2812与PC之间的串行通信方案,给出TI公司的TMS320F2812型DSP和Maxim公司的MAX3160型收发器的硬件接口电路,以及在此基础上使用中断和查询方法实现的串行通信软件流程,同时给出DSP SCI的初始化、发送和接收数据程序代码。 关键词:串行通信;数据信号处理;收发器;PC 引言 目前,微控制器系统在国民经济和人民生活中得到了广泛的运用,而数据传输业仍是一个很重要的领域。对于这些与计算机相距不远的人-机交换设备和串行存储的外部设备(如终端、打印机、逻辑分析仪、磁盘等)来说,采用串行通讯方式交换数据已非常普通 。 在以往DSP与PC之间的串行通信中,由于运行速度的差异和上下位机之间
[应用]
基于单片机和CPLD的数字继电保护装置系统设计
0 引言 ATMEL公司的ATMEGAl28,有丰富的片内资源:它带有8路10位的AD转换器,128K的FLAsH程序存储空间,4K的RAM数据存储空间,4K的EEPROM掉电保持数据存储空间,可通过SPI实现系统内编程,高级语言编程采用功能强大且高效率的GCC编译器和GDB调试器,ATMEGAl28单片机是目前为止GCC所支持的唯一一种8位处理器。ATMEGAl28采用了Harvard结构,具有独立的数据和程序总线,从而使得处理器指令和数据并行,大大提高了处理效率。程序存储器的指令通过一级流水线运行。CPU在执行一条指令的同时读取下一条指令(而传统的51系列的单片机一般没有带内置的AD转换器,没有FLASH程序存储空间,只有1
[单片机]
基于AT89C51单片机16×16 LED汉字滚动显示屏的设计
O 引言 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于 AT89C51单片机 16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。 1 硬件电路组成及工作原理 本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组
[单片机]
基于<font color='red'>AT89C51</font>单片机16×16 LED汉字滚动显示屏的设计
基于ADS7846的电阻式触摸屏接口设计
  触摸屏作为智能仪器、仪表的输入设备,是具有简单、方便、自然的人机交互方式。按照工作原理和传输信息介质的不同,触摸屏主要分为电阻式触摸屏、电容式触摸屏、红外线式触摸屏及表面声波触摸屏4类。电阻式触摸屏对外完全隔离,不怕油污、灰尘、水,经济性很好,适应于各种领域,其产品在触摸屏产品中占90%的市场份额。现介绍电阻式触摸屏的结构及接口设计。   1 电阻式触摸屏的结构   电阻式触摸屏的检测部件是一块与显示器表面紧密配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层阻性导体层(如铟锡氧化物ITO),上面再盖有一层外表面被硬化处理、光滑防刮的塑料层,塑料层的内表面也涂有一层阻性导体层。在两导体层之间有一层具有许多细小隔
[模拟电子]
单片机/CPLD结构体系在电子设计中的应用
自20世纪80年代单片机引入我国以来,学习和应用单片机的热潮始终不减,特别是MCS51系列。这是由单片机的特点决定的。实际上,从单片机/CPLD应用通用数字集成电路系统,到广泛应用单片机,是我国电子设计在智能化应用水平上质的飞跃。据统计分析,单片机的销量单片机/CPLD到目前为止依然逐年递增,而且在很长一段的时间内,单片机依然会是电子设计的主角(虽然这一地址已经受到了CPLD的挑战)。 1 纯单片机系统优缺点 ①大量单片机/CPLD的外围芯片和接口电路使得单片机应用系统的设计变得简单而且快捷,新型单片机的上市和高级语言的支持(如C51)进一步延长了单片机的寿命。 ②长期稳定的发展和使单片机性价比非常高,而且单片
[单片机]
单片机/<font color='red'>CPLD</font>结构体系在电子设计中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved