本文介紹一個FPGA開源項目:DDR3讀寫。該工程基于MIG控制器IP核對FPGA DDR3實現(xiàn)讀寫操作。
MIG控制器支持兩種接口:(1)簡單用戶控制邏輯接口;(2)AXI接口。該工程采用前者,后面會整理DDR3的AXI總線訪問方法。
下面簡單介紹一下MIG控制器IP核的使用以及FPGA板上測試結(jié)果。
01軟硬件平臺
02IP核參數(shù)配置
MIG(Memory Interface Generator)IP核提供了用戶接口邏輯,以便于實現(xiàn)對DDR的訪問。有關(guān)MIG的詳細(xì)描述,可以參考官方文檔:ug586。這里不展開介紹。
接口配置界面,保持默認(rèn)選項。
- Clock Period:配置主時鐘頻率,這里選擇400M。由于DDR是雙沿工作,所以讀寫速率為400M2Data Width(16bits);
- 主時鐘頻率和用戶時鐘頻率比例:4:1,因此生成的用戶時鐘為100M;
- Memory Part:配置DDR參數(shù),根據(jù)實際情況選擇;
- Data Mask:如果選用的DDR帶有data mask就選上,并將信號拉低,表示不屏蔽數(shù)據(jù)接口;
Input Clock Period:輸入時鐘,這里選擇200M。
- System Clock:No Buffer;
- Reference Clock:使用系統(tǒng)時鐘;
- 系統(tǒng)復(fù)位信號:低電平有效;
讀取XDC文件管腳配置,并點擊validate,進(jìn)行校驗。
系統(tǒng)信號選擇不用配置,保持默認(rèn)選項即可。
03用戶接口 & 讀寫時序
MIG IP產(chǎn)生的用戶接口信號是以app_*格式命名:
input [127:0] app_rd_data; //讀數(shù)據(jù)
input app_rd_data_end; //讀數(shù)據(jù)結(jié)束
input app_rd_data_valid;//讀數(shù)據(jù)有效
input app_rdy; //MIG控制器準(zhǔn)備好讀寫
input app_wdf_rdy; //MIG控制器準(zhǔn)備好寫
output [27:0] app_addr; //讀寫地址
output [2:0] app_cmd; //讀寫命令
output app_en; //控制命令使能
output [127:0] app_wdf_data; //寫數(shù)據(jù)
output app_wdf_end; //寫數(shù)據(jù)結(jié)束
output app_wdf_wren; //寫數(shù)據(jù)使能
DDR寫時序如下圖所示。邏輯比較簡單,將所有信號嚴(yán)格對齊即可。但有一個需要注意的地方,就是當(dāng) app_rdy 和 app_wdf_rdy 都為高的時候,才能同時拉高 app_en ,這時寫入的數(shù)據(jù)才有效。
DDR讀時序如下圖所示。app_cmd、app_addr、app_en、app_rdy信號嚴(yán)格對齊即可,但是同樣需要在 app_rdy 拉高的情況下,才能拉高 app_en 。另外,數(shù)據(jù)讀出會略有延遲。
04Vivado工程源碼結(jié)構(gòu)
本工程源碼結(jié)構(gòu)如下圖所示。
- ddr_ctrl:ddr用戶接口讀寫控制模塊;
- clk_wiz_0:產(chǎn)生200M時鐘供MIG IP使用;
- time_ref:系統(tǒng)時間基準(zhǔn)模塊,以1s為周期計數(shù);
05實現(xiàn)功能 & 測試結(jié)果
該Vivado工程主要用于FPGA DDR3讀寫功能測試?;谟脩艨刂七壿嫿涌?,以1s為周期,每周期內(nèi)完成1次讀寫操作。板上測試1次讀寫操作的結(jié)果如下圖所示。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602978 -
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
DDR3
+關(guān)注
關(guān)注
2文章
276瀏覽量
42242 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
AXI
+關(guān)注
關(guān)注
1文章
127瀏覽量
16622
發(fā)布評論請先 登錄
相關(guān)推薦
評論