1. AXI总线概述

大家好,我是老张,做了十几年芯片架构。今天咱们聊聊AXI总线——这个在SoC设计里绕不开的话题。

说实话,我刚入行那会儿,用的还是AHB总线。那时候觉得AHB已经够用了,直到第一次接手一个高清视频处理的SoC项目...嗯,带宽完全不够用。从那以后,我就开始深入研究AXI了。

1.1 AXI总线的发展历史

AXI全称是Advanced eXtensible Interface,是ARM公司推出的AMBA总线家族中的一员。

来,我给大家捋一捋时间线:

  • 1996年:AMBA 1.0发布,只有ASB和APB
  • 1999年:AMBA 2.0发布,AHB横空出世
  • 2003年:AMBA 3.0发布,AXI3诞生
  • 2010年:AMBA 4.0发布,AXI4成为主流
  • 2013年至今:AMBA 5.0,引入CHI等新协议

为什么会有AXI?说白了,就是AHB扛不住了。我记得有个项目,CPU主频跑到1GHz,AHB的流水线深度根本不够用,每次仲裁都要等好几个周期,性能损失太大了。

核心变化:AXI最大的革新是采用了分离的地址/数据通道和乱序传输机制。这就像把单车道变成了多车道高速公路。

1.2 AXI在SoC中的地位

现在的SoC里,AXI总线就是"大动脉"。我参与过的几个项目,从手机芯片到AI加速器,内部互联清一色用的AXI。

为什么会这样?你想想看:

  • 高性能场景:DDR控制器、GPU、视频编解码器,这些都需要高带宽
  • 多主设备:CPU、DSP、DMA同时访问内存,AXI的乱序能力让效率翻倍
  • 低延迟要求:实时控制路径需要快速响应,AXI的outstanding机制很关键

我个人习惯把SoC的互联结构画成三层:

  • 顶层:CPU集群、GPU等高性能主设备 → AXI全互联
  • 中间层:DMA、以太网等 → AXI或AXI-lite
  • 底层:UART、I2C、GPIO等慢速外设 → APB桥接

我的经验:别一股脑把所有设备都挂到AXI上。我曾经见过一个设计,把SPI也挂到AXI上,结果浪费了大量互联资源。慢速外设用APB桥接就够了,省钱又省功耗。

下面这张图是我常用的AXI在SoC中的位置示意:

AXI在SoC中的位置 CPU Cluster GPU DMA AXI Interconnect (NIC-400 / NIC-450) 高带宽、乱序传输、多通道 DDR Controller 高速外设 (PCIe/USB) AXI2APB Bridge APB外设 (UART/I2C/GPIO) 主设备 从设备 桥接

1.3 AXI与AHB/APB的对比

很多刚入行的朋友问我:AXI、AHB、APB到底有啥区别?我一般用一个比喻来解释:

  • APB = 小区里的步行道,简单便宜,走不快
  • AHB = 城市主干道,能跑起来,但容易堵车
  • AXI = 高速公路,多车道、立交桥、还能超车

咱们用表格来对比一下关键特性:

特性 AXI4 AHB5 APB4
数据通道 分离的读/写地址+数据通道 共享地址/数据总线 共享地址/数据总线
传输方式 支持乱序、交织 流水线,顺序传输 简单握手,无流水
突发长度 1~256 (INCR) 1~16 不支持突发
数据总线宽度 8~1024位 8~1024位 8~32位
Outstanding能力 支持(多笔未完成事务) 有限(通常1笔) 不支持
典型应用 DDR、GPU、高速互联 中等带宽外设 慢速控制寄存器
复杂度 高 中 低

避坑指南:我曾经在一个项目里,把APB的从设备地址映射搞错了,结果写寄存器时数据一直不对。查了两天才发现是APB的地址相位和数据相位有重叠,跟AXI的握手方式完全不同。记住:APB的PSEL和PENABLE时序跟AXI的VALID/READY完全是两码事!

说到AHB和AXI的区别,我重点提几个关键点:

AHB的痛点

  • 流水线深度有限:AHB虽然支持流水线,但地址相位和数据相位之间只有一拍间隔。遇到慢速从设备,整个总线都得等。
  • 不支持乱序:所有传输必须按顺序完成。如果一笔读请求去了慢速设备,后面的快速设备也得等着。
  • 仲裁开销大:每次总线切换都需要仲裁,主设备多了效率直线下降。

AXI的优势

  • 五通道分离:读地址、读数据、写地址、写数据、写响应,各走各的道。
  • 乱序传输:每个事务都有ID标签,从设备可以按任意顺序返回数据。
  • Outstanding能力:主设备可以连续发出多笔请求,不用等前面的完成。
  • 窄带传输:支持非对齐访问和字节选通,灵活性大大提升。

我的建议:如果你在做新的SoC设计,除非是极低功耗的IoT芯片,否则尽量用AXI。AHB现在基本只用在一些 legacy IP 或者对带宽要求不高的场景。我最近三年做的项目,互联全部是AXI,AHB只用来接调试接口。

最后说一句:APB虽然慢,但千万别小看它。我见过有人为了"统一总线"把GPIO也挂到AXI上,结果功耗翻了一倍。该用APB的地方就用APB,简单可靠才是王道。

好了,这一章就到这里。下一章咱们深入AXI的通道协议,看看VALID/READY握手到底怎么玩。


可可精品资料库