SDRAM基礎知識


SDRAM介紹

SDRAM(Synchronous Dynamic Random Access Memory),同步動態隨機存儲器。同步是指 Memory工作需要同步時鍾,內部的命令的發送與數據的傳輸都以它為基准;動態是指存儲陣列需要不斷的刷新來保證存儲的數據不丟失,因為SDRAM中存儲數據是通過電容來工作的,大家知道電容在自然放置狀態是會有放電的,如果電放完了,也就意味着SDRAM中的數據丟失了,所以SDRAM需要在電容的電量放完之前進行刷新;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據的讀寫

SDRAM結構

這里寫圖片描述

SDRAM容量=數據位寬x存儲單元數量(BANK數x行地址x列地址)
(數據位寬等於存儲單元中存儲數據的寬度)

SDRAM芯片引腳介紹

1、首先,我們知道內存控制器要先確定一個P-Bank 的芯片集合,然后才對這集合中的芯片進行尋址操作。因此要有一個片選的信號,它一次選擇一個P-Bank 的芯片集(根據位寬的不同,數量也不同)。被選中的芯片將同時接收或讀取數據,所以要有一個片選信號。
2、接下來是對所有被選中的芯片進行統一的L-Bank 的尋址,目前SDRAM 中L-Bank 的數量最高為4 個,所以需要兩個L-Bank 地址信號(=4)。
3、最后就是對被選中的芯片進行統一的行/列(存儲單元)尋址。地址線數量要根據芯片的組織結構分別設計了。但在相同容量下,行數不變,只有列數會根據位寬的而變化,位寬越大,列數越少,因為所需的存儲單元減少了。
4、找到了存儲單元后,被選中的芯片就要進行統一的數據傳輸,那么肯定要有與位寬相同數量的數據I/O通道才行,所以肯定要有相應數量的數據線引腳。

這里寫圖片描述
CLK:SDRAM工作的時鍾,並且所有的輸入信號都是在CLK的上升沿進行檢測的,也就是說我們給SDRAM給的任何命令,一定要在CLK的上升沿保持穩定,以免SDRAM獲取我們給出的命令時出現錯誤。

CKE:時鍾使能信號,是用來控制SDRAM內部時鍾是否工作的一個信號(在SDRAM內部也是有時鍾的哦)

CS:片選信號,這里需要注意的是,如果要對SDRAM進行操作,必須要將片選信號拉低

BA0,BA1:Bank地址線,用來給bank的地址,可以控制SDRAM的4個bank

A0~A11:地址線,當我們選擇SDRAM某個Bank的Row地址的時候,需要到12根地址線(A0~A11);當選擇Col地址的時候,只用A0~A8這9根線;A10這個信號可以用來控制Auto-precharge。

RAS、CAS、WE:這三根線就是用來給SDRAM發命令的,包括初始化、讀、寫、自動充電等命令。

UDQM、LDQM:數據輸入/輸出掩碼。

DQ0~DQ15:SDRAM的數據線,為雙向的,向SDRAM寫數據或者從SDRAM中讀出來的數據都是在DQ上進行傳輸的

地址線

• A0~A11:地址線,當我們選擇SDRAM某個Bank的Row地址的時候,需要到12根地址線(A0~A11);當選擇Col地址的時候,只用A0~A8這9根線;A10這個信號可以用來控制Auto-precharge
• SDRAM的廠商一般為了節約成本,采用同一總線來對SDRAM進行尋址是無可厚非的,對於Row地址用到了12根線,也就是總共有2^12=4096個Row地址,而col地址使用9根線,也就是有2^9=512個col地址

掩碼

• 就拿咱們使用的這塊SDRAM芯片來講,數據線有16根,也就是說明我們數據的位數可以達到16位,但是呢,請注意,也許在我們使用SDRAM的時候,也許我們在向SDRAM寫數據的時候,我們生成的數據只有8位,但FPGA是與SDRAM的16根數據線連在一起的,這個時候,存到SDRAM中的數據還是16位的,所以為了避免這個問題,我們就可以使用掩碼來屏蔽掉高8位了。當然掩碼在讀數據的時候起到的作用也是類似的。

預充電

L-Bank 關閉現有工作行,准備打開新行的操作就是預充電(Precharge)

實際上,預充電是一種對工作行中所有存儲體進行數據重寫,並對行地址進行復位,同時釋放S-AMP(重新加入比較電壓,一般是電容電壓的1/2,以幫助判斷讀取數據的邏輯電平,因為S-AMP 是通過一個參考電壓與存儲體位線電壓的比較來判斷邏輯值的),以准備新行的工作。
電容的電量(或者說其產生的電壓)將是判斷邏輯狀態的依據(讀取時也需要),為此要設定一個臨界值,一般為電容電量的1/2,超過它的為邏輯1,進行重寫,否則為邏輯0,不進行重寫(等於放電)。為此,現在基本都將電容的另一端接入一個指定的電壓(即1/2 電容電壓),而不是接地,以幫助重寫時的比較與判斷

刷新

• 為什么有預充電操作還要進行刷新呢?
• 因為預充電是對一個或所有L-Bank 中的工作行操作,並且是不定期的,而刷新則是有固定的周期,依次對所有行進行操作,以保留那些久久沒經歷重寫的存儲體中的數據。

那么要隔多長時間重復一次刷新呢?目前公認的標准是,存儲體中電容的數據有效保存期上限是64ms(毫秒,1/1000 秒),也就是說每一行刷新的循環周期是64ms。這樣刷新速度就是:行數量/64ms。我們在看內存規格時,經常會看到4096 Refresh Cycles/64ms 或8192 Refresh Cycles/64ms 的標識,這里的4096 與8192 就代表這個芯片中每個L-Bank 的行數。刷新命令一次對一行有效,發送間隔也是隨總行數而變化,4096 行時為15.625µs(微秒,1/1000 毫秒),8192 行時就為7.8125µs。

存儲原理

這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM