AXI Crossbar 与 Interconnect:多主多从、解码、仲裁与数据宽度转换
更新时间:2026-09-19。单总线一对一的场景见 AXI4-Lite 从机,本篇讲「多个 CPU/DMA 主机如何共享 DDR/外设多个从机」。更高层次的包交换互连可对照 片上网络 NoC 路由。
本文要回答的问题
- Crossbar 和单总线、和 NoC 的区别是什么?
- 地址通道怎么选从机?数据通道怎么知道这笔属于谁?
- 写数据 W 通道不带地址,Interconnect 怎么把它路由到正确从机?
- 多个主机同时访问同一从机时怎么仲裁,怎么避免饿死和死锁?
一、Crossbar 的拓扑:全交叉开关
理想 Crossbar 为「每一对(主机,从机)」提供可并发的连接:主机0→从机A 与 主机1→从机B 能同一拍进行,只有访问同一从机时才需要仲裁。对比老的共享 AHB 总线,同一时刻只允许一对主从通信。
从机A(DDR) 从机B(SRAM) 从机C(外设)
主机0 ─────■────────────■────────────■
主机1 ─────■────────────■────────────■ ■=可独立接通的交叉点
主机2 ─────■────────────■────────────■主从数量大时全交叉面积按 M×N 增长,实际用多级总线、片上网络(NoC)或共享链路折中。
二、三大件:解码、仲裁、通道 MUX
- 地址解码器(decoder):在每个主机出口,按
AxADDR查地址映射(基址 + 大小),决定这笔事务去往哪个从机,生成 one-hot 片选;命中空白地址回 DECERR。 - 仲裁器(arbiter):在每个从机入口,当多个主机的地址都选中该从机时,按优先级/轮询选一个,输出 grant。参见 Round-Robin 仲裁器。
- 通道 MUX:按 grant 把获胜主机的五通道信号 MUX 到从机,把从机的响应 MUX 回对应主机。五个通道必须独立仲裁/独立 MUX,因为 AXI 的读通道、写通道、地址通道可以并行。
三、难点:W 通道没有地址,怎么路由
写地址在 AW 通道、写数据却在独立的 W 通道,W 包里只有 WDATA/WSTRB/WLAST,不带地址。Crossbar 必须用一个内部路由表/在途写表项把两者绑定:
- AW 在某个从机端口被接受时,记录「主机X 的这笔写 → 从机k」,分配内部 tag;
- 随后该主机的 W beat 全部按这条记录路由到从机 k,直到 WLAST;
- 表项在 WLAST(或 B 响应)后释放。
这要求 Interconnect 在每个从机端口保证 AW 与对应 W 的提交顺序一致,否则就是多主机写死锁——见 outstanding 与 ID 保序 第四节。AXI4 删除 WID 后,这个绑定关系完全由 Interconnect 内部维护(同主机的写数据按 AW 发出顺序匹配)。
四、ID 扩展:避免不同主机的 ID 撞车
主机0 和主机1 可能都用 ID=0。进入 Crossbar 后若不处理,从机看到两笔 ID=0 却来自不同主机,会错误地把它们当同序流。标准做法是 ID 宽度扩展:在每个主机端口给 ID 前拼接若干位「主机号」,形成全局唯一 ID;响应从从机回来时再剥掉高位、路由回原主机。因此互连内部 AxID/RID/BID 位宽 = 主机原始 ID 位宽 + ⌈log2(主机数)⌉。
五、位宽、时钟与协议转换
真实 SoC 里 Interconnect 通常还内嵌:
- 数据宽度转换(upsizer/downsizer):64 位 CPU 访问 32 位外设,或窄 DMA 写宽 DDR。宽→窄要把一笔拆成多拍(配合 数据位宽适配器 的拼包/拆包逻辑)。
- 时钟域转换(async bridge):经异步 FIFO 跨越 CPU 高频时钟与外设低频时钟,等价于 异步 FIFO 做 CDC。
- 协议转换:AXI→AXI-Lite(去 burst)、AXI→AHB/APB 桥,见 AHB/APB 与桥接。
- ** outstanding 与重排序**:每个从机端口维护在途表,处理不同 ID 乱序、同 ID 保序。
六、常见的坑
- W 路由表与 AW 失配:没按 AW 接受顺序绑定 W,多主机并发时数据写错从机。
- ID 不扩展:多主机同 ID 导致保序/重排序错乱。
- 只仲裁一个通道:把五通道共用一个 grant,读写无法并行、甚至死锁;五通道要独立。
- 仲裁固定优先级:高优先级主机持续占链路把低优先级主机饿死,要用轮询/加权 + 老化。
- 跨 4KB 解码:一笔事务跨边界命中两个从机,解码无定义;引擎侧须拆 burst(见 burst 类型与边界)。
- 表项泄漏:DECERR/复位路径没释放写路由/在途表项,长时间运行后互连挂死。
相关与延伸
单接口时序见 AXI 寄存器切片;选型对比见 AMBA 总线选型;规模化互连见 NoC 路由器;验证互连用 AMBA AXI UVM 环境。
总结
AXI Crossbar = 地址解码选从机 + 每通道独立仲裁选主机 + 五通道独立 MUX;W 通道无地址,必须靠内部在途写表按 AW 绑定路由,ID 要拼主机号扩展保证全局唯一,再内嵌位宽/时钟/协议转换,才能支撑多主多从并发且不死锁。