在嵌入式行業中,經常會碰到有人問如果將開發板上
32m 的
sdram
換成64m
的sdram
硬體需不需要改動。答案是:不需什麼改動。由於當時剛進入這個行業,對這個答案一直很迷惑,
板上用的是現代的
sdram
晶元4m
×16b×4bank
,即32mb
,按理說應該有
25根位址線,但晶元上只提供了
13根位址線,2根
bank
選擇線(
ba0,
ba1),兩個片選訊號,這怎麼定址啊?
今天碰巧又碰到這個問題,俗話說事不過三,心一橫,今天非把這個問題搞明白不可。功夫不負有心人,終於參考網上的一些
sdram
的資料把問題砌底搞明白了,現分享如下:
sdram
的究竟是怎麼定址的?
sdram
的內部是乙個儲存陣列,將資料「填
」進去,你可以它想象成一張**。和**的檢索原理一樣,先指定乙個行(
row),再指定乙個列(
column
),我們就可以準確地找到所需要的單元格,這就是記憶體晶元定址的基本原理。對於記憶體,這個單元格可稱為儲存單元
,那麼這個**(儲存陣列)叫什麼呢?它就是邏輯
bank
(logical bank
,下文簡稱
l-bank)。
sdram
內部l-bank
示意圖,這是乙個
8x8的陣列,b代表
l-bank
位址編號,
c代表列位址編號,
r代表行位址編號。如果定址命令是b1、
r2、c6,就能確定位址是圖中紅格的位置
目前的記憶體晶元基本上都是4個
l-bank
設計,也就是說一共有
4個這樣的「**
」。定址的流程也就是
——先指定
l-bank
位址,再指定行位址,然後指列位址最終的確定址單元。
在實際工作中,
l-bank
位址與相應的行位址是同時發出的,此時這個命令稱之為
「行有效」或
「行啟用」(
row active
)。在此之後,將傳送列位址定址命令與具體的操作命令(是讀還是寫),這兩個命令也是同時發出的,所以一般都會以「讀
/寫命令
」來表示列定址。根據相關的標準,從行有效到讀
/寫命令發出之間的間隔被定義為
trcd
,即ras to cas delay
(ras
至cas
延遲,ras
就是行位址選通脈衝,
cas就是列位址選通脈衝),大家也可以理解為行選通週期。
trcd
是sdram
的乙個重要時序引數,可以通過主機板
bios
經過北橋晶元進行調整。廣義的
trcd
以時鐘週期(
tck,
clock time
)數為單位,比如
trcd=2
,就代表延遲週期為兩個時鐘週期,具體到確切的時間,則要根據時鐘頻率而定,對於
pc100 sdram
(時鐘頻率等同於
ddr-200
),trcd=2
,代表20ns
的延遲,對於
pc133
(時鐘頻率等於
ddr-266
)則為15ns。
圖中顯示的是
trcd=3
接下來,相關的列位址被選中之後,將會觸發資料傳輸,但從儲存單元中輸出到真正出現在記憶體晶元的
i/o
介面之間還需要一定的時間(資料觸發本身就有延遲,而且還需要進行訊號放大),這段時間就是非常著名的cl(
cas latency
,列位址脈衝選通潛伏期)。
cl 的數值與
trcd
一樣,以時鐘週期數表示。如
ddr-400
,時鐘頻率為
200mhz
,時鐘週期為
5ns,那麼
cl=2
就意味著
10ns
的潛伏期。不過
,cl
只是針對讀取操作,對於
sdram
,寫入是沒有潛伏期的,對於
ddr sdram
,寫入潛伏期在
0.75
至1.25
個時針週期之間。
圖中標準
cl=2
,tac
是有關內部訊號處理的週期,可以不用關心
目前記憶體的讀寫基本都是連續的,因為與
cpu交換的資料量以乙個
cache line
(即cpu
內cache
的儲存單位)的容量為準,一般為
64位元組。而現有的
p-bank
位寬為8
位元組,那麼就要一次連續傳輸
8次,這就涉及到我們也經常能遇到的突發傳輸的概念。突發(
burst
)是指在同一行中相鄰的儲存單元連續進行資料傳輸的方式,連續傳輸的週期數就是突發長度(
burst lengths
,簡稱bl)。
在進行突發傳輸時,只要指定起始列位址與突發長度,記憶體就會依次地自動對後面相應數量的儲存單元進行讀
/寫操作而不再需要控制器連續地提供列位址(
sdram
與ddr sdram
的突發傳輸對列定址的運算元量有所不同,在此不再細說)。這樣,除了第一筆資料的傳輸需要若干個週期(主要是之前的延遲,一般的是
trcd+cl
)外,其後每個資料只需乙個週期的即可獲得。
突發連續讀取模式:只要指定起始列位址與突發長度,後續的定址與資料的讀取自動進行,而只要控制好兩段突發讀取命令的間隔週期(與
bl相同)即可做到連續的突發傳輸。
在資料讀取完之後,為了騰出讀出放大器以供同一
l-bank
內其他行的定址並傳輸資料,記憶體晶元將進行預充電的操作來關閉當前工作行。還是以上面那個
l-bank
示意圖為例。當前定址的儲存單元是b1、
r2、c6。如果接下來的定址命令是b1、
r2、c4,則不用預充電,因為讀出放大器正在為這一行服務。但如果位址命令是b1、
r4、c4,由於是同一
l-bank
的不同行,那麼就必須要先把
r2關閉,才能對
r4定址。從開始關閉現有的工作行,到可以開啟新的工作行之間的間隔就是
trp(
row precharge command period
,行預充電有效週期),單位也是時鐘週期數。
本圖為乙個完整的從行定址到行關閉的時序圖,圖中所表示的
trcd=2
、cl=2
、trp=2
例項分析:
有了以上知識後,就很容易理解了,現就以
hy57v561620
**說明吧。
從晶元的資料手冊中可以得知:
4m×16b×4bank
,即共32mb
,提供了
13根位址線
(行位址線
ra0-ra12
,列位址線
ca0-ca8
行列位址線共用),
2根bank
選擇線(
ba0,
ba1)。 2
根bank
選擇線(
ba0,
ba1)即可以選4個
bank
,即我們可以分析其中乙個
bank
就可。
乙個bank
是4mx16bit,需23
根位址線。按照上面定址方式即:1個
bank
的空間=行位址能訪問的空間
x列位址能訪問的空間。 1
個bank
的大小=213
x 29= 222。
只有22
根,怎麼還差一根。j(
呵呵)這是因為晶元是以半字為乙個儲存單元的。也就是一次兩個字,所以
222 x 2=223.
即可訪遍整個
bank.
以上是我個人的理解,有什麼不對的地方還請指教!!
SDRAM工作原理
sdram工作原理 胡昶基 sdram synchronous dynamic random access memory,同步動態隨機儲存器 也就是通常所說的記憶體。在我們現在所用的pc機中,所指的記憶體,其實就是sdram,只不過是他的公升級版,如ddr記憶體,ddr2記憶體,ddr3記憶體等等,...
SDRAM的工作原理
sdram synchronous dynamic random access memory,同步動態隨機儲存器,同步是指 memory工作需要同步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資料不是線性依次儲存,而是自由指定位址進行資...
SDRAM的工作原理
sdram synchronous dynamic random access memory,同步動態隨機儲存器,同步是指 memory工作需要同步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資料不是線性依次儲存,而是自由指定位址進行資...