基于FPGA的DDR3控制器設(shè)計(jì)
摘要 介紹了DDR3 SDRAM的技術(shù)特點(diǎn)、工作原理,以及控制器的構(gòu)成。利用Xilinx公司的MIG軟件工具在Virtex-6系列FPGA芯片上,實(shí)現(xiàn)了控制器的設(shè)計(jì)方法,并給出了ISim仿真驗(yàn)證結(jié)果,驗(yàn)證了該設(shè)計(jì)方案的可行性。
本文引用地址:http://m.butianyuan.cn/article/201609/303621.htmDDR3 SDRAM是第三代雙倍數(shù)據(jù)速率動態(tài)同步隨機(jī)存儲器的簡稱。是SDRAM內(nèi)存產(chǎn)品家族中的一員。DDR3內(nèi)存模組是采用多顆DDR3 SDRAM,并根據(jù)JEDEC的相關(guān)內(nèi)存模組設(shè)計(jì)標(biāo)準(zhǔn)而制作。DDR3SDRAM有如下技術(shù)特點(diǎn):(1)DDR3新增了重置(RESET)功能,并為此新功能設(shè)置了管腳,當(dāng)RESET命令有效時(shí),DDR3將終止所有操作,此時(shí)處于活動量最少的狀態(tài),以降低功耗。(2)DDR3新增ZQ校準(zhǔn)功能,ZQ也是一個(gè)新的管腳,這個(gè)引腳通過一個(gè)命令集及片上校準(zhǔn)引擎(On—Die Calihration Engine,ODCE)自動校驗(yàn)數(shù)據(jù)輸出驅(qū)動器導(dǎo)通電阻與ODT的終結(jié)電阻值。(3)在DDR3系統(tǒng)中,將參考電壓分成兩個(gè):一個(gè)是為地址和控制總線提供服務(wù)的VREFC,另一個(gè)是為數(shù)據(jù)總線提供服務(wù)的VREFDQ,兩個(gè)不同的參考電壓為DDR3提供更好的抗噪能力。(4)在DDR3系統(tǒng)中,控制器和存儲器是一一對應(yīng)的,由此便可大幅減輕地址、控制、數(shù)據(jù)信號的總線負(fù)擔(dān),提供了信號的完整性。這是DDR3和DDR2的一個(gè)關(guān)鍵區(qū)別。對單個(gè)Rank的模組,控制器和內(nèi)存是點(diǎn)對點(diǎn)(Point to Point)的連接關(guān)系,對雙Rank的模組,控制器和內(nèi)存是點(diǎn)對雙點(diǎn)(Point to 2Points)的連接關(guān)系。(5)DDR3存儲器模塊的地址、命令、控制信號和時(shí)鐘采用了“Fly—by”的拓?fù)浣Y(jié)構(gòu),大幅減輕了地址、命令、控制和數(shù)據(jù)總線的負(fù)載,提高了信號的完整性。
1 DDR3 SDRAM工作原理
系統(tǒng)上電后,在DDR3 SDRAM進(jìn)行正常讀寫操作前,必須按照規(guī)定步驟完成初始化操作,然后才能進(jìn)入空閑的狀態(tài),等待控制器的訪問。初始化操作過程中主要完成對模式寄存器的配置工作,DDR3芯片上有4個(gè)模式寄存器,通過模式寄存器的配置,可完成比如突發(fā)長度、讀取突發(fā)種類、CAS長度、測試模式、DLL復(fù)位、輸出驅(qū)動能力等的設(shè)置。
DDR3 SDRAM的工作狀態(tài)轉(zhuǎn)換是通過指令來實(shí)現(xiàn)的,主要通過CS#(片選信號)、RAS#(行選通信號)、CAS#(列選通信號)、WE#(讀寫控制信號)之間的組合狀態(tài)實(shí)現(xiàn),DDR3 SDRAM支持的命令主要有:
(1)預(yù)充電命令。作用是關(guān)閉特定Bank中打開的行或者所有Bank中打開的行,SDRAM尋址具有較強(qiáng)的獨(dú)占性。對于第一次的讀寫,只需用激活命令打開此行即可,而對于當(dāng)前行仍處于打開狀態(tài),要對新一行進(jìn)行讀寫,此時(shí)就要關(guān)閉當(dāng)前行,此命令就是預(yù)充電命令。
(2)刷新命令。SDRAM單元有個(gè)缺點(diǎn)就是用電容存儲數(shù)據(jù)。但由于漏電流的存在,數(shù)據(jù)不能長時(shí)間存在存儲單元中,需要周期性的刷新來保持?jǐn)?shù)據(jù),所以在SDRAM進(jìn)行存儲工作時(shí),必須進(jìn)行刷新操作。刷新間隔和存儲芯片的溫度有關(guān),刷新方式分為自刷新(SREF)和自動刷新(AREF)。自刷新用于正常模式下,而自動刷新用于低功耗情況下。
(3)激活命令。用于激活所要進(jìn)行讀或者寫操作的Bank、行和列。在讀或者寫命令到達(dá)DDR3 SDRAM的行之前,要先對要讀或?qū)懖僮鞯男杏眉せ蠲钸M(jìn)行激活。與激活命令一起發(fā)送的地址位用于尋找進(jìn)行操作的Bank和行,與讀或?qū)懨钜黄鸢l(fā)送的地址位用于尋找進(jìn)行操作的起始列單元。
(4)讀命令。用于對一個(gè)已激活的行進(jìn)行讀操作。在讀操作完成之后,被訪問的行依然處于打開狀態(tài),直到被預(yù)充電命令關(guān)閉。BA0~BA2用來選擇Bank的地址,A0~Ai提供的輸入地址用于選擇開始列地址,讀命令操作如圖1所示。
(5)寫命令。用于啟動一個(gè)突發(fā)的存儲器寫操作,由FPGA向DDR3 SDRAM中寫入數(shù)據(jù)。BA0~BA2用于選擇Bank的地址,A0~Ai提供的輸入地址用于選擇開始列地址由FPGA將數(shù)據(jù)寫入DDR3 SDRAM中。寫命令操作如圖2所示。
DDR3芯片內(nèi)部控制器中有8個(gè)Bank處于開放的狀態(tài),Bank開放的順序由控制器發(fā)出的命令決定。若8個(gè)Bank均處于開放狀態(tài),但還有數(shù)據(jù)要進(jìn)入Bank,則最后開放的Bank將被關(guān)閉,以打開一個(gè)新的Bank。在自刷新時(shí),所有Bank都會被關(guān)閉,一旦有預(yù)充電命令,Bank就會開放。
2 DDR3 SDRAM控制器設(shè)計(jì)方案
設(shè)計(jì)采用Xilinx公司提供的DDR3 SDRAM控制器IP核。采用此方案的好處是縮短開發(fā)周期、簡化系統(tǒng)設(shè)計(jì)。設(shè)計(jì)者只需在Xilinx公司提供的MIG3.92軟件工具界面上選擇FPGA及DDR3 SDRAM芯片型號、總線寬度、速度級別,設(shè)置突發(fā)長度、CAS延遲、引腳分配等參數(shù),即可生成DDR3 SDRAM控制器。FPGA芯片采用Xilinx公司的Virtex-6系列XC6VLX240T-1FFG1759C型號,DDR3 SDRAM芯片采用鎂光公司的MT8JSF25664HZ-1C4D1,該內(nèi)存芯片行地址寬度為15位。列地址寬度為10位,Bank地址位寬為3位,總?cè)萘繛? GB。設(shè)置突發(fā)長度為8位,數(shù)據(jù)寬度為64位,速度級別為-2,時(shí)鐘頻率為400 MHz。
DDR3 SDRAM控制器的主要功能是完成對DDR3SDRAM的初始化,將DDR3 SDRAM復(fù)雜的讀寫時(shí)序轉(zhuǎn)化成用戶簡單的讀寫時(shí)序,將DDR3 SDRAM接口的雙時(shí)鐘數(shù)據(jù)轉(zhuǎn)化成用戶的單時(shí)鐘數(shù)據(jù),并發(fā)送周期性的刷新命令來維持DDR3 SDRAM中的數(shù)據(jù)??刂破髦饕譃閭鬏攲雍臀锢韺?,傳輸層負(fù)責(zé)接收上層用戶邏輯的訪存請求,并將這些請求轉(zhuǎn)換成DDR3SDRAM所需的時(shí)序發(fā)送給物理層。物理層負(fù)責(zé)將控制和地址信號按照DDR3 SDRAM需要的時(shí)序發(fā)送給存儲芯片,同時(shí)在傳輸層和存儲芯片之間創(chuàng)建地址通路和數(shù)據(jù)通路,捕獲DDR3 SDRAM發(fā)出的數(shù)據(jù),通過輸入輸出緩存發(fā)送DDR3 SDRAM所有的控制信號、地址信號以及數(shù)據(jù)信號,同時(shí)保證指令與地址,數(shù)據(jù)的同步,DDR3 SDRAM接口模型如圖3所示。
DDR3 SDRAM內(nèi)存控制器的設(shè)計(jì)必須滿足兩大基本要求:(1)所設(shè)計(jì)的控制器要實(shí)現(xiàn)對內(nèi)存模組的管理,完成CPU的訪存要求。(2)需盡可能提高訪問內(nèi)存的速度和帶寬,這是衡量內(nèi)存控制器性能的重要指標(biāo),同時(shí)還需考慮內(nèi)存的兼容性和成本問題。
3 實(shí)驗(yàn)結(jié)果
為驗(yàn)證DDR3控制器IP核的正確性,對MIG生成的測試模塊在ISE14.2環(huán)境下進(jìn)行功能仿真驗(yàn)證,該模塊可以對DDR3存儲器進(jìn)行一系列操作,并對寫入和讀出的數(shù)據(jù)進(jìn)行比較,從而驗(yàn)證控制器的正確性。仿真結(jié)果如圖4所示,phy_init_done的值為1,說明初始化完成。當(dāng)app_cmd=000時(shí),表示當(dāng)前進(jìn)行寫操作,只有同時(shí)app_en=1和app_rdy=1,app_ addr才能寫入成功。當(dāng)app_cmd=001時(shí),表示當(dāng)前操作為讀操作,可通過rror這一比較信號驗(yàn)證控制器是否正確。從仿真結(jié)果可看出,比較信號error始終為低電平,說明寫入和讀出的數(shù)據(jù)是一致的。
4 結(jié)束語
通過對DDR3的技術(shù)特點(diǎn)和工作原理進(jìn)行分析,將DDR3控制器的從層次上分為傳輸層和物理層,然后給出了DDR3 SDRAM控制器的設(shè)計(jì)方法,將控制器在Xilinx公司的Virtex-6系列FPGA芯片上實(shí)現(xiàn),通過ISim軟件仿真結(jié)果,證明了設(shè)計(jì)的可行性和正確性,以及IP核設(shè)計(jì)的DDR3控制器具有較好的適應(yīng)性和靈活性,縮短了系統(tǒng)開發(fā)周期、降低了系統(tǒng)開發(fā)成本。
評論