outstanding指的是axi可以发出最多多少个操作而不需要等带response;回卷是burst的类型的一种,是指从某个地址开始访问,增加到一定的地址后继续回到其实的地址进行访问;非对齐是指不是按照数据的宽度进行地址增加访问,例如burst size是32bit,对齐地址就是0,4,8等,如果是256bit的话,0,32,64,地址递增步长是数据宽度/8,其他的地址都是非对齐访问,比如32bit的数据宽度,直接给2地址写0x55,实际波形观察到的是给0地址可0x550000;AXI中wrap边界的计算 - 知乎(wrap burst),实际就是按照整个burst的字节长度对齐,向低地址对齐的传输。网页中的INT就是向下取整;比如 burst len=4;busrt size=4 byte;0,4,8,c / 10 14 18 1c / 20 24 28 2c/30,它的起始地址一定是0/10/20/30;
AXI4 总线协议完整学习笔记(超清晰连贯版)
本篇为纯协议学习向系统性笔记,整合 AXI4 总线架构、握手机制、Burst 传输、WRAP 地址算法、乱序与交织、通道时序约束、各类控制信号与错误机制,内容层层递进、结构统一、可直接复制用于文档归档与博客发布。
一、AXI4 总线整体架构思想
AXI4 采用五通道独立分离架构,将地址、数据、响应完全拆分开,实现地址与数据解耦。该架构支持流水线并发传输、多笔挂起事务、乱序完成,是高速片上总线的核心设计。
五个独立通道分为三组:
写事务通路:AW 写地址通道 + W 写数据通道 + B 写响应通道
读事务通路:AR 读地址通道 + R 读数据通道
所有通道互相独立、时序解耦,各自拥有独立的 VALID/READY 握手逻辑,互不阻塞。
二、全局统一握手机制(所有通道通用)
AXI4 所有通道均使用VALID/READY 双向异步握手,是整个协议的底层基础。
核心规则:
VALID 与 READY 无固定先后顺序:可以先有效、先就绪、或同周期同时拉高。
VALID 拉高即锁定信号:一旦 VALID=1,当前通道的所有地址、数据、控制信号必须保持稳定,直到握手成功。
READY 不锁定信号:就绪信号提前拉高不会冻结总线数据,仅代表从端随时可以接收。
真正握手成功:同一周期 VALID=1 且 READY=1。
该机制让 AXI 天然支持流水线、异步、背压传输。
三、Burst 传输完整机制
AXI4 所有批量读写均基于 Burst 机制,包含传输长度、传输粒度、地址递增规则与边界限制。
1. 基础传输参数
AxSIZE:定义单 Beat 字节宽度,$$Byte = 2^{AxSIZE}$$,单 Beat 地址必须自身对齐。
AxLEN:定义总传输节拍数,总 Beat 数 = AxLEN + 1。
BURST 类型:INCR 递增传输、WRAP 回卷传输。
2. 4KB 页面边界强制约束
AXI4 协议硬性规定:INCR、WRAP 所有 Burst 均不允许跨 4KB 边界。
核心原理(极简版)
AXI4 强制单笔Burst不允许跨4KB页面,该约束和外设是否连续(如整片SRAM)无关,是SOC总线架构的通用硬性规范。
SOC 地址空间以4KB为最小分页单元,每个页面固定路由到唯一Slave设备。AXI 单笔事务仅在地址握手时执行一次路由解析,全程绑定当前页面对应的从设备,传输过程中不会动态刷新地址路由。一旦Burst跨4KB页面,页号变更会导致路由匹配失效,总线直接判定为非法事务,触发译码错误。
该设计的核心目的:统一适配SOC所有外设(寄存器、SRAM、DDR等),无需硬件动态切换路由,大幅简化总线互联逻辑、降低时序压力,兼顾通用性与稳定性。
答疑:协议理论最大32KB为何不浪费?
AXI4 的32KB理论上限并非冗余设计,由协议最大位宽 + 最大Beat数组合算出,适配超宽总线场景,和常规总线4KB实际上限不冲突,下面举两个精准实例彻底讲透:
实例1:协议满配场景(理论32KB来源,纯协议规格)
AXI4协议定义的双最大值:单Beat最大128Byte(总线位宽1024bit,协议顶格位宽)、最大Beat数256拍(AxLEN最大255)
精准计算:256Beat × 128Byte/Beat = 32768Byte =32KB
该场景是32KB理论上限的唯一来源,专为适配未来/特殊超宽总线设计,常规SOC工程几乎用不到,且受4KB页面规则限制,无法实际跑满。
实例2:工程常规满配场景(128bit总线,真实落地场景)
日常芯片主流总线位宽:128bit = 16Byte/Beat,同样用满最大256Beat
精准计算:256Beat × 16Byte/Beat = 4096Byte =4KB
这就是工程真实最大Burst:刚好填满一个4KB页面,不跨页、完全合法,一次性拉满页内传输性能,减少多次Burst握手开销。
实例3:低位宽总线场景(32bit总线)
32bit总线 = 4Byte/Beat,满配256Beat仅能传输:256×4=1024Byte=1KB
无法填满4KB页面,剩余地址空间需要拆分多笔Burst传输。
最终极简总结(彻底解惑)
1.32KB:协议纸面理论上限(1024bit超宽总线+满Beat),无落地场景,是协议预留的性能上限;
2.4KB:常规硬件实际上限(128bit主流总线+满Beat),合法满页传输,工程常态;
3. 协议做大32KB上限不浪费:统一兼容所有位宽总线,让不同硬件都能拉满单页传输效率,不用修改协议参数。
处理逻辑:Master 在发起事务前必须预判地址范围,若会跨 4KB 边界,主动拆分为多笔独立 Burst。
AXI4 单笔 Burst 最大传输字节数(完整分层约束)
1. 理论最大参数上限(仅信号位宽限制):AXI4 AxLEN为8位,最大支持256个Beat;AxSIZE最大支持单Beat 128Byte(对应1024bit超宽总线,工程几乎不用)。普通INCR事务理论最大值:256 × 128B = 32KB。
2. 协议硬性全局上限(实际工程生效最大值):受4KB页面边界规则约束,任何类型单笔Burst实际最大传输字节为 4KB,理论32KB数值永远无法跑满,Master必须跨页拆分事务。
3. WRAP回卷传输上限:协议强制WRAP最大仅支持16 Beat,最大传输字节为16 × 128B = 2KB,同时遵守4KB边界约束。
4. 独占访问事务上限:AXI4独占读写事务强制限制最大16 Beat,单笔最大传输2KB。
3. WRAP 回卷地址计算(标准算法)
WRAP 主要用于 Cacheline 读写,特点是在固定大小块内循环递增,超出块边界自动回卷,且起始地址必须对齐到整笔 Burst 总大小。
计算流程:
计算单Beat大小:$$S = 2^{AxSIZE}$$
计算总块大小:$$BLOCK = (AxLEN+1) \times S$$
块基地址对齐(通俗理解,抛弃死板公式):无需复杂位运算,用整数除法逻辑最好理解。先算出整笔WRAP传输的总块大小BLOCK,任意起始地址,直接地址 ÷ BLOCK 取整数商 × BLOCK,得到的就是当前WRAP块的起始基地址,本质是把任意地址向下对齐到最近的块边界。
边界回卷判断:逐拍累加地址,一旦地址超出「块基地址+BLOCK」的块末尾,就自动回到当前块的起始基地址,在固定块内循环,不会跨块、不越界。
本质:WRAP 始终在固定窗口内循环递增,不会跨块、不会跨4KB。
4. 传输结束标记 WLAST / RLAST
每一笔 Burst 事务有且仅有一个结束标记:
WLAST:写通道最后一拍数据标记,握手成功后本笔写事务数据传输彻底结束。
RLAST:读通道最后一拍数据标记,握手成功后本笔读事务彻底结束。
四、AXI4 乱序与交织机制(核心差异点)
AXI4 相比 AXI3 最大改动:删除 WID、保留 RID,直接导致读写通道的乱序、交织能力完全不对称。
两个核心概念:
乱序:不同 ID 的整笔事务完成顺序可以乱序
交织:不同 ID 的单个 Beat 可以互相穿插发送
1. 写通道规则(AW / W / B)
AXI4 写通道 终极最简规则(无歧义)事务1:AWID=1,事务2:AWID=21. AW通道(地址)可以乱序 ✅Master发顺序:AW1 → AW2 Slave接收顺序可以:AW2 → AW1 不同ID地址互不约束,可以插队。2. W通道(数据)绝对不能乱序、不能交织 ❌AXI4没有WID,数据不带标签,总线无法区分归属。 总线硬性要求:所有W数据全局串行合法:W1全部发完 → W2全部发完 非法:W1、W2、W1 穿插(绝对禁止)3. 为什么会有“又能乱序又不能乱序”?- 乱序指:地址、收尾顺序(不同ID可插队) - 不乱序指:数据节拍(所有写数据必须排队)4. 同ID铁律同一个AWID:AW、W、B完全严格保序,绝不乱序。
2. 读通道规则(AR / R)
保留 RID,支持 Beat 交织 + 整笔乱序
不同 RID 的 R Beat 可以任意穿插、交错返回
同一 RID 的 R 数据必须连续返回,禁止穿插,直到 RLAST
一句话终极吃透:AXI4写,地址可以插队,数据不许插队,同ID全程不插队;读通道带RID标签,地址数据均可插队交织。
五、写通道关键信号 WSTRB
WSTRB 为写字节选通信号,仅存在于 W 通道。
位宽 = 数据位宽 / 8,每比特对应一个字节通道
比特为1:对应字节有效写入;比特为0:对应字节屏蔽不写入
用于支持非对齐写、部分字节写
协议强制约束:禁止单 W Beat 的 WSTRB 全0(空节拍非法)
六、AW 地址通道与 W 数据通道时序约束
AXI4 地址与数据解耦,不要求 AW 一定先于 W,但存在唯一硬性约束:
允许先发部分 W 数据、后发 AW 地址
允许 AW 先握手、后发 W 数据
严禁:WLAST 握手完成后,AW 仍未握手
简言之:地址握手必须在本笔事务最后一拍数据握手之前完成。
七、写响应 B 通道机制
一笔 AW 写事务,有且仅有一个 B 响应
B 通道由 Slave 主动返回,汇报整笔 Burst 的最终状态
必须等待 WLAST 全部握手完成后,Slave 才能拉高 BVALID,禁止提前返回响应
八、事务响应状态定义
读写响应共用一套状态编码:
OKAY:普通读写访问正常完成
SLVERR:从设备内部错误
DECERR:总线互联译码错误,访问非法地址
EXOKAY:独占访问操作成功
读事务最终状态以RLAST 对应节拍的 RRESP为准。
九、AxLOCK 独占访问机制
AXI4彻底移除总线锁定功能,仅保留独占访问,用于多核原子操作。
AxLOCK=1:标记本次为独占访问事务
不锁定总线,不阻塞其他 Master 访问
Slave 仅对目标地址做独占监视
典型流程:独占读监测地址 → 软件修改数据 → 独占写确认提交
十、AxCACHE、AxQOS、AxREGION 功能说明
AxCACHE:提示当前事务的缓存与缓冲属性,用于控制缓存策略、读写穿透属性。
AxQOS:4bit 优先级标识,数值越大优先级越高,作为总线仲裁参考提示。
AxREGION:多逻辑区域区分,用于单物理从设备映射多段地址空间,常规设计固定为0。
十一、Outstanding 挂起事务机制
Outstanding 指:地址握手已完成,但数据传输或响应尚未结束的未完成事务。
AXI4 支持大量并发挂起事务,提升总线吞吐。最大并发数由 Master 发送能力、Slave FIFO 深度、总线互联仲裁能力共同限制。
十二、AXI4 核心协议总览总结
五通道完全独立,地址数据解耦,支持流水线并发
所有通道遵循 VALID/READY 异步握手,信号稳定机制严格
所有 Burst 禁止跨4KB页面,WRAP 严格块内回卷
写无交织、读可交织,同ID严格保序
WSTRB 支持部分写,禁止空节拍
B响应必须在WLAST之后,不允许提前返回
AXI4 仅保留独占访问,无总线锁