摘要:對DDRSDRAM的基本工作特性以及時序進行了分析與研究,基于FPGA提出了一種通用的DDRSDRAM控制器設計方案。在Modelaim上通過了軟件功能仿真,并在FPGA芯片上完成了硬件驗證。結果表明,該控制器能夠較好地完成DDRSDRAM的讀寫控制,具有讀寫效率較高、接口電路簡單的特點。
關鍵詞 DDRSDRAM;
控制器;FPGA
隨著超大規模集成電路技術的成熟,以及數字信號處理技術的廣泛應用,高速大容量緩存逐漸成為一項關鍵技術。DDRSDRAM即雙倍速率同步動態隨機存儲器,它采用地址復用技術,在時鐘的上升沿和下降沿均能觸發數據進行傳輸,并且能與系統保持良好的同步性。DDRSDRAM以其大容量、低成本以及更高的數據傳輸質量等優勢,逐步取代SDRAM而被各集成電路制造廠家所青睞。而要實現各微處理器和數字信號處理器的存儲器接口與DDRSDRAM接口相逢接,必須要借助DDRSDRAM控制器才能實現控制讀寫等功能。微電子制造工藝的迅猛發展使得FPGA的集成度和性能也不斷提高,在各種嵌入式系統中的應用也越來越廣泛。FPGA內部集成了DDR觸發器、PLL鎖相環等邏輯資源,并且其引腳均能滿足SSTL-Ⅱ電器特性的要求,因此FPGA是實現DDR,讀寫控制的*平臺,研究如何利用FPGA實現DDRSDRAM控制器具有重要的現實意義。
1、DDRSDRAM的工作特性
一個DDRSDRAM通常包含有地址總線15個、數據總線16個、數據捕獲探針2個、寫掩碼信號線2個、差分主控時鐘線1個、時鐘使能信號線1個、以及命令信號線4個:CS_N,RAS_N,CAS_N,WE_N。
1.1DDRSDRAM的初始化
DDRSDRAM的工作模式必須由初始化操作來配置,初始化的過程通常包含:首先發送一個Prechargeallbank命令完成對所有塊的預充,接下來是兩個或多個AutoRefresh命令使DDRSDRAM進行自動刷新,zui后由模式配置命令完成對DDRSDRAM內部模式設置寄存器的配置。
1.2 訪問存儲單元
為減少輸入輸出引腳的數量,初始化完成后要對各個Bank中的陣列進行尋址以訪問存儲單元:在Read/Write狀態下先由Active命令激活相關的Bank,并鎖存其行地址,當Read/Write命令有效時鎖存列地址。對于已被激活由同一個Bank,再次激活必須重新執行一次Prechargeallbank命令。
1.3刷新
DDRSDRAM的存儲單元由晶體管和電容器組成,電容器會由于漏電而導致電荷丟失,為保證數據存儲的穩定性,必須周期性地對DDRSDRAM進行刷新。控制器內部的自動刷新計數器每隔一個刷新周期便會發送一個刷新請求,控制器在接收到請求后會根據當前DDRSDRAM的狀態做出不同響應:如果此時DDRSDRAM處于IdleState,控制器便會發出一個AutoRefresh命令對DDRSDRAM進行刷新;如果此時DDRSDRAM正在進行Read/Write操作,控制器會等到當前操作完成之后再發送AutoRefresh命令。
1.4操作控制
DDRSDRAM的操作命令由的命令控制信號決定。具體會執行何種操作動作決定于系統時鐘上升沿時的CS_N(片選信號),RAS_N(行地址使能信號),CAS_N(列地址使能信號)以及WE_N(寫使能信號)的狀態。DDRSDRAM操作命令真值表如表1所示,選擇控制信號線和地址信號線只作為輔助參數輸入。
2、DDRSDRAM控制器的設計
為能像操作普通存儲器—樣對DDRSDRAM進行控制,必須要通過一系列的初始化操作完成對DDRSDRAM復雜的讀寫時序轉換。同時DDRSDRAM控制器還要自行產生周期性的AutoRefresh命令自動刷新DDRSDRAM,以保證存儲數據的穩定性。圖1為DDRSDRAM控制器管腳接口示意圖,控制器右端的管腳接口與DDRSDRAM所對應管腳接口直接相連,控制器左端的管腳接口則是接收來自系統發送的控制信號。
DDRSDRAM控制器的基本構造框架如圖2所示:分別是系統控制接口模塊ddr_control_interface、CMD命令模塊ddr_command和數據通路模塊ddr_data_path。ddr_control_interface包括命令接口模塊和刷新控制模塊,系統發出的控制信號會首*入ddr_control_interface,進而產生不同的comd信號組合;ddr_command用于接收系統控制接口模塊產生的command,并解碼成具體的操作命令對DDRSDRAM進行控制;ddr_data—path主要是對輸入和輸出數據進行有效的控制。
2.1系統控制接口模塊
圖3為系統控制接口模塊ddr_control_interface的有限狀態機。控制器接收到后模塊發送的LOAD_REG1命令后進入載入模式,然后由一個LOAD_REG2命令將刷新計數器值載入控制器。控制器發送Read/Write操作請求時,如果DDRSDRAM正處于IdleState,則需要使用Active命令打開相應的行之后才能進入Read/Write狀態。DDRSDRAM的Read/Write訪問是基于突發方式,有2、4、8這3種突發長度。在突發長度為8的狀態下,DDRSDRAM接收Read命令后會在的延遲后的4個時鐘周期內,由DQ數據線給出8個16位數據,完成1次突發Read操作。執行完1次突發Read操作,控制器便會自動轉入Read等待狀態,這個等待狀態將持續到控制器接收到下一個Read命令。如果此時發送1個Precharge命令關閉當前正在工作的行,控制器就會進入IdleState。連續突發Bead操作可以通過設置Read等待狀態來實現而不必重復Active操作。當Read操作發生在不同的行時,需要先使用Precharge命令關閉正在工作的行,再由Active打開需要讀取的另一個行,而此時的訪問耗時zui長。
2.2CMD命令模塊
CMD命令模塊ddr_command由仲裁模塊以及命令產生模塊構成。仲裁模塊的作用主要是仲裁初始化請求、刷新請求以及讀寫請求的優先級,并產生初始化響應initialhold、刷新響應refreshhold和讀寫響應sdramwrhold。命令產生模塊則是實現存儲器與控制之間的命令通信,直接產生存儲器所需的CKE、CS_N,RAS_N,CAS_N,WE_N等命令信號。除此之外Read/Write所需的行列地址和簇地址也由命令模塊產生。命令產生模塊接收到來自CMD命令解析模塊的操作命令后,根據數據選通倍號OE對數據通路模塊進行有效控制:OE為1時,進行Write操作;OE為0時,進行Read操作。
2.3數據通路模塊
數據通路模塊ddr_data_path受命令產生模塊的OE信號控制,其管腳接口如圖4所示。OE為1時,數據可由DQIN引腳寫入DDRSDRAM;OE為0時,數據可從DDRSDRAM的DQIN引腳讀出。
由于DDRSDRAM在時鐘的上升沿和下降沿能均觸發數據,使得用戶端的數據寬度是DDRSDRAM的兩倍。進行Read操作時,DQpins上的雙倍速率數據經過邊沿觸發器,在DQS信號的兩個邊沿同時采樣數據,然后這些數據會通過另一套可配置的寄存器被傳送到系統的時鐘域。進行Write操作時,用戶端寄存器輸出的數據會被傳送到控制器的寄存器中,進而被存放到DQpins上。數據通路模塊在與存儲器的接口處完成了兩個轉換:一是翻倍來自存儲器的數據總線寬度;二是以400MHz的時鐘頻率接收存儲器在時鐘上升和下降沿發出的數據。
3、DDRSDRAM控制的仿真和驗證
3.1DDRSDPAM控制器的軟件仿真
設計的軟件功能仿真是利用硬件描述語言VerilogHDL寫出測試代碼,在Mentor公司的Modelsim軟件中進行,通過檢查波形完成。DDRSDRAM控制器測試流如圖5所示,實現了寫數據到第1組寄存器,讀校驗數據,寫數據到第2組寄存器,讀校驗數據。
當控制器接收到請求發送數據的命令后,由命令引腳產生相應的Write命令傳送給DDRSDRAM,接下來會反饋—個握手信號ready以告知用戶端已準備就緒可以繼續接收數據,而接收到的數據通過dq端口直接傳給DDRSDRAK。經過Modelsim功能仿真Read/Write波形如圖6和圖7所示,結果表明DDRSDRAM能順利地完成讀寫、刷新和預充電,行與行、塊與塊之間的交換平穩迅速,無論是連續還是單個操作都非常順暢。
3.2DDRSDRAM控制器的FPGA驗證
設計的DDRSDRAM控制器硬件驗證在Altera公司CycloneII系列的EP2C5Q208C8FPGA芯片中進行,利用在線仿真技術快速建立芯片設計的硬件模型,然后將設計映射至目標FPGA電路中,通過加載設定的激勵信號,觀察所輸出的結果并與所期望的輸出結果進行比較,發現寫入和輸出的數據*吻合。經過綜合,基礎邏輯單元資源占用率為12.33%,引腳資源占用率為62.5%,鎖相環PLL資源的占有率為50%,流片頻率測試也能達到期望要求,能*勝任對DDRSDRAM控制。
4、結束語
在研究DDRSDRAM的主要工作特性以及時序的基礎上,利用VerilogHDL硬件描述語言提出了一種適用于DDRSDRAM的控制器的設計。并且通過了Modelsim軟件功能仿真、FPGA硬件驗證,結果表明該設計傳輸數據穩定可靠,讀寫效率較高,接口電路簡單,可應用于各種高速度、大容量存儲器場合中。