SDRAM的定址知識及重要的引數

2021-05-25 16:22:14 字數 2435 閱讀 6876

在嵌入式行業中,經常會碰到有人問如果將開發板上32m的sdram換成64m的sdram硬體需不需要改動。答案是:不需什麼改動。由於當時剛進入這個行業,對這個答案一直很迷惑,

板上用的是現代的sdram晶元4m×16b×4bank,即32mb,按理說應該有25根位址線,但晶元上只提供了13根位址線,2根bank選擇線(ba0,ba1),兩個片選訊號,這怎麼定址啊?

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)外,其後每個資料只需乙個週期的即可獲得。

在資料讀取完之後,為了騰出讀出放大器以供同一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就可。

1個bank的大小=213 x 29= 222。

只有22根,怎麼還差一根。j (呵呵)

這是因為晶元是以半字為乙個儲存單元的。也就是一次兩個字,所以222 x 2=223.即可訪遍整個bank.

SDRAM的定址知識及重要的引數

在嵌入式行業中,經常會碰到有人問如果將開發板上32m的sdram換成64m的sdram硬體需不需要改動。答案是 不需什麼改動。由於當時剛進入這個行業,對這個答案一直很迷惑,板上用的是現代的sdram晶元4m 16b 4bank,即32mb,按理說應該有25根位址線,但晶元上只提供了13根位址線,2根...

運算元的定址方式(非常重要)

形成運算元的有效位址的方法叫運算元的定址方式。指令中的運算元欄位的位址碼由形式位址和定址方式特徵位等組合形成。一般的指令中所給出的位址碼並不是運算元的有效位址。形式位址也叫偏移量,是指令字結構中給定的位址量。定址過程就是把運算元的形式位址變換成有效位址的過程。形式位址 定址方式 有效位址 定址方式 ...

運算元的定址方式(非常重要)

形成運算元的有效位址的方法叫運算元的定址方式。指令中的運算元欄位的位址碼由形式位址和定址方式特徵位等組合形成。一般的指令中所給出的位址碼並不是運算元的有效位址。形式位址也叫偏移量,是指令字結構中給定的位址量。定址過程就是把運算元的形式位址變換成有效位址的過程。形式位址 定址方式 有效位址 定址方式 ...