AXI3.0 & AXI4.0 五大通道接口详细介绍

AXI3.0 & AXI4.0 五大通道接口详细介绍

  • 概述
  • 五个通道的接口描述
    • 全局信号
    • 写地址通道信号
    • 写数据通道信号
    • 写响应通道信号
    • 读地址信号
    • 读数据通道信号
  • 接口信号的具体位宽和功能描述
    • ID 信号
    • 数据类信号(WDATA、RDATA、WSTRB、WLAST、RLAST)
    • 传输配置信号(AWLEN、ARLEN、AWSIZE、ARSIZE、AWBURST、ARBURST、AWLOCK、ARLOCK、AWCACHE、ARCACHE、AWPROT、ARPROT、AWQOS、ARQOS、AWREGION、ARREGION)
      • AWLEN/ARLEN:
      • AWSIZE/ARSIZE:
      • AWBURST/ARBURST:
      • AWLOCK/ARLOCK:
      • AWCACHE/ARCACHE:
      • AWPROT/ARPROT:
      • AWQoS/ARQoS:
      • AWREGION/ARREGION:

概述

AXI3 是第三代AMBA协议的一部分,AXI4 是第四代AMBA协议的一部分。
AXI架构分为5个独立的传输通道,读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。基于VALID/READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。数据总线可为(8/16/32/64/128/256/512/1024bit),最大为单次传输一个字节的数据。

五个通道的接口描述

全局信号

信号名 描述
ACLK 时钟源 全局时钟信号
ARESETn 复位源 全局复位信号,低有效

写地址通道信号

信号名 位宽 描述
AWID 主机 用户根据slv port 传输任务个数自己定义 写地址ID,用来标志一组写信号
AWADDR 主机 如果是访问从机寄存器,则根据寄存器地址大小而定义 写地址,给出一次写突发传输的写地址
AWLEN 主机 AXI3支持16次突发传输,位宽[3:0]。AXI4 INCR模式支持256次突发传输,位宽[7:0],其余模式位宽[3:0] 突发长度,给出突发传输的次数
AWSIZE 主机 [2:0] 突发大小,给出每次突发传输的字节数
AWBURST 主机 [1:0] 突发类型
AWLOCK 主机 AXI3中[1:0]。AXI4中1位 总线锁信号,可提供操作的原子性
AWCACHE 主机 [3:0] 内存类型,表明一次传输是怎样通过系统的
AWPROT 主机 [2:0] 保护类型,表明一次传输的特权级及安全等级
AWQOS 主机 [3:0] 质量服务QoS
AWREGION 主机 [3:0] 区域标志,能实现单一物理接口对应的多个逻辑接口
AWUSER 主机 具体位宽由用户自行定义 用户自定义信号
AWVALID 主机 1位 有效信号,表明此通道的地址控制信号有效
AWREADY 从机 1位 表明“从”可以接收地址和对应的控制信号

写数据通道信号

信号名 位宽 描述
WDATA 主机 具体大小和位宽根据AWSIZE大小定义 写数据
WSTRB 主机 写数据有效信号,具体大小为数据大小/8 写数据有效的字节线,用来表明哪8bits数据是有效的
WLAST 主机 1bit 表明此次传输是最后一个突发传输
AUSER 主机 用户自定义大小和位宽 用户自定义信号
WVALID 主机 1位 写有效,表明此次写有效
WREADY 从机 1位 表明从机可以接收写数据

写响应通道信号

信号名 位宽 描述
BID 从机 用户根据slv port 传输任务个数自己定义 写响应ID tag
BRESP 从机 [1:0] 写响应,表明写事务的状态:OKAY,EXOKAY,SLVERR,DECERR
BUSER 从机 用户自定义大小和位宽 用户自定义信号
BVALID 从机 1位 写响应有效
BREADY 主机 1位 表明主机能够接收写响应

读地址信号

信号名 位宽 描述
ARID 主机 用户根据slv port 传输任务个数自己定义 读地址ID,用来标志一组读信号
ARADDR 主机 如果是访问从机寄存器,则根据寄存器地址大小而定义 读地址,给出一次读突发传输的写地址
ARLEN 主机 AXI3支持16次突发传输,位宽[3:0]。AXI4 INCR模式支持256次突发传输,位宽[7:0],其余模式位宽[3:0] 突发长度,给出突发传输的次数
ARSIZE 主机 [2:0] 突发大小,给出每次突发传输的字节数
ARBURST 主机 [1:0] 突发类型
ARLOCK 主机 AXI3中[1:0]。AXI4中1位 总线锁信号,可提供操作的原子性
ARCACHE 主机 [3:0] 内存类型,表明一次传输是怎样通过系统的
ARPROT 主机 [2:0] 保护类型,表明一次传输的特权级及安全等级
ARQOS 主机 [3:0] 质量服务QoS
ARREGION 主机 [3:0] 区域标志,能实现单一物理接口对应的多个逻辑接口
ARUSER 主机 具体位宽由用户自行定义 用户自定义信号
ARVALID 主机 1位 有效信号,表明此通道的地址控制信号有效
ARREADY 从机 1位 表明“从”可以接收地址和对应的控制信号

读数据通道信号

信号名 位宽 描述
RID 从机 用户根据slv port 传输任务个数自己定义 读ID tag
RDATA 从机 具体大小和位宽根据ARSIZE大小定义 读数据
RRESP 从机 [1:0] 读响应,表明读传输的状态:OKAY,EXOKAY,SLVERR,DECERR
RLAST 从机 1 bit 表明读突发的最后一次传输
RUSER 从机 用户自定义大小和位宽 用户自定义信号
RVALID 从机 1位 表明都通道有效
RREADY 主机 1位 表明主机能够接收读数据和读响应信息

接口信号的具体位宽和功能描述

ID 信号

ID类信号(AWID、BID、ARID、RID)
ID信号指示的是传输任务序号,主机可以设置传输任务的序号指示执行的顺序。其中,来自同一个主机,同一个序号的指令只能顺序执行;来自同一主机不同序号的或来自不同主机的传输任务没有执行顺序的要求。因此传输任务ID的作用是指定某些特殊传输任务的顺序,当存在明确的先后顺序时,可以用相同的任务ID标识。
同时在这里还要特别指出,上篇文章当中有一些小错误,写通道的ID在AXI4协议中被取消了,这也就意味着写通道的写顺序必须与写地址通道保持一致。spec中讲取消这一信号的原因是AXI4取消了AXI3协议中对交织写数据的支持,AXI4只能进行连续写数据,因此WID信号变得冗余,为了节省端口数将WID取消掉了。
四个ID信号的位宽可以使用一致的宽度,建议作为模块参数进行自定义,笔者定义位宽为4。
地址类信号(AWADDR、ARADDR)
地址类信号的位宽代表了本个从机的地址映射区的大小。这里再废话几句,主机对从机的控制其实是通过访问从机的寄存器实现的。如下图所示,两个从机的寄存器(寄存器大小均为32位)被映射在一个主机的访问地址中,其中0x44A0_0000是第一个从机的偏置地址, 占用空间256 Bytes,(此处及下图中的错误已改正,在这里特别感谢读者Diewelle指出错误)0x44A0_1000是第二个从机的偏置地址,占用空间4KB。如果想要访问第一个从机的第二个寄存器,只需要访问0x44A0_0004地址的寄存器即可。
AXI3.0 & AXI4.0 五大通道接口详细介绍_第1张图片
AXI4协议规定主机上寄存器块的最小分块单元为4K Byte,每个从机的开始映射地址都是4KB的边界。这也影响了AXI4的一个读写规则,那就是一个burst传输不能跨越4KB的界限,否则就会引入将数据错误写入其他从机的风险。注意这个4KB的界限指的是MASTER的地址界限,例如一个burst中不能越过0xXXXX_X000的地址位。
地址位的位宽也可以自定义设置,建议定义为模块参数,笔者设置为了8位,也就是说设计的从机共有64个寄存器,每个寄存器含有一个32位数据。

数据类信号(WDATA、RDATA、WSTRB、WLAST、RLAST)

其中WDATA与RDATA为总线的数据位宽,也是每个地址下的寄存器大小。位宽可以根据总线需要设定,本设计中使用较为常用的32位。
WSTRB为写选通信号,指示当前传输的有效数据段。有效数据段单位是8bit,也就是32bit数据位宽的总线的WSTRB信号会有4位,WSTRB[3]指示WDATA[31:24]的有效性。
① WSTRB可以用在AXI4总线的“Narrow Transfer”特性中:当burst传输的数据位(burst size)小于总线位宽时,可以通过选通信号进行部分写入。如图所示,当burst size表示传输数据位为8且传输类型为递增(INCR)时,32位数据总线位宽的写入情况(此时的写入选通信号依次为:4’b0001,4’b0010,4’b0100,4’b1000,4’b0001):

AXI3.0 & AXI4.0 五大通道接口详细介绍_第2张图片
② WSTRB信号也可以用在AXI4总线的“Unaligned Transfer”中:当传输的目标地址与寄存器的边界未对齐时,可以使用非对齐传输,如下图所示,在寄存器位宽32位时,起始传输地址0x07时的传输情况:
AXI3.0 & AXI4.0 五大通道接口详细介绍_第3张图片
WLAST信号指示最后一个写数据,与最后一个写数据的WVALID信号同步拉高。只有当WLAST由高变为低,一个传输任务才完成。在此之前无法中断传输过程。RLAST信号也类似。

传输配置信号(AWLEN、ARLEN、AWSIZE、ARSIZE、AWBURST、ARBURST、AWLOCK、ARLOCK、AWCACHE、ARCACHE、AWPROT、ARPROT、AWQOS、ARQOS、AWREGION、ARREGION)

AWLEN/ARLEN:

传输任务中的传输数据包个数,在INCR传输类型下可以传输1至256个数据包,在其他传输类型下只能传输1-16个数据包,特别地,WRAP传输类型下只能传输2,4,8或16个固定的数据包个数。因此AWLEN与ARLEN的位宽为8位,其中LEN=0代表传输一个数据包。

AWSIZE/ARSIZE:

传输数据包大小,位宽为3位,具体值的意义如下表所示(Bytes=2^Burst_size):

Axsize 传输字节数
3‘b000 1
3’b001 2
3’b010 4
3’b011 8
3’b100 16
3’b101 32
3’b110 64
3’b111 128

AWBURST/ARBURST:

传输类型,位宽为2位,具体含义如下:

AxBURST 传输字节数
2’b00 固定 (FIXED)
2’b01 递增(INCR)
2’b10 回环(WRAP)
2’b11 未定义

固定传输类型是对一个地址重复写入数据,递增传输类型是地址自动增长,不断写入数据流。需要特别说明的是回环传输类型,其实故名思义,就是地址递增到一定边界后从初始位置继续递增,如下图所示,传输长度为8,传输数据包大小为4 byte,起始传输地址为0x04:
AXI3.0 & AXI4.0 五大通道接口详细介绍_第4张图片
也许这样简单地说不能解决大家的一些疑问,因此将手册中的计算公式也一并给出:

起始地址(Start_Addr): AxADDR
数据包字节数(Number_Bytes):2^(AxSIZE)
传输长度(Burst_Len):AxLEN + 1
对齐地址(Aligned_Addr):(INT(Start_Addr / Number_Bytes))*Number_Bytes
回环界(Wrap_Boundary):(INT(Start_Addr / (Number_Bytes * Burst_Len))) * (Number_Bytes * Burst_Len)
当地址递增至Wrap_Boundary + (Number_Bytes * Burst_Len)时:
当前传输地址:Address = Wrap_boundary
下一个传输地址:Address = Start_Addr + ((N-1)*Number_Bytes) - (Number_Bytes * Burst_Len)
其中N表示数据包在整个Burst传输长度中的序号

AWLOCK/ARLOCK:

这个信号在AXI3协议中用于锁定从机,占用总线,但在AXI4中取消了相关支持,仅 留下一位信号用作指示传输为正常传输(1’b0)还是独有传输(1’b1)。

AWCACHE/ARCACHE:

该信号指明了总线中的存储类型,信号位宽为4位。

ARCACHE AWCACHE Memory TYPE
0000 0000 Device Non-bufferable
0001 0001 Device Bufferable
0010 0010 Normal Non-cacheable Non-bufferable
0011 0011 Normal Non-cacheable Bufferable
1010 0110 Write-through No-allocate
1110(0110) 0110 Write-through Read-allocate
1010 1110(1010) Write-through Write-allocate
1110 1110 Write-through Read and Write-allocate
1011 0111 Write-back No-allocate
1111(0111) 0111 Write-back Read-allocate
1011 1111(1011) Write-back Write-allocate
1111 1111 Write-back Read and Write-allocate

AWPROT/ARPROT:

指明访问是否被允许的信号,位宽为3位,具体可见下表:

AxPROT 功能
AxPROT[0] 0 非优先访问
AxPROT[0] 1 优先访问
AxPROT[1] 0 安全访问
AxPROT[1] 1 非安全访问
AxPROT[2] 0 数据访问
AxPROT[2] 1 指令访问

AWQoS/ARQoS:

Quality of Service, 位宽为4位,手册中并没有固定该信号的确切用途,但是建议将该信号用于优先级声明信号,值越高代表优先级越高。

AWREGION/ARREGION:

区域标记,位宽为4位。4位的区域标记信号可以标记16个区域。当从机有很多分离的地址空间时,使用这个信号可以仅仅使用一个物理总线就能实现多个逻辑总线的功能。经典的应用是一个外设控制寄存器与数据寄存器分离的时候,使用该信号可以在不对地址解码的情况下访问到两块地址空间。
例如,当一个外设控制寄存器的地址空间为0x0000 - 0x00FF,数据寄存器的地址空间为0x1000 - 0x1FFF,就可以将地址位设置为12位(0x000-0xFFF),控制寄存器的区域标记为4’b0000,数据寄存器的区域标记为4’b0001,实际寻址的地址为区域标记+地址位,其中区域标记位作为高位加在地址位前就可以了。
需要注意的是,每4KB的地址空间上仅能有一种REGION标记,也就是区域分割的最小单元为4KB。

你可能感兴趣的:(数字ic,芯片设计,AMBA,fpga开发,硬件工程,嵌入式)