SDRAM的尋址知識及重要的參數

本文來自:我愛研發網(52RD.com) - R&D大本營
詳細出處:http://www.52rd.com/Blog/Detail_RD.Blog_hndeng06_11206.html

 

在嵌入式行業中,經常會碰到有人問如果將開發板上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.

以上是我個人的理解,有什麼不對的地方還請指教!!呵呵QQ:59931418。

發佈了51 篇原創文章 · 獲贊 65 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章