基于verilog实现AXI4协议接口读写功能


前言

AXI4是ARM公司推出的第四代AMBA总线协议,专为高带宽、低延迟的片上通信设计,广泛应用于FPGA、处理器及DSP等复杂系统,AXI4包含三中形态,分别为

  • AXI4:标准版本,支持高带宽内存映射通信。
  • AXI4-Lite:简化版,用于寄存器等简单设备的轻量级访问。
  • AXI4-Stream:无地址协议,适用于高速数据流传输(如视频、音频)。

本文章主要介绍AXI4协议的代码实现

一、AXI4结构

AXI4主要有五个事务(通道)组成,分别为写地址通道、写数据通道、写响应通道、读地址通道、读数据通道;其中读响应通道包含于读数通道,通道传输流程如下:
在这里插入图片描述
在这里插入图片描述

通道解释:

  1. 这5条独立的通道都包含一个双路的VALD、READY握手机制。信息源通过VALID信号来指示通道中的数据和控制信息什么时候有效。目地源用READY信号来表示何时准备好接收数据。传输地址信息和数据都是在VALID和READY同时为高时有效。
  2. 读数据和写数据通道都包括一个 LAST 信号,用来指明一个事物传输的最后一个数据。
  3. 读/写事务都有自己的地址通道,地址通道携带着传输事务所必须的地址和信息。
  4. 读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态。
  5. 写数据通路传送着主机向设备的写数据和写控制信息。写响应通道提供了设备响应写事务的一种方式。在每一次突发式写会产生一个完成信号。

二、AXI4各通道定义

1. 写地址通道定义
在这里插入图片描述
2. 写数据通道定义
在这里插入图片描述
3. 写响应通道定义
在这里插入图片描述
4. 读地址通道定义
在这里插入图片描述
5. 读数据通道定义
在这里插入图片描述

二、代码设计

1.思维导图

在这里插入图片描述
上述图片为代码状态机的流程图

2.代码设计

module axi_ram #
(
   parameter               WADDR_BASE = 28'h0            ,
   parameter               WADDR_BEND = 28'h0            ,
   parameter               RADDR_BASE = 28'h0            ,
   parameter               RADDR_BEND = 28'h0            ,
   parameter               AXI_ID     = 4'd0             ,
   parameter               AXI_LEN    = 8'd31            ,
   parameter               DWID       = 128              ,
   parameter               ADDR       = 28
)
(
   input                   clk_sys                       ,
   input                   rst_sys                       ,
   // DDR INIT
   input                   mmcm_locked                   ,
   input                   init_calib_complete           ,
   // Slave Interface Write Address Ports
   output    [3:0]         m_axi_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值