侯進旺
?。ǚ鹕铰殬I(yè)技術學院,廣東 佛山 528000)
摘要:高阻態(tài)是數(shù)字電路接口器件一個重要的狀態(tài),是接口電路的硬件設計中容易忽視的一種狀態(tài)。本文分析研究在某機床控制中74LS373接口芯片在單片機總線技術擴展I/O口時出現(xiàn)的總線沖突的時序仿真,使用接口芯片的高阻態(tài)可以有效解決多芯片I/O擴展時的總線沖突。
關鍵詞:AT89S51單片機;接口電路;時序分析;仿真;總線沖突
0引言
在基于單片機的工業(yè)產(chǎn)品控制電路設計中,輸入輸出通道電路通常較多地關心信號傳輸中輸入輸出通道的高、低電平,對高阻態(tài)關注較少。實際上硬件設計如果對芯片的高阻態(tài)不注意,將會造成控制電路中接口芯片短路燒毀。下面針對基于AT89S51單片機[1]總線技術進行I/O擴展時接口芯片74LS373高阻態(tài)的時序進行仿真分析研究。
1基于單片機I/O擴展接口電路的硬件設計
1.1基本擴展電路
接口芯片74LS373是一個三態(tài)8D鎖存器,通常用于單片機的輸入輸出接口,其元件原理圖和功能表如圖1所示。
圖174LS373原理圖與功能表從圖1功能表中知,當OE端為低電平,控制端LE為高電平時,輸入D端的數(shù)據(jù)傳送到輸出端Q;當OE和LE同為低電平時,輸出端Q保持原態(tài)(與輸入D無關);當OE為高電平時,無論LE、D如何,輸出均保持高阻態(tài)。
圖2所示電路為基于單片機AT89S51總線技術和兩片接口芯片74LS373進行I/O口擴展的電路[2]。U2擴展輸出接口,U3擴展輸入接口。U2和U3的接口地址分別為7FFFH和FEFFH。
在對圖2電路進行PROTEUS[3]仿真時,設置輸入開關的數(shù)據(jù)為01110110(76H),執(zhí)行如下指令:
MOV DPTR,#0FEFFH
MOVX A,@DPTR ;讀入U3開關數(shù)據(jù)
NOP
MOV DPTR,#7FFFH
MOV A,#55H
MOVX @DPTR,A ;向U2輸出01010101
利用PROTEUS軟件仿真得到基本電路圖2的仿真時序圖,如圖3。從時序圖中看出,在RD信號有效(低電平)之前,AD(0..7)(P0)數(shù)據(jù)為高阻態(tài),說明在讀U3時數(shù)據(jù)出現(xiàn)錯誤(正確應為FFH);在WR信號(低電平)前后,P0上的數(shù)據(jù)也為高阻態(tài)(正確應分別為FFH和55H),說明在U2輸出時數(shù)據(jù)也出現(xiàn)錯誤;同時在對圖2的電路仿真時,P0口的數(shù)據(jù)信號出現(xiàn)短路現(xiàn)象。圖2基于單片機AT89S51總線技術和接口芯片
74LS373進行I/O口擴展的電路
分別對U2和U3執(zhí)行輸出和輸入指令,通過時序分析知,U2的輸出數(shù)據(jù)正確,U3的數(shù)據(jù)出現(xiàn)錯誤。
圖5重新設計后電路的仿真時序圖(下轉(zhuǎn)第48頁)1.2輸入接口的擴展電路錯誤原因分析
從74LS373的功能表可以看出,當OE端保持在低電平,LE同時為低時,其輸出保持原態(tài),說明74LS373具有鎖存功能。由于圖2電路中U3的OE端常接地,使得總線始終被U3占領:當U3的LE為高時,芯片外部輸入的開關信號送到芯片輸出,當U3的LE為低時,其U2輸出的數(shù)據(jù)狀態(tài)被保持鎖存,也就意味著數(shù)據(jù)總線P0口被U3保持在輸入開關決定的數(shù)據(jù)。
事實上AT89S51單片機通過MOVX指令訪問U2和U3時,先將U2和U3的口地址分別輸出到P2口(高8位地址)和P0口(低8位地址),輸出到P0的低8位地址數(shù)據(jù)可能與U3輸入并保持的數(shù)據(jù)不同,從而造成P0口的數(shù)據(jù)沖突。
1.3解決數(shù)據(jù)沖突的方法
從上述分析可以看出,造成數(shù)據(jù)沖突的原因是輸入芯片U3的OE端常接地,使得單片機數(shù)據(jù)總線始終被U3芯片占據(jù)。因此在硬件設計時應該避免單片機的總線始終被某一個芯片占據(jù)的現(xiàn)象。
事實上,從74LS373的功能表看,它還有一個高阻態(tài),只要保證當單片機不訪問U3時或者U3被訪問而在尋址階段時,使U3的輸出端始終保持高阻態(tài),這樣就能避免數(shù)據(jù)沖突。
如圖4為修改后的U3控制電路,OE信號由U4A或非門輸出信號取反得到。仿真結(jié)果如圖5所示。在執(zhí)行讀入U3的指令后,數(shù)據(jù)總線(P0)上的數(shù)據(jù)為76H;在執(zhí)行輸出U2指令后,數(shù)據(jù)總線(P0)上的數(shù)據(jù)為55H,輸入輸出結(jié)果正確。
2結(jié)論
通過以上分析和仿真,在基于單片機控制的電子電路設計中,時序的仿真分析是查找硬件電路錯誤的有效方法。
防止總線上數(shù)據(jù)沖突是硬件工程師在硬件電路設計中需要認真考慮的問題,而高阻態(tài)也是硬件電路設計中常用到的,這也是硬件工程師在電路設計中容易忽視的地方。
在使用單片機總線擴展I/O口時,常需要多個輸入輸出芯片時,正確運用接口芯片的高阻態(tài)是解決總線數(shù)據(jù)沖突的有效方法。
若接口芯片輸出無高阻態(tài)控制,則該芯片不能用于輸入接口擴展。在使用單片機總線技術擴展I/O口時,硬件設計必須要保證總線被單片機訪問的接口芯片占據(jù),而且不被訪問的接口芯片與總線脫離。硬件設計時應該避免單片機的總線始終被某一個芯片占據(jù)。
參考文獻
?。?] 余永權.Atmel89 系列單片機應用技術[M].北京:北京航空航天大學出版社,2002.
?。?] 高玉琴.單片機原理與應用及C51編程技術[M].北京:機械工業(yè)出版社,2011.
?。?] 張靖武,周靈彬.單片機系統(tǒng)的PROTEUS設計與仿真[M].北京:電子工業(yè)出版社,2007.