位置:51电子网 » 技术资料 » EDA/PLD

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

发布时间:2007/9/11 0:00:00 访问次数:855

    摘要:介绍一种利用可编程逻辑器件CPLD与单片机AT89C51串行双向通信而构成的双控制器。

    关键词:CPLD AT89C51 串行通信

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

现在有很多系统采用可编程逻辑器件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 ;选中移位寄存器

    摘要:介绍一种利用可编程逻辑器件CPLD与单片机AT89C51串行双向通信而构成的双控制器。

    关键词:CPLD AT89C51 串行通信

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

现在有很多系统采用可编程逻辑器件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 ;选中移位寄存器

-->
相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!