前言
想用FPGA去控制一個器件,首先要學會閱讀器件的數據手冊,去了解器件的功能和使用方法。下面就來梳理一下IS42R16320D的數據手冊里面本案例會用到的部分。
IS42R16320D時鐘支持最高200M,也就是其讀寫速度不能超過200M,案例里面我們選擇100M時鐘進行讀寫操作。
IS42R16320D在時鐘上升沿進行數據捕獲。
SDRAM容量
DE2-115配備2片IS42S16320器件
2片* 210列* 213行* 4 bank * 16bit=2 * 32M * 16bit=2 * 64MB=128MB
DE10-Standard配備1片IS42S16320器件
210列 * 213行 * 4 bank * 16bit=32M * 16bit=64MB
DE1-SOC配備1片IS42S16320器件
210列 * 213行*4 bank * 16bit=32M * 16bit=64MB
注:16bit代表每個存儲單元位寬是16bit。
IS42R16320D功能框圖
IS42R16320D的引腳功能描述:
備注:
RASCASWE組合起來作為命令控制SDRAM的具體操作。
DQML和DQMH是數據輸入輸出掩碼,IS42R16320D數據輸入輸出一次是16bit,有的時候只需要取高字節8位或者低字節8位的時候,就可以通過這兩個信號線來控制哪個字節有效。注意DQM在寫操作時是立即生效,DQM在讀操作時是2個時鐘周期后生效。
SDRAM的命令控制
在了解IS42R16320D命令控制之前可以先參考普通SRAM讀寫控制原理:
下圖為32KByte容量的SRAM結構示意圖,該SRAM有8位行地址,譯碼后生成 256根(2的8次方)行地址線,列地址線為7位,譯碼后生成128根(2的7次方)列地址線。
對SRAM進行讀操作時,0E#和CS#為低電平,WE#為高電平,G1輸出低電平將輸入控緩沖器關閉,G2輸出高電平將輸出緩沖器打開,通過行列地址線選中的存儲單元數據經I/0和輸出緩沖器,最后從I/0[0:7]輸出,如下圖:
對SRAM進行寫操作時,WE#和CS#為低電平,0E#為高電平,G1輸出高電平將輸入緩沖器打開,G2輸出低電平將輸出緩沖器關閉,I/0[0:7]上的輸出經輸出緩沖器和內部I/0總線,最后寫入行列地址選中的存儲空間中。
SDRAM的讀寫控制跟SRAM讀寫控制類似,但是因為SDRAM行列地址復用,支持突發讀寫等等,SDRAM的讀寫控制會更復雜一些,它主要由RASCASWE等信號組合起來作為命令控制SDRAM完成各項操作。
控制SDRAM的常用命令有:
以上表格參考IS42R16320D數據手冊第9頁:
下面結合IS42R16320D數據手冊給出的命令發送時序圖詳細介紹SDRAM 的各項常見操作。
上電后SDRAM器件要先初始化之后才能正常工作。不同型號的SDRAM器件其初始化要求可能不同,詳細要看對應的 datasheet。
IS42R16320D的初始化過程是至少等待200us(用于等待power和時鐘穩定),然后進行1次預充電(對所有bank)和8次自動刷新操作,然后設置模式寄存器。其時序圖如下:
其中預充電命令發送以后要經過tRP時間才能完成預充電操作,自動刷新命令發送以后要經過tRC時間才能完成自動刷新操作,模式寄存器設置命令發送以后要經過tMRD時間才能完成寄存器設定。以上命令發送后的等待時間以及最初的200us延遲時間內,只有NOP命令有效。
其實把這個時序簡化一下就是這樣:
IS42R16320D數據手冊第19頁可以看到,tRP時間是2-3個時鐘周期,頻率高一點(200MHz)至少要3個周期,頻率低一點(133MHz)至少要2個周期,為了保險,在寫Verilog代碼的時候時間可以設定比這個長一點。比如本案例跑100M,一個時鐘周期是10ns,那么預充電等待時間可以設定為2個時鐘周期以上。
根據如下IS42R16320D數據手冊截圖可知tRP時間是2-3個時鐘周期,本案例代碼里面設定等待20個時鐘周期;
tRC時間是8-10個時鐘周期,本案例代碼里面設定等待20個時鐘周期;
tMRD時間是2個時鐘周期,本案例代碼里面設定等待20個時鐘周期;
tRCD時間是2-3個時鐘周期,本案例代碼里面設定等待3個時鐘周期。
1. 預充電
由于 SDRAM 的尋址具有獨占性,所以在進行完讀寫操作后,如果要對同一 L-Bank 的另一行進行尋址,就要將原來有效(工作)的行關閉重新發送行/列地址。L-Bank 關閉現有工作行,準備打開新行的操作就是預充電(Precharge)。
預充電時可以是對指定bank操作,也可以是對所有bank操作。通過地址線A10和BANK線BA0、BA1來決定。如果是對指定BANK操作時,A10設置為0,并由BA0、BA1指定某一BANK。如果是對所有BANK操作,A10設置為1即可。
SDRAM在初始化階段要進行一次預充電操作。這個操作是對所有BANK進行的操作。
預充電要等待tRP時間。
預充電命令CSRASCAS組合是010。
自動預充電
可設置讓芯片每次讀寫操作后,自動進行預充電(在發送讀寫命令時通過A10信號線設置)。這樣設計時無需要關心,只需要等待幾個時間周期即可。
注意,突發模式下,當突發長度為全頁時不支持自動預充電命令。
2.自動刷新
由于cell的電容很小,并且CMOS晶體管在關閉的時候,也存在漏電,這樣電容上的電荷也在隨著時間的變化,逐漸變少。時間一長,存儲的信息就會丟失。為了解決這一問題,具體做法是對于每個單元行,每過一段時間就進行讀取,等放大器暫存好信息后就立刻將其寫回行。IS42R16320D數據手冊第一頁提到每64ms內就要對cell陣列進行一次全面刷新。
自動刷新要等待tRC時間。
自動刷新命令RASCASWE組合是001。
自動刷新期間不能做其他操作。
區別于自刷新(SELF REFRESH),這個是在SDRAM休眠下為確保數據不丟失的自動操作。在發出自動刷新命令時,將CKE置于無效狀態,就進入了自刷新模式,此時不再依靠系統時鐘工作,而是根據內部的時鐘進行刷新操作。在自刷新期間除了CKE之外,所有外部信號也都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并進入正常工作狀態。
3. 模式寄存器設置
SDRAM芯片內部有一個邏輯控制單元,這個控制單元的相關控制參數是由MR(Mode Regisister模式寄存器)提供,SDRAM芯片每次進行初始化時都要將重新寫MR。MR 中設置了 SDRAM 的運行模式:包括突發長度(BL)、突發類型(Burst Type)、CAS 延遲(CAS Latency)、運行方式(Operating Mode)和寫入突發模式。
將上面表格翻譯下如下:
突發 burst長度
突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式。只需要在行激活后,給出一次讀寫命令和列起始地址以及突發長度,就開始讀/寫一定長度數據,列地址自動遞增。
連續傳輸所涉及到存儲單元(列)的數量就是突發長度(BurstLengths,簡稱 BL)。常見的突發長度是 1、2、4、8和全頁(全頁指的是一整行,比如IS42R16320D一個bank的一行是1024個存儲單元,那么全頁就是1024個)。
突發讀寫完或者提前結束突發讀寫時,需要發送突發停止命令(BURST TERMINATE),或者發送預充電命令(PRECHARGE)。
本案例設置突發長度是全頁,A0A1A2設定為111。
突發類型
突發類型也叫突發傳輸方式,IS42R16320D突發類型支持順序傳輸和交錯傳輸。順序傳輸就是連續地、依次地讀后面的幾個存儲單元,交錯傳輸就是隔一個讀一個。
本案例設置為順序傳輸(只有順序傳輸支持全頁的突發長度),A3設置為0。
CAS潛伏期
在讀命令發送了列地址后,數據并不是馬上到達數據總線,而是要經過一段潛伏期,一般為2到3個時鐘周期,注意潛伏期不是延遲,潛伏期是發送列地址后數據已經有效,只是還沒有達到一定的高度,或者說是信號不夠強,要經過一定的放大才能輸出,所以說潛伏期不是延遲。
只有讀操作時存在CAS潛伏期。
本案例設置CAS為3,A6A5A4設置為011。
突發操作模式
操作模式可以分為突發讀/突發寫,或者是突發讀/單一寫等。
突發讀就是在讀命令發送了起始列地址,在讀取第一個數據之后,如果想讀取這個存儲單元后面的存儲單元的數據的話,就不必再次發送行列地址了,他會自動的讀取接下來的數據,至于讀幾個存儲單元,就涉及到突發長度,比如若設置的是全頁的方式,就是將這一行上的數據一連串的全部讀出或寫入。
本案例設置為突發讀和突發寫,A9設置為0。
設置模式寄存器操作要等待tMRD時間,一般是2個時鐘周期。
模式寄存器設置的命令RASCASWE組合是000。
4. 激活
初始化完成后,要想對某個bank進行讀寫操作之前,先要對這個bank中的陣列進行尋址,首先要確定行(Row),使之處于活動狀態(Active),然后再確定列。雖然之前要進行片選和L-Bank 的地址,但它們與行有效可以同時進行。
激活操作要等待tRCD時間,一般是2-3個時鐘周期,本案例設置為3個時鐘周期(SC_RCD=3)。
激活命令RASCASWE組合是011。
5. 讀寫操作
行地址確定之后,就要對列地址進行尋址了。在SDRAM中,行地址與列地址線是共用的,列地址線是 A0-A10。讀/寫命令是通過WE#信號的狀態去區分的,當WE#為低電平有效時是寫命令,為高電平無效時是讀命令。列尋址信號與讀寫命令是同時發出的。雖然列地址線與行尋址共用,當CAS為有效電平時,地址線輸入的地址作為列地址;(當RAS有效時,地址線輸入的地址作為行地址)。列讀寫時序如圖所示。
本案例設置的是突發讀寫, 突發寫的時序圖如下:
突發讀的時序圖如下:
-
控制器
+關注
關注
112文章
16472瀏覽量
179658 -
SDRAM
+關注
關注
7文章
433瀏覽量
55404 -
時鐘
+關注
關注
11文章
1748瀏覽量
131871
原文標題:03-SDRAM控制器的設計——解讀IS42R16320D的數據手冊
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
夏華機密資料 PS-42D8等離子維修手冊(故障分析篇)
IS25WP016D-JULE-TR進口原裝正品假一賠十
iMXRT1172處理器是否支持ISSI制造的SDRAM IS42S16320F-6BLI?
CAT-R131-D1D CAT-R131-D1D D-Sub 后殼和夾具
CAT-R131-D1B CAT-R131-D1B D-Sub 后殼和夾具
MAX6384XS42D2+T PMIC - 監控器
![MAX6384XS<b class='flag-5'>42D</b>2+T PMIC - 監控器](https://file.elecfans.com/web2/M00/70/70/pYYBAGNH-I2AMV23AAAJwg3rnZc603.png)
MAX6384XS42D2+ - (Maxim Integrated) - PMIC - 電源管理 - 專用型
![MAX6384XS<b class='flag-5'>42D</b>2+ - (Maxim Integrated) - PMIC - 電源管理 - 專用型](https://file.elecfans.com/web2/M00/70/70/pYYBAGNH-I2AMV23AAAJwg3rnZc603.png)
評論