首先借用開源的axi_master模塊,首先我用XHDL工具把VHDL轉成了Verilog,並將其打包成了IP,名爲axi_lite_master_vlog_v1_0。
用戶側handshake接口如下所示,依次表示:寫請求,讀請求,寫完成,讀完成,寫數據,寫地址,讀數據,讀地址。當然要注意一下接口方向。
axi lite master端接口如下所示:
axi litemaster端的讀寫地址輸出有如下加法操作
其中,C_M_TARGET_SLAVE_BASE_ADDR爲用戶定義的基地址,在Vivado Block Design設計中,axi slave器件都有一個基地址。
測試工程Block Design設計如下。工程下載鏈接:
CSDN:https://download.csdn.net/download/dimples_Song/12018007
BaiduDownload:鏈接:https://pan.baidu.com/s/1Ly9jDQhDSAWMrInCnO4j_g 提取碼:6840
BRAM由axi bram ctrl控制。user_rw模塊是自己根據上述用戶接口編寫的測試代碼。
在address editor界面,設定axi_bram_ctrl_1的偏移地址爲0xA000000,同時給axi_lite_master_vlog_0模塊的基地址定義爲0xA0000000,如下圖:
使用Vivado自帶的仿真工具,查看波形。讀寫測試模塊的讀寫地址和數據如下:
到axi_lite_master_vlog模塊輸出端口看到地址都加上了偏移量0xA0000000。
讀寫數據保持一致,讀寫正常。
記錄一下這個學習過程,不懂的可以留言,看到第一時間回覆。