您的位置 首页 传感器

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

可编程逻辑器件的D触发器资源非常有限,而且可编程逻辑器件在控制时序方面不如单片机那样方便,很多不熟悉的应用者往往感到应用起来非常的困难。利用可编程逻辑器件和单片机构成的双向通信控制器克服了两者的缺点,

在传统的操控体系中,人们常常选用单片机作为操控中心。但这种办法硬件连线杂乱,可靠性差,且单片机的端口数目、内部定时器和中止源的个数都有限,在实践使用中往往需求外加扩展芯片。这无疑对体系的规划带来诸多不便。

现在有许多体系选用可编程逻辑器材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(clkevent 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的上升到来后CPLD才干履行相应操作。这是为了避免指令字在字传送期间使CPLD误动作。

当外部器材有中止信号反应到操控器时,也可将特定的指令字由CPLD传送给AT89C51,使AT89C51发生中止进行处理。但不管有多少个外围器材需发生中止操控。在AT89CF51中止子程序中,运转由CPLD向单片机的串行通讯程序,将特定的指令字读到A寄存器中,然后可知是如个外围器材发生的中止(由使用者自行界说),从而可知需何种外部操作。

本双操控体系在项目规划中使用起来十分灵敏便利,这儿选用的是八位指令字,最多可自界说256个指令字。因为一起选用了单片机和CPLD,因而编程十分灵敏便利,工程人员可根据本身特色而相应挑选。例如,有些人的单片机编程才能要比CPLD言语编程略好一些,那他可在VHDL言语编程中把指令字对应的操作界说得简略一些(最简略的莫过于使某个管脚变为高电平或低电平);若是想简化单片机的编程,则可使高电平或低电平);若是想简化单片机的编程,则可使VHDL言语编程中特定指令字对应的操作杂乱一些。

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

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/199688.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部