摘要:采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述语言设计了一种MCS-51单片机与PLD可编程逻辑器件的接口电路,该接口电路具有体积小、性能可靠、开发便捷、所需外围元件少等优点。电子园51单片机学习网t-^nB]7o`
关键词:单片机;PLD;EDA;VHDL
l6K u%c8PQ}k{44606
电子园51单片机学习网7zz!],PU(_0p]-b
1 引 言电子园51单片机学习网0t4C;pj)g9I
在电子设计技术领域,可编程逻辑器件的广泛应用,为数字系统的设计带来极大的灵活性。由于该器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。极大地改变了传统的数字系统设计方法和设计过程。
M` x[9v*J:JLx44606众所周知,单片机具有性能价格比高、功能灵活、易于人机对话、良好的数据处理能力等特点,PLD则具有高集成度、高速、高可靠以及开发便捷规范等优点,就目前常用的智能化仪器仪表和工业测控系统而言,由PLD和单片机为核心器件构成的综合电子系统的应用领域十分广阔。如果将单片机灵活的控制功能以及良好的人机对话功能与PLD高速高可靠性相结合,必将有效地突破传统电子系统设计中的障碍,并使电子系统的性能有大幅度的提高。本文将以MCS-51与PLD的接口问题作一探讨。
0NrC%MkLj6w}&v446062 接口方式电子园51单片机学习网7a+_+x k'd&g x+`
单片机与PLD器件的接口方式一般有两种:独立方式和总线方式。独立方式通信的时序方式可由所设计的软件自由决定,形式灵活多样,它最大的优点是接口逻辑无须遵循单片机内固定的总线方式的读写时序。PLD的逻辑设计与接口的单片机程序设计可以分先后相对独立地完成。因此,独立方式比较简单,这里不作详细介绍。电子园51单片机学习网#Y2hUJ3h-p
单片机以总线方式与PLD器件进行数据通信,对单片机而言,其编程相对于非总线方式来说具有简单、控制可靠等特点,只需一条单字节指令就能完成所需的读写操作,如,MOV @DPTR,A;MOV A,@DPTR。其通信是纯硬件行为,因此,速度快。对PLD器件来说,可节省I/O口线,如图1所示.,通过19根I/O口线可使单片机与PLD器件之间完成各种数据信息的交换。
u?c!da)UR6w o44606
jC?$F/\1]wK/k44606
\}#S&Y9Q*DE44606要设计单片机与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信号,从而将数据写入输出锁存器。
ns_p \.P]44606电子园51单片机学习网yl8_p?SK/P
电子园51单片机学习网$AjG;e_v3P&Lu ^
电子园51单片机学习网$B|"MXhC [ bt!r
3 接口编程电子园51单片机学习网4w4S-Ik6DT
近几年来,随着EDA技术的不断发展,在各种各样的描述语言中,人们普遍接受VHDL语言,该语言在电子设计领域具有"世界语"的美誉。本设计的接口软件采用VHDL语言编写。限于篇幅,这里仅给出构造体的VHDL程序:
*AjN:WzH}(~-q[+]44606......
6ld c(a;Ag4o[:u44606BEGIN电子园51单片机学习网k{^w-g"? Y
PROCESS(ALE)电子园51单片机学习网 u bO(lK
BEGIN
3f;^I"NcJ S0v+b44606IF ALE'EVENT AND ALE='0'THEN电子园51单片机学习网'DO(p6J7?c
LATCH-ADDERS<=P0; END IF;END PROCESS;电子园51单片机学习网So!R!p/T[
PROCESS(P2,LATCH-ADDRES)
-p%IZ bNxb'BK44606BEGIN
|W0m3v#~R44606IF (LATCH-ADDRES="11110000")AND(P2="11110101") THEN
Y c J M,q%L'm/GyrJ44606WR-ENABLE<=WR;
)X7[LadG!x44606ELSE WR-ENABLE<='1';END IF;END PROCESS;电子园51单片机学习网c%d^*Obo(w4w%N.c
PROCESS(WR-ENABLE)
1W"?-Y.| \WX44606BEGIN
wqMjJO4}rV44606IF WR-ENABLE'EVENT AND WR-ENABLE='1'
F)@5PK:aU}3z\X44606THEN OUT1<=P0;END IF;END PROCESS;电子园51单片机学习网 h,Ae GZd:n*lA
PROCESS(P2,LATCH-ADDRES,READ,RD)
p.ap} k @44606BEGIN电子园51单片机学习网-ceP8q*iBHA[-g
IF(LATCH-ADDRES="01101110")AND(P2="11110001")AND(READY='1')AND(RD='0')
$~(_v bdR44606THEN P0<=IN1;电子园51单片机学习网?j-P|*y`h!y@P
ELSE P0<="ZZZZZZZZ";END IF;END PROCESS;电子园51单片机学习网@~/HP E;HS*d
PROCESS(DIN1)电子园51单片机学习网Ktol)u?9r
BEGIN电子园51单片机学习网 ?8Pu*c:I]!d I%H"U
IF DIN1'EVENT AND DIN1='1' THEN电子园51单片机学习网w%RjeY1]Z
IN1<=DIN1;END IF;END PROCESS;
T0V)FtF%~ ~P {44606PROCESS(P2,LATCH-ADDRES,READ,RD)电子园51单片机学习网dqe;R'?L:N!z F_
BEGIN
}*`4\7p h` p44606IF(LATCH-ADDRES="01101010")AND(P2="11110011")AND(READY='1')AND(RD='0')
V1v:Y!uV C+O d44606THEN P0<=IN2;
+s ey.F,Y'Aw-Y44606ELSE P0<="ZZZZZZZZ";END IF;END PROCESS;
sa S#[q{t6p44606PROCESS(DIN2)电子园51单片机学习网K8Mi0p iF
BEGIN电子园51单片机学习网 _ b1L0g7KZ
IF DIN2'EVENT AND DIN2='1' THEN电子园51单片机学习网?4dz4vC;YG!_
IN2<=DIN2;END IF;END PROCESS;
)@ J?cKo e!y44606DOUT1<=OUT1;电子园51单片机学习网P"]j_ wb iV%I
......电子园51单片机学习网i%_YOmg b
例如,AT89C51将数据4DH送到OUT1的指令是:
(?N u)nKXc UN2B44606MOV A,#4DH电子园51单片机学习网dc/[2pn3[%K&q%O
MOV DPTR,#F5F0H
r)IY$`)q w44606MOVX @DPTR,A
%PO4AAq44606当READY为高电平时,AT89C51从PLD器件的IN1将数据读入的指令是:电子园51单片机学习网\U0g Lz Z,c
MOV DPTR,#F16EH电子园51单片机学习网V$o0P d0I+{!D
MOVX A,@DPTR
$nj|q2|yknP)]p44606AT89C51从PLD器件的IN2将数据读入的指令与从PLD器件的IN1读入数据的指令类似,差别仅在于入口地址不同。电子园51单片机学习网Zm)|+O4Iklh&bw
4 结束语
@%r#Dzce'T8Wm44606本文采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述语言所设计的接口电路,具有体积小、性能可靠、开发便捷、所需外围元件少等优点。电路设计采用自顶向下的系统设计方法。利用本文所介绍的软、硬件电路,结合具体的设计场合,还可变换出多种形式的接口电路。
文章评论(0条评论)
登录后参与讨论