一、SDRAM型號及介紹
- W9812G6KH
- 2M * 4 BANKS * 16 BITS SDRAM. Row address: A0-A11. Column address: A0-A8
- SDRAM內存由BANK、Column Address、Row Address、Width組成
本次的SDRAM有4個BANK,每個BANK深度為2M,寬度為16bits,內存共有4X2X16 = 128MBits
深度由行和列組成,行有2^12 = 4K 列有2**9 = 0.5K,則深度有4K * 0.5K = 2M
- SDRAM內存由BANK、Column Address、Row Address、Width組成
二、SDRAM初始化
上電之后的操作:
step1:200us的延時(DQM和CKE需要拉高)
step2:預充電命令
step3:8次自動刷新命令(也可以在step4之后完成)
step4:配置模式寄存器命令

三、自動刷新和自刷新
(1) SDRAM是動態內存,需要不斷刷新才能保存數據,存儲體中的電容需要不斷地刷新才能不會因為電容的自消耗而產生電位變化
SDRAM的電容刷新時間是64ms

在64ms內需要4K個自動刷新

(2) 芯片手冊未找到自動刷新與自刷新的詳細解釋,所以參考了另外一篇博客
https://www.cnblogs.com/tureno/articles/6085741.html
自動刷新(Auto Refresh,簡稱AR)與自刷新(Self Refresh,簡稱SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個內部的自動操作。
對於AR, SDRAM內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由於刷新是針對一行中的所有存儲體進行,所以無需列尋址,或者說CAS在RAS之前有效。所以,AR又稱CBR(CAS Before RAS,列提前於行定位)式刷新。由於刷新涉及到所有L-Bank,因此在刷新過程中,所有L-Bank都停止工作,而每次刷新所占用的時間為9個時鍾周期(PC133標准),之后就可進入正常的工作狀態,也就是說在這9 個時鍾期間內,所有工作指令只能等待而無法執行。64ms之后則再次對同一行進行刷新,如此周而復始進行循環刷新。顯然,刷新操作肯定會對SDRAM的性能造成影響,但這是沒辦法的事情,也是DRAM相對於SRAM(靜態內存,無需刷新仍能保留數據)取得成本優勢的同時所付出的代價。
SR則主要用於休眠模式低功耗狀態下的數據保存,這方面最著名的應用就是STR(Suspend to RAM,休眠掛起於內存)。在發出AR命令時,將CKE置於無效狀態,就進入了SR模式,此時不再依靠系統時鍾工作,而是根據內部的時鍾進行刷新操作。在SR期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式並進入正常操作狀態。
如果如果在SR模式中,是不可以發出AR命令的 (如果AR是突發的,要在SR命令退出之后或者進入之前發出)
每一次自動刷新只會刷新一行,而sdram有4K行,想要全部刷新完需要4K次,如果沒有在規定時間內完成自動刷新就會導致sdram丟失數據
通過查找,JEDEC標准JESD229找到了關於刷新的解釋




四、讀寫操作
- 在讀寫操作之前,需要Active命令

- Active命令通過選擇行地址,激活被選中BANK里的行,ACtive命令發出之前,需要有precharge命令


- Precharge命令是用來關閉BANK的

- 因此在讀寫操作時,需要先關閉所有BANK,然后激活選中BANK里的行,再讀出或寫入數據到列中

