1. 程式人生 > >基於FPGA的DDR記憶體條的控制研究與設計

基於FPGA的DDR記憶體條的控制研究與設計

1 記憶體條的工作原理

DDR記憶體條是由多顆粒的DDR SDKAM晶片互連組成,DDR SDRAM是雙資料率同步動態隨機儲存器的縮寫。DDR SDRAM採用雙資料速率介面,也就是在時鐘的正沿或負沿都需要對資料進行取樣。在本設計中採用的記憶體是hynix公司的lGB的HYMD564M646CP6-J。記憶體條的工作原理與單顆粒記憶體晶片的工作原理一樣,主要的控制訊號以及控制訊號完成的主要功能如表1所示。



以上的控制訊號及地址訊號都是由差分時鐘訊號中CK的正沿觸發。DDR SDRAM必須按照一定的工作模式來完成初始化,完成初始化後才能進入到讀寫過程。DDR SDRAM的控制流程如圖1所示。



初始化的過程為:(1)上電後,延時200us等待時鐘穩定,然後將CKE拉高,執行一次NOP或者DESELECT操作。(2)執行一次precharge all操作。(3)設定擴充套件模式暫存器
(BAl為低電平BA0為高電平)使能DLL。(4)設定模式暫存器(BAl,BA0均為低電平)復位DLL。(5)執行一次pre-charge all指令。(6)再經過2個自重新整理(Auto refresh)指令後再次設定模式暫存器設定操作模式。(7)延時200個週期才能進行讀操作。DDR SDRAM的擴充套件模式暫存器和模式暫存器的定義如圖2和圖3所示。



完成初始化後進入圖1中的IDEL狀態,此時可以進行讀寫操作。在進行寫操作時,首先要進入Row active狀態,此時選中要操作的bank與row。然後執行NOP操作等待tRCD的時間後可以進入寫狀態。

2 記憶體條電路設計

由於DDR SDRAM採用的時鐘頻率較高,加上DDRSDRAM的資料率為時鐘速率的兩倍,DDR SDRAM對時鐘質量的要求很高,必須保證時鐘上升沿的時間小於5%的時鐘週期。DDR SDRAM的資料線與相對應的資料取樣訊號(DQS)的長度要儘量相等,來保證資料的取樣視窗儘量要大一些。由於訊號質量要求高,我們將所有的訊號線都採用微電線和帶狀線來傳輸。使用FPGA和記憶體條的IBIS模型進行模擬
來保證設計中訊號的完整性,我們將訊號分為3類,第一類,由FPGA到DDR SDRAM的時鐘差分訊號;第二類,由FPGA到DDR SDRAM的控制線;第三類,FPGA與DDR SDRAM之間的雙向傳輸線。對三類IBIS模型的herperlinx模擬如圖4:







通過模擬我們可以確定3類訊號線中帶狀線和微帶線板厚,銅厚,以及訊號線的線寬,線長等引數。

3 FPGA對DDR SDRAM的控制

本設計中使用的FPGA是ALTERA公司的cyclone II系列的EP2C20F484C6。對記憶體條的工作模式設定為BL=4,CL=3,如圖7為FPGA對DDR SD-RAM的控制模組框圖。



其中,Clkin為外部輸入的時鐘訊號,為了使FPGA到DDR SDRAM的兩對時鐘訊號的質量儘量好,使用FPGA內部的兩個鎖相環輸出差分時鐘訊號。為了保證鎖相環輸出的兩路差分訊號相位一致,在設計PCB
時我們使晶振輸出到FPGA兩個PLL輸入的佈線距離相等,為了保證兩個鎖相環輸出訊號到達DDR SDRAM介面時相位一致,由FPGA鎖相環輸出到DDR SDRAM的接口布線長度相等。

控制模組採用的工作模式是按照圖2所示的狀態來跳轉,上電以後首先是對DDR SDRAM進行初始化,初始化完成以後就可以進出等待工作的狀態。此時重新整理計數器開始計數,等待7.8 us後給出重新整理請求,在空閒狀態時(IDEL)重新整理請求的優先順序最高,響應重新整理請求後執行REFR-ESH指令同時復位重新整理計數器。初始化後如果FIF00的讀空標誌為O說明FIF00中有資料,此時可以進入到寫狀態。由於採用的是BL=4的工作狀態,寫操作每次都寫入4個64位的數。所以,我們將輸入的資料進行並位成256位的數,每次寫操作只需要從FIF00中讀出一個256位的數。假設我們採用1OOMHz的時鐘,每寫4個64位的數大概需要10個時鐘週期。如果輸入的資料位寬為16位,那麼由外部傳給FPGA的資料率要小於160 MHz。寫操作完成的時候進入空閒狀態,等待重新整理標誌或者讀空標誌。讀的時候需要等待系統發出讀命令(read),然後進入讀狀態,讀出的資料由Ddrout[127:O]送到FIF01和FIF02中。通過控制FIF01和FIF02的寫請求訊號來實現將資料分別寫入。讀的時候BL=4每次讀出4個64位數,執行一次讀操作大約需要10個時鐘週期。如果輸出的資料位寬為16位,那麼資料由FPGA向外傳輸的速率要小於160 MHzo控制模組在讀寫記憶體條的時候控制資料模組來實現資料率為時鐘速度的兩倍,資料模組使用兩個時鐘一個是系統時鐘一個是2倍的系統時鐘。

因為DDR SDRAM的控制相對複雜,我們可以使用記憶體條的vefilog模型,通過對記憶體條的vefilog模擬,我們可以知道自己程式的正確性,圖8為modelsim中的模擬波形。如果模擬過程正確,我就可以對程式進行編譯,佈局佈線,然後下載到FPGA中,由於佈局佈線的延時,輸出的訊號波形與模擬波形不一致,此時,可以通過調整FPGA內部的鎖相環來調整時序,實現對記憶體條的控制。



4 結束語

通過介紹記憶體條的工作原理,以及記憶體條電路設計時的注意事項的介紹,我們可以更合理的實現FPGA與記憶體條的互連。最後,給出FPGA內部對記憶體條控制的方法,以及給出模擬波形,實現對記憶體條的控制。實現FPGA對DDRSDRAM記憶體條的控制,可以實現大容量高速的資料儲存,在工程中的得到廣泛的應用