本系列前面兩篇文章《[攻克儲存] 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 儲存晶元的...
A 尋路演算法的探尋與改良(一)
by 田宇軒 1.1 前言 1.2 a 演算法要解決的問題 我們可以通過先了解a 演算法解決的問題來了解a 演算法的概念。a 是一種用於尋路的演算法,現在我們給計算機一張地圖,標記了哪些地方能走,哪些地方不能走,然後告訴計算機起點a和終點b,計算機自動計算出一條從a點到b點的最短路徑,我們的問題就解...
掌握與SD卡「交流」的方法
很久以前寫出了微控制器讀寫sd卡的程式,前些日子拿出來用,發現不能直接用,自己寫的程式現在不能用,很是著急。後來是靜下心來,分析sd卡的反饋,修改相應的地方,很快就解決了問題。有人說,給sd卡傳送cmd1,收到0x00表示成功。這是對的,但是如果收到0x01呢?0x04呢?0x0a呢?0x70呢?我...