一、AXI总线概述:AXI4、AXI4-Lite、AXI4-Stream协议的区别与选型

大家好,我是你们的硬件加速课讲师。今天咱们聊聊AXI总线家族里的三兄弟——AXI4、AXI4-Lite和AXI4-Stream。

很多刚接触FPGA加速的同学,一看到这三个名字就头大。说实话,我当年也懵过。记得第一次做Zynq项目,老板让我把自定义IP挂到AXI总线上,我直接选了AXI4-Full,结果资源爆了,调试器都连不上。后来才知道,选错了协议类型。

所以这一节,咱们就把这三兄弟掰开揉碎,讲清楚它们各自的特点、适用场景,以及怎么选型。

1.1 为什么要有三种AXI?

ARM在设计AXI协议时,考虑到了不同场景的需求。你想想看,一个视频处理IP和一个小型GPIO控制器,对总线的要求能一样吗?

视频流需要高带宽、低延迟,而GPIO只需要偶尔读写几个寄存器。如果都用同一种总线,要么浪费资源,要么性能不够。

所以,AXI家族分成了三个成员:

  • AXI4(也叫AXI4-Full):高性能、高带宽,支持突发传输
  • AXI4-Lite:轻量级,不支持突发,适合寄存器访问
  • AXI4-Stream:流式接口,没有地址,只管数据流动

嗯,这里要注意:AXI4-Lite和AXI4-Stream并不是AXI4的简化版,它们是独立的标准。各有各的用武之地。

1.2 AXI4(Full):全能型选手

AXI4是完整版协议。它支持地址映射、突发传输、乱序传输、多笔交易并行处理。说白了,就是能高效地搬大块数据。

它的核心特点:

  • 突发传输:一次地址请求,可以连续传输1~256笔数据
  • 独立的读写通道:读地址、读数据、写地址、写数据、写响应,五个通道独立工作
  • 乱序传输:支持ID标签,不同ID的交易可以乱序完成
  • 窄传输:数据位宽可以小于总线位宽,自动对齐

我在项目中遇到过一个问题:用AXI4做DDR控制器接口,突发长度设成了256,结果DDR的时序约束没过。后来发现,DDR控制器内部有最大突发限制,256超出了它的能力。所以,选突发长度时,一定要看从设备的规格。

典型应用场景:DDR内存控制器、高速DMA引擎、视频帧缓冲、网络数据包处理

1.3 AXI4-Lite:轻量级选手

AXI4-Lite,名字里带个"Lite",就是轻量版。它不支持突发传输,每次只能读写一个数据。地址和数据位宽固定,通常是32位或64位。

它的特点:

  • 单笔传输:没有突发,一次地址对应一次数据
  • 接口简单:控制信号少,逻辑资源消耗低
  • 不支持乱序:交易按顺序完成
  • 响应简单:只有OKAY、EXOKAY、SLVERR、DECERR四种

我建议,凡是只做寄存器配置、状态查询的IP,都用AXI4-Lite。比如GPIO、I2C控制器、中断控制器、定时器。没必要用AXI4,浪费资源。

避坑指南:我曾经在一个项目中,把AXI4-Lite的地址位宽设成了12位,结果地址空间只有4KB。后来要加更多寄存器,地址不够用了。所以,设计时地址位宽留点余量,比如16位或20位。

1.4 AXI4-Stream:流式传输专家

AXI4-Stream是最特殊的。它没有地址通道,只有数据通道。数据像流水一样,从源头流到目的地。

它的核心特点:

  • 无地址:不需要地址,只管数据流动
  • 支持握手:TVALID/TREADY握手控制数据流
  • 支持字节使能:TKEEP信号控制哪些字节有效
  • 支持边界标记:TLAST信号标记数据包的结束
  • 支持用户自定义:TDATA、TUSER、TID等信号可以自定义含义

你想想看,视频数据流、音频数据流、网络数据包,这些场景下,数据是连续不断的,不需要地址。用AXI4-Stream最合适。

典型应用场景:视频处理管线、FFT加速器、以太网MAC、数字滤波器、数据采集系统

1.5 三兄弟对比表

特性 AXI4 (Full) AXI4-Lite AXI4-Stream
地址映射 支持 支持 不支持
突发传输 支持(1~256笔) 不支持 不支持(流式)
数据位宽 8~1024位 32/64位 8~1024位
乱序传输 支持 不支持 不支持
逻辑资源 高 低 中
典型延迟 低(突发时) 中 极低
适用场景 大块数据传输 寄存器访问 数据流处理

1.6 怎么选型?我的经验法则

选型其实不难,问自己三个问题:

  1. 需要地址吗? 不需要 → 选AXI4-Stream
  2. 需要地址,但只做寄存器读写? → 选AXI4-Lite
  3. 需要地址,且要搬大块数据? → 选AXI4

嗯,就这么简单。但实际项目中,经常是混合使用。比如一个视频处理IP,控制寄存器用AXI4-Lite,视频数据流用AXI4-Stream。这样既节省资源,又保证性能。

重要提醒:AXI4-Stream不能直接挂到AXI4总线上。如果需要把流数据写入DDR,中间要加一个AXI4-Stream转AXI4的桥接器。这个我们后面章节会详细讲。

1.7 知识体系结构图

下面这张图,帮你理清三兄弟的关系和选型逻辑:

AXI总线家族选型决策树 需要地址映射? 不需要地址 需要地址 AXI4-Stream 视频流、音频流、网络包 需要地址 AXI4-Lite 寄存器配置、状态查询 AXI4 (Full) DDR、DMA、帧缓冲 决策节点 流式协议 地址协议 轻量级 全功能

1.8 小结

这一节我们讲了AXI4、AXI4-Lite、AXI4-Stream三兄弟的区别。说白了,选型就是看你的IP需不需要地址、需不需要搬大块数据。

我个人习惯是:能省则省。能用AXI4-Lite绝不用AXI4,能用AXI4-Stream绝不用AXI4-Lite。资源是宝贵的,别浪费。

下一节,我们会深入AXI4的握手协议,讲TVALID和TREADY的四种握手场景。嗯,那是AXI协议的核心,也是很多同学容易踩坑的地方。

一句话总结:AXI4搬数据,AXI4-Lite配寄存器,AXI4-Stream传流。选对了,事半功倍;选错了,调试到哭。

可可精品资料库