2440的存儲(chǔ)控制器:
2440 的存儲(chǔ)控制器有個(gè)8個(gè)BANK:BANK0~BANK7,對外引出27根地址線(ADDR0~ADDR26),訪問范圍是128M,有8個(gè)片選信號(hào) (nGCS0~nGCS7)與之對應(yīng),所有可以訪問1G的地址空間。BANK6和BANK7的可訪問地址空間是可以設(shè)置的。
只有BANK6和BANK7可以外接SDRAM或SRAM。
CPU提供了一組用于SDRAM的信號(hào)(具體內(nèi)容在datasheet的signal description):
nSRAS O SDRAM 行地址選通
nSCAS O SDRAM 列地址選通
nSCS[1:0] O SDRAM 片選
DQM[3:0] O SDRAM 數(shù)據(jù)屏蔽
SCLK[1:0] O SDRAM 時(shí)鐘
SCKE O SDRAM 時(shí)鐘使能
nBE[3:0] O 高位字節(jié)/低位字節(jié)使能(16 位 SRAM 情況時(shí))
nWBE[3:0] O 寫字節(jié)使能
Mini2440的SDRAM:
Mini2440 使用的SDRAM芯片是32M的HY57V561620,這是一個(gè)4Banks*4M*16bit的SDRAM,也就是由4個(gè)邏輯塊 (Logical Bank,簡稱L-Bank)組成,每個(gè)L-Bank有4M存儲(chǔ)單元,每個(gè)單元是16bit。所有它的數(shù)據(jù)線是16根 (DQ[15:0]);地址線有13根(A[12:0]),其中行地址13根(A[12:0]),列地址9根(A[8:0]);還有兩根信號(hào)線 (BA[1:0])用于選擇L-Bank。
兩個(gè)芯片(U6和U7)并接,就可以組成位寬32位的SDRAM,空間為64M,映射到nGCS6(BANK6),訪問的地址空間為0x30000000~0x33ffffff。
管腳連接方式如下:
地址線:
ADDR[14:2]同時(shí)連接U6和U7的A[12:0];(地址線的連接方法可以依據(jù)s3c2440a的datasheet,存儲(chǔ)器控制器一節(jié)中的“存儲(chǔ)器(SRAM/SDRAM)的地址引腳連接”)
數(shù)據(jù)線:
DATA[15:0]連接U6的DQ[15:0];
DATA[31:16]連接U7的DQ[15:0];
L-Bank選擇:
使用ADDR[25:24]同時(shí)連接U6和U7的BA[1:0];(這個(gè)連接依據(jù)s3c2440a的datasheet,存儲(chǔ)器控制器一節(jié)中的“SDRAM BANK地址引腳連接例子”)
SDRAM控制信號(hào):
SCKE連接U6和U7的時(shí)鐘使能信號(hào)CKE;
SCLK0和SCLK1分別連接U6和U7的時(shí)鐘信號(hào)CLK;
nSCS0(D2管腳,與nGCS6同一引腳)同時(shí)連接U6和U7的片選信號(hào)CS,低電平有效;
nSRAS同時(shí)連接U6和U7的行地址信號(hào)RAS,低電平有效;
nSCAS同時(shí)連接U6和U7的列地址信號(hào)CAS,低電平有效;
nWE(E6管腳)是總線控制信號(hào),同時(shí)連接U6和U7的寫使能信號(hào),低電平有效。
寄存器:
1. BWSCON:0x48000000(位寬和等待控制寄存器)
每四位控制一個(gè)BANK,BANK6對應(yīng)[27:24]位;
ST6 [27]:使能/禁止數(shù)據(jù)掩碼引腳,對于SDRAM,此位應(yīng)該設(shè)為0,禁止。
WS6 [26]:使能/禁止WAIT信號(hào),設(shè)為0,禁止。
DW6 [25:24]:位寬,0b10表示32位。
2. BANKCON6:0x4800001c(BANK6的控制寄存器)
MT[16:15]:SRAM - 0b00,SDRAM - 0b11。
Tcrd[3:2]:RAS到CAS的延遲,0b00,兩個(gè)時(shí)鐘;0b01,三個(gè)時(shí)鐘。
SCAN[1:0]:列地址數(shù),0b01,9位。
當(dāng)BANK6或BANK7外接SDRAM時(shí),還需要設(shè)置如下寄存器:
3. REFRESH:0x48000024(刷新控制寄存器)
REFEN[23]:SDRAM刷新使能,設(shè)為1。
TREFMD[22]:刷新模式,設(shè)為0,自動(dòng)刷新。
Trp[21:20]:RAS預(yù)充電時(shí)間,0b00,兩個(gè)時(shí)鐘。
Tscr[19:18]:半行周期時(shí)間,0b11,7個(gè)時(shí)鐘。
Refresh Counter[10:0]:刷新計(jì)數(shù)器,計(jì)算公式如下:
2^11 + 1 - SDRAM時(shí)鐘頻率(HCLK)(MHz) * 刷新周期(μs)
在未使用PLL時(shí),HCLK等于晶振頻率;
在HY57V561620的數(shù)據(jù)手冊里有寫:8192 refresh cycles / 64ms,據(jù)此可以計(jì)算刷新周期。
注:Trp、Trcd等設(shè)置,參照2440數(shù)據(jù)手冊里的SDRAM時(shí)序圖。
4. BANKSIZE:0x48000028(BANK大小寄存器)
BURST_EN[7]:設(shè)為1,ARM核支持突發(fā)傳輸。
SCKE_EN[5]:設(shè)為1,使用SCKE信號(hào)使SDRAM進(jìn)入省電模式。
SCLK_EN[4]:設(shè)為1,僅在訪問SDRAM時(shí)發(fā)出SCLK信號(hào)。
BK76MAP[2:0]:設(shè)置BANK6/7的大小,0b001,64M。
5.MRSRB6:0x4800002c(SDRAM模式設(shè)置)
CL[6:4]:CAS等待時(shí)間,0b010或0b011,2或3個(gè)時(shí)鐘。
在數(shù)據(jù)手冊里有寫:Promgrammable CAS latency:2、3 Clocks