單片機(jī)并行接口擴(kuò)展技術(shù)第五章文檔_第1頁
單片機(jī)并行接口擴(kuò)展技術(shù)第五章文檔_第2頁
單片機(jī)并行接口擴(kuò)展技術(shù)第五章文檔_第3頁
單片機(jī)并行接口擴(kuò)展技術(shù)第五章文檔_第4頁
單片機(jī)并行接口擴(kuò)展技術(shù)第五章文檔_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第五章 AT89S51單片機(jī)最小系統(tǒng)組成及存儲器的擴(kuò)展    本章主要講述了單片機(jī)系統(tǒng)的最小組成以及各種存儲器電路的擴(kuò)展方法,特別對GAL譯碼方法進(jìn)行了討論。 5.1 單片機(jī)最小系統(tǒng)組成    能使單片機(jī)工作的最少器件構(gòu)成的系統(tǒng)稱為單片機(jī)的最小系統(tǒng)。對于AT89S51單片機(jī),由于其內(nèi)部有4K可在線編程的Flash存儲器,用它組成最小系統(tǒng)時,不需機(jī)外擴(kuò)程序存儲器,只要有復(fù)位電路和時鐘電路即可,因此,由AT89S51單片機(jī)組成的最小系統(tǒng)如圖5.1所示:       &#

2、160;              圖5.1是一個實際應(yīng)用的最小系統(tǒng),74HC14可以提高復(fù)位的可靠性;另外,當(dāng)P0用作I/O口時,需要接10k20k的上拉電阻。 5.2 單片機(jī)的時序     時序就是進(jìn)行某種操作時,各種數(shù)據(jù)、控制信號先后出現(xiàn)的順序。單片機(jī)的工作時序是個很重要的概念,了解時序是進(jìn)行硬件電路設(shè)計的第一步 5.2.1 單片機(jī)取指和執(zhí)行時序     運行單片機(jī)程序時,總是按照取指、譯碼、執(zhí)行,再取指、再譯

3、碼、再執(zhí)行的順序進(jìn)行。為了說明CPU的時序,把12個振蕩周期稱為一個機(jī)器周期,2個振蕩周期被稱為一個狀態(tài)(state),每個狀態(tài)中,前一個振蕩周期被稱為相(Phase)1,第二個振蕩周期被稱為相(Phase)2,這樣任何一個振蕩周期都可以用SiPj(i=16;j=12)來表示。ALE信號總是在一個機(jī)器周期的S1P2、S2P1和S4P2、S5P1被激活。     單周期指令總是從S1P2開始取指,當(dāng)操作碼被鎖存到指令寄存器時,如果是雙字節(jié)指令,在同一機(jī)器周期的S4讀第二個字節(jié)代碼;如果是個單字節(jié)指令,在S4仍會讀一次,但這次讀到的內(nèi)容將被忽略或丟棄。在任何情況下,指

4、令都是在S6P2執(zhí)行完畢。單周期、單字節(jié)指令和單周期、雙字節(jié)指令的取指、執(zhí)行過程如圖5.2的(A)、(B)所示。AT89S51單片機(jī)的指令中,大多數(shù)指令都是單周期或雙機(jī)器周期指令,只有乘法指令(MUL,multiply)和除法指令(DIV,divide)需要四個機(jī)器周期才能完成。     單字節(jié)雙周期指令的取指、執(zhí)行時序如圖5.2(C)所示。共有四次取指,但只有第一次是有效的,后三次都被丟棄。在這類指令中,有一個例外,即 MOVX 指令,它的取指和執(zhí)行時序如圖 5.2 (D)所示,當(dāng)讀取和執(zhí)行MOVX指令時,在第二個機(jī)器周期的沒有了兩次取指操作,并且,在第二個機(jī)器

5、周期的S1P2、S2P1期間,ALE信號也不會出現(xiàn)。                           5.2.2 單片機(jī)訪問外部存儲器的時序     單片機(jī)外部的存儲器可分成兩種,即程序存儲器和數(shù)據(jù)存儲器,程序存儲器一般都是只讀,而數(shù)據(jù)存儲器則可讀、寫。由于單片機(jī)系統(tǒng)中外部數(shù)據(jù)存儲器和I/O端口是統(tǒng)一編址的,讀、寫外部數(shù)據(jù)存

6、儲器的時序和讀寫I/O端口的時序完全一樣。    AT89S51單片機(jī)片內(nèi)有4k可在線編程的程序存儲器,當(dāng)程序超過4K時,就必須擴(kuò)展外部程序存儲器,AT89S51單片機(jī)最大可擴(kuò)展64K的外部程序存儲器。當(dāng)單片機(jī)CPU從外部程序存儲器取指令時,PCH(A15A8)由P2口輸出;PCL(A7A0)由P0口輸出,讀取的指令代碼也由P0口輸入,此時,P0分時復(fù)用作地址/數(shù)據(jù)總線,為了將P0口的地址/數(shù)據(jù)信息分開,單片機(jī)同時輸出一個地址鎖存允許信號ALE(Address Latch Enable),用于鎖存P0口的地址信息。AT89S51單片機(jī)外部程序存儲器的讀時序可分成兩種情況,即

7、讀MOVX類指令時的情況和讀其它類指令的情況,具體的時序如圖5.3(a)、(b)所示。               當(dāng)讀取的不是MOVX類指令時,讀外部程序存儲器時序如圖5.3(a)所示。每一個機(jī)器周期中,地址鎖存允許信號ALE兩次有效,在ALE由高變低時,出現(xiàn)在P0口的信息總是有效地址PCL,可用外部地址鎖存器將PCL鎖存起來,形成地址總線的A7A0;/PSEN(program store enable)也是每個機(jī)器周期兩次有效,用于選通外部程序存儲器,使指令送到

8、P0總線上,由CPU取入;P2口輸出PCH,形成地址總線的高8位,即A15A7;P0口交替出現(xiàn)地址信息PCL和指令代碼,即在ALE的下降沿出現(xiàn)地址信息,在/PSEN有效時出現(xiàn)的是指令代碼。這種情況下,若專用功能寄存器AUXR中的DISALE位為0,ALE有效信號會以振蕩器頻率(的1/6)的恒定速率出現(xiàn)在引腳上。ALE信號,主要有兩個功能,一個是用于鎖存出現(xiàn)在P0口的PCL,另一個是用來作為外部時鐘或定時脈沖。                當(dāng)讀取的指令是MOVX類指

9、令時,讀外部程序存儲器時序如圖5.3(b)所示。MOVX類指令是單字節(jié)雙周期指令,即需要兩個機(jī)器周期才能完成。在第一個周期的S5狀態(tài),ALE由高變低,P0總線上出現(xiàn)的將不再是有效的PCL值,而是一個有效的地址信息,若執(zhí)行的是MOVX DPTR類指令,則此有效的地址信息為地址DPL的值,同時,在P2口出現(xiàn)的信息是有效的DPH值;若執(zhí)行的是MOVX Ri類指令,此有效的地址信息為Ri的內(nèi)容,同時在P2口線上出現(xiàn)的將是特殊功能寄存器P2口內(nèi)鎖存器的內(nèi)容。在第一個機(jī)器周期的S6狀態(tài),/PSEN信號將不再出現(xiàn),且下一個機(jī)器周期的第一個ALE有效信號也不再出現(xiàn)。從圖5.3可以看出,執(zhí)行MOVX類指令需要兩

10、個機(jī)器周期,ALE信號出現(xiàn)三次,比讀非MOVX類指令時少了一次;/PSEN信號出現(xiàn)了兩次,比非MOVX類指令少了兩次。讀到MOVX指令操作碼后,在執(zhí)行階段,/RD、/WR)會有效,這時,在P0總線上將出現(xiàn)有效的輸入(或輸出)數(shù)據(jù)。 5.3單片機(jī)系統(tǒng)中的半導(dǎo)體存儲器    存儲器是單片機(jī)系統(tǒng)的一個重要組成部分,其功能主要是存放程序或數(shù)據(jù)。存儲器有很多種分類方法,如按照制造工藝不同可分為雙極型晶體管電路和MOS電路兩種,雙極型存儲器的存取速度快,但集成度低、功耗大;MOS型存儲器正好相反,集成度高,功耗低,但速度較慢。按功能不同,存儲器又可分為隨機(jī)存取存儲器(簡稱RA

11、M,Random Access Memory)、只讀存儲器(ROM,Read Only Memory)以及可讀寫ROM三大類,如圖5.4所示。            5.3.1隨機(jī)存取存儲器(RAM)     隨機(jī)存取存儲器(RAM)在單片機(jī)系統(tǒng)中主要用于存放數(shù)據(jù),用戶程序可隨時對RAM進(jìn)行讀或?qū)懖僮?,斷電后,RAM中的信息將丟失。RAM可分為靜態(tài)RAM(Static RAM,SRAM)和動態(tài)RAM(Dynamic RAM,DRAM)兩種。SRAM中的內(nèi)容

12、在加電期間存儲的信息不會丟失;而DRAM在加電使用期間,當(dāng)超過一定時間時(大約2ms),其存儲的信息會自動丟失。因此,為了保持存儲信息不會丟失,必須設(shè)置刷新電路,每隔一定時間對DRAM進(jìn)行一次刷新。與SRAM相比,DRAM具有集成度高、功耗低、價格低等優(yōu)點,但因為其需要刷新電路,與CPU進(jìn)行聯(lián)接時比SRAM復(fù)雜。靜態(tài)RAM雖然集成度低、功耗高、但由于和CPU的接口電路簡單,在單片機(jī)系統(tǒng)中被廣泛采用。SRAM在單片機(jī)系統(tǒng)中主要用作數(shù)據(jù)存儲器,常見的芯片有6116、6264、628128等。5.3.2只讀存儲器(ROM)    只讀存儲器(ROM)在單片機(jī)系統(tǒng)中主要用

13、作外部程序存儲器,其中的內(nèi)容只能讀出,不能被修改,斷電情況下,ROM中的信息不會丟失。按照制造工藝的不同,ROM可分為如下幾種:   (1)掩膜ROM。掩膜ROM是在工廠生產(chǎn)的時候,通過“掩膜”技術(shù)將需存儲的程序等信息由廠家固化在芯片內(nèi),這種ROM制成后便無法改變其中內(nèi)容,掩膜ROM的成本低,適用于做成固定的、成批生產(chǎn)的程序存儲芯片。   (2)紫外線擦除的可編程ROM又稱EPROM(Erasable PROM)。這種芯片上開有一個小窗口,紫外線通過小窗口照射內(nèi)部電路可以擦除內(nèi)部的信息,芯片內(nèi)的信息被擦除后可重新進(jìn)行編程,常見的芯片有27C32、27C6

14、4、27C128、27C512等,EPROM在單片機(jī)系統(tǒng)中常用作外部擴(kuò)展的程序存儲器。   (3)OTP型PROM。OTP(One Time Programmable)型PROM(Programmable ROM)在出廠時不寫入信息,用戶可根據(jù)自己的需要將信息寫入其中,但只能寫入一次,即一次寫入后不能再寫入,這種存儲器常被集成到單片機(jī)內(nèi)部,目前有許多OTP型的單片機(jī),OTP型的存儲器很少見。5.3.3非易失性隨機(jī)存儲器(NVRAM)    非易失性(Nonvolatile)隨機(jī)存儲器(NVRAM)是指可電擦除的存儲器,它們具

15、有RAM的可讀、寫特性,又具有ROM停電后信息不丟失的優(yōu)點,在單片機(jī)系統(tǒng)中既可作程序存儲器,也可作數(shù)據(jù)存儲器用。這類芯片主要有EEPROM或EEPROM(Electrically Erasable PROM)和Flash。按接口方式不同,NVRAM又可分成兩種,即并行接口和串行接口。并行接口的芯片因需要封裝很多條的數(shù)據(jù)線和地址線,容量一般較小。串行接口的芯片一般只用二條或三條線和CPU交換數(shù)據(jù),因此,容量一般很大。并行接口的芯片在單片機(jī)系統(tǒng)中即可用作程序存儲器,也可用作數(shù)據(jù)存儲器,而串行接口的芯片只能用作數(shù)據(jù)存儲器。5.3.4存儲器的主要參數(shù)    存儲器的主要性

16、能參數(shù)有三個,即存儲容量、存取周期和功耗。   (1)存儲容量。存儲器是由許多存儲單元組成,每個存儲單元又由若干存儲元組成,每個存儲元存放1位二進(jìn)制代碼。存儲容量是表示存儲器存放信息量的指標(biāo)。存儲容量越大,所能存儲的信息就越多。一個存儲器芯片的容量常用有多少個存儲單元以及每個存儲單元可存放多少位二進(jìn)制數(shù)來表示。例如,某存儲器芯片有1024個單元,每個存儲單元可存放4位二進(jìn)制數(shù),則常以1024×4表示該存儲器芯片的容量。容量的單位用K表示,1K即表示1024(210)個存儲單元,這樣,上述存儲器芯片的容量便可記作1K×4。在單片機(jī)系統(tǒng)中,存取數(shù)據(jù)時常以字節(jié)

17、(Byte)為單位,一個字節(jié)規(guī)定由8個二進(jìn)制位組成,因此,單片機(jī)中的數(shù)據(jù)存儲器一般情況下每個單元都是由8個存儲元組成,表示存儲器容量時更常見的是KB。   (2)存取周期。存儲器從接收到尋找存儲單元的地址碼開始,到它取出或存入數(shù)據(jù)所需要的時間,稱為存取周期,這是用以表示存儲器工作速度的重要指標(biāo)。MOS型存儲器的存取周期約為100300ns。   (3)功耗。每個存儲器芯片的功率稱為功耗,單位為mW芯片。功耗又分為工作功耗和維持功耗。維持功耗是存儲器未選通時,處于低功耗、高輸出阻抗、后備狀態(tài)下時的功耗,芯片被選通后,它能自動進(jìn)入讀寫工作狀態(tài),對DRAM而言

18、,維持功耗要比工作功耗小12個數(shù)量級。有時功耗的單位為Wb (每存儲位的功耗)。5.3.5存儲器容量的計算    芯片存儲容量的識別與計算。對于并行接口的存儲器芯片,由地址線的條數(shù)可以確定芯片包含的存儲單元數(shù),由數(shù)據(jù)線的條數(shù)可以確定每個單元包含的存儲元的數(shù)量。如SRAM芯片6264,它有13條地址線,則其包含的存儲單元數(shù)為213=23×210=8K,8條數(shù)據(jù)線表明其每個單元包含了8個存儲元,則6264的容量為8K×8=8KB;對于串行接口芯片,從芯片的型號基本上就可以看出容量,不同廠商的有各自的編號。5.4 單片機(jī)系統(tǒng)存儲器的擴(kuò)展 &

19、#160;  AT89S51單片機(jī)的內(nèi)部集成了CPU、RAM、程序存儲器、定時計數(shù)器、I/O接口以及串行通信接口等、使用非常方便,對于簡單的控制及檢測系統(tǒng)利用一片單片機(jī)就夠了,但對于一些較大的復(fù)雜應(yīng)用系統(tǒng),往往還需要擴(kuò)展一些外圍芯片,如存儲器、A/D、D/A以及各種接口芯片等以補(bǔ)充片內(nèi)硬件資源的不足。本章主要介紹外部存儲器的擴(kuò)展方法,其它的接口芯片在將在下一章中討論。單片機(jī)外部的存儲器分為(程序)存儲器和數(shù)據(jù)存儲器,它們使用不同的讀信號,地址互相重疊,都為64K的地址空間。5.4.1單片機(jī)系統(tǒng)地址、數(shù)據(jù)和控制總線的產(chǎn)生     

20、60;         AT89S51單片機(jī)是一種基于總線的單片機(jī),外部存儲器和端口的擴(kuò)展實際上就是地址、數(shù)據(jù)和控制總線如何連接的問題。如前所述,當(dāng)單片機(jī)系統(tǒng)有外擴(kuò)的存儲器或端口時,P0口分時復(fù)用為低8位地址(A7A0)和數(shù)據(jù)總線(D7D0),P2口提供高8位的地址(A15A8),單片機(jī)通過/RD、/WR控制信號對外部數(shù)據(jù)存儲器或I/O端口進(jìn)行讀、寫,外部程序存儲器只有讀操作,通過/PSEN實現(xiàn)。顯然,P0口即是數(shù)據(jù)總線;只要把P0口的低8位地址信息分離并鎖存下來,便可以和P2口一起構(gòu)成地址總線。為此,單片機(jī)專門輸出一個地址

21、鎖存允許(ALE)信號,其作用就是鎖存P0口的地址信息,單片機(jī)P0口的地址/數(shù)據(jù)分離方法如圖5.5所示。    圖中的地址鎖存器常用帶三態(tài)輸出的74LS373、74LS573或者8282等實現(xiàn),74LS373是三態(tài)輸出并有鎖存功能的的8D觸發(fā)器,其引腳分布如圖5.6(a)所示。/OE為輸出允許,LE為鎖存允許,D0D7為D型觸發(fā)器的輸入端,O0O7為SN74LS373的輸出端,從輸入D端到輸出O端的邏輯電路如圖5.6(b)所示,其中n =07。     當(dāng)輸出允許信號(/OE)為高電平時,輸出端Qn為高阻狀態(tài),正常工作時,/OE接地;

22、LE為鎖存允許信號,當(dāng)其為高電平時,信號可以從D端傳輸至Q端,即Q端的信號會隨著D端信號的變化而變化;當(dāng)LE從高電平跳變到低電平時,跳變時D端的信號就被鎖存到Q端,以后只要LE為低電平,不論D端的信號如何改變,Q端的電平都不會發(fā)生變化。單片機(jī)系統(tǒng)中,通常將ALE信號接到LE端,由圖5.3(程序存儲器的讀時序)可知,每當(dāng)ALE由高變低時,P0口的信息正好是PCL(非MOVX指令時)或有效的地址(MOVX指令時),這樣就可以利用ALE信號把通過SN74LS373把P0口的址址信息鎖存下來,形成地址總線的低8位,實現(xiàn)地址/數(shù)據(jù)分離。     SN74LS373的真值表如

23、表5.1所示:                SN74LS573的功能與SN74LS373完全一樣,但兩者的引腳分布不同。SN74LS373的輸入端D和輸出端O分布在芯片兩側(cè),而SN74LS573的引腳分布如圖5.7所示,所有輸入端D位于同一側(cè),而輸出端O位于芯片的另一側(cè),這樣繪制PCB印制電路板圖時,連線會更方便。實際應(yīng)用系統(tǒng)中,還可以用SN74HC373或SN74HC573,HC系列的芯片速度比LS系列要快。5.4.2單片機(jī)系統(tǒng)程序存儲器(EPROM/

24、E2PROM/Flash)擴(kuò)展    AT89S51單片機(jī)內(nèi)部有4KB Flash,當(dāng)程序大于4KB時,就需要擴(kuò)展程序存儲器。由于AT89S51是基于總線的單片機(jī),因此,作為程序存儲器的芯片首先必須是并行接口的芯片,其次,程序存儲器還須具有系統(tǒng)掉電后信息不會丟失的特性,所以,前面討論的并行接口EPROM、EEPROM、Flash芯片都可以作為程序存儲器。單片機(jī)系統(tǒng)中最常見的程序存儲器是用紫外線擦除的27系列EPROM芯片,如27C64(8KB)、27C128(16KB)、27C256(32KB)以及27C512(64KB)等。27系列芯片上一般都有一個小窗口,用于

25、擦除其中的信息,當(dāng)寫入調(diào)試好的程序后,一定要將小窗口用不透明的膠紙?zhí)希駝t,陽光中的紫外線可能會破壞其中的信息;在一些特殊的場合,可能需要系統(tǒng)有在線編程功能,這時就只能用EEPROM和Flash作為程序存儲器。很多廠商都生產(chǎn)E2PROM和Flash芯片,如ATMEL 公司的AT28C64(8KB E2PROM)、AT28C256(32KB E2PROM)以及AT29C256(32KB Flash)、AT29C512(64KB Flash)等。程序存儲器的“片選(/CE)”信號一般都是直接接地,不存在譯碼的問題。單片機(jī)系統(tǒng)最多可擴(kuò)展64KB的外部程序存儲器。擴(kuò)展32K程序存儲器的電路如圖5.8

26、(a)所示:                 單片機(jī)擴(kuò)展程序存儲器,/EA引腳必須接地;由P2口和鎖存器共同組成16位的地址總線;P0為數(shù)據(jù)總線;/PSEN為控制總線。27C256是一個容量為32KB EPROM芯片,引腳定義如圖5.8(b)所示,它共有28個引腳,分別是:電源(VCC)、數(shù)字地(GND)、地址引腳(A14A0)、數(shù)據(jù)引腳(O7O0)、/片選信號(/CE)、輸出允許(/OE)和編程電源Vpp。27C256作為程序存儲器時,其地址引腳A14A0分別接地

27、址總線的A14A0;數(shù)據(jù)引腳D7D0分別接數(shù)據(jù)總線的D7D0;片選信號/CE接地;輸出允許(/OE)接程序選通允許/PSEN。VCC接+5V電源;GND接數(shù)字地;Vpp接+5V電源。            5.4.3單片機(jī)系統(tǒng)數(shù)據(jù)存儲器(SRAM/EEPROM/Flash)的擴(kuò)展    單片機(jī)系統(tǒng)擴(kuò)展數(shù)據(jù)存儲器按存儲器接口類型可分為兩種,即擴(kuò)展并行接口的數(shù)據(jù)存儲器和擴(kuò)展串行接口的數(shù)據(jù)存儲器。傳統(tǒng)的擴(kuò)展數(shù)據(jù)存儲器的方法即是指擴(kuò)展并行接口的數(shù)據(jù)存儲器,擴(kuò)展串行接口數(shù)據(jù)存

28、儲器的方法見后面的章節(jié)。    并行數(shù)據(jù)存儲器的擴(kuò)展和程序存儲器的擴(kuò)展方法基本相同,即地址總線和數(shù)據(jù)總線的連接和程序存儲器完全一樣,訪問數(shù)據(jù)存儲器時的控制總線主要由/RD、/WR等組成。SRAM、E2PROM、Flash芯片都可以作為數(shù)據(jù)存儲器,單片機(jī)系統(tǒng)最常見的SRAM型數(shù)據(jù)存儲器有6264(8KB)、62256(32KB)628128(128KB),前面提到的AT28C64、AT28C256、AT29C256等也都可用作外部RAM,但用E2PROM和FLASH芯片作外部RAM時,寫操作的速度要比SRAM慢得多。系統(tǒng)擴(kuò)展8KB外部RAM的電路如圖5.9(a)、(

29、b)所示:                由于數(shù)據(jù)存儲器可讀、可寫,所以,數(shù)據(jù)存儲器芯片與程序存儲器芯片的最大區(qū)別是它都有一個寫信號引腳,圖5.9(a)為擴(kuò)展6264的原理圖。SRAM 6264的容量為8KB,有28個引腳,即電源和地引腳(Vcc、GND)、13個地址引腳(A12A0)、8個數(shù)據(jù)引腳(O7O0)、2個片選引腳(/CE1、CE2)、1個寫信號引腳(/WE)、1個輸出允許(/OE)信號引腳,具體的引腳定義如圖5.9(b)所示。一般情況下,當(dāng)存儲

30、器的“片選(/CE)”信號無效時,O7O0為三態(tài)輸出。從圖5.8和5.9可以看出,并行接口的存儲器芯片引腳基本相同,大容量的芯片地址線增加,除了電源和地外,其余的引腳可分成三類,即接地址總線的引腳(AnA0)、接數(shù)據(jù)總線的引腳(O7O0)以及接控制總線的引腳(/OE、/WE、/CE、/RD)等。單片機(jī)數(shù)據(jù)存儲器最大可擴(kuò)展64KB,可以用多片SRAM芯片實現(xiàn),也可以用一片64KB容量的芯片實現(xiàn),但需要注意,一般的單片機(jī)系統(tǒng)除了擴(kuò)展外部RAM,可能還需要擴(kuò)展各種端口,如A/D、D/A轉(zhuǎn)換或用于鍵盤或顯示的I/O端口等,由于單片機(jī)系統(tǒng)的外部RAM和端口是統(tǒng)一編址的,即是說如果一個地址用作外部存儲器單

31、元,則將不能再用作端口地址,反之亦然,所以,實際應(yīng)用中很少有擴(kuò)展64KB外部RAM的,如果實際應(yīng)用系統(tǒng)確實需要64KB或更大的外部RAM空間,則可以通過存儲器分頁技術(shù)或采用擴(kuò)展串行接口的外部RAM解決。5.5 譯碼電路的設(shè)計方法    外圍擴(kuò)展電路可以大大增強(qiáng)單片機(jī)的功能,實際應(yīng)用中,單片機(jī)應(yīng)用系統(tǒng)中一般都包含了許多外圍接口芯片,所有的外圍并行接口芯片都是通過三組總線和單片機(jī)相連,任何時刻,單片機(jī)只能和選中的其中一個進(jìn)行數(shù)據(jù)交換,而未選中的芯片為輸出為高阻狀態(tài),換句話說,在任何時候,單片機(jī)系統(tǒng)中的所有外圍接口芯片只能有一個的片選信號(/CE或/CS)為低電平,其余

32、的均為高電平,實現(xiàn)這種功能的電路被稱為“譯碼電路”,各外圍芯片的地址由譯碼電路決定。譯碼電路的輸入為地址和控制信號,輸出為各外圍接口芯片的片選信號。單片機(jī)系統(tǒng)中常見的譯碼方法有二種,即線選法和全地址譯碼法,前者直接用高位地址作為片選信號,后者用專用的譯碼邏輯電路如74LS138或GAL16V8和GAL20V8等實現(xiàn)譯碼。5.5.1線選法進(jìn)行譯碼    線選法就是把高位地址線單獨接到外圍接口芯片的片選(/CE、/CS)端,只要高位地址線為低電平即可選取中芯片,如圖5.10所示。       

33、60;        在圖5.10中,共擴(kuò)展了五個外圍芯片,即兩片RAM芯片(6116),1個并行I/O接口芯片,1個A/D轉(zhuǎn)換芯片(ADC0809)和1個D/A轉(zhuǎn)換芯片,其地址如表5.2所示。使用線選法時,要注意幾個問題。· 線選法中有非常嚴(yán)重的地址重疊現(xiàn)象。如圖5.10中,只要向A12為0的地址寫數(shù)據(jù),一定能寫到DAC0832中,只要向A15為0的單元寫數(shù)據(jù)則一定能寫到第一片6116中,那么,如果向6800H地址單元寫數(shù)據(jù),這時,A15為0,則第一片6116被選中,而A12也為0,則0832也同時被選中,這時就會出數(shù)據(jù)沖

34、突和發(fā)生錯誤,因此,用線選法時,一定要把沒用到的地址位取1,如表5.2所示,這樣才不會出現(xiàn)混亂。 · 用線選法時,雖然硬件簡單,但所用的片選線只能是高位地址線,如果將圖5.10中的數(shù)據(jù)存儲器芯片換成6264(8KB),由于6264有13條地址線(A12A0),則只剩下三條線P2.7 、P2.6 、P2.5可用于片選信號,即系統(tǒng)最多只能擴(kuò)展3個包含6264在內(nèi)的外圍芯片,這主要是因為高位地址線的權(quán)重很大,圖5.10中用P2.7作為第一片6116的片選,占用了低32K的空間,而6116實際上只用了2KB,剩余的30K被浪費掉了。     為了解決線選法存在的

35、問題,在實際應(yīng)用中,常采用全地址譯碼法,用專門的譯碼器如74LS139(雙24譯碼器)、74LS138(38譯碼器)以及74LS154(416譯碼器)等產(chǎn)生片選信號。5.5.2使用專用譯碼器74LS138進(jìn)行譯碼    74LS138為38譯碼器,即它有3個地址輸入端(C、B、A),3個控制端(/E1、/E2、E3)和8個輸出端(Y7Y0),其引腳定義如圖5.11所示,其真值表如表5.3所示:    利用74LS138可以把一塊存儲器空間分成8個連續(xù)的小塊。例如,利用74LS138可把64KB的外部RAM分成8個8KB的空間,如圖5.

36、12所示:             那么,用74LS138能不能產(chǎn)生4K的空間呢?答案是肯定的,這時相當(dāng)于把32K的空間分成了8塊,例如把高32KB的分成8個4KB存儲器塊的連接方法如圖5.13所示:                 經(jīng)次類推,如果74LS138的C、B、A引腳分別接到地址總線的A2、A1和A0,則譯出的地址為0000H0007H。一片74L

37、S138只能產(chǎn)生8個片選信號,當(dāng)單片機(jī)應(yīng)用系統(tǒng)外圍接口芯片很多時,可以采用多片74LS138(74LS139或74LS154等)分級進(jìn)行譯碼。    【例5.1】 設(shè)某單片機(jī)應(yīng)用系統(tǒng)有4片SRAM 6264、4片8255、1片8279、和1片DAC0832,試用74LS138設(shè)計譯碼電路。    解:由于系統(tǒng)有10個外圍芯片,故用兩個譯碼器實現(xiàn),具體電路如圖5.12所示;各芯片地址如表5.4。         【例5.2】假設(shè)系統(tǒng)包含一片SRAM HM6264(8K

38、B)、一片F(xiàn)lash 存儲器AT29C256(32KB)、一片用于連接打印機(jī)的并行接口芯片8255、一片鍵盤顯示器接口芯片8279、一片實現(xiàn)D/A轉(zhuǎn)換的芯片DAC0832,一片用于系統(tǒng)時鐘芯片DS12887,請用74LS138設(shè)計一個譯碼電路。    解:74LS138譯碼器總是把一塊存儲器空間平均分為8份,從數(shù)量上看,系統(tǒng)總共擴(kuò)展了6個外圍芯片,而74LS138有8個輸出端,但僅用一片74LS138不可能實現(xiàn)上述系統(tǒng)的譯碼功能,這主要是因為:如果A15、A14、A13分別接74LS138的C、B、A端,則8個輸出分別占用了8KB的空間,而AT29C256為32K

39、B,它就需要74LS138的4條輸出線,除了AT29C256外,還有5個外圍芯片。因此,為了實現(xiàn)上述系統(tǒng)的譯碼,可以用74LS138和一些“與非門”共同組成譯碼電路,如圖5.13所示,芯片地址如表5.5。               用專用的譯碼器進(jìn)行譯碼時,不存在地址重疊的問題,但由于輸出地址間隔固定,在許多情況下仍是很不方便,如上例,雖然只有6個外圍芯片,但由于8255、8279、DS12887以及DAC0832各占用了4K空間,需要兩片集成電路(74LS138

40、和74LS02)才能完成譯碼,這是使用專用譯碼電路的缺陷。在實際的單片機(jī)應(yīng)用系統(tǒng)中,有一種更好的譯碼方法,用一片集成電路即可完成上述系統(tǒng)的譯碼,那就是使用可編程邏輯器件GAL16V8或GAL20V8。 5.5.3使用可編程器邏輯器件GAL16V8或GAL20V8組成譯碼電路     GAL(Generic Array logic)器件是一種采用E2CMOS工藝制造的可編程邏輯器件(PLD,Programmable Logic Device)。它采用電擦除工藝,使整個器件的邏輯功能可重新配置,具有實現(xiàn)組合邏輯電路和時序邏輯電路的多種功能,即通過編程可實現(xiàn)多

41、種門電路,如觸發(fā)器、寄存器、計數(shù)器、比較器、譯碼器、多路開關(guān)等功能,在電路中可取代74LS系列或CD4000系列的CMOS芯片。GAL具有集成度高、速度快,功耗低等優(yōu)點。在電路設(shè)計使用GAL芯片可以簡化電路設(shè)計、降低功耗和成本、提高電路的可靠性和靈活性,同時還可實現(xiàn)硬件加密、防止抄襲硬件設(shè)計。    GAL的內(nèi)部結(jié)構(gòu)主要由輸入緩沖器、可編程的“與門”陣列(Programmable AND Array)、輸出反饋輸入緩沖器、輸出邏輯宏單元OLMC(Output Logic Macrocell)以及輸出緩沖器五個部分組成。通過對“與門”陣列和OLMC編程實現(xiàn)各種不同的

42、功能。關(guān)于GAL芯片詳細(xì)的工作原理,網(wǎng)上有許多資料,請有興趣的同學(xué)們自行查閱,這里不再贅述。目前常用的GAL芯片有GAL16V8和GAL20V8兩種系列,GAL16V8有20個引腳,GAL20V8有24個引腳,它們的引腳分布如圖5.14(a)、(b)所示。                  GAL16V8最多可有16個輸入,而GAL20V8最多可有20個輸入,它們最多只能有8個輸出。做為時序電路時,第一腳為輸入時鐘引腳。 本節(jié)主要介紹一下如何用G

43、AL芯片實現(xiàn)單片機(jī)系統(tǒng)的譯碼功能。(1)設(shè)計GAL譯碼器的步驟根據(jù)實際系統(tǒng)的要求確定所用GAL芯片的型號。· 確定GAL芯片每個輸出引腳的地址范圍; · 選定一種對GAL進(jìn)行設(shè)計的軟件,如FM、ABEL、CUPL、Protel等,按照一定的語法規(guī)則編寫指定GAL功能的源程序(*.PLD)文件。 · 對*.PLD文件進(jìn)行編譯生成熔絲文件(*.JED) · 模擬調(diào)試GAL的功能 · 用編程器將正確的*.JED寫入GAL芯片 (2)FM認(rèn)可的源程序(*.PLD)文件格式和語法結(jié)構(gòu)    FM (FASTMAP)是最早出現(xiàn)

44、的對GAL進(jìn)行設(shè)計的軟件,由于它簡單、易學(xué),雖然功能較弱,但完全可以滿足一般的設(shè)計要求,所以,本節(jié)主要介紹一下它的源文件格式和語法結(jié)構(gòu)。FM編譯軟件認(rèn)可的用戶GAL源文件(*.PLD)為一個ASCII碼文件,以行為基本單位,可分成五個部分:· 芯片類型選擇 · 用戶信息 · 引腳定義 · 邏輯方程式定義 · 結(jié)束和注釋關(guān)鍵字     第一部分為芯片類型選擇。必須起始于第一行,第一列,以大寫字母PLD開頭,說明GAL的型號,對于GAL16V8為PLD16V8;對于GAL20V8為PLD20V8。  

45、;  第二部分為用戶信息。這一部分對GAL的功能無本質(zhì)影響,位于文件的二至四行,第二行為設(shè)計者版權(quán)說明;第三行為日期;第四行為電子標(biāo)簽等信息。    第三部分是器件的引腳定義。從第五行開始是器件的引腳定義,從第一個引腳開始,為器件的每個引腳定義一個名字,直到最后一個引腳。其中,不用的引腳用NC表示,電源和地分別用VCC和GND表示。每個引腳定義的名字長度不得超過8個字符,引腳之間用空格分隔,一行寫不完可以換行。    第四部分為邏輯方程式定義。方程式的左邊是輸出引腳,方程的右邊是邏輯表達(dá)式,這一部分緊跟在第三部分之后,為第三

46、部分定義的每個輸出引腳指定一個邏輯表達(dá)式,每個表達(dá)式可含有三種運算符即:       “*”:表示“與”運算       “+”:表示“或”運算       “/”:表示“非”運算    每個邏輯表達(dá)式由多個“項”相“或”而成,項數(shù)不多于8個;每個“項”由第三部分定義的輸入引腳相“與”而成。輸出表達(dá)式的格式為:      

47、60;  輸出引腳 = 表達(dá)式    第五部分為結(jié)束關(guān)鍵字“DESCRIPTION”,后面可以跟一些說明文字?,F(xiàn)在來看一下如何用GAL16V8設(shè)計例5.2譯碼電路的方法。   【例5.3】假設(shè)系統(tǒng)包含一片SRAM 6264(8KB)、一片F(xiàn)lash 存儲器AT29C256(32KB)、一片用于連接打印機(jī)的并行接口芯片8255、一片鍵盤顯示器接口芯片8279、一片實現(xiàn)A/D轉(zhuǎn)換的芯片DAC0832,一片用于系統(tǒng)時鐘芯片DS12887,請用GAL16V8設(shè)計一個譯碼電路,要求各芯片地址如表5.6所示。   

48、解:設(shè)使用GAL16V8進(jìn)行譯碼,源程序如下:          PLD16V8            ;選擇GAL16V8          Tsinghua University;用戶信息          Date

49、 3-8-2006      ;日期          TeacherWU          ;電子簽名          A15 A14 A13 A12 A11 A10 A9 A8 A7 GND A6      

50、60; ;引腳定義          CS6264 CSAT256 CS8255CS8279CS12887CS0832NCNCVCC;引腳定義          /CS6264=A15*/A14*/A13     ;8000H-9FFFH          /CSAT256=/A15

51、60;            ;0000H-7FFFH          /CS8255=A15*/A14*A13*/A12*A11*A10*A9*A8*A7*A6  ;AFC0H AFFFH          /CS8279=A15*/A14*A13*A12*A11*A10*A9*A8*A7*A6   ;BFC0H BFFFH       

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論