分享

MCS-51单片机与PLD可编程接口设计

 Rain_Time 2015-06-25

摘要:采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述语言设计了一种MCS-51单片机与PLD可编程逻辑器件的接口电路,该接口电路具有体积小、性能可靠、开发便捷、所需外围元件少等优点。

关键词:单片机;PLD;EDA;VHDL

1 引 言

在电子设计技术领域,可编程逻辑器件的广泛应用,为数字系统的设计带来极大的灵活性。由于该器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。极大地改变了传统的数字系统设计方法和设计过程。

众所周知,单片机具有性能价格比高、功能灵活、易于人机对话、良好的数据处理能力等特点,PLD则具有高集成度、高速、高可靠以及开发便捷规范等优点,就目前常用的智能化仪器仪表和工业测控系统而言,由PLD和单片机为核心器件构成的综合电子系统的应用领域十分广阔。如果将单片机灵活的控制功能以及良好的人机对话功能与PLD高速高可靠性相结合,必将有效地突破传统电子系统设计中的障碍,并使电子系统的性能有大幅度的提高。本文将以MCS-51与PLD的接口问题作一探讨。

2 接口方式

单片机与PLD器件的接口方式一般有两种:独立方式和总线方式。独立方式通信的时序方式可由所设计的软件自由决定,形式灵活多样,它最大的优点是接口逻辑无须遵循单片机内固定的总线方式的读写时序。PLD的逻辑设计与接口的单片机程序设计可以分先后相对独立地完成。因此,独立方式比较简单,这里不作详细介绍。

单片机以总线方式与PLD器件进行数据通信,对单片机而言,其编程相对于非总线方式来说具有简单、控制可靠等特点,只需一条单字节指令就能完成所需的读写操作,如,MOV @DPTR,A;MOV A,@DPTR。其通信是纯硬件行为,因此,速度快。对PLD器件来说,可节省I/O口线,如图1所示.,通过19根I/O口线可使单片机与PLD器件之间完成各种数据信息的交换。

要设计单片机与PLD器件以总线方式通信的接口逻辑,必须详细了解单片机的总线读写时序。图2是MCS-51单片机的时序图。ALE为地址锁存使能信号,可利用其下降沿将低8位地址通过P0口锁存到PLD的地址锁存器中;同时,高8位地址在P2口,单片机利用读指令允许信号PSEN的低电平,将指令从P0 口读入,指令读入的时机是在PSEN的上升沿到来之前。然后,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存到地址锁存器。单片机可通过指令MOV A,@DPTR使RD为低电平,由P0口将锁存于IN1(或IN2)的数据读入累加器A。若想要将累加器A的数据送到PLD,可通过指令MOV @DPTR,A,产生写允许信号WR,使译码器输出WR-ENABLE信号,从而将数据写入输出锁存器。

3 接口编程

近几年来,随着EDA技术的不断发展,在各种各样的描述语言中,人们普遍接受VHDL语言,该语言在电子设计领域具有"世界语"的美誉。本设计的接口软件采用VHDL语言编写。限于篇幅,这里仅给出构造体的VHDL程序:

......

BEGIN

PROCESS(ALE)

BEGIN

IF ALE'EVENT AND ALE='0'THEN

LATCH-ADDERS<=P0; END IF;END PROCESS;

PROCESS(P2,LATCH-ADDRES)

BEGIN

IF (LATCH-ADDRES="11110000")AND(P2="11110101") THEN

WR-ENABLE<=WR;

ELSE WR-ENABLE<='1';END IF;END PROCESS;

PROCESS(WR-ENABLE)

BEGIN

IF WR-ENABLE'EVENT AND WR-ENABLE='1'

THEN OUT1<=P0;END IF;END PROCESS;

PROCESS(P2,LATCH-ADDRES,READ,RD)

BEGIN

IF(LATCH-ADDRES="01101110")AND(P2="11110001")AND(READY='1')AND(RD='0')

THEN P0<=IN1;

ELSE P0<="ZZZZZZZZ";END IF;END PROCESS;

PROCESS(DIN1)

BEGIN

IF DIN1'EVENT AND DIN1='1' THEN

IN1<=DIN1;END IF;END PROCESS;

PROCESS(P2,LATCH-ADDRES,READ,RD)

BEGIN

IF(LATCH-ADDRES="01101010")AND(P2="11110011")AND(READY='1')AND(RD='0')

THEN P0<=IN2;

ELSE P0<="ZZZZZZZZ";END IF;END PROCESS;

PROCESS(DIN2)

BEGIN

IF DIN2'EVENT AND DIN2='1' THEN

IN2<=DIN2;END IF;END PROCESS;

DOUT1<=OUT1;

......

例如,AT89C51将数据4DH送到OUT1的指令是:

MOV A,#4DH

MOV DPTR,#F5F0H

MOVX @DPTR,A

当READY为高电平时,AT89C51从PLD器件的IN1将数据读入的指令是:

MOV DPTR,#F16EH

MOVX A,@DPTR

AT89C51从PLD器件的IN2将数据读入的指令与从PLD器件的IN1读入数据的指令类似,差别仅在于入口地址不同。

4 结束语

本文采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述语言所设计的接口电路,具有体积小、性能可靠、开发便捷、所需外围元件少等优点。电路设计采用自顶向下的系统设计方法。利用本文所介绍的软、硬件电路,结合具体的设计场合,还可变换出多种形式的接口电路。


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多