基于FPGA的DDR3控制器設計
摘要 介紹了DDR3 SDRAM的技術(shù)特點(diǎn)、工作原理,以及控制器的構成。利用Xilinx公司的MIG軟件工具在Virtex-6系列FPGA芯片上,實(shí)現了控制器的設計方法,并給出了ISim仿真驗證結果,驗證了該設計方案的可行性。
本文引用地址:http://dyxdggzs.com/article/201609/303621.htmDDR3 SDRAM是第三代雙倍數據速率動(dòng)態(tài)同步隨機存儲器的簡(jiǎn)稱(chēng)。是SDRAM內存產(chǎn)品家族中的一員。DDR3內存模組是采用多顆DDR3 SDRAM,并根據JEDEC的相關(guān)內存模組設計標準而制作。DDR3SDRAM有如下技術(shù)特點(diǎn):(1)DDR3新增了重置(RESET)功能,并為此新功能設置了管腳,當RESET命令有效時(shí),DDR3將終止所有操作,此時(shí)處于活動(dòng)量最少的狀態(tài),以降低功耗。(2)DDR3新增ZQ校準功能,ZQ也是一個(gè)新的管腳,這個(gè)引腳通過(guò)一個(gè)命令集及片上校準引擎(On—Die Calihration Engine,ODCE)自動(dòng)校驗數據輸出驅動(dòng)器導通電阻與ODT的終結電阻值。(3)在DDR3系統中,將參考電壓分成兩個(gè):一個(gè)是為地址和控制總線(xiàn)提供服務(wù)的VREFC,另一個(gè)是為數據總線(xiàn)提供服務(wù)的VREFDQ,兩個(gè)不同的參考電壓為DDR3提供更好的抗噪能力。(4)在DDR3系統中,控制器和存儲器是一一對應的,由此便可大幅減輕地址、控制、數據信號的總線(xiàn)負擔,提供了信號的完整性。這是DDR3和DDR2的一個(gè)關(guān)鍵區別。對單個(gè)Rank的模組,控制器和內存是點(diǎn)對點(diǎn)(Point to Point)的連接關(guān)系,對雙Rank的模組,控制器和內存是點(diǎn)對雙點(diǎn)(Point to 2Points)的連接關(guān)系。(5)DDR3存儲器模塊的地址、命令、控制信號和時(shí)鐘采用了“Fly—by”的拓撲結構,大幅減輕了地址、命令、控制和數據總線(xiàn)的負載,提高了信號的完整性。
1 DDR3 SDRAM工作原理
系統上電后,在DDR3 SDRAM進(jìn)行正常讀寫(xiě)操作前,必須按照規定步驟完成初始化操作,然后才能進(jìn)入空閑的狀態(tài),等待控制器的訪(fǎng)問(wèn)。初始化操作過(guò)程中主要完成對模式寄存器的配置工作,DDR3芯片上有4個(gè)模式寄存器,通過(guò)模式寄存器的配置,可完成比如突發(fā)長(cháng)度、讀取突發(fā)種類(lèi)、CAS長(cháng)度、測試模式、DLL復位、輸出驅動(dòng)能力等的設置。
DDR3 SDRAM的工作狀態(tài)轉換是通過(guò)指令來(lái)實(shí)現的,主要通過(guò)CS#(片選信號)、RAS#(行選通信號)、CAS#(列選通信號)、WE#(讀寫(xiě)控制信號)之間的組合狀態(tài)實(shí)現,DDR3 SDRAM支持的命令主要有:
(1)預充電命令。作用是關(guān)閉特定Bank中打開(kāi)的行或者所有Bank中打開(kāi)的行,SDRAM尋址具有較強的獨占性。對于第一次的讀寫(xiě),只需用激活命令打開(kāi)此行即可,而對于當前行仍處于打開(kāi)狀態(tài),要對新一行進(jìn)行讀寫(xiě),此時(shí)就要關(guān)閉當前行,此命令就是預充電命令。
(2)刷新命令。SDRAM單元有個(gè)缺點(diǎn)就是用電容存儲數據。但由于漏電流的存在,數據不能長(cháng)時(shí)間存在存儲單元中,需要周期性的刷新來(lái)保持數據,所以在SDRAM進(jìn)行存儲工作時(shí),必須進(jìn)行刷新操作。刷新間隔和存儲芯片的溫度有關(guān),刷新方式分為自刷新(SREF)和自動(dòng)刷新(AREF)。自刷新用于正常模式下,而自動(dòng)刷新用于低功耗情況下。
(3)激活命令。用于激活所要進(jìn)行讀或者寫(xiě)操作的Bank、行和列。在讀或者寫(xiě)命令到達DDR3 SDRAM的行之前,要先對要讀或寫(xiě)操作的行用激活命令進(jìn)行激活。與激活命令一起發(fā)送的地址位用于尋找進(jìn)行操作的Bank和行,與讀或寫(xiě)命令一起發(fā)送的地址位用于尋找進(jìn)行操作的起始列單元。
(4)讀命令。用于對一個(gè)已激活的行進(jìn)行讀操作。在讀操作完成之后,被訪(fǎng)問(wèn)的行依然處于打開(kāi)狀態(tài),直到被預充電命令關(guān)閉。BA0~BA2用來(lái)選擇Bank的地址,A0~Ai提供的輸入地址用于選擇開(kāi)始列地址,讀命令操作如圖1所示。

(5)寫(xiě)命令。用于啟動(dòng)一個(gè)突發(fā)的存儲器寫(xiě)操作,由FPGA向DDR3 SDRAM中寫(xiě)入數據。BA0~BA2用于選擇Bank的地址,A0~Ai提供的輸入地址用于選擇開(kāi)始列地址由FPGA將數據寫(xiě)入DDR3 SDRAM中。寫(xiě)命令操作如圖2所示。

DDR3芯片內部控制器中有8個(gè)Bank處于開(kāi)放的狀態(tài),Bank開(kāi)放的順序由控制器發(fā)出的命令決定。若8個(gè)Bank均處于開(kāi)放狀態(tài),但還有數據要進(jìn)入Bank,則最后開(kāi)放的Bank將被關(guān)閉,以打開(kāi)一個(gè)新的Bank。在自刷新時(shí),所有Bank都會(huì )被關(guān)閉,一旦有預充電命令,Bank就會(huì )開(kāi)放。
2 DDR3 SDRAM控制器設計方案
設計采用Xilinx公司提供的DDR3 SDRAM控制器IP核。采用此方案的好處是縮短開(kāi)發(fā)周期、簡(jiǎn)化系統設計。設計者只需在Xilinx公司提供的MIG3.92軟件工具界面上選擇FPGA及DDR3 SDRAM芯片型號、總線(xiàn)寬度、速度級別,設置突發(fā)長(cháng)度、CAS延遲、引腳分配等參數,即可生成DDR3 SDRAM控制器。FPGA芯片采用Xilinx公司的Virtex-6系列XC6VLX240T-1FFG1759C型號,DDR3 SDRAM芯片采用鎂光公司的MT8JSF25664HZ-1C4D1,該內存芯片行地址寬度為15位。列地址寬度為10位,Bank地址位寬為3位,總容量為2 GB。設置突發(fā)長(cháng)度為8位,數據寬度為64位,速度級別為-2,時(shí)鐘頻率為400 MHz。
DDR3 SDRAM控制器的主要功能是完成對DDR3SDRAM的初始化,將DDR3 SDRAM復雜的讀寫(xiě)時(shí)序轉化成用戶(hù)簡(jiǎn)單的讀寫(xiě)時(shí)序,將DDR3 SDRAM接口的雙時(shí)鐘數據轉化成用戶(hù)的單時(shí)鐘數據,并發(fā)送周期性的刷新命令來(lái)維持DDR3 SDRAM中的數據??刂破髦饕譃閭鬏攲雍臀锢韺?,傳輸層負責接收上層用戶(hù)邏輯的訪(fǎng)存請求,并將這些請求轉換成DDR3SDRAM所需的時(shí)序發(fā)送給物理層。物理層負責將控制和地址信號按照DDR3 SDRAM需要的時(shí)序發(fā)送給存儲芯片,同時(shí)在傳輸層和存儲芯片之間創(chuàng )建地址通路和數據通路,捕獲DDR3 SDRAM發(fā)出的數據,通過(guò)輸入輸出緩存發(fā)送DDR3 SDRAM所有的控制信號、地址信號以及數據信號,同時(shí)保證指令與地址,數據的同步,DDR3 SDRAM接口模型如圖3所示。

DDR3 SDRAM內存控制器的設計必須滿(mǎn)足兩大基本要求:(1)所設計的控制器要實(shí)現對內存模組的管理,完成CPU的訪(fǎng)存要求。(2)需盡可能提高訪(fǎng)問(wèn)內存的速度和帶寬,這是衡量?jì)却婵刂破餍阅艿闹匾笜?,同時(shí)還需考慮內存的兼容性和成本問(wèn)題。
3 實(shí)驗結果
為驗證DDR3控制器IP核的正確性,對MIG生成的測試模塊在ISE14.2環(huán)境下進(jìn)行功能仿真驗證,該模塊可以對DDR3存儲器進(jìn)行一系列操作,并對寫(xiě)入和讀出的數據進(jìn)行比較,從而驗證控制器的正確性。仿真結果如圖4所示,phy_init_done的值為1,說(shuō)明初始化完成。當app_cmd=000時(shí),表示當前進(jìn)行寫(xiě)操作,只有同時(shí)app_en=1和app_rdy=1,app_ addr才能寫(xiě)入成功。當app_cmd=001時(shí),表示當前操作為讀操作,可通過(guò)rror這一比較信號驗證控制器是否正確。從仿真結果可看出,比較信號error始終為低電平,說(shuō)明寫(xiě)入和讀出的數據是一致的。

4 結束語(yǔ)
通過(guò)對DDR3的技術(shù)特點(diǎn)和工作原理進(jìn)行分析,將DDR3控制器的從層次上分為傳輸層和物理層,然后給出了DDR3 SDRAM控制器的設計方法,將控制器在Xilinx公司的Virtex-6系列FPGA芯片上實(shí)現,通過(guò)ISim軟件仿真結果,證明了設計的可行性和正確性,以及IP核設計的DDR3控制器具有較好的適應性和靈活性,縮短了系統開(kāi)發(fā)周期、降低了系統開(kāi)發(fā)成本。
評論