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

  • 4
  • 0
  • 约2.63千字
  • 约 6页
  • 2017-07-27 发布于湖北
  • 举报

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

基于CPLD与单片机的双向通信控制器设计 来源:无线测温 单片机 CPLD 控制系统 在传统的控制系统中,人们常常采用单片机作为控制核心。但这种方法硬件连线复杂,可靠性差,且单片机的端口数目、内部定时器和中断源的个数都有限,在实际应用中往往需要外加扩展芯片。这无疑对系统的设计带来诸多不便。   现在有很多系统采用可编程逻辑器件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   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

文档评论(0)

1亿VIP精品文档

相关文档