AXI通道详解:五条通道的信号定义与时序

大家好,我是老李。做芯片设计这些年,AXI协议算是我打交道最多的接口之一了。今天咱们聊聊AXI的五个独立通道——说白了,就是数据在总线上怎么走的五条专用道。

你想想看,一个完整的读写事务,需要地址、数据、响应这些信息来回传递。AXI干脆把它们拆成五个独立的通道,各走各的,互不干扰。这样做的好处很明显——可以流水线操作,效率高得多。

一、读地址通道(AR通道)

读地址通道,我习惯叫它AR通道。主设备想从从设备读数据,得先告诉人家读哪里、读多少。

关键信号:

  • ARADDR:读地址,32位或64位,看你的地址总线宽度
  • ARLEN:突发长度,表示一次读操作传几个数据。注意,实际传的数据个数是ARLEN+1
  • ARSIZE:每次传输的字节数,3位编码。比如3'b011表示8字节
  • ARBURST:突发类型,固定地址、增量地址还是回绕地址
  • ARVALID 和 ARREADY:握手信号,一个发一个收

重点提醒:ARLEN的值是0到15,对应1到16次传输。我见过不少新手把ARLEN=0当成不传输,其实它表示传1个数据。

二、读数据通道(R通道)

从设备收到读地址后,就开始往回传数据了。R通道就是干这个的。

关键信号:

  • RDATA:读回来的数据,宽度和ARSIZE匹配
  • RRESP:读响应,2位。00表示OKAY,01表示EXOKAY,10表示SLVERR,11表示DECERR
  • RLAST:最后一个数据指示。这个信号很重要,主设备靠它知道这次突发读结束了
  • RVALID 和 RREADY:握手信号

这里有个细节——读数据通道的时序和读地址通道是独立的。主设备可以连续发多个读地址,从设备慢慢往回传数据。这叫乱序返回,AXI的一大特色。

我的经验:做DMA控制器的时候,我习惯把RLAST信号直接连到状态机的结束判断上。这样代码写起来清爽,也不容易漏掉最后一个数据。

三、写地址通道(AW通道)

写地址通道和读地址通道长得几乎一样,就是前缀从AR变成了AW。

关键信号:

  • AWADDR:写地址
  • AWLEN:写突发长度
  • AWSIZE:每次写的字节数
  • AWBURST:突发类型
  • AWVALID 和 AWREADY:握手信号

嗯,这里要注意一点:写地址通道和写数据通道是独立的,但两者之间有依赖关系。从设备必须同时收到地址和数据,才能开始写操作。所以设计时得考虑好同步问题。

四、写数据通道(W通道)

写数据通道负责把要写的数据从主设备传到从设备。它比读数据通道多了一个信号——WSTRB。

关键信号:

  • WDATA:写数据
  • WSTRB:字节选通信号。比如32位数据总线,WSTRB就是4位,每一位对应一个字节。想写哪个字节,就把对应的位置1
  • WLAST:最后一个数据指示
  • WVALID 和 WREADY:握手信号

避坑指南:我曾经在一个项目里,WSTRB没处理好,导致写数据时把相邻字节也覆盖了。查了两天才发现是WSTRB的位宽算错了。记住,WSTRB的位宽 = 数据总线宽度 / 8。

五、写响应通道(B通道)

写响应通道是五个通道里最简单的一个。从设备写完数据后,通过B通道告诉主设备:写完了,结果如何。

关键信号:

  • BRESP:写响应,2位。编码和RRESP一样
  • BVALID 和 BREADY:握手信号

注意,写响应是一次突发写操作完成后才返回的,不是每个数据都返回一个响应。也就是说,一次突发写16个数据,只返回一个写响应。

六、握手时序与依赖关系

五个通道之间不是完全独立的,它们有明确的依赖关系。我画了一张图,帮你理清思路:

主设备 从设备 AR通道(读地址) R通道(读数据) AW通道(写地址) W通道(写数据) B通道(写响应) 读操作:AR → R(先发地址,后收数据) 写操作:AW + W → B(地址和数据可同时发,最后收响应)

从图上可以清楚看到:

  • 读操作:先走AR通道发地址,再从R通道收数据
  • 写操作:AW通道发地址,W通道发数据,这两个可以同时进行。最后从B通道收写响应

七、握手协议详解

每个通道都用VALID和READY信号做握手。说白了就是:

  • 发送方把数据准备好,拉高VALID
  • 接收方准备好接收,拉高READY
  • 当VALID和READY同时为高时,数据就传过去了

这里有三种握手情况:

  1. VALID先来,READY后来:发送方等接收方
  2. READY先来,VALID后来:接收方等发送方
  3. 同时来:一拍搞定,效率最高

设计建议:我一般建议把READY信号设计成组合逻辑,这样接收方可以提前准备好。但要注意组合逻辑的时序,别搞出毛刺来。

八、信号汇总表

通道 方向 关键信号 说明
AR 主→从 ARADDR, ARLEN, ARSIZE, ARBURST 读地址与控制信息
R 从→主 RDATA, RRESP, RLAST 读数据与响应
AW 主→从 AWADDR, AWLEN, AWSIZE, AWBURST 写地址与控制信息
W 主→从 WDATA, WSTRB, WLAST 写数据与字节选通
B 从→主 BRESP 写响应

好了,五个通道的基本内容就这些。说白了,AXI的设计思路就是把读写操作拆成独立的流水线,每个通道各司其职。理解了这个,后面看复杂的总线互联就轻松多了。

可可精品资料库