sdram工作原理
胡昶基 sdram(synchronous dynamic random access memory,同步動態隨機儲存器)也就是通常所說的記憶體。在我們現在所用的pc機中,所指的記憶體,其實就是sdram,只不過是他的公升級版,如ddr記憶體,ddr2記憶體,ddr3記憶體等等,大部分顯示卡上的視訊記憶體也是sdram的。
記憶體是**的執行空間,以pc機為例,程式是以檔案的形式儲存在硬碟裡面的,程式在執行之前先由作業系統裝載入記憶體中,由於記憶體是ram(隨機訪問儲存器),可以通過位址去定位乙個位元組的資料,cpu在執行程式時將pc的值設定為程式在記憶體中的開始位址, cpu會依次的從記憶體裡取址,解碼,執行,在記憶體沒有被初始化之前,記憶體好比是未建好的房子,是不能讀取和儲存資料的,因此我們要想讓程式執行在記憶體裡必須進行記憶體的初始化。
在介紹記憶體工作原理之前有必要了解下儲存裝置的儲存方式:rom,ram
rom(read-only memory):唯讀儲存器,是一種只能讀出事先所存資料的固態半導體儲存器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,資料並且不會因為電源關閉而消失。如:pc裡面的bios。
ram(random access memory) :隨機訪問儲存器,儲存單元的內容可按需隨意取出或存入,且訪問的速度與儲存單元的位置無關的儲存器。可以理解為,當你給定乙個隨機有效的訪問位址,ram會返回其儲存內容(隨機定址),它訪問速度與位址的無關。這種儲存器在斷電時將丟失其儲存內容,故主要用於儲存短時間內隨機訪問使用的程式。計算機系統裡記憶體位址是乙個四位元組對齊的位址(32位機),cpu的取指,執行,儲存都是通過位址進行的,因此它可以用來做記憶體。
ram按照硬體設計的不同,隨機儲存器又分為dram(dynamic ram)動態隨機儲存器和sram(static ram) 靜態隨機儲存器。
dram:它的基本原件是小電容,電容可以在兩個極板上短時間內保留電荷,可以通過兩極之間有無電壓差代表計算機裡的0和1,由於電容的物理特性,要定期的為其充電,否則資料會丟失。對電容的充電過程叫做重新整理,但是製作工藝較簡單,體積小,便於整合化,經常做為計算機裡記憶體製作原件。比如:pc的記憶體,sdram, ddr, ddr2, ddr3等,缺點:由於要定期重新整理儲存介質,訪問速度較慢。
sram:它是一種具有靜止訪問功能的記憶體,不需要重新整理電路即能儲存它內部儲存的資料。因此其訪問速度快,但是體積較大,功耗大,成本高,常用作儲存容量不高,但訪問速度快的場合,比如cpu的l1 cache,l2cache(一級,二級快取) ,暫存器。
為了滿足開發的需要jz2440在出廠時搭載了三種儲存介質:
(1)nor flash(2m):rom儲存器,通常用來儲存bootloader,引導系統啟動
(2)nand flash(256m,型號不一樣,nandflash大小不一樣):儲存作業系統映像檔案和檔案系統
(3)sdram(64m):記憶體,執行程式
nor flash:它的特點是支援xip晶元內執行(execute in place),這樣應用程式可以直接在flash快閃儲存器內執行,不必再把**讀到系統ram中,也就是說可以隨機定址。nor flash的成本較高。
nand flash:它能提供極高的單元密度,可以達到高儲存密度,並且寫入和擦除的速度也很快。其成本較低,不支援xip。可做嵌入式裡的資料儲存介質。如:手機儲存卡,sd卡等。
s3c2440位址空間:
s3c2440對外引出了27根位址線addr0~addr26,它最多能夠定址128mb,而s3c2440的定址空間可以達到1gb,這是由於s3c2440將1gb的位址空間分成了8個banks(bank0~bank7),其中每乙個bank對應一根片選訊號線ngcs0~ngcs7,當訪問bankx的時候,ngcsx管腳電平拉低,用來選中外接裝置, s3c2440通過8根選訊號線和27根位址線,就可以訪問1gb。如下圖所示:
sdram儲存結構:
先來介紹一下cpu提供的一組用於sdram的訊號:
1. sdram的時鐘有效訊號scke;
2. sdram的時鐘訊號sclk0,sclk1;
3. 資料掩碼訊號dqm0,dqm1,dqm2,dqm3;
4. sdram片選訊號nscs0(它與ngcs6是同一引腳的兩個功能);
5. sdram行位址選通脈衝訊號nsras;
6. sdram列位址選通脈衝訊號nscas;
7. 寫允許訊號nwe(它不是專用於sdram的)。
sdram的內部是乙個儲存陣列,陣列就類似於**一樣,有行、列之分,這樣我們要訪問(讀、寫)乙個單元,就要先指定乙個行位址,乙個列位址,這樣就找到了該單元,這就是sdram的定址的基本原理。這裡的單元我們一般稱為儲存單元,而整個**稱為邏輯bank(logical
bank , l-bank),一般每個sdram都會有4個l-bank。sdram的邏輯結構如下圖所示:
jz2440是選用2片hy57v561620ftp-h組成64mb、32位的記憶體,每片32mb容量、16位資料匯流排。原理圖如下:
在圖中可以看到,行位址、列位址共用位址線addr2~addr14(bank6位寬為32,addr0、1沒有使用),使用nsras、nscas兩個訊號來區分它們。在jz2440開發板中,使用兩根位址線addr24、addr25作為l-bank的選擇訊號;sdram晶元k4s561632的行位址數為13,列位址數為9,所以當nsras訊號有效時,addr2~addr14上發出的是行位址訊號,它對應32位位址空間的bit[23:11];當nscas訊號有效時,addr2~addr10發出的是列位址訊號,它對應32位位址空間的bit[10:2]。
重點關注sdram晶元k4s561632位址線 a0~a12的說明:
該晶元每乙個bank有13行(ra0~ra12),9列(ca0~ca8),行定址時使用a0~a12,列定址分時復 用,只使用了ca0~ca8。nras、ncas引腳,用於標識當前是行定址還是列定址,從而實現位址線的分時復用。
jz2440開發板是由兩塊16位的sdram晶元併聯組成32位的位寬,與cpu的32根資料線data0~data1相連。sdram是連線在bank6上的,起始位址為0x30000000,所以sdram的訪問位址為0x30000000~0x33ffffff,大小為64mb。
看了上面那些內容,裡面有某些東西令我百思不得其解,可能是自己太笨了,不過最後還是想明白了。
1、為什麼兩塊sdram晶元併聯起來,容量大小是64mb呢?
原因是這樣的:sdram晶元有4個bank,每個bank的行位址數是13、列位址數是9,由兩塊16位的sdram晶元併聯組成32位的位寬,與cpu的32根資料線data0~data1相連。則其儲存空間為(2^13*2^9*4*32bit)/8 = 2^26*8bit/ 8 = 2^26 byte = 64mb
2、為什麼sdram晶元的a0位址引腳連線的是arm晶元的a2引腳呢?
根據上一問可知,該sdram儲存空間為64mb,s3c2440要定址64mb需要位址線26根。由原理圖可知sdram的資料匯流排位寬為32位,即一次傳輸4個位元組的資料。因此,我們可以這樣理解,即乙個位址空間其實對應著4個位元組的資料,實際上真正的定址空間只有16mb而已,只需24根位址線(行位址線13根,列位址線9根,還有l-bank選擇訊號的a24、a25兩根位址線,總共24根)就已經足夠了,這樣s3c2440端並不需要將26根位址線全部連線到sdram晶元上,只需要給出高24位位址(a2~a25),相當於資料匯流排上每傳輸4個位元組的資料,位址空間的第三位(a2)才增加1,即a0和a1可以不接。此時的a0和a1應該是低電平。然後,sdram晶元即根據s3c2440給的行位址、列位址和l-bank選擇訊號找到對應的位址空間,將該位址空間的4個位元組傳送到資料匯流排上。以此類推,資料位寬為8位,就arm晶元的a0接sdram的a0,16位就a1接a0,32位就a2接a0。
還有乙個細節,即為什麼sdram晶元的ba0~ba1連線的是s3c2440晶元的laddr24~laddr25引腳?
因為,hy57v561620為32mb的sdram晶元,我們知道,32mb的儲存空間是需要 25 根位址線定址的,由於ba0~ba1引腳決定了訪問第幾個bank,即決定了儲存空間的最高兩位,因此,需要使用s3c2440的25根位址線中的最高兩位來連線 ba0~ba1,這樣就可以滿足定址的對映要求了。
SDRAM工作原理
在嵌入式行業中,經常會碰到有人問如果將開發板上 32m 的 sdram 換成64m 的sdram 硬體需不需要改動。答案是 不需什麼改動。由於當時剛進入這個行業,對這個答案一直很迷惑,板上用的是現代的 sdram 晶元4m 16b 4bank 即32mb 按理說應該有 25根位址線,但晶元上只提供了...
SDRAM的工作原理
sdram synchronous dynamic random access memory,同步動態隨機儲存器,同步是指 memory工作需要同步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資料不是線性依次儲存,而是自由指定位址進行資...
SDRAM的工作原理
sdram synchronous dynamic random access memory,同步動態隨機儲存器,同步是指 memory工作需要同步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資料不是線性依次儲存,而是自由指定位址進行資...