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