可编程逻辑器件与单片机在双控制器中的设计

发布者:自在自由最新更新时间:2014-01-20 来源: dqjsw关键字:可编程逻辑器件  单片机  双控制器 手机看文章 扫描二维码
随时随地手机看文章

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

  现在有很多系统采用可编程逻辑器件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输入

  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[page]

  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寄存器中(其VHDL和单片机源程序由于篇幅所限,不予给出)。

  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构成的双控制器,此用它们各自独立开发项目要容易得多。

关键字:可编程逻辑器件  单片机  双控制器 引用地址:可编程逻辑器件与单片机在双控制器中的设计

上一篇:单片机上电复位电路原理
下一篇:单片机在动态数码显示电路中的设计

推荐阅读最新更新时间:2024-03-16 13:34

单片机模拟遥控器
了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用 单片机 ,然后配合程序完成遥控码的发射。 1、硬件电路 其中, 单片机 选用AT89C2051, 使用两节电池供电就可以工作,用P1口构成3×3的模拟键盘,用一个IO口作为遥控波形输出端,然后接三极管驱动红外发射管,发出需要的遥控波形。 2、程序编写 由于要把波形“发射”出去,需要对遥控码进行调制,调制即把遥控码的高电平和载波进行“与”,结果是连续发射一定数量的载波,而低电平则只需进行简单的延时即可。以SAA3010T编码为例,为双相位编码方式,“0”用844US高电平加844US低电平表示,“1”用844US低电平加844
[单片机]
基于STM32单片机的简易电子琴设计(2)
摘要: 本次设计是课程设计,利用单片机设计简易电子琴。 其主要功能为:按下不同按键,发出不同1 、2 、3、4 、5 、6 、7 七个音符并且用LED 或LCD显示当前按键。选用stm32f103C8T6,它有8个定时器,部分定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入。利用芯片内部相关定时器来输出PWM,从而来驱动蜂鸣器。通过读取外部按键输入的值来相应改变定时器相关寄存器的值,从而来改变PWM的输出频率来达到发出不同音调。 一、设计目的和意义 本综合设计是为本科生开设的必修课,是对学生运用所学知识的一次综合训练。其目的是让学生得到一次进行独立设计的工程实践锻炼,不仅培养严谨的科学态度和扎实的
[单片机]
基于STM32<font color='red'>单片机</font>的简易电子琴设计(2)
51单片机外围模块——A/D模数转换
一、A/D转换器的主要技术指标 1、分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/(2^12 )=2.4mV。 2、量化误差 ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。 3、偏
[单片机]
51<font color='red'>单片机</font>外围模块——A/D模数转换
51单片机串口调试程序一列
51单片机串口调试程序一列 /*定义为中断方式串口处理*/ #define INTERSENDSTR /*不为8032系列芯片 */ //#define CHIP_8032 #i nclude absacc.h #i nclude reg51.h #i nclude string.h #i nclude err.h #ifdef INTERSENDSTR unsigned char xdata sSendComBuf ,sRecComBuf ; unsigned char data bOut,bIn,bSout,bSin; #else #define DEFSENDCHAR TI=0;SBUF=ACC;while(!T
[单片机]
51单片机红外控制步进电机
单片机源程序如下: #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define uchar unsigned char /*********************************************************************************/ sbit IR=P3^2; //红外接口标志 uchar i; unsigned char irtime; //红外用全局变量 bit irpro_ok,irok; unsigned char IRcord ; unsigned cha
[单片机]
ST推出STM32无线微控制器模块,提升物联网产品开发效率
半导体供应商意法半导体推出一个新的加快物联网产品上市的解决方案,该方案可利用现成的微型STM32无线微控制器(MCU)模块加快基于Bluetooth® LE和802.15.4新物联网设备的开发周期。 这个7mm x 11.3mm的 STM32WB5MMG模块让缺少无线设计能力的产品研发团队也能开发物联网产品。为开发层数最少的低成本PCB电路板而设计,新模块集成了直到天线的整个射频子系统。用户还可以免费使用意法半导体的STM32Cube MCU开发生态系统工具、设计向导、射频协议栈和完整软件库,快速高效地完成开发项目。 意法半导体部门副总裁兼微控制器产品总经理Ricardo de Sa Earp表示:“我们的首个基于S
[单片机]
ST推出STM32无线<font color='red'>微控制器</font>模块,提升物联网产品开发效率
一种80C198单片机测控通用系统
各种测控系统和智能仪器、仪表基本组成包括:传感器、计算机系统、执行器。现在,传感器、执行器的通用性越来越好,设计自动测控系统或智能仪器仪表有标准的4~20mA或0~10mA的标准信号输出的传感器和接受标准驱动信号的执行器供选择,因此,设计者只需设计计算机系统部分,计算机系统基本结构是一致的,仅涉及到具体芯片选择,实现途径大同小异,加之单片机技术的迅猛发展,其集成度越来越高,功能越来越强,接口更容易,如80C198,内部有4个带采样保持的10位A/D通道,4个高速触发输入通道,6个高速脉冲发生器的输出可以触发外部事件。一套设计完善的计算机系统便具有极好的通用性。下面介绍一种比较完善的80C198单片机测控系统。 2 系统硬件电路原理
[测试测量]
微控制器的FSMC到底是咋回事?(下)
摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMC的SRAM初始化流程,以及使用STM32CubeMX对FSMC进行配置。 一、SRAM初始化流程 通过上面的讲解,通过对 FSMC 相关的寄存器的描述,大家对 FSMC 的原理有了一个初步的认识,如果还不熟悉的朋友,请一定要搜索网络资料理解FSMC的原理。只有理解了原理,使用库函数才可以得心应手。那么在库函数中是怎么实现FSMC的配置的呢?FSMC_BCRx,FSMC_BTRx 寄存器在库函数是通过什么函数来配置的呢?下面我们来讲解一下 FSMC 相关的库函数: 1.1 使能FSMC时钟 要使用FSMC,当然首先得开启其时钟。然后需要把
[单片机]
<font color='red'>微控制器</font>的FSMC到底是咋回事?(下)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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