新闻中心

EEPW首页>嵌入式系统>设计应用> 由可编程逻辑器件与单片机构成的双控制器

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

作者: 时间:2012-02-25 来源:网络 收藏

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一个上升沿,使执行相应操作

ACALL YS1MS

POP 07H

RET

1.3 可编程逻辑器件到单片机的

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

2 双控制系统的实现原理

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

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

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

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

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


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭