|
摘要:采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述語言設(shè)計(jì)了一種MCS-51單片機(jī)與PLD可編程邏輯器件的接口電路,該接口電路具有體積小、性能可靠、開發(fā)便捷、所需外圍元件少等優(yōu)點(diǎn)。 關(guān)鍵詞:單片機(jī);PLD;EDA;VHDL
1 引 言 在電子設(shè)計(jì)技術(shù)領(lǐng)域,可編程邏輯器件的廣泛應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計(jì)帶來極大的靈活性。由于該器件可以通過軟件編程而對其硬件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法和設(shè)計(jì)過程。 眾所周知,單片機(jī)具有性能價(jià)格比高、功能靈活、易于人機(jī)對話、良好的數(shù)據(jù)處理能力等特點(diǎn),PLD則具有高集成度、高速、高可靠以及開發(fā)便捷規(guī)范等優(yōu)點(diǎn),就目前常用的智能化儀器儀表和工業(yè)測控系統(tǒng)而言,由PLD和單片機(jī)為核心器件構(gòu)成的綜合電子系統(tǒng)的應(yīng)用領(lǐng)域十分廣闊。如果將單片機(jī)靈活的控制功能以及良好的人機(jī)對話功能與PLD高速高可靠性相結(jié)合,必將有效地突破傳統(tǒng)電子系統(tǒng)設(shè)計(jì)中的障礙,并使電子系統(tǒng)的性能有大幅度的提高。本文將以MCS-51與PLD的接口問題作一探討。 2 接口方式 單片機(jī)與PLD器件的接口方式一般有兩種:獨(dú)立方式和總線方式。獨(dú)立方式通信的時(shí)序方式可由所設(shè)計(jì)的軟件自由決定,形式靈活多樣,它最大的優(yōu)點(diǎn)是接口邏輯無須遵循單片機(jī)內(nèi)固定的總線方式的讀寫時(shí)序。PLD的邏輯設(shè)計(jì)與接口的單片機(jī)程序設(shè)計(jì)可以分先后相對獨(dú)立地完成。因此,獨(dú)立方式比較簡單,這里不作詳細(xì)介紹。 單片機(jī)以總線方式與PLD器件進(jìn)行數(shù)據(jù)通信,對單片機(jī)而言,其編程相對于非總線方式來說具有簡單、控制可靠等特點(diǎn),只需一條單字節(jié)指令就能完成所需的讀寫操作,如,MOV @DPTR,A;MOV A,@DPTR。其通信是純硬件行為,因此,速度快。對PLD器件來說,可節(jié)省I/O口線,如圖1所示.,通過19根I/O口線可使單片機(jī)與PLD器件之間完成各種數(shù)據(jù)信息的交換。
要設(shè)計(jì)單片機(jī)與PLD器件以總線方式通信的接口邏輯,必須詳細(xì)了解單片機(jī)的總線讀寫時(shí)序。圖2是MCS-51單片機(jī)的時(shí)序圖。ALE為地址鎖存使能信號,可利用其下降沿將低8位地址通過P0口鎖存到PLD的地址鎖存器中;同時(shí),高8位地址在P2口,單片機(jī)利用讀指令允許信號PSEN的低電平,將指令從P0 口讀入,指令讀入的時(shí)機(jī)是在PSEN的上升沿到來之前。然后,由P2口和P0口分別輸出高8位和低8位數(shù)據(jù)地址,并由ALE的下降沿將P0口的低8位地址鎖存到地址鎖存器。單片機(jī)可通過指令MOV A,@DPTR使RD為低電平,由P0口將鎖存于IN1(或IN2)的數(shù)據(jù)讀入累加器A。若想要將累加器A的數(shù)據(jù)送到PLD,可通過指令MOV @DPTR,A,產(chǎn)生寫允許信號WR,使譯碼器輸出WR-ENABLE信號,從而將數(shù)據(jù)寫入輸出鎖存器。
3 接口編程 近幾年來,隨著EDA技術(shù)的不斷發(fā)展,在各種各樣的描述語言中,人們普遍接受VHDL語言,該語言在電子設(shè)計(jì)領(lǐng)域具有"世界語"的美譽(yù)。本設(shè)計(jì)的接口軟件采用VHDL語言編寫。限于篇幅,這里僅給出構(gòu)造體的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將數(shù)據(jù)4DH送到OUT1的指令是: MOV A,#4DH MOV DPTR,#F5F0H MOVX @DPTR,A 當(dāng)READY為高電平時(shí),AT89C51從PLD器件的IN1將數(shù)據(jù)讀入的指令是: MOV DPTR,#F16EH MOVX A,@DPTR AT89C51從PLD器件的IN2將數(shù)據(jù)讀入的指令與從PLD器件的IN1讀入數(shù)據(jù)的指令類似,差別僅在于入口地址不同。 4 結(jié)束語 本文采用Lattice公司的PLD器件ISPLSI1032,基于VHDL描述語言所設(shè)計(jì)的接口電路,具有體積小、性能可靠、開發(fā)便捷、所需外圍元件少等優(yōu)點(diǎn)。電路設(shè)計(jì)采用自頂向下的系統(tǒng)設(shè)計(jì)方法。利用本文所介紹的軟、硬件電路,結(jié)合具體的設(shè)計(jì)場合,還可變換出多種形式的接口電路。
|