新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CPLD与单片机的双向通信控制器设计

基于CPLD与单片机的双向通信控制器设计

作者:时间:2012-09-17来源:网络收藏

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

本文引用地址:http://www.eepw.com.cn/article/170852.htm

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

1 与单片机AT89C51串行原理

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

单片机到的串行通信接口电路是利用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
  SETB DCLOCK ;给一个上升沿,将数据移入移位寄存器
  ACALL YS1MS
  CLR DCLOCK
  DJNZ R7,JXL ;若未到8次则传送下一位
  SETB EN ;八位命令字全部移入,给EN一个上升沿,使CPLD执行相应操作
  ACALL YS1MS
  POP 07H
  RET

伺服电机相关文章:伺服电机工作原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭