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