本文開源一個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時鐘以及復(fù)位信號。
2.2 MIG IP
添加MIG IP核,接口已經(jīng)默認配置成AXI接口。
- Clock Period:這里配置成400Mhz;
- Data Width:采用16bits;
- AXI參數(shù)配置: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é)議設(shè)計的一個DMA控制器,將其掛載到AXI4總線上,可以方便地對PL或者PS端DDR進行讀寫。
- FDMA寫時序
FDMA寫時序如下圖所示。將fdma_wready拉高,當fdma_wbusy為低的時候表示總線空閑,此時可以拉高fdma_wreq,同時設(shè)置起始地址和數(shù)據(jù)長度。當fdma_wvalid為高時,寫入有效數(shù)據(jù)。最后一個數(shù)據(jù)寫完,fdma_wvalid和fdma_wbusy會拉低。
- FDMA讀時序
FDMA讀時序如下圖所示。將fdma_rready拉高,當fdma_rbusy為低的時候表示總線空閑,此時可以拉高fdma_rreq,同時設(shè)置起始地址和數(shù)據(jù)長度。當fdma_rvalid為高時,輸出有效數(shù)據(jù)。最后一個數(shù)據(jù)讀完,fdma_rvalid和fdma_rbusy會拉低。
對FDMA IP參數(shù)進行配置:這里采用32位寬地址線以及64位寬數(shù)據(jù)線進行測試。
然后,將FDMA連接到AXI總線上,并通過axi_smc IP進行數(shù)據(jù)位寬轉(zhuǎn)換。將需要調(diào)用的接口接出來,得到以下BD工程。
配置起始地址為0x0000_0000,令DDR的讀寫地址從0開始。
最后在頂層文件中添加用戶邏輯,并生成bit文件。
03功能測試
該Vivado工程實現(xiàn)的功能是基于AXI總線對DDR3進行連續(xù)讀寫測試,每次突發(fā)讀寫長度為512*64bits,地址范圍為0~100M。FPGA板上測試結(jié)果如下圖所示。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22044瀏覽量
618248 -
DDR3
+關(guān)注
關(guān)注
2文章
284瀏覽量
43156 -
接口
+關(guān)注
關(guān)注
33文章
8999瀏覽量
153710 -
IP核
+關(guān)注
關(guān)注
4文章
338瀏覽量
50794 -
AXI總線
+關(guān)注
關(guān)注
0文章
66瀏覽量
14554
發(fā)布評論請先 登錄
基于FPGA的DDR3多端口讀寫存儲管理系統(tǒng)設(shè)計

【紫光同創(chuàng)國產(chǎn)FPGA教程】【第十章】DDR3讀寫測試實驗

cyclone V控制DDR3的讀寫,quartusII配置DDR3 ip核后,如何調(diào)用實現(xiàn)DDR3的讀寫呢,謝謝
玩轉(zhuǎn)Zynq連載37——[ex56] 基于Zynq的AXI HP總線讀寫實例
【FPGA DEMO】Lab2:DDR3讀寫實驗
紫光同創(chuàng)FPGA入門指導(dǎo):DDR3 讀寫——紫光盤古系列50K開發(fā)板實驗教程
基于FPGA的DDR3多端口讀寫存儲管理的設(shè)計與實現(xiàn)

關(guān)于期貨行情數(shù)據(jù)加速處理中基于FPGA的DDR3六通道讀寫防沖突設(shè)計詳解

評論