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