[ARM筆記]存儲控制器及其訪問外設的原理
1. S3C2410/S3C2440地地址空間
本文引用地址:http://www.ex-cimer.com/article/201611/340831.htmS3C2410/S3C2440對外引出的27根地址線ADDR0~ADDR26的訪問范圍只有128MB,那么是如何達到1GB的空間的呢?CPU對外還引出了8根片選信號nGCS0~nGCS7,對應于BANK0~BANK7,當訪問BANKx的地址空間時,nGCSx引腳輸出低電平用來選中外接的設備。這樣,每個nGCSx對應128MB的地址空間,8個nGCSx信號總共就對應了1GB的地址空間。這8個BANK的地址空間如:http://weimenlove.blog.163.com/blog/static/17775473201101013847857/
S3C2410/S3C2440作為32位的CPU,可以使用的地址范圍理論上可達到4GB。除去上述用于連接外設的1GB的地址空間外,還有一部分是CPU內(nèi)部寄存器的地址,剩下的地址空間沒有使用。注意:這里的地址指的是物理地址。
2. 存儲控制器與外設的關系
所以要確定一個器件的地址,首先看它位于哪個Bank區(qū),再看它連在Addr[26:0]地址線所確定的地址,將該區(qū)的起始值和它的地址線地址相加即得該器件的地址。
BANK0~BANK5的連接方式類似,BANK6連接SDRAM時復雜一點,CPU提供了一組用于SDRAM的信號。
1) SDRAM時鐘有效信號SCLK;
2) SDRAM時鐘信號SCLK0/SCLK1;
3) 數(shù)據(jù)掩碼信號DQM0/DQM1/DQM2/DQM3;
4) SDRAM片選信號nSCS0(它與nGCS6是同一引腳的兩個功能);
5) SDRAM行地址選通脈沖信號nSRAS;
6) SDRAM列地址選通脈沖信號nSCAS;
7) 寫允許信號nWE(它不是專用于SDRAM)。
SDRAM的內(nèi)部是一個存儲陣列,陣列就如同表格一樣,將數(shù)據(jù)“填”進去。和表格的檢索原理一樣,先指定一個行(Row),再指定一個列(Column),就可以準確地找到所需要的單元格,這就是SDRAM尋址的基本原理。這個單元格被稱為存儲單元,這個表格(存儲陣列)就是邏輯Bank(Logic Bank,下文簡稱L-Bank),SDRAM一般含有4個L-Bank。
可以想象,對SDRAM的訪問可以分為如下4個步驟:
1)CPU發(fā)出的片選信號nSCS0有效,它選中SDRAM芯片。
2)SDRAM中有4個L-Bank,需要兩根地址信號來選中其中一個,如圖中所示的是用ADD24、ADD25作為L-Bank的片選信號。
3)對被選中的芯片進行統(tǒng)一的行/列(存儲單元)尋址。
根據(jù)SDRAM芯片的列地址線數(shù)目設置CPU的相關寄存器后,CPU就會從32位的地址中自動分出L-Bank選擇信號、行址址信號、列地址信號,然后先后發(fā)出行地址信號、列地址信號。L-Bank選擇信號在發(fā)出行地址信號的同時發(fā)出,并維持到列地址信號結(jié)束。
在圖中,行地址、列地址共用地址線ADD2~ADD14(BANK6的位寬為32,ADDR0/1沒有使用),使用nSRAS、nSCAS兩個信號來區(qū)分它們。如上圖中,使用兩根地址線Addr24、Addr25作為L-Bank的選擇信號;HY57V561620使用13根行地址,9根列地址,所以當nSRAS信號有效時,ADDR2~ADDR14上發(fā)出的是行地址信號,它對應32位地址空間的bit[23:11];當nSCAS信號有效時,ADDR2~ADDR10上發(fā)出的是列地址信號,它對應32位地址空間的bit[10:2];由于Bank6以32位的寬度外接SDRAM,ADDR0、ADDR1恒為0,不參與譯碼。
又因為Bank6的起始地址為0x3000_0000,所以SDRAM的訪問地址為0x3000_0000~0x33ff_ffff,共64MB(2片*(4*Bank*2^22)*16bit)。
評論