存儲器容量擴充是《計算機組成原理》課程的重要知識點。講解一個例題,以說明進行存儲器容量擴充設計的方法。
題目:在32位計算機系統中,用8K×16位的SRAM芯片組成一個64KB的存儲器,已知起始地址為:6000 0000H。已知:SRAM芯片有兩個控制端nCS和nWE:當nCS=0時SRAM被選中。當nWE=0時,進行寫操作:當nWE=1時,進行讀操作。CPU的讀寫控制信號為R/nW(R/nW=1時,進行讀操作;R/nW=0時,進行寫操作),訪存控制信號為nMREQ(nMREQ=0時訪存)。要求:設計此存儲器,畫出它與CPU連接框圖。
解:
第1步:確定存儲器擴展方案 ? ? ?
分析題意可知,本題是要利用8K×16位SRAM設計16K×32位的存儲器,因此需要用4塊SRAM芯片進行字位擴展,具體方案是:由2個芯片為一組進行位擴展,需要2組進行字擴展(需要2個片選信號)。確定了位擴展方案后,可以畫出下圖。要注意,位擴展芯片輸出的數據線跟系統數據總線的接法。例如:組1-H輸出的數據線接系統數據總線的D31-D16位,而組1-l輸出的數據線接系統數據總線的D15-D0位。
第2步:設計地址譯碼電路,譯碼電路的輸出接到每個SRAM芯片的nCS引腳,提供片選信號。這一步可以細化:
① 為了便于分析地址,把地址變換成二進制形式 ? ? ?
60000000H=0110 0000 0000 0000 0000 0000 0000 0000 B
② 畫出地址空間分配表
③ 為每個參與字擴展的存儲小組,指定地址譯碼輸出值
在上面的地址空間分配表基礎上,設定地址譯碼輸出值。由于本題需要對2組存儲器模塊進行字擴展,因此需要2個地址譯碼輸出信號。加下表中,填充為紅色的列。
④將上表轉換成真值表畫法,以便進行譯碼電路設計。轉換后的真值表如下:
由于本題中SRAM需要的片選信號nCS的有效狀態是低電平,而上表中cs0和cs1的有效狀態是高電平,因此,增加nCS0和nCS1,用這兩個信號作為SRAM芯片nCS引腳的驅動信號。完善后的真值表,如下:
⑤ 寫出輸出信號的邏輯表達式
⑥畫出譯碼輸出信號的邏輯電路圖
⑦考慮系統訪存信號nMREQ的控制作用,完整的地址譯碼電路如下:
至此,地址譯碼電路設計完成。
第3步:將地址譯碼電路與存儲器芯片連接,得到完整的CPU與存儲器連接的邏輯電路圖
方法二:利用譯碼器來實現地址譯碼電路
接下來介紹一種利用譯碼器來實現地址譯碼電路的方法。以利用3:8譯碼器來實現地址譯碼電路為例,進行說明。
已知譯碼器有3個編碼輸入端和1個低電平有效的使能端#EN。為了能夠利用譯碼器的編碼輸入端,把地址總線的A31~A13位,劃分成兩部分,見下表:
按此表的設計,可以把A15~A13接入譯碼器的編碼輸入端,見下圖
分析上表中A31~A16的取值可知,本題中,A31~A16的取值固定不變,因此可以與訪存信號nMREQ一起考慮,設計組合邏輯電路,以驅動譯碼器的使能端#EN。先寫出A31~A16的地址譯碼邏輯表達式:
地址譯碼邏輯電路如下:
考慮訪存信號nMREQ后,畫出下圖所示的完整地址譯碼邏輯電路:
將該地址譯碼電路與存儲器芯片連接,得到完整的CPU與存儲器連接的邏輯電路,如下圖所示: