协议转换思路
实现AXI4数据写入主要是要实现握手顺序的控制,此处在ARM公司的AXI协议文档中有详细介绍
下图是写数据的过程:需要先对写地址、写数据握手成功(此处不分前后,写地址先成立也可以,写数据先握手成功也可以),只有当数据和地址都握手成功了,才能对写响应握手
读数据也是类似的,还更简单些,这里肯定是先对读地址握手之后,才能对读数据握手的

实现代码
/**************************************************************
@File :avalon_slave2axi4_lite_master.v
@Time :2024/11/21 09:30
@Author :WangHaodong
@Font :UTF-8
@Function :将Avalon Slave接口转换为AXI4 Lite Master协议
方便对包含AXI Lite 协议的IP,进行寄存器配置
在传入地址的时候,需要注意4字节地址对齐,否则会出现读写数据错误
**************************************************************/
module avalon_slave2axi4_lite_master #(
parameter AXI_ADDR_WIDTH = 16 ,
parameter AXI_DATA_WIDTH = 32
)(
input clk ,
input rst_n ,
//Avalon
input avl_write ,
input avl_read ,
input [AXI_DATA_WIDTH-1:0] avl_wr_data ,
input [AXI_ADDR_WIDTH-1:0] avl_addr ,
output reg [AXI_DATA_WIDTH-1:0] avl_rd_data ,
output reg avl_rd_vld ,
output avl_waitrequest ,
//AXI
output [AXI_ADDR_WIDTH-1:0] axi_awaddr ,
output [2:0] axi_awprot ,
output reg axi_awvalid ,
input axi_awready ,
output [AXI_DATA_WIDTH-1:0] axi_wdata ,
output [AXI_DATA_WIDTH/8-1:0] axi_wstrb ,
output reg axi_wvalid ,
input axi_wready ,
input [1:0] axi_bresp ,
input axi_bvalid ,
output axi_bready

514

被折叠的 条评论
为什么被折叠?



