本系列前面兩篇文章《[攻克儲存] sram位址線的連線》和 《[攻克儲存] 儲存晶元的寫遮蔽及擴充套件》已經介紹了sram晶元的位址線連線方法以及儲存晶元的寫遮蔽擴充套件,這兩篇文章基本上是從sram的角度在進行講解和描述,其中許多原理在sdram/ddr晶元中也同樣適用,不過,sdram/ddr 儲存晶元的結構和定址方式相對於rom、sram、dram而言,還是有很大的變化和不同的,本文就著重介紹sdram/ddr的相關知識點和應用注意事項。
在儲存結構上,sdram/ddr採取了多bank方式,每乙個邏輯bank即為乙個儲存陣列,一般乙個sdram晶元有2~8個bank。我們可以把bank想象為乙個**,如下:
圖中的bank是乙個14行17列的邏輯儲存結構,假設該sdram晶元有4個bank,則其儲存空間為:4 x 2^14 x 2^17 bit = 2^33 bit = 1gb
在定址方式上,首先,多了幾個bank選擇引腳,例如對於4個bank的sdram,則有2個引腳(ba0~ba1)進行bank選擇。當具體bank選定後,再給出行列位址從而定位到具體的儲存位置。而行列位址值由相應的位址線引腳分時復用得到。
下面研究乙個具體的sdram電路圖,如下圖所示,該圖為arm晶元s3c2440與sdram晶元hy57v561620的連線示意圖。
該sdram晶元為 hy57v561620 ,有4個bank,16位寬資料線,32m的儲存空間。該晶元的引腳功能描述如下:
重點關注位址線 a0~a12的說明,我們可以到,該晶元每乙個bank有13行(ra0~ra12),9列(ca0~ca8),行定址時使用a0~a12,列定址分時復用,只使用了ca0~ca8。並且,相比於sram晶元,多了nras、ncas引腳,用於標識當前是行定址還是列定址,從而實現位址線的分時復用。
我們可以通過下面的時序圖,來更加直觀地了解一下sdram是如何定址的:
[第一步] 選擇bank,同時給出行位址
[第二步] 給出列位址,得到資料
到此,基本上算是把 sdram/ddr 的結構和定址講完了,當然,關於sdram/ddr還有很多其他的相關知識點,比如 cas 延時,比如 時鐘頻率,比如 dram/sdram/ddr2 的詳細區別等等,將在後面的文章中陸續講述。
最後,再補充點內容,關於上面arm晶元s3c2440與sdram晶元hy57v561620的連線圖,有乙個細節,即為什麼sdram晶元的ba0~ba1連線的是arm晶元的laddr24~laddr25引腳?
因為,hy57v561620為32mb的sdram晶元,我們知道,32mb的儲存空間是需要 25 根位址線定址的,由於ba0~ba1引腳決定了訪問第幾個bank,即決定了儲存空間的最高兩位,因此,需要使用arm的25根位址線中的最高兩位來連線 ba0~ba1,這樣就可以滿足定址的對映要求了。
掌握SDRAM DDR的結構與定址
本系列前面兩篇文章 攻克儲存 sram位址線的連線 和 攻克儲存 儲存晶元的寫遮蔽及擴充套件 已經介紹了sram晶元的位址線連線方法以及儲存晶元的寫遮蔽擴充套件,這兩篇文章基本上是從sram的角度在進行講解和描述,其中許多原理在sdram ddr晶元中也同樣適用,不過,sdram ddr 儲存晶元的...
攻克儲存 儲存晶元的寫遮蔽及擴充套件
首先,我們還是看乙個電路圖 這只是儲存晶元的讀資料時的訪問過程,在讀資料過程中,儲存晶元不需要知道arm在某個時刻訪問的是高位元組還是低位元組,只需要把指定位址空間處的16位資料送到資料匯流排即可。但是,對於寫過程,就不是這麼簡單了。顯然,對於向儲存晶元中寫資料的情況,儲存晶元是需要知道當前arm晶...
攻克儲存 儲存晶元的寫遮蔽及擴充套件
首先,我們還是看乙個電路圖 這只是儲存晶元的讀資料時的訪問過程,在讀資料過程中,儲存晶元不需要知道arm在某個時刻訪問的是高位元組還是低位元組,只需要把指定位址空間處的16位資料送到資料匯流排即可。但是,對於寫過程,就不是這麼簡單了。顯然,對於向儲存晶元中寫資料的情況,儲存晶元是需要知道當前arm晶...