一、AXI总线概述

1.1 AXI总线的发展历史

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

说到AMBA,我记得2003年我刚入行那会儿,主流还是AHB和APB。那时候做SoC设计,AHB用来接高速模块,APB接低速外设,倒也够用。但随着芯片越做越复杂,多核处理器、高性能DMA、高速外设越来越多,AHB的局限性就暴露出来了——它只有一个master,同一时间只能有一笔交易在进行。

ARM公司显然也看到了这个问题。于是在2003年,AMBA 3.0规范中首次引入了AXI总线。说实话,当时我觉得这玩意儿太复杂了,通道就有5个,还支持乱序传输,跟AHB完全不是一个量级的东西。

到了2010年,ARM发布了AMBA 4.0规范,AXI4正式登场。嗯,这里有个小插曲——AXI4和AXI3之间其实不完全兼容,我在一个项目中就吃过这个亏,后面会细说。

再后来,2013年的AMBA 5.0又推出了ACE和CHI协议,但那是针对多核一致性设计的,咱们这门课先不展开。

1.2 AXI协议在SoC设计中的核心地位

你想想看,现在的SoC芯片里,CPU、GPU、DSP、NPU、DDR控制器、PCIe控制器……这么多IP核要互相通信,总得有个统一的接口标准吧?AXI就是这个标准。

我个人习惯把AXI比作芯片内部的「高速公路」。AHB是乡间小路,APB是胡同小巷。而AXI呢?双向八车道,支持超车(乱序)、支持多辆车同时上路(多笔交易并行)。

为什么AXI这么重要?说白了就三点:

  • 高性能:独立的地址/数据通道,读写并行,支持burst传输
  • 标准化:ARM生态下的IP核几乎都支持AXI接口,你不用自己造轮子
  • 可扩展:从低端MCU到高端服务器芯片,AXI都能用

核心观点:在当今的SoC设计中,AXI总线已经成为了事实上的片上互联标准。不管你用不用ARM的IP,只要做复杂SoC,就绕不开AXI。

我在一个AI芯片项目中,需要把NPU、DDR控制器、PCIe、视频编解码器全部挂到AXI总线上。如果当时没有AXI这种成熟的总线协议,光是自己定义接口规范就得花好几个月。

1.3 AXI3与AXI4的主要区别

好,接下来咱们聊聊AXI3和AXI4的区别。这个问题面试经常被问到,也是实际项目中容易踩坑的地方。

特性 AXI3 AXI4
突发长度 1~16 1~256(INCR模式)
写响应通道 必须使用 必须使用
窄传输 支持 支持
非对齐传输 支持 支持
写数据通道 WID信号存在 WID信号移除
原子操作 不支持 支持(AXI4-Stream除外)
QoS支持 不支持 支持(AXI4)

最大的区别,我个人觉得是两点:

1. 突发长度从16扩展到256

AXI3最多只能发16笔数据的burst,而AXI4可以发到256笔。这个改进对DDR控制器这类需要大块数据传输的场景特别有用。我曾经做过一个视频处理芯片,需要从DDR读取一帧图像的数据。用AXI3的话,一帧数据要拆成几十个burst,效率很低。换成AXI4后,一个burst就能搞定,带宽利用率提升了30%以上。

2. WID信号被移除

这个改动很多人不理解。WID是写事务ID,在AXI3中用来标识不同的写事务。但实际使用中发现,WID信号增加了互联逻辑的复杂度,而且容易出错。AXI4干脆把它去掉了,写事务的ID直接通过AWID传递。嗯,这里要注意:如果你把AXI3的IP直接接到AXI4的互联上,WID的处理就是个坑。

避坑指南:我曾经在一个项目中,把AXI3的DMA控制器接到了AXI4的总线矩阵上。结果发现写数据总是乱序,查了两天才发现是WID信号没处理好。解决方案是在DMA的接口上加一个AXI3到AXI4的桥接逻辑,把WID映射到AWID上。

3. 其他差异

  • QoS支持:AXI4增加了QoS(服务质量)信号,可以为不同的事务设置优先级。这个在多媒体SoC中特别有用,比如视频数据可以设置高优先级,保证不卡顿。
  • 原子操作:AXI4支持原子操作(Atomic Access),包括原子交换、原子比较等。这对多核处理器之间的同步很有帮助。

知识体系结构图

下面这张图是我自己画的,把AXI总线的发展脉络和核心知识点串了起来:

AXI总线知识体系结构 AMBA 2.0 (AHB/APB) AMBA 3.0 (AXI3) AMBA 4.0 (AXI4) AXI3 特性 • 突发长度: 1~16 • 支持WID信号 • 5个独立通道 • 支持乱序传输 AXI4 新特性 • 突发长度: 1~256 • 移除WID信号 • 支持QoS • 支持原子操作 • 支持AXI4-Stream SoC核心地位 • 标准化接口 • 高性能互联 • 生态兼容 典型应用场景 CPU ↔ DDR控制器 GPU ↔ 显存 NPU ↔ 系统内存 PCIe ↔ 外设 视频编解码 ↔ DDR DMA ↔ 各模块 总结 AXI3 → AXI4:从「能用」到「好用」的进化,核心是性能提升和设计简化

小技巧:如果你刚开始接触AXI,我建议先从AXI4学起。毕竟现在新设计的IP基本都是AXI4接口,AXI3已经逐渐被淘汰了。但如果你要维护老项目,AXI3的知识还是得懂一些。

好了,这一章的内容就到这里。AXI总线的发展历史、核心地位、以及AXI3和AXI4的主要区别,咱们都聊清楚了。下一章我会深入讲解AXI的5个独立通道,以及它们之间是如何协同工作的。


可可精品资料库