基于FPGA的DDR內(nèi)存條的控制
初始化的過程為:(1)上電后,延時200us等待時鐘穩(wěn)定,然后將CKE拉高,執(zhí)行一次NOP或者DESELECT操作。(2)執(zhí)行一次precharge all操作。(3)設(shè)置擴展模式寄存器(BAl為低電平BA0為高電平)使能DLL。(4)設(shè)置模式寄存器(BAl,BA0均為低電平)復(fù)位DLL。(5)執(zhí)行一次pre-charge all指令。(6)再經(jīng)過2個自刷新(Auto refresh)指令后再次設(shè)置模式寄存器設(shè)置操作模式。(7)延時200個周期才能進(jìn)行讀操作。DDR SDRAM的擴展模式寄存器和模式寄存器的定義如圖2和圖3所示。
完成初始化后進(jìn)入圖1中的IDEL狀態(tài),此時可以進(jìn)行讀寫操作。在進(jìn)行寫操作時,首先要進(jìn)入Row active狀態(tài),此時選中要操作的bank與row。然后執(zhí)行NOP操作等待tRCD的時間后可以進(jìn)入寫狀態(tài)。
2 內(nèi)存條電路設(shè)計
由于DDR SDRAM采用的時鐘頻率較高,加上DDRSDRAM的數(shù)據(jù)率為時鐘速率的兩倍,DDR SDRAM對時鐘質(zhì)量的要求很高,必須保證時鐘上升沿的時間小于5%的時鐘周期。DDR SDRAM的數(shù)據(jù)線與相對應(yīng)的數(shù)據(jù)采樣信號(DQS)的長度要盡量相等,來保證數(shù)據(jù)的采樣窗口盡量要大一些。由于信號質(zhì)量要求高,我們將所有的信號線都采用微電線和帶狀線來傳輸。使用FPGA和內(nèi)存條的IBIS模型進(jìn)行仿真來保證設(shè)計中信號的完整性,我們將信號分為3類,第一類,由FPGA到DDR SDRAM的時鐘差分信號;第二類,由FPGA到DDR SDRAM的控制線;第三類,F(xiàn)PGA與DDR SDRAM之間的雙向傳輸線。對三類IBIS模型的herperlinx仿真如圖4:
通過仿真我們可以確定3類信號線中帶狀線和微帶線板厚,銅厚,以及信號線的線寬,線長等參數(shù)。
3 FPGA對DDR SDRAM的控制
本設(shè)計中使用的FPGA是ALTERA公司的cyclone II系列的EP2C20F484C6。對內(nèi)存條的工作模式設(shè)置為BL=4,CL=3,如圖7為FPGA對DDR SD-RAM的控制模塊框圖。
評論