【FPGA数据总线】详解AXI4-FULL总线:解锁高性能数据传输的完整潜能

【致读者】

理论是骨架,实践是血肉。为了帮助大家更好地将AXI4-FULL理论应用于实际:我创建了一个【FPGA硬件技术交流群】,群内聚焦:

FPGA技术分享

实战问题讨论与答疑

行业动态与职业发展交流

我们致力于打造一个共同攻克FPGA开发中各种“疑难杂症”的优质社区。若您对本专题感兴趣,欢迎私信我 “FPGA” 加入群聊


一 引言:从“道路”到“高速公路”

        熟悉AXI4总线家族的同学都知道,其构建了FPGA系统内部的“交通网络”。其中,AXI4-FULL 协议,就是我们这个网络中的 双向八车道高速公路” 。它专为高带宽、低延迟的存储器映射数据传输而设计,是连接CPU、DMA、DDR控制器等高性能单元的首选。

       本文将参考《IHI0022C_amba_axi_v2_0_protocol_spec》深入AXI4-FULL的每一个细节,带你彻底掌握这把开启高性能FPGA系统设计的钥匙。

      需要《IHI0022C_amba_axi_v2_0_protocol_spec》源文件的可以后台私信我。

二  AXI4-FULL的定位与核心特性

       首先,我们必须明确:通常所说的AXI4,指的就是AXI4-FULL。它是AXI4-Lite的完全体,增加了实现高带宽所需的所有高级特性。

其核心特性可以概括为以下几点:

  1. 支持突发传输:核心特性,允许一次地址握手后传输大量数据(一次握手传输数据量:2^AxSIZE * (AxLEN+1) 个 Byte)。
  2. 独立的读写通道:读和写拥有完全独立的地址、数据通道,可以并行操作。
  3. 精密的写响应通道:为每次写事务提供明确的成功/失败状态回复。
  4. 强大的系统特性:支持包裹传输、窄传输、非对齐传输、原子操作、存储类型等,以适应复杂的系统需求。

为了更直观地理解其架构,我们通过下图来审视AXI4-FULL的完整通道结构:

      上图清晰地展示了AXI4-FULL的5个独立通道及其交互关系。接下来,我们将深入每个通道的细节。

三  AXI4-FULL通道深度剖析

1. 全局信号

  • ACLK:全局时钟,所有信号在此时钟上升沿采样。
  • ARESETn:全局复位,低有效。

2. 写通道

        AXI4_FULL的写通道如下图所示,可以看出主要包括写地址通道、写数据通道、和写响应通道。

2.1 写地址通道

此通道用于主设备向从设备发送本次写操作的地址信息。

信号

方向

描述

AWID

M -> S

写地址ID,用于区分不同的事务流。

AWADDR

M -> S

写地址的起始字节地址

AWLEN

M -> S

突发长度。AWLEN = N 表示突发 N+1 个数据传输。

AWSIZE

M -> S

每次传输的字节数(如 3'b010 表示 2^AWSIZE即4字节)。

AWBURST

M -> S

突发类型:00固定地址,01递增突发,10回环突发。

AWLOCK

M -> S

锁定的原子访问,通常不使用。

AWCACHE

M -> S

存储类型,指示事务的可缓存性、缓冲性等。

AWPROT

M -> S

访问保护级别,用于特权级和安全性检查。

AWQOS

M -> S

服务质量标识,用于优先级仲裁。

AWREGION

M -> S

区域标识,用于逻辑分区。

AWUSER

M -> S

用户自定义信号。

AWVALID

M -> S

地址和控制信息有效。

AWREADY

S -> M

从设备准备好接收地址和控制信息。

2.2. 写数据通道

此通道承载实际要写入的数据。

信号

方向

描述

WID

M -> S

写数据ID,应匹配AWID。但在实践中常被省略,依赖顺序。

WDATA

M -> S

写数据。

WSTRB

M -> S

字节线选通。WSTRB[n] 对应 WDATA[8n+7:8n],为1时表示该字节有效。

WLAST

M -> S

必须拉高,指示这是本次突发的最后一个数据

WUSER

M -> S

用户自定义信号。

WVALID

M -> S

写数据和选通有效。

WREADY

S -> M

从设备准备好接收数据。

2.3. 写响应通道

从设备通过此通道告知主设备写事务的完成状态。

信号

方向

描述

BID

S -> M

响应ID,与AWID匹配。

BRESP

S -> M

写响应:00 OKAY, 01 EXOKAY, 10 SLVERR, 11 DECERR。

BUSER

S -> M

用户自定义信号。

BVALID

S -> M

写响应有效。

BREADY

M -> S

主设备准备好接收响应。

2.4 写通道时序详解

这是一次写4个数据的写通道时序。

AWVALID和AWREAY同时为高的时候,写地址AWADDR有效,此外对应的AWSIZE、AWLEN等信号均是此时有效,传输4笔数据,对应的AWLEN应该是3,图中虽然没有显示,但是大家需要知道有这个信号的存在;

WVALID和WREADY同时为高时,写数据WDATA有效,此次突发传输4个数据,故最后一笔数对应的WLAST为高,标识为最后一笔数据完成,当WDATA为32bit位宽时,对应的AWSIZE应该是2,图中虽然没有显示,但是大家需要知道有这个信号的存在;

最后是应答通道,当BVALID和BREADY同时为0是,BRESP有效。

3. 读通道

AXI4_FULL的读通道如下图所示,可以看出主要包括读地址通道、读数据应答通道

3.1. 读地址通道

与写地址通道类似,用于发起读事务。

信号

方向

描述

ARID

M -> S

读地址ID。

ARADDR

M -> S

读地址的起始字节地址

ARLEN

M -> S

读突发长度。

ARSIZE

M -> S

每次读取的字节数。

ARBURST

M -> S

读突发类型。

...

...

其他信号与写地址通道类似。

ARVALID

M -> S

读地址和控制信息有效。

ARREADY

S -> M

从设备准备好接收读地址。

3.2. 读数据应答通道

从设备通过此通道返回主设备所请求的数据。

信号

方向

描述

RID

S -> M

读数据ID,与ARID匹配。

RDATA

S -> M

读出的数据。

RRESP

S -> M

读响应(同BRESP)。

RLAST

S -> M

指示这是最后一个读数据。

RUSER

S -> M

用户自定义信号。

RVALID

S -> M

读数据有效。

RREADY

M -> S

主设备准备好接收读数据。

3.3 读通道时序详解

这是一次读4个数据的读通道时序。

ARVALID和ARREAY同时为高的时候,读地址ARADDR有效,此外对应的ARSIZE、ARLEN等信号均是此时有效,读4笔数据,对应的ARLEN应该是3,图中虽然没有显示,但是大家需要知道有这个信号的存在;

RVALID和RREADY同时为高时,读数据RDATA有效,此次突发传输4个数据,故最后一笔数对应的RLAST为高,标识为最后一笔数据完成,当RDATA为32bit位宽时,对应的ARSIZE应该是2,图中虽然没有显示,但是大家需要知道有这个信号的存在;

四  高级特性详解

1. 突发传输(Burst trans)
       

      这是AXI4-FULL的灵魂。AxLEN、AxSIZE、AxADDR和AxBURST共同定义了一次突发传输的所有行为。

  • INCR(递增):最常用的模式,地址根据AxSIZE在每个周期后递增。
  • FIXED(固定):所有数据传输到同一个地址,适用于FIFO或外设寄存器访问。
  • WRAP(回环):地址在达到边界后回环,用于缓存行填充。

2. 窄传输
       

       当数据总线位宽(如128bit)大于每次传输的字节数(AxSIZE,如4字节)时,就是窄传输。主设备使用 WSTRB 信号来指示哪些字节是有效的。这使得主设备可以高效地使用宽数据总线来更新小数据。

3. 非对齐传输
       

       一次传输的起始地址不是本次传输字节数的整数倍,即为非对齐传输。AXI4-FULL硬件自动处理此类传输,对软件透明,极大简化了编程模型。

4. 存储类型

AxCACHE信号极为重要,它定义了内存的属性,直接影响系统性能和一致性。

  • 可缓冲:事务可以通过中间缓存。
  • 可缓存:事务可以被分配到缓存。
  • 读分配:在缓存未命中时,是否应进行缓存行填充。
  • 写分配:在写未命中时,是否应进行缓存行填充。

总结

AXI4-FULL的精髓在于其“解耦”与“并行”的架构思想:

  • 通道解耦:独立的读写通道使得读和写可以同时进行,互不阻塞。
  • 地址/数据解耦:在一个通道内,地址和数据也可以并行传输。
  • 基于握手的流控:VALID/READY机制确保了数据传输的可靠性,不受频率差异影响。

        掌握AXI4-FULL,意味着你能够设计、连接和验证FPGA系统中的高性能数据通路。它是你驾驭基于Zynq/Gigerbyte的SoC、实现高速数据采集、图像处理等应用的基石。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA_小田老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值