在微處理器系統(tǒng)中,所有的存儲(chǔ)器(或I/O接口)都以地址來(lái)相互區(qū)分,根據(jù)訪問(wèn)存儲(chǔ)器(或訪問(wèn)I/O接口)指令中的地址信息,其地址譯碼電路產(chǎn)生相應(yīng)的地址選中信號(hào),以選中所需的存儲(chǔ)器(或I/O接口)。以存儲(chǔ)器的接口為例,對(duì)于一般的8位微處理器,其存儲(chǔ)器的地址線為16條(A0~A15),尋址范圍為64K,但在一個(gè)實(shí)際系統(tǒng)中不一定擴(kuò)展64K存貯器,而且所擴(kuò)展的存貯器也不是一片容量為64K的存儲(chǔ)器,因而整個(gè)系統(tǒng)通常要求擴(kuò)展幾片存貯器電路。每種存儲(chǔ)器芯片都根據(jù)其容量需要一定的地址信號(hào),如2K存儲(chǔ)器所需的地址信號(hào)為A0~A10,8K存儲(chǔ)器所需的地址信號(hào)為A0~A12。因此系統(tǒng)在連接存儲(chǔ)器時(shí)除了向存貯器芯片提供必須的地址信號(hào)外,還應(yīng)提供片選信號(hào),使其中的一個(gè)芯片在片選信號(hào)有效時(shí)工作。地址譯碼電路就是提供片選信號(hào)的電路。例如一個(gè)系統(tǒng)需要連接2片2K存貯器,因此系統(tǒng)必須向存儲(chǔ)器提供A10~A0的地址信號(hào),以選中 2K存貯器中的某一個(gè)單元。為了區(qū)別這兩個(gè)存儲(chǔ)器芯片中那一個(gè)被選中,應(yīng)另加片選信號(hào),此信號(hào)由譯碼電路產(chǎn)生。
I/O接口所需的地址譯碼電路的原理與存儲(chǔ)器相似,不同的是,通常I/O接口只需一個(gè)地址,或幾個(gè)地址,而不象存儲(chǔ)器一個(gè)芯片就占用較多的地址。因此對(duì)于I/O接口的譯碼電路,必須根據(jù)該設(shè)備占用的地址的數(shù)量來(lái)具體考慮。
地址譯碼通常采用全譯碼電路、部分譯碼電路、線選電路等不同的方式。
在系統(tǒng)中,存儲(chǔ)器或I/O接口需使用部分地址信號(hào),這些信號(hào)通常為地址信號(hào)中的低位地址信號(hào),全譯碼電路將其余所有的高位地址信號(hào)經(jīng)譯碼后作片選信號(hào)。在全譯碼電路的系統(tǒng)中,所有地址信號(hào)不是送入存儲(chǔ)器或I/O接口芯片,就是送入了譯碼電路。譯碼電路的輸出,即選中信號(hào)將與唯一的存儲(chǔ)器或I/O接口的地址對(duì)應(yīng)。如某個(gè)八位微處理器采用了I/O接口單獨(dú)編址的方式,其選擇存儲(chǔ)器的地址線為16條(A0~A15),選擇I/O接口的地址線為8條(A0~A7),則采用全譯碼電路時(shí),選擇存儲(chǔ)器的地址譯碼電路必須包含A0~A15的地址信號(hào)中被存儲(chǔ)器芯片所用的地址之外的所有地址信號(hào),而選擇I/O接口的地址譯碼電路必須包含A0~A7的地址信號(hào)中被I/O接口所用的地址之外的所有地址信號(hào)。圖3-9為常用的譯碼電路74LS138、74LS13。根據(jù)存儲(chǔ)器的容量,存儲(chǔ)器所需的地址信號(hào)不同,因而在采用不同存儲(chǔ)器時(shí)全譯碼電路的輸入地址信號(hào)不同,圖3-10為采用8K存儲(chǔ)器的全譯碼電路,送入譯碼電路的地址信號(hào)為A13~A15。其地址分配表如表3-1所示。從地址分配表中可以看出,采用全譯碼方法時(shí)各存貯器芯片之間的地址是連續(xù)的,而且能最有效地利用 64K存貯空間。
(a) 74LS138 ?。╞) 74LS139
圖3-9 譯碼器的邏輯符號(hào)
圖3-10 全譯碼電路擴(kuò)展8K的存儲(chǔ)器
表3-1 擴(kuò)展8K存儲(chǔ)器的地址分配
當(dāng)系統(tǒng)需擴(kuò)展的存儲(chǔ)器或I/O接口的數(shù)量較少時(shí),可采用部分譯碼電路。與全譯碼電路不同的是部分譯碼電路將存儲(chǔ)器或I/O接口所用的低位地址線外的高位地址線中的部分地址信號(hào)作為譯碼電路的輸入信號(hào)。采用這種方法的優(yōu)點(diǎn)是減少了譯碼電路的輸入信號(hào),但譯碼的輸出與地址不是一一對(duì)應(yīng)的關(guān)系。由于未參加譯碼的地址信號(hào)可以有不同的編碼,因而譯碼的輸出可選中不同的地址。圖3-11為采用2K存儲(chǔ)器的部分譯碼電路,存儲(chǔ)器所用的地址為A0~A10,如用全譯碼電路,輸入到譯碼器的信號(hào)為A11~A15,而在圖3-11中僅用了A11~A13,A14、A15未參加譯碼。這樣A15、A14實(shí)際上可以存在4種情況,即00、01、10、11,以第一個(gè)芯片為例,當(dāng)我們將A15、A14理解為00時(shí),可在指令中以地址0000H~07FFH選中該芯片,但如果在指令中分別用了地址4000H~47FFH、8000H~87FFH、C000H~C7FFH選中的仍是該芯片,即一個(gè)單元可用幾個(gè)地址來(lái)訪問(wèn)。
圖3-11 部分譯碼電路
當(dāng)系統(tǒng)需擴(kuò)展的存儲(chǔ)器或I/O接口的數(shù)量較少時(shí),還可采用線選電路。以存儲(chǔ)器的擴(kuò)展為例,如系統(tǒng)擴(kuò)展的為8K的存儲(chǔ)器芯片,則地址信號(hào)A0~A12為存儲(chǔ)器所使用,在全譯碼電路中,用地址信號(hào)A12~A15作為地址譯碼,而在如圖3-12所示的線選電路中,這些信號(hào)將直接作為片選信號(hào)使用。很明顯,能使用的地址線只有3條,因而最多只允許連接3片8K的存貯器,共24K的存儲(chǔ)器容量。使用這種方法不能充分利用64K的存貯空間,常用于較小的系統(tǒng)。
圖3-12 線選法譯碼電路
表3-2為利用線選的方法擴(kuò)展3片存儲(chǔ)器時(shí)地址的分配情況,從表中可以看出,盡管這種方法比較簡(jiǎn)單,但其使用的地址是不連續(xù)的,而且在使用時(shí)必須防止兩條地址線同時(shí)為低電平,否則將使系統(tǒng)同時(shí)選中兩個(gè)存儲(chǔ)器芯片而無(wú)法正常工作。
表 3-2 線選電路存儲(chǔ)器的地址分配
芯片 |
A15 |
A14 |
A13 |
地 址 |
U3 |
1 |
1 |
0 |
C000H ~ DFFFH |
U4 |
1 |
0 |
1 |
A000H ~ BFFFH |
U5 |
0 |
1 |
1 |
6000H ~ 7FFFH |