基于S3C2440A+SDRAM(K4M51163)
本系統(tǒng)是采用兩片K4M51163-BG75的SDRAM,大小為2*64M。
1. SDRAM的工作原理
1.1 SDRAM概述
SDRAM:Synchronous Dynamic Random Access Memory,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器。同步是指其時(shí)鐘頻率(CLK)與CPU的AHB總線時(shí)鐘頻率(HCLK)相同,并且內(nèi)部的命令的發(fā)送于數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)的讀寫。
1.2 SDRAM的相關(guān)概念
⑴bank
一個(gè)SDRAM芯片一般由4個(gè)bank組成,下圖是K4M51163-BG75功能結(jié)構(gòu)圖的關(guān)于bank的部分
?
上圖中間可見K4M51163-BG75有4個(gè)bank,一個(gè)bank的大小是8M*16bite,8M表示這個(gè)bank有8M個(gè)存儲(chǔ)單元,而每個(gè)單元可以存儲(chǔ)16bit的數(shù)據(jù)。SDRAM的基本存儲(chǔ)單位就是存儲(chǔ)單元,最小的存儲(chǔ)單位就是bit。
⑵位寬
上面提到一個(gè)存儲(chǔ)單元包含16bit,這就是bank的位寬,也是一個(gè)SDRAM芯片的位寬,位寬表示每個(gè)傳輸周期(在這里是指送進(jìn)CLK端的時(shí)鐘的一個(gè)周期)傳送的數(shù)據(jù)量(16bit)。
⑶SDRAM的容量
SDRAM的容量就是指存儲(chǔ)單元的數(shù)量,計(jì)算公式如下
SDRAM的容量=bank的數(shù)量*(行數(shù)*列數(shù))
在這里bank的數(shù)量是4個(gè),而行數(shù)及列數(shù)的相關(guān)說明見下圖
?
可以行數(shù)是用A0~A12總共13根地址線表示,可表達(dá)的行數(shù)達(dá)2的13次方(8192);列數(shù)是用A0~A9總共10根地址線來表示,可表達(dá)的列數(shù)達(dá)2的10次方(1024),同時(shí)看出行和列地址線是分時(shí)復(fù)用的。
1.3 SDRAM的尋址原理
SDRAM的內(nèi)部是一個(gè)存儲(chǔ)陣列,陣列就如何表格一樣,和表格的檢索原理一樣,先指定一個(gè)行row,再指定一個(gè)列column,這樣我們就可以準(zhǔn)確找到所需要的單元格了,這就是SDRAM芯片尋址的基本原理。對于內(nèi)存,這個(gè)單元格被稱為存儲(chǔ)單元,那么這個(gè)表格(存儲(chǔ)陣列)叫什么呢?它就是bank。我們的系統(tǒng)是采用兩片K4M51163-BG75,那么這兩片K4M51163-BG75是如何工作的呢?見下圖
?
通過nSCS0來選擇當(dāng)前是哪個(gè)SDRAM芯片在工作,選定了指定的SDRAM芯片之后,通過BA0和BA1來選擇特定的bank,選擇了特定的bank,接著就選擇特定行,然后在選擇列,這樣就可以找到特定的存儲(chǔ)單元了。
注:SDRAM一次傳輸一個(gè)存儲(chǔ)單元的數(shù)據(jù),也就是16bit的數(shù)據(jù),通過DQ0~DQ15讀出或?qū)懭霐?shù)據(jù),這里的讀出就是存儲(chǔ)電容的放電,而寫入就是存儲(chǔ)電容的充電,每一位對應(yīng)的數(shù)據(jù)保存在存儲(chǔ)電容中,也就是一位能表示的高低電平,下圖是有助于理解這點(diǎn)
?
2 K4M51163PG-BG75
2.1 SDRAM的引腳
SDRAM要想工作,必須要于內(nèi)存控制器有所聯(lián)系,同時(shí)對于一個(gè)電氣元件,電源供應(yīng)也是必不可少的,而且數(shù)據(jù)的傳輸要有一個(gè)時(shí)鐘來同步數(shù)據(jù)的傳送。因此電源與時(shí)鐘引腳是必須的,那么還需要哪些控制引腳呢?
I:首先,我們知道內(nèi)存控制器要先確定選擇系統(tǒng)使用的兩個(gè)SDRAM芯片的哪一個(gè),然后才能對被選定的芯片進(jìn)行尋址操作。因此要有一個(gè)片選的信號(hào),它一次選擇一個(gè)SDRAM芯片。
II:接下來就是對所選擇的芯片進(jìn)行bank的尋址,目前SDRAM中bank的數(shù)量最高為4個(gè),所以需要兩個(gè)bank的地址信號(hào)。
III:然后就是要對被選擇的bank進(jìn)行行和列(存儲(chǔ)單元)尋址,其中所需要的地址線數(shù)量根據(jù)SDRAM芯片容量大小及組織結(jié)構(gòu)分別設(shè)計(jì)了,但在相同容量下,行數(shù)不變,只有列數(shù)會(huì)根據(jù)位寬的變化而變化,位寬越大,列數(shù)越小,因?yàn)樗璧拇鎯?chǔ)單元減少了。
IV:找到存儲(chǔ)單元后,就要把這個(gè)單元的數(shù)據(jù)讀出或者寫入,那么肯定要有與位寬相同的數(shù)據(jù)I/O通道才行,所以要有相應(yīng)數(shù)量的數(shù)據(jù)引線。
2.1 K4M51163PG-BG75的功能結(jié)構(gòu)圖
?
2.2 K4M51163PG-BG75的引腳
引腳圖如下
?
下面詳細(xì)描述這些pin
CLK
系統(tǒng)時(shí)鐘,S3C2443的mobile控制器的SDRAM時(shí)鐘引腳連接這個(gè)引腳,這個(gè)clock引腳的作用就是用于同步數(shù)據(jù)傳輸,就是以這個(gè)時(shí)鐘信號(hào)作為數(shù)據(jù)傳輸?shù)挠|發(fā)參考。K4M51163PG-BG75關(guān)于CLK周期時(shí)間的要求如下圖所示
?
又結(jié)合下圖
?
而S3C2443是通過HCLK給SDRAM芯片提供時(shí)鐘信號(hào)的,見下圖
?
我們系統(tǒng)HCLK=400Mhz/3=133Mhz,所以應(yīng)該去CAS latency=3,從而知道對一個(gè)CLK周期時(shí)間的要求就是>=7.5ns,有HCLK=133Mhz,可以算出HCLK的一個(gè)時(shí)鐘周期時(shí)間=1/133Mhz=7.5188ns>7.5ns,可知當(dāng)前的HCLK可以提供滿足K4M51163PG-BG7的CLK。
/CS
片選信號(hào),在使用多個(gè)SDRAM芯片時(shí)使用,用于選擇某個(gè)時(shí)間哪個(gè)SDRAM芯片工作,S3C2443的nSCS0和這個(gè)引腳連接,mobie控制器功過控制這根信號(hào)線來選擇我們系統(tǒng)采用兩片SDRAM中的任何一片。
CKE
時(shí)鐘有效信號(hào)線,和S3C2443的SCKE連接,mobile控制器功過這個(gè)信號(hào)線來使CLK有效。
A0~A12
行地址線,用于選擇每個(gè)bank的行,也即行激活。
A0~A9
列地址線,用于選擇每個(gè)bank的列,也即選擇存儲(chǔ)單元格,行和列地址是復(fù)用的。
BA0~BA1
Bank的選擇地址,因?yàn)榇薙DRAM芯片有4個(gè)bank,所以需要兩位的bank地址線才能選擇到這4個(gè)bank。
/RAS
行地址選通,在這個(gè)信號(hào)線為低電平時(shí),地址線A0~A12送出來的具體的行地址才有實(shí)際的意義,也就是才能選通具體的行
/CAS
列地址選擇,在這個(gè)信號(hào)線為低電平時(shí),地址線A0~A9送出來的具體的列地址才有實(shí)際的意義,也就是才能選通具體的列,也及存儲(chǔ)單元格。
/WE
寫使能,為高電平時(shí),可以讀取數(shù)據(jù);為低電平時(shí),可以寫入數(shù)據(jù)。
L(U)DQM
數(shù)據(jù)輸入/輸出屏蔽,用于在突發(fā)傳輸時(shí)。
DQ0~15
數(shù)據(jù)輸入/輸出端
2.3 SDRAM的內(nèi)部基本操作與工作時(shí)序
2.3.1 SDRAM芯片的初始化
SDRAM在上電以后必須先對其進(jìn)行初始化操作,而后才能對其進(jìn)行其他操作,初始化的操作具體步驟如下:
⑴SDRAM在上電以后至少要等待200us,在等待時(shí)間結(jié)束后還至少要執(zhí)行一條空操作指令。
⑵SDRAM執(zhí)行一條預(yù)充電命令后,要執(zhí)行一條空操作命令,這兩個(gè)操作會(huì)使所有的存儲(chǔ)單元進(jìn)行一次預(yù)充電,從而使所有陣列中的器件處于待機(jī)狀態(tài)。
⑶SDRAM至少要執(zhí)行兩條自刷新命令,每一條刷新命令之后,都要執(zhí)行一條空操作命令,這些操作可使SDRAM芯片內(nèi)部的刷新及計(jì)數(shù)器進(jìn)入正常運(yùn)行狀態(tài),以便SDRAM為模式寄存器編程做好準(zhǔn)備。
⑷執(zhí)行一個(gè)MRS(mode register set)命令去初始化mode register(模式寄存器)。
⑸在normal MRS之后,可以執(zhí)行一個(gè)EMRS(extended mode register)命令來實(shí)現(xiàn)想要的操作模式。
下圖是K4M51163PG-BG75上電之后的操作要求
?
下面的圖是SDRAM初始化過程的大概描述,有助于加強(qiáng)理解
?
2.3.2 SDRAM行有效
初始化完成后,要像對一個(gè)bank中的存儲(chǔ)單元進(jìn)行尋址,首先就要確定行,也即行選通,使之處于激活狀態(tài)(Active),然后再確定列。我們知道要確定行,首先要進(jìn)行片選和bank的定址,這兩個(gè)動(dòng)作和行選通可以同時(shí)進(jìn)行,下圖是K4M51163PG-BG75的bank和行選通的真值表,也即時(shí)序圖
?
從上圖可以看出,在/CS和bank定址的同時(shí),/RAS(行地址選通)也處于有效狀態(tài)(低電平有效),此時(shí),A0~A12地址線則發(fā)送具體的行地址,共有13個(gè)地址線,由于是二進(jìn)制表示法,所以共有8192個(gè)行(2^13=8192),A0~A12的不同二進(jìn)制數(shù)值就確定了具體ideas行地址。由于行有效的同時(shí)也是相應(yīng)的bank有效,所以行有效也可稱為bank有效,根據(jù)上圖這個(gè)表,也可轉(zhuǎn)化為下面類似的時(shí)序圖,下面這個(gè)圖可以加強(qiáng)這方面的理解。
?
2.3.3 列讀寫
行地址確定之后,就要對列地址進(jìn)行尋址了。但是,地址線仍然是行地址所用的A0~A9,在SDRAM中,行地址于列地址是復(fù)用的。不過,讀/寫的命令是怎么發(fā)出來的呢?其實(shí)沒有一個(gè)信號(hào)是發(fā)送讀或?qū)懙拿鞔_命令的,而是通過芯片的可寫狀態(tài)(/WE)的控制來達(dá)到讀/寫的目的。/WE信號(hào)就是一個(gè)關(guān)鍵,在/WE為高低電平時(shí),是讀取命令;/WE為低電平時(shí),是寫入命令。下圖是K4M51163PG-BG75關(guān)于列讀取的真值表
?
從上圖可知,列尋址信號(hào)與讀取命令是同時(shí)發(fā)出的,雖然列地址線與行尋址共用,但CAS(Column Address Strobe,列地址選通)信號(hào)則可以區(qū)分開行與列尋址的不同,再配合A0~A9來確定具體的列地址,請注意行有效和列尋址命令時(shí)RAS和CAS的電平變化,上圖可以轉(zhuǎn)化為類似下面的時(shí)序圖,可以加強(qiáng)理解
?
我們知道,在發(fā)送列讀取命令時(shí)必須要有與行有效命令有一個(gè)間隔,這個(gè)間隔被定義為tRCD,即RAS to CAS Delay(RAS 至CAS延遲),也可以理解為行選通周期,這應(yīng)該是根據(jù)芯片存儲(chǔ)陣列電子元件響應(yīng)時(shí)間(從一種狀態(tài)到另一種狀態(tài)變化的過程)所制定的延遲,下圖是K4M51163PG-BG75對這個(gè)參數(shù)的要求
?
tRCD是SDRAM的一個(gè)重要時(shí)序參數(shù)。廣義的tRCD以時(shí)鐘周期數(shù)為單位,比如Trcd=2,就代表延遲周期為兩個(gè)時(shí)鐘周期,具體到確切的時(shí)間,則要根據(jù)時(shí)鐘頻率CLK(也即S3C2440A送過來的HCLK)而定,又上圖可看出tRCD要滿足tRCD>=22.5ns,已知HCLK=400/3Mhz,可算出HCLK的一個(gè)時(shí)鐘周期時(shí)間=1/133Mhz=7.5188ns,所以tRCD的時(shí)間要求是至少為3個(gè)clock,根據(jù)S3C2440A內(nèi)存控制器相關(guān)寄存器BANKCONn的下圖描述
?
可以看出,只要BANKCONn[3:2]位等于01或10,都可以滿足tRCD的要求,下圖有助于理解tRCD
?
2.4 數(shù)據(jù)輸出(讀取)
在選定列地址后,就已經(jīng)確定了具體的存儲(chǔ)單元,接下來的事情就是數(shù)據(jù)通過數(shù)據(jù)I/O通道(DQ0~DQ15)輸出到內(nèi)存總線(SDATA0~SDATA31,兩片SDRAM)上。但是在CAS發(fā)出之后,仍要經(jīng)過一定的時(shí)間才能有數(shù)據(jù)輸出,從CAS與讀取命令發(fā)出到第一筆數(shù)據(jù)輸出的這段時(shí)間,被定義為CL(CAS Latency,CAS潛伏期)。由于CL只在讀取時(shí)出現(xiàn),所以CL又被成為讀取潛伏期(RL,Read Latency)。CL的單位與tRCD一樣,為時(shí)鐘周期數(shù),具體耗時(shí)由時(shí)鐘頻率決定。CL是SDRAM及其重要的一個(gè)參數(shù),如果這個(gè)參數(shù)設(shè)置不對,很有可能使bootloader的eboot不能更新NK,關(guān)于這個(gè)話題,我打算另外寫篇文章來共享我所遇到的問題及解決的辦法,下面接下來還是看看S3C2440A的寄存器MRSR中關(guān)于CL的設(shè)置
在結(jié)合K4M51163PG-BG75 datasheet中相關(guān)部分,見下圖
?
可以看出,CL的值應(yīng)該是選擇3,因?yàn)槲覀兊腍CLK=133Mhz,所以寄存器MRSR[6:4]=011。
請注意,CAS并不是經(jīng)過CL周期之后才送達(dá)存儲(chǔ)單元。實(shí)際上CAS與RAS一樣時(shí)瞬間到達(dá)的,但CAS的響應(yīng)時(shí)間要更快一些。為什么呢?現(xiàn)在我們采用的SDRAM芯片位寬是16bit,列數(shù)為1024(2^10),那么一個(gè)行地址要選通(就是一行中所有的存儲(chǔ)體選通,在這里一個(gè)存儲(chǔ)單元有16個(gè)存儲(chǔ)體)16*1024個(gè)存儲(chǔ)體,而一個(gè)列地址值需要選通16個(gè)存儲(chǔ)體。但存儲(chǔ)體中晶體管的反應(yīng)時(shí)間仍會(huì)造成數(shù)據(jù)不可能與CAS在同一個(gè)上升沿觸發(fā),肯定要延后至少一個(gè)時(shí)鐘周期。
由于芯片體積的原因,存儲(chǔ)單元中的電容容量很小,所以信號(hào)要經(jīng)過放大來保證其有效的識(shí)別性,這個(gè)放大/驅(qū)動(dòng)工作由Sense AMP負(fù)責(zé),一個(gè)存儲(chǔ)體對應(yīng)一個(gè)Sens AMP通道。
見下圖
?
但它(Sense AMP)要有一個(gè)準(zhǔn)備時(shí)間才能保證信號(hào)的發(fā)送強(qiáng)度(事前還要進(jìn)行電壓比較以進(jìn)行邏輯電平的判斷),因此從數(shù)據(jù)I/O總線上有數(shù)據(jù)輸出之前的一個(gè)時(shí)鐘上升沿開始,數(shù)據(jù)即已傳向Sense AMP,也就是說此時(shí)數(shù)據(jù)已經(jīng)被觸發(fā),經(jīng)過一定的驅(qū)動(dòng)時(shí)間最終傳向數(shù)據(jù)I/O總線進(jìn)行輸出,這段時(shí)間稱之為tAC (Access Time from CLK,時(shí)鐘觸發(fā)后的訪問時(shí)間)。tAC的單位是ns,對于不同的頻率各有不同的明確規(guī)定,但必須要小于一個(gè)時(shí)鐘周期,否則會(huì)因訪問時(shí)間過長而使效率降低。K4M51163PG-BG75對這個(gè)參數(shù)定義為tSAC,下圖
?
從上圖可以知道K4M51163PG-BG75的時(shí)鐘周期最小為7.5ns,而tSAC的最大值為6ns,這個(gè)值小于7.5ns。需要強(qiáng)調(diào)的是,每個(gè)數(shù)據(jù)在讀取時(shí)都有tAC,包括在連續(xù)讀取中,只是在進(jìn)行第一個(gè)數(shù)據(jù)傳輸?shù)耐瑫r(shí)就開始了第二個(gè)數(shù)據(jù)的tAC。下圖有助于對tAC參數(shù)的理解
?
CL的數(shù)值不能超出芯片的設(shè)計(jì)規(guī)范,否則會(huì)導(dǎo)致內(nèi)存的不穩(wěn)定,甚至不能更新NK和不能正常啟動(dòng)系統(tǒng),而且它也不能在數(shù)據(jù)讀取前臨時(shí)更改。CL周期在開機(jī)初始化過程中的MRS階段設(shè)置。
?
2.5 數(shù)據(jù)輸入(寫)
數(shù)據(jù)寫入的操作也是在tRCD之后進(jìn)行的,但此時(shí)沒有了CL(記住,CL只出現(xiàn)在讀取操作中),下圖時(shí)數(shù)據(jù)輸入和輸出的真值表
?
從圖可以看出,數(shù)據(jù)輸入和數(shù)據(jù)輸出的唯一區(qū)別就是,在數(shù)據(jù)輸入時(shí),/WE信號(hào)有效(低電平有效)。數(shù)據(jù)信號(hào)由SDRAM控制器發(fā)出,輸入時(shí)只需要直接傳到數(shù)據(jù)輸入寄存器(Data input register),然后再由寫入驅(qū)動(dòng)器進(jìn)行對存儲(chǔ)電容的充電操作,因此數(shù)據(jù)可以與CAS同時(shí)發(fā)送,也就是說寫入延遲為0。不過,數(shù)據(jù)并不是即時(shí)地寫入存儲(chǔ)電容,因?yàn)檫x通三極管(就如讀取時(shí)一樣)與電容的充電必須要有一段時(shí)間,所以數(shù)據(jù)的真正寫入需要一定的周期。
2.6 突發(fā)長度
突發(fā)(Burst)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞?#xff0c;連續(xù)傳輸所涉及到存儲(chǔ)單元(列)的數(shù)量就是突發(fā)長度(Burst Lengths,簡稱BL),下圖是S3C2440A的關(guān)于BL的類型及長度的描述
?
從上圖可看出S3C2440A的內(nèi)存控制器只支持sequential的BT類型,及只支持1個(gè)字節(jié)的突發(fā)長度,下圖是K4M51163PG-BG75支持的BT類型及長度
?
從上圖可知在A3=0且A0~A2均為1時(shí),支持的突發(fā)長度是full page(全頁),全頁突發(fā)傳輸是指bank里的一行中所有存儲(chǔ)單元(2^10=1024)從頭至尾進(jìn)行連續(xù)傳輸,不過這種針對芯片的頁定義是狹義的,我們常用的則是廣義上的頁,我們知道內(nèi)存系統(tǒng)的每次傳輸都是以一個(gè)SDRAM芯片位寬為單位的(K4M51163PG-BG75的位寬為16bit),而我們系統(tǒng)是采用兩片K4M51163PG-BG75。在每次尋址時(shí),每個(gè)SDRAM芯片所得到的bank地址與行地址都是相同的。這樣在全頁操作中,就等于對內(nèi)存系統(tǒng)中這兩個(gè)SDRAM芯片內(nèi)同一個(gè)bank同一行的所有存儲(chǔ)單元讀/寫,那就是2*2^10=2048個(gè)存儲(chǔ)單元,這就是廣義上的頁。
突發(fā)傳輸技術(shù),只要指定其實(shí)列地址與突發(fā)長度,內(nèi)存就會(huì)一次地自動(dòng)對后面相應(yīng)數(shù)量的存儲(chǔ)單元進(jìn)行讀/寫而不需要內(nèi)存控制器連續(xù)地提供列地址。這樣,除了第一筆數(shù)據(jù)的傳輸需要若干個(gè)周期(主要是之前的延遲,一般是tRC + CL)外,其后每個(gè)數(shù)據(jù)只需要一個(gè)周期即可獲得,下圖有助于理解突出傳輸
?
2.7 預(yù)充電
由于SDRAM的尋址具有獨(dú)占性,所以在進(jìn)行完讀寫操作后,如果要對同一個(gè)bank的另一行進(jìn)行尋址,就要將原來有效(工作)的行關(guān)閉,重新發(fā)送行/列地址。Bank關(guān)閉現(xiàn)有工作行,準(zhǔn)備打開新行的操作就是預(yù)充電(Precharge)。預(yù)充電可以通過命令控制,也可以通過輔助設(shè)定讓SDRAM在每次讀寫操作之后自動(dòng)進(jìn)行預(yù)先充電。實(shí)際上,預(yù)充電是一種對工作行中的所有存儲(chǔ)體進(jìn)行數(shù)據(jù)重寫,并對行地址進(jìn)行復(fù)位,同時(shí)釋放sense –AMP,下圖是關(guān)于預(yù)充電的控制真值表圖
?
從上圖可看出地址線A10控制著是否進(jìn)行在讀寫之后對當(dāng)前bank自動(dòng)進(jìn)行預(yù)充電,這就是上文所說的“輔助設(shè)定”。而在單獨(dú)的預(yù)充電命令中,A10則控制著是對指定的bank還是所有的bank進(jìn)行預(yù)先充電,前者需要提供bank的地址,后者只需將A10信號(hào)置于高電平。
在發(fā)出預(yù)充電命令之后,要經(jīng)過一段時(shí)間才能允許發(fā)送RAS行有效命令打開新的工作行,這個(gè)間隔被稱為tRP(Precharge command Period,預(yù)充電有效周期)。和tRCD、CL一樣,tRP的單位也是時(shí)鐘周期數(shù),K4M51163PG-BG75對這個(gè)參數(shù)見下圖
?
從上圖可看出tPR的最小值是22.5ns,S3C2440A的內(nèi)存控制器相關(guān)部分見下圖
?
為了滿足tPR>=22.5ns,而每個(gè)clock周期是7.5ns,所以至少需要3個(gè)clock,那么只要Trp位的值是01或10都可以提供滿足要求的tPR給SDRAM芯片。
2.8 刷新
之所以成為SDRAM,就是因?yàn)樗粩噙M(jìn)行刷新(Refresh)才能保留住數(shù)據(jù),因此它是SDRAM最重要的操作。刷新操作與預(yù)充電中重寫的操作一樣,都是用sense-AMP先讀后寫。但為什么有預(yù)充電操作還要進(jìn)行刷新呢?因?yàn)轭A(yù)充電是對一個(gè)或所有bank中的工作行操作,并且是不定期的,而刷新則是有固定的周期,依次對所有行進(jìn)行操作,以保留那些久久沒經(jīng)歷重寫的存儲(chǔ)體中的數(shù)據(jù)。但與所有bank預(yù)充電不同的是,這里的行是指所有bank中地址相同的行,而預(yù)充電中各bank中的工作行地址并不是一定是相同的。
那么要隔多長時(shí)間重復(fù)一次刷新呢?目前公認(rèn)的標(biāo)準(zhǔn)是,存儲(chǔ)體中電容的數(shù)據(jù)有效保存期上限是64ms,也就是說每一行刷新的循環(huán)周期是64ms。這樣的刷新速度就是:行數(shù)量/64ms。
K4M51163PG-BG75對這個(gè)參數(shù)的描述如下圖所示
?
這里的8K實(shí)際就是8192(2^13),8k就代表這個(gè)芯片中每個(gè)bank的行數(shù)。刷新命令一次對一行有效,發(fā)送間隔也是隨著行總數(shù)而變化,8192行時(shí)就是64ms/80192=7.8125us。
刷新操作分為兩種:自動(dòng)刷新(auto refresh,簡稱AR)與自刷新(self refresh,簡稱SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因?yàn)檫@是一個(gè)內(nèi)部的自動(dòng)操作。對于AR,SDRAM內(nèi)部有一個(gè)行地址生成器(也稱刷新計(jì)時(shí)器)用來自動(dòng)的依次生成行地址。由于刷新是針對一行中的所有存儲(chǔ)體進(jìn)行,所以無需列尋址,或則會(huì)說CAS在RAS之前有效。所以,AR又稱CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有的bank,因此在刷新過程中,所有的bank都停止工作,而每次刷新所占用的時(shí)間對于不同的SDRAM芯片的值不同,K4M51163PG-BG75對這個(gè)參數(shù)描述如下圖所示:
?
可以看出在11(80ns/7.5ns=10)個(gè)時(shí)鐘周期內(nèi),所有的工作指令只能等待而無法執(zhí)行,我們知道每個(gè)7.8125us發(fā)送一次行刷新命令,也就是說在1041(7.8125us/7.5ns)個(gè)時(shí)鐘周期內(nèi),有11個(gè)時(shí)鐘周期是用于等待一行的刷新。
SR則主要用于休眠模式低功耗狀態(tài)下的數(shù)據(jù)保存,這方面最著名的應(yīng)用就是STR(Suspend to RAM,休眠掛起于內(nèi)存)。在發(fā)出AR命令時(shí),將CKE置于無效狀態(tài),就進(jìn)入了SR模式,下圖是K4M51163PG-BG75的相關(guān)描述
?
可以看出,當(dāng)發(fā)出AR命令后,如果將CKE置為電平(無效狀態(tài)),就進(jìn)入了SR模式,此時(shí)不再依靠系統(tǒng)時(shí)鐘工作,而是根據(jù)內(nèi)部的時(shí)鐘進(jìn)行刷新操作,這部分和系統(tǒng)進(jìn)入睡眠時(shí)的應(yīng)用有緊密的聯(lián)系,后面深入學(xué)習(xí)系統(tǒng)進(jìn)入睡眠部分時(shí)再做總結(jié)。在SR期間除了CKE之外的所有外部信號(hào)都是無效的(無需外部提供刷新命令)。
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/chinesedragon2010/archive/2010/07/22/5756587.aspx
總結(jié)
以上是生活随笔為你收集整理的基于S3C2440A+SDRAM(K4M51163)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何导出wince6.0的SDK
- 下一篇: Nandflash K9F1208U0B