一、實驗任務
本章的實驗任務是在 PL端自定義一個AXI4接口的IP核,通過AXI_HP接口對PS端DDR3進行讀寫測試,讀寫的內存大小是 4K字節。
二、實驗整體框架

三、實驗步驟
一、在原來的hello_word工程另存并修改zynq ip。添加axi hp接口,恢復以前的ip狀態

二、自定義axi4 full ip核將ip改為主機接口。如圖

三、添加自定義ip并修改參數

四、點擊自動連接

五、添加pl端信號,m_axi_init_txn這個信號是初始化信號,檢測到上升沿的時候才有效,檢測到高電平后會立馬對地址指向的數據內存初始化,然后我們對齊重命名。m_axi_txn_done這個是對寫入和讀出的數據對比完成信號。m_axi_erro這個是寫入和讀數據對比有誤信號。這幾個信號都改名和引出。如下幾個圖:


五、m_axi_init_txn連接按鍵,m_axi_txn_done和m_axi_erro連接led用作觀察。由于我的板子只有一個pl端的led因此我就將m_axi_erro信號隨便連接一個GPIO外設由于我們的按鍵一開始為高電平,而DDR初始化信號檢測到上升沿才初始化。因此我們這里加一個取反模塊。修改屬性并手動連接。并驗證整個設計




6、為AXI讀寫添加debug信號,并自動連接



7、生成模塊并且更新頂層文件,其他的保持默認ok即可


8、綜合以便添加引腳

9、添加引腳

10、生成bit流。
11、導出硬件設計,打開SDK,將原來的SDK刪掉
12、新建項目添加以下文件。
這里由于我用不了scanf因此我就添加一個延遲燒錄后在延遲這段時間進行初始化和生成debug觸發信號。
#include"stdio.h"#include"xil_cache.h"#include"xil_io.h"#include"xil_printf.h"#include"sleep.h"intmain(){Xil_DCacheDisable();//char *data_in="I have write and read ddr data! ";for(inti=0;i<100;i+=4) {printf("%d is %d ",i,(int)(Xil_In32(0x10000000+i))); }sleep(10);for(int?i=0;i<100;i+=4) {printf("%d is %d ",i,(int)(Xil_In32(0x10000000+i))); }return0; }
12、觀察數據,正確



-
接口
+關注
關注
33文章
9519瀏覽量
157015 -
DDR
+關注
關注
11文章
754瀏覽量
69099 -
內存
+關注
關注
9文章
3209瀏覽量
76357 -
AXI4
+關注
關注
0文章
21瀏覽量
9183
原文標題:AXI4 DDR讀寫測試
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
XILINX FPGA IP之AXI Traffic Generator
NVMe IP之AXI4總線分析
Xilinx高性能NVMe Host控制器IP+PCIe 3.0軟核控制器IP,純邏輯實現,AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0
PCIE項目中AXI4 IP核例化詳解
【正點原子FPGA連載】第十五章AXI4接口之DDR讀寫實驗--領航者ZYNQ之嵌入式開發指南
【正點原子FPGA連載】第九章AXI4接口之DDR讀寫實驗--摘自【正點原子】達芬奇之Microblaze 開發指南
看看在SpinalHDL中AXI4總線互聯IP的設計
Xilinx NVMe AXI4主機控制器,AXI4接口高性能版本介紹
AMBA AXI4接口協議概述
使用AXI4接口IP核進行DDR讀寫測試
評論