一、sdram的介紹SDRAM(Synchronous Dynamic Random Access Memory),同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,同步是指 Memory工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來(lái)保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線(xiàn)性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)讀寫(xiě)。 二、s3c2410內(nèi)部存儲(chǔ)器 上面的圖是我個(gè)人對(duì)存儲(chǔ)器的理解。 我們知道,市面上內(nèi)存的類(lèi)型很多,那一款cpu是如何來(lái)識(shí)別如此多的RAM呢?這一切都是內(nèi)存控制器來(lái)做的,我們就需要對(duì)內(nèi)存控制器進(jìn)行配置。當(dāng)然內(nèi)存控制器支持的 RAM類(lèi)型也是有限的。其實(shí)cpu在取數(shù)據(jù)的時(shí)候,只是執(zhí)行一條指令,例如:ldr r0,[r2];關(guān)于數(shù)據(jù)怎么來(lái),cpu并不關(guān)心。整個(gè)數(shù)據(jù)的讀取和寫(xiě)入全部由內(nèi)存控制器完成。 三、s3c2410的地址空間 s3c2410的"存儲(chǔ)控制器"提供了訪(fǎng)問(wèn)外部設(shè)備所需的信號(hào),它有如下特性: A.支持小字節(jié) 、大字節(jié)序(通過(guò)軟件選擇) B.每個(gè)BANK的地址空間為128M,總共1GB(8BANKS) C.可編程控制的總線(xiàn)位寬(8/16/32-bit),不過(guò)BANK0只能選擇兩種位寬(16/32-bit) D.總共8個(gè)BANK,BANK0-BANK5可以支持外接ROM,SRAM等,BANK6-BANK7 除可以支持ROM、SRAM外,還支持SDRAM等 E.BANK0-BANK6共7個(gè)BANK的起始地址是固定的 F.BANK7的起始地址可編程選擇 G.BANK6、BANK7的地址空間大小是可編程控制的 H.每個(gè)BANK的訪(fǎng)問(wèn)周期均可編程控制 I.可以通過(guò)外部的"wait"信號(hào)延長(zhǎng)總線(xiàn)的訪(fǎng)問(wèn)周期 < J.在外接SDRAM時(shí),支持自刷新(self-refresh)和省電模式(power down mode) S3C2410對(duì)外引出的27根地址線(xiàn)ADDR0-ADDR26的訪(fǎng)問(wèn)范圍只有128MB,那么如何達(dá)到上面所說(shuō)的1GB的訪(fǎng)問(wèn)空間呢?CPU對(duì)外還引出了8根片選信號(hào)nGCS0-nGCS7,對(duì)應(yīng)于BANK0-BANK7,當(dāng)訪(fǎng)問(wèn)BANKx的地址空間時(shí),nGCSx引腳輸出低電平用來(lái)選中外接的設(shè)備。這樣,每個(gè)nGCSx對(duì)應(yīng)128MB地址空間,8個(gè)nGCSx信號(hào)總共就對(duì)應(yīng)了1GB的地址空間。8個(gè)BANK如下圖所示:
如上圖所示,左邊對(duì)應(yīng)不使用NAND FLASH作為啟動(dòng)設(shè)備,右邊對(duì)應(yīng)使用NAND FLASH作為啟動(dòng)設(shè)備 在fs2410上,BANK0接了NOR FLASH,也就說(shuō)它既支持從NOR FALSH啟動(dòng),也支持從NAND FLASH 啟動(dòng)。
注意: 把跳線(xiàn)帽拔了是從NOR FLASH啟動(dòng),此時(shí)零地址在NOR FLASH上,S3C2410片內(nèi)的4k SRAM被映射到高地址0x40000000。 把跳線(xiàn)帽插上是NAND FLASH啟動(dòng),此時(shí)SRAM被映射到零地址。此時(shí),硬件上會(huì)自動(dòng)把NAND FLASH前4k拷貝到SRAM中去。
S3C2410作為32位的CPU,可以使用的地址范圍理論上可以達(dá)到4G。除了上述用于連接外設(shè)的1GB地址空間外,還有一部分是cpu內(nèi)部寄存器的地址,剩下的地址空間沒(méi)有使用。 四、SDRAM的工作原理 SDRAM的內(nèi)部是一個(gè)存儲(chǔ)陣列。陣列就如同表格一樣,將數(shù)據(jù)"填"進(jìn)去。在數(shù)據(jù)讀寫(xiě)時(shí)和表格的檢索原理一樣,先指定一個(gè)行(Row),再指定一個(gè)列(Column),我們就可以準(zhǔn)確地找到所需要的單元格,這就是內(nèi)存芯片尋址的基本原理。 先來(lái)看看fs2410上面內(nèi)存的接線(xiàn)原理圖 內(nèi)存的芯片是:K4S561632D-TC75 關(guān)鍵特性如下: 1.4M x 16bit x 4BANK = 32 M 2.64ms refresh period (8K Cycle) (一個(gè)bank刷新完所需時(shí)間64ms,總共8 k = 8192個(gè)行,每一行刷新的間隔時(shí)間為64ms / 8192 = 7.8125us) 3.MAX 主頻133MHz(CL=3) 注意:CL,就是在CAS發(fā)出之后,仍要經(jīng)過(guò)一定的時(shí)間才能有數(shù)據(jù)輸出,從CAS與讀取命令發(fā)出到第一筆數(shù)據(jù)輸出的這段時(shí)間,被定義為CL(CAS Latency,CAS潛伏期)。 這里只是簡(jiǎn)單羅列了一些重要特性,其他特性讀者可以查看其datasheet。 引腳功能:
下面我們?cè)賮?lái)看看sdram 是如何尋址 1.通過(guò)ADDR24,ADDR25,確定bank地址 2.通過(guò)RA0~RA12,確定行地址(8192個(gè)行) 3.通過(guò)CA0~CA8,確定列地址(512個(gè)列) 選定bank后,通過(guò)行地址和列地址就可以定位在那個(gè)單元格,在結(jié)合原理圖我們知道,fs2310接了兩個(gè)sdram,地址線(xiàn)復(fù)用,數(shù)據(jù)線(xiàn)分開(kāi)。這樣一個(gè)4字節(jié)的數(shù)據(jù),前兩個(gè)字節(jié)存放在第一個(gè)sdram,后兩個(gè)字節(jié)存放在第二個(gè)sdram。 注意:先發(fā)bank地址,在發(fā)行地址,在發(fā)列地址 此時(shí)你也許有一個(gè)疑問(wèn),如果按照上面的描述,對(duì)于一個(gè)給定的地址進(jìn)行讀寫(xiě)都是4byte,但是有我們知道,有些時(shí)候我們讀取或?qū)懭胫皇悄骋粋€(gè)字節(jié)。對(duì)于1byte的讀寫(xiě)是通過(guò)LDQM、UDQM。分別稱(chēng)為低字節(jié)屏蔽、高字節(jié)屏蔽。 在來(lái)看看sdram的時(shí)序圖 Trp(Row precharge time):行預(yù)充電時(shí)間(min : 20 ns) Trcd(/RAS to /CAS delay):行無(wú)效到列有效的時(shí)間(min : 20 ns) 呵呵,要想得到這樣的時(shí)序,我們只需要配置內(nèi)存控制器就可以了。
我們接的是nGCS6 27、26都是對(duì)于SRAM 的,我們是SDRAM使用默認(rèn)的就可以.[25:24] 10,有人也許會(huì)問(wèn),我們的sdram不是16bit的嗎? 不要忘記了我們接了2塊sdram,用了32根數(shù)據(jù)線(xiàn)。
我們的sdram,[16:15] 使用11
Trcd的值 datasheet給出的最少是20ns,默認(rèn)是10 = 4 clocks 對(duì)于 100MHZ,也就是40ns,個(gè)人覺(jué)得此處可以使用默認(rèn)值
刷新控制器配置如下: REFEN : 1 TREFMD : 0 Trp : 00 Trc : [datasheet: min 65ns]這里我們選擇10 = 6clocks Refresh Counter 我在板子上設(shè)置HCLK = 101.4MHZ,Refresh count = 2^11 + 1 - 101.4 x 7.8125 = 1256
這里我們主要關(guān)注BK76MAP,其他的使用默認(rèn)值 BANK6/7對(duì)應(yīng)的地址空間與BANK0-5不同。BANK0~5的地址空間大小都是固定的128MB,地址范圍是(x * 128M)到(x +1 )*128M -1,x表示0到5。BANK6/7的大小是可以邊的,以保持這兩個(gè)空間的地址連續(xù),即BANK7的起始地址會(huì)隨他們的大小變化。 < fs2410BANK6接的是2塊32M sdram,大小為64M,BANK7沒(méi)用,所以[2:0] 000=64MB/64MB
這里我們只需要設(shè)置CL就可以,其他都是fixed(固定),不需要設(shè)置。 CL : 011 = 3clocks. 案例:從 nand 啟動(dòng),然后將 sram的代碼拷貝到sdram,然后跳到sdram中去執(zhí)行代碼 start.S
轉(zhuǎn)自:http://www./Column/Column543.htm |
|
來(lái)自: yxz1212_bao > 《SDRAM》