SDRAM工作原理

2021-04-19 01:25:25 字數 4232 閱讀 6057

在嵌入式行業中,經常會碰到有人問如果將開發板上

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工作需要同步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資料不是線性依次儲存,而是自由指定位址進行資...