地址和地址譯碼器
CPU輸出一個存儲器地址到地址總線上,這個地址怎樣才能選中一個存儲單元,這就是地址譯碼器要解決的問題。
地址譯碼器是這樣一種器件:輸入爲數字量(即地址),根據輸入的數字量在多個輸出端中選一個有效。打個比方:地址譯碼器就像電話系統,打電話時輸入電話號碼就好比地址,根據輸入的電話號碼在若干門電話中只有一門電話被選中。如下圖2.13。是一個3線---8線譯碼器,輸入信號爲3位數字量,3位數字量的變化範圍是000B~111B。(末尾的B表示二進制數),輸出爲8個輸出端。根據輸入量在8個輸出端中只能一個有效。該譯碼器的輸入輸出關係見下表2.2。 |
譯碼器
|
表2.2 3線---8線譯碼器真值表
輸 入 |
有效輸出端 |
||
C |
B |
A |
|
0 |
0 |
0 |
Y0 |
0 |
0 |
1 |
Y1 |
0 |
1 |
0 |
Y2 |
0 |
1 |
1 |
Y3 |
1 |
0 |
0 |
Y4 |
1 |
0 |
1 |
Y5 |
1 |
1 |
0 |
Y6 |
1 |
1 |
1 |
Y7 |
由於存儲器單元數量很多,比如在8086系統中,地址線數爲20根,存儲器單元數達到1M,當地址譯碼器輸入線數爲20根,輸出線數便達到1048576根,採用一級譯碼難度很大。實際組成存儲器系統時,通常採用多級譯碼的方法實現,把若干存儲單元和芯片內部譯碼器集成在存儲器芯片中,然後用多片存儲器芯片與譯碼器組成存儲器系統。
如右圖2.14所示的存儲器芯片內部有64K個8位的存儲單元,即存儲容量爲64K×8位,外部引腿有16根地址線,8根數據線,讀/寫控制線,片選線等。芯片用16位地址線通過內部譯碼器選擇存儲單元。用16片這種存儲器芯片可以組成1MB的存儲器系統。 每一個存儲器芯片內部的存儲單元都有2個地址,一個是芯片內部地址,一個是系統地址。內部地址是與外部連線無關的,如右圖2.14的芯片,每一個芯片內部地址範圍都是從0000H~FFFFH。而系統地址取決於外部連線。 |
圖2.14 64K×8位的存儲器芯片 |
如下圖2.15所示,系統地址線接地址譯碼器的片選,、、接到地址譯碼器的3個輸入端。地址譯碼器的輸出端接儲器芯片IC1的片選。
圖2.15 芯片的系統地址範圍
我們可以計算該芯片的系統地址範圍如下:系統地址線=0選中地址譯碼器,而、、爲000選中端有效從而選中IC1,地址線用於選擇IC1內部單元。因此IC1佔用的最低的系統地址爲00000H,如下圖2.16所示,而佔用的最高址爲0FFFFH,如下圖2.17所示:
圖2.16 IC1的最低地址 |
圖2.17 IC1的最高地址 |
如果芯片IC1的片選輸入端接到地址譯碼器的輸出端,、、三根地址線爲001選中端有效,則IC1佔用的系統地址爲10000H~1FFFFH。
在上述計算中,要區分片內地址和片外地址。比如某種芯片有10根地址線,則該芯片存儲單元的片內地址是從0~-1=3FFH。而片外地址除與芯片地址線的數量有關,還與芯片連接到系統地址總線的方法有關。