[ARM筆記](méi)存儲控制器及其訪(fǎng)問(wèn)外設的原理
1. S3C2410/S3C2440地地址空間
本文引用地址:http://dyxdggzs.com/article/201611/340831.htmS3C2410/S3C2440對外引出的27根地址線(xiàn)ADDR0~ADDR26的訪(fǎng)問(wèn)范圍只有128MB,那么是如何達到1GB的空間的呢?CPU對外還引出了8根片選信號nGCS0~nGCS7,對應于BANK0~BANK7,當訪(fǎng)問(wèn)BANKx的地址空間時(shí),nGCSx引腳輸出低電平用來(lái)選中外接的設備。這樣,每個(gè)nGCSx對應128MB的地址空間,8個(gè)nGCSx信號總共就對應了1GB的地址空間。這8個(gè)BANK的地址空間如:http://weimenlove.blog.163.com/blog/static/17775473201101013847857/
S3C2410/S3C2440作為32位的CPU,可以使用的地址范圍理論上可達到4GB。除去上述用于連接外設的1GB的地址空間外,還有一部分是CPU內部寄存器的地址,剩下的地址空間沒(méi)有使用。注意:這里的地址指的是物理地址。
2. 存儲控制器與外設的關(guān)系
所以要確定一個(gè)器件的地址,首先看它位于哪個(gè)Bank區,再看它連在A(yíng)ddr[26:0]地址線(xiàn)所確定的地址,將該區的起始值和它的地址線(xiàn)地址相加即得該器件的地址。

BANK0~BANK5的連接方式類(lèi)似,BANK6連接SDRAM時(shí)復雜一點(diǎn),CPU提供了一組用于SDRAM的信號。
1) SDRAM時(shí)鐘有效信號SCLK;
2) SDRAM時(shí)鐘信號SCLK0/SCLK1;
3) 數據掩碼信號DQM0/DQM1/DQM2/DQM3;
4) SDRAM片選信號nSCS0(它與nGCS6是同一引腳的兩個(gè)功能);
5) SDRAM行地址選通脈沖信號nSRAS;
6) SDRAM列地址選通脈沖信號nSCAS;
7) 寫(xiě)允許信號nWE(它不是專(zhuān)用于SDRAM)。
SDRAM的內部是一個(gè)存儲陣列,陣列就如同表格一樣,將數據“填”進(jìn)去。和表格的檢索原理一樣,先指定一個(gè)行(Row),再指定一個(gè)列(Column),就可以準確地找到所需要的單元格,這就是SDRAM尋址的基本原理。這個(gè)單元格被稱(chēng)為存儲單元,這個(gè)表格(存儲陣列)就是邏輯Bank(Logic Bank,下文簡(jiǎn)稱(chēng)L-Bank),SDRAM一般含有4個(gè)L-Bank。
可以想象,對SDRAM的訪(fǎng)問(wèn)可以分為如下4個(gè)步驟:
1)CPU發(fā)出的片選信號nSCS0有效,它選中SDRAM芯片。
2)SDRAM中有4個(gè)L-Bank,需要兩根地址信號來(lái)選中其中一個(gè),如圖中所示的是用ADD24、ADD25作為L(cháng)-Bank的片選信號。
3)對被選中的芯片進(jìn)行統一的行/列(存儲單元)尋址。
根據SDRAM芯片的列地址線(xiàn)數目設置CPU的相關(guān)寄存器后,CPU就會(huì )從32位的地址中自動(dòng)分出L-Bank選擇信號、行址址信號、列地址信號,然后先后發(fā)出行地址信號、列地址信號。L-Bank選擇信號在發(fā)出行地址信號的同時(shí)發(fā)出,并維持到列地址信號結束。
在圖中,行地址、列地址共用地址線(xiàn)ADD2~ADD14(BANK6的位寬為32,ADDR0/1沒(méi)有使用),使用nSRAS、nSCAS兩個(gè)信號來(lái)區分它們。如上圖中,使用兩根地址線(xiàn)Addr24、Addr25作為L(cháng)-Bank的選擇信號;HY57V561620使用13根行地址,9根列地址,所以當nSRAS信號有效時(shí),ADDR2~ADDR14上發(fā)出的是行地址信號,它對應32位地址空間的bit[23:11];當nSCAS信號有效時(shí),ADDR2~ADDR10上發(fā)出的是列地址信號,它對應32位地址空間的bit[10:2];由于Bank6以32位的寬度外接SDRAM,ADDR0、ADDR1恒為0,不參與譯碼。
又因為Bank6的起始地址為0x3000_0000,所以SDRAM的訪(fǎng)問(wèn)地址為0x3000_0000~0x33ff_ffff,共64MB(2片*(4*Bank*2^22)*16bit)。
評論