一個簡單的用戶接口轉axi lite接口讀寫BRAM的例子

首先借用開源的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。

讀寫數據保持一致,讀寫正常。

記錄一下這個學習過程,不懂的可以留言,看到第一時間回覆。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章