本文開源一個FPGA項目:基于AXI總線的DDR3讀寫。之前的一篇文章介紹了DDR3簡單用戶接口的讀寫方式:《DDR3讀寫測試》,如果在某些項目中,我們需要把DDR掛載到AXI總線上,那就要通過MIG IP核提供的AXI接口來讀寫DDR。
下面圍繞Vivado BD工程的搭建以及各個IP的使用簡單介紹一下該項目。
01軟硬件平臺
- 軟件平臺:Vivado 2017.4;
- 硬件平臺:XC7A35TFTG256-1;
02創(chuàng)建Vivado BD工程
2.1 Clocking Wizard
首先在BD工程中添加Clocking Wizard IP核,用于給MIG IP核提供200M時鐘以及復位信號。
2.2 MIG IP
添加MIG IP核,接口已經默認配置成AXI接口。
- Clock Period:這里配置成400Mhz;
- Data Width:采用16bits;
- AXI參數配置:Data Width 配置成128 bits。DDR3是雙沿工作,并且工作頻率和用戶時鐘頻率為4:1,因此這里AXI總線位寬最大可配置為16bits42=128bits;
- MIG IP核輸入時鐘:200MHz;
- 系統(tǒng)時鐘:No Buffer;
- 參考時鐘:選擇Use System Clock;
配置好MIG IP后,將其與時鐘模塊(Clocking Wizard)進行連接。
2.3 FDMA
FDMA 是米聯(lián)客基于AXI4總線協(xié)議設計的一個DMA控制器,將其掛載到AXI4總線上,可以方便地對PL或者PS端DDR進行讀寫。
- FDMA寫時序
FDMA寫時序如下圖所示。將fdma_wready拉高,當fdma_wbusy為低的時候表示總線空閑,此時可以拉高fdma_wreq,同時設置起始地址和數據長度。當fdma_wvalid為高時,寫入有效數據。最后一個數據寫完,fdma_wvalid和fdma_wbusy會拉低。
- FDMA讀時序
FDMA讀時序如下圖所示。將fdma_rready拉高,當fdma_rbusy為低的時候表示總線空閑,此時可以拉高fdma_rreq,同時設置起始地址和數據長度。當fdma_rvalid為高時,輸出有效數據。最后一個數據讀完,fdma_rvalid和fdma_rbusy會拉低。
對FDMA IP參數進行配置:這里采用32位寬地址線以及64位寬數據線進行測試。
然后,將FDMA連接到AXI總線上,并通過axi_smc IP進行數據位寬轉換。將需要調用的接口接出來,得到以下BD工程。
配置起始地址為0x0000_0000,令DDR的讀寫地址從0開始。
最后在頂層文件中添加用戶邏輯,并生成bit文件。
03功能測試
該Vivado工程實現(xiàn)的功能是基于AXI總線對DDR3進行連續(xù)讀寫測試,每次突發(fā)讀寫長度為512*64bits,地址范圍為0~100M。FPGA板上測試結果如下圖所示。
-
FPGA
+關注
關注
1629文章
21729瀏覽量
602986 -
DDR3
+關注
關注
2文章
276瀏覽量
42242 -
接口
+關注
關注
33文章
8575瀏覽量
151015 -
IP核
+關注
關注
4文章
327瀏覽量
49485 -
AXI總線
+關注
關注
0文章
66瀏覽量
14261
發(fā)布評論請先 登錄
相關推薦
評論