目录
AXI简介
AMBA总线的演进图
AXI overriew
AXI读写通道
AXI读取传输 事务
AXI 写入传输事务
AXI 概念解读
burst传输
FIXED模式下传输首地址后就可以不停传输数据吗?
突发传输不能跨4KB边界?
非对齐传输
复位期间对接口有如下要求:
AXI 协议Q & A
AXI3与AXI4之间的区别是什么?
AXI VIP的使用
AXI VIP 介绍
AXI VIP 设计的思想
AXI VIP加入到TB
AXI简介
AMBA总线的演进图
在介绍AXI协议前,先看下AMBA的演进情况。
随着移动和智能手机时代发生了进一步的演进,SOC集成了2/4/8核处理器和共享cache,并且需要跨内存子系统的硬件管理一致性。这导致了在AMBA修订版4中引入了ACE(AXI一致性协议扩展)。
在当前HPC和数据中心市场的异构计算时代,单个芯片上集成越来越多的处理器核心以及GPU、DSP、FPGA、内存控制器和IO子系统。2013年,AMBA5引入了CHI协议,作为AXI/ACE协议的重新设计。基于信号的AXI/ACE协议被新的基于包的CHI协议所取代。
1、APB:高级外围设备总线(APB)用于连接低带宽的外围设备。它是一个简单的非流水线协议。读写操作共享同一组信号,不支持burst数据传输。最新的规范(APB2.0)可以在ARM网站上找到,是最容易学习的AMBA 协议。
2、AHB:高级高性能总线(AHB)用于连接共享总线上需要更高带宽的组件。这些slave组件可以是内部内存或外部内存接口、DMA、DSP等。AHB可以通过burst数据传输来获得更高的带宽。
3、AHB-lite协议是AHB的一个简化版本。简化后只支持一个主设计,这消除了对任何仲裁、重试、分割事务等的需求。
4、高级可扩展接口(AXI)适合于高带宽和低延迟互连。这是一个点对点的互连,并克服了AHB、APB等共享总线协议在可连接的代理数量方面的限制性。该协议支持多个outstanding的数据传输、burst数据传输、单独的读写通道和支持不同的总线宽度。
5、AXI-lite协议是AXI的简化版本,简化后不支持突发数据传输。
6、AXI-stream协议是AXI协议的另一种风格,它只支持数据流从master 流到slave。与完整的AXI或AXI-lite不同,AXI-stream 协议中没有单独的读/写通道,因为其目的是只在一个方向上流。
7、ACE-AXI协议是AXI4协议的扩展,应用于在一个芯片上集成多个CPU核心与一致性cache的场景。ACE协议扩展了AXI读写数据通道,同时引入了单独的snoop 地址、snoop 数据和snoop 响应通道。这些额外的通道提供了实现基于snoop 的一致性协议的机制。
8、ACE-Lite—对于没有自己cache的agents ,但仍属于可共享一致性域的一部分,如DMA或网络接口agent,使用ACE-lite协议实现这种“单向”一致性。
9、CHI—ACE协议作为AXI的扩展而开发,以支持一致性互连。ACE协议使用了master/slave之间的信号电平通信,因此互连需要大量的线和增加的通道来进行snoops 和响应。这对于具有2/4核移动SOC 的小一致性clusters非常有效。随着SOC上集成越来越多的一致性clusters ——AMBA5修订版引入了CHI协议。CHI协议使用基于分层分组的通信协议,具有协议、链路层和物理层实现,还支持基于QoS的流控制和重试机制。
AXI overriew
AXI 表示 Advanced eXtensible Interface(高级可扩展接口),它是由 Arm 定义的接口协议,包含在“高级微控制器总线架构 AMBA”标准中。
AXI4 接口 (AMBA 4.0) 分 3 种类型:
- AXI4 (AXI4-Full):用于满足高性能存储器映射需求
- AXI4-Lite:用于简单的低吞吐量存储器映射通信(例如,往来于状态寄存器的通信)
- AXI4-Stream:用于高速数据流传输
注 1 :本文不涵盖 AXI4-Stream 相关内容。此处“AXI”表示 AXI3、AXI4 和 AXI4-Lite。
注 2:AXI3 接口与 Full AXI 接口接近。
AXI读写通道
AXI 协议定义了 5 条通道:
- 其中 2 条用于读取传输事务
- 读地址
- 读数据
- 另 3 条用于写入传输事务
- 写地址
- 写数据
- 写响应
通道 (channel) 是与 VALID 和 READY 信号关联的 AXI 信号的独立集合。
注:AXI4/AXI3/AXI4-Lite 接口只能用于读取(仅包含 2 条读取通道)或者只能用于写入(仅包含 3 条写入通道)。
任一通道上发射的每一条数据都称为一次传输 (transfer)。当 VALID 和 READY 信号均处于高位并且时钟存在上升沿时,就会发生传输。例如,在下图中,在 T3 处正在发生传输:
AXI读取传输 事务
AXI 读传输事务需要在 2 条读取通道上发生多次传输。
- 首先,地址读通道 (Address Read Channel) 从主接口 (Master) 发送到从接口 (Slave),以便设置地址和部分控制信号。
- 然后,此地址的数据通过读数据通道 (Read data channel) 从从接口发射到主接口。
请注意,根据下图所示,每个地址中可发生多次数据传输。此类型的传输事务称为突发 (burst)。
AXI 写入传输事务
AXI 写入传输事务需要在 3 条读取通道上存在多次传输。
- 首先,写地址通道 (Address Write Channel) 从主接口发送到从接口,以便设置地址和部分控制信号。
- 然后,此地址的数据通过写数据通道 (Write data channel) 从主接口发射到从接口。
- 最后,写入响应通过写响应通道 (Write Response Channel) 从从接口发送到主接口,以指示传输是否成功。
写响应通道 (Write Response Channel) 上可能的响应值包括:
- OKAY (0b00):正常访问成功。表示已成功完成正常访问
- EXOKAY (0b01):专属访问成功。
- SLVERR (0b10):从接口错误。已成功访问从接口,但从接口希望向发端主接口返回错误条件(例如,数据读取无效)。
- DECERR (0b11):解码器错误。通常由互连组件生成,用于指示传输事务地址处没有任何从接口
注:读取传输事务同样包含响应值,但此响应通过读响应通道 (Read Response Channel) 来发射
AXI 概念解读
burst传输
突发传输。连续传输
FIXED模式下传输首地址后就可以不停传输数据吗?
是的,在配合每次传输的byte数,就可以确定下一个传输的地址。
突发传输不能跨4KB边界?
因为AXI4协议规定主机上寄存器块的最小分块单元为4K Byte,每个从机的开始映射地址都是4KB的边界。这也影响了AXI4的一个读写规则,那就是一个burst传输不能跨越4KB的界限,否则就会引入将数据错误写入其他从机的风险。注意这个4KB的界限指的是MASTER的地址界限,例如一个burst中不能越过0xXXXX_X000的地址位。FFF=4095,
就是1024个寄存器,*4byte =4KB。
非对齐传输
非对其传输指当传输的目标地址(byte)与寄存器的边界(word对齐)未对齐时,可以使用非对齐传输,例如一个传输在0x3地址开始,而不是0x0或者0x4,非对其传输只会影响一个burst传输中的第一笔数据,可采用WSTRB信号来表示第一个data中的哪几个byte是有效的,其余的数据还是正常的burst传输。
复位期间对接口有如下要求:
valid(表示地址/数据/应答输出有效信号)驱动到低电平
①主机ARVALID,AWVALID,WVALID为低电平;
② 从机接口必须驱动RVALID,BVALID为低电平;
③ 所有其他信号可以被驱动到任意值。
在复位后,主机可以在时钟上升沿驱动ARVALID,AWVALID,WVALID为高电平
• 读取地址,其信号名称以AR 开头。
• 读取信号名称以 R 开头的数据。
• 写入地址,信号名称以AW 开头。
• 写入信号名称以 W 开头的数据。
• 写入响应,其信号名称以 B 开头。
AXI 协议Q & A
AXI3与AXI4之间的区别是什么?
1、AXI3只支持多达16拍的burst 。而AXI4支持高达256拍的burst 。
2、AXI3支持write interleave。AXI4不支持write interleave(去掉了wid)
3、AXI3支持locked 传输,AXI4不支持locked 传输
4、AXI4支持QoS,AXI3不支持QoS。
为什么没有单独的read 响应通道?
VALID/READY握手机制只允许一个方向的数据流,所以对于读事务,数据(data和resp)从slave流向master,而对于写事务,数据从master流向slave,所以就需要单独的响应通道
为什么在burst 写中,不是每拍都有写响应。但是在burst 读中,每拍都有一个单独的读响应?
所有的AXI信道只在1个方向传递信息 ,所以才需要一个单独的写响应通道。在大多数应用中不管slave能不能接受完整的数据这个burst传输都会执行完成,slave无需在每一拍都返回ERROR响应
如何终止burst 传输?
不能。AXI不能够提前终止burst传输。对于写事务,master可以完成burst 传输,通过WSTRB信号丢弃掉无效数据即可,对于读事务同样也可以将读回的数据丢弃。
master 可以在burst 传输中间给WLAST吗?
不行。只有在burst 传输的最后一拍才能拉高WLAST,在burst传输的中间拉高WLAST是违反协议的行为。此外,许多slave设计不会使用WLAST信号,而是自己计数,所以master拉高WLAST也不会提前终止burst传输。
Slave能在burst传输完成之前置起rlast么?
和上题一样,slave在burst传输的未完成就拉起RLAST是违反协议的行为。master同样也有可能不依赖RLAST
既然WLAST和RLAST可能不被使用,那为什么需要支持这两个信号?
为了支持所有的master和slave,无论其是否依赖这两个信号传输数据。
Exclusive 读写事务是什么?在哪里使用?
如果一个内存区域被多个master共享,某个master需要希望确保在没有其他master更改共享内存的情况下完成读然后写的序列,就可以使用Exclusive 传输
读取事务是否有可能在一个周期内完成?
需要至少1个时钟周期传递地址(从master到slave),然后至少1个时钟周期传递数据(从slave到master)。
axi slave是如何支持Exclusive 访问的?
假设 AXI Master1(M1)已经启动了对地址位置12h100到12h10F的exclusive 读写。那么相应的salve将开始监视由M1给出的这些地址。如果此时该地址被其他master执行写操作,此时会返回Exclusive error
发送给slave的读写地址和读写数据是如何关联的?
AR总线和AW总线是独立的,不管读写请求的地址是否顺序发出的,响应的数据都可能是无序的,他们之间是通过awid和arid对应配对的(axi3)axi4去掉了wid,所以写通道的写顺序必须与写地址通道保持一致
AXI VIP的使用
AXI VIP 介绍
AXI Verification IP (AXI VIP) 对 AXI4 接口进行仿真。
AXI Verification IP (AXI VIP) 是支持用户对 AXI4 和 AXI4-Lite 进行仿真的 IP。它还可作为 AXI Protocol Checker 来使用。
此 IP 只是仿真 IP,将不进行综合,它将在直通 (Pass-through) 配置中被连线所替代。
AXI VIP IP 核用途如下:
- 生成 AXI 主 (Master) 接口命令和写入有效载荷
- 生成 AXI 从 (Slave) 接口读取有效载荷和写入响应
- 检查 AXI 传输事务是否符合协议标准
它支持 5 种不同配置:
- AXI Master VIP
- AXI Pass-through VIP(无存储器模型) --- 了解下这里的无存储器模型?!
- AXI Pass-through VIP(有存储器模型)
- AXI Slave VIP(无存储器模型)
- AXI Slave VIP(有存储器模型)
AXI VIP 设计的思想
AXI VIP 的设计示例包含 3 个 AXI VIP:其中一个配置为 Master、一个配置为 Pass-through,另一个配置为 Slave。
工程中包含了多个测试激励文件 (Test Bench) 源文件,以匹配不同 AXI VIP 组合。
注:所有测试激励文件都是以 SystemVerilog 语言编写的。要使用 AXI VIP 的全部功能,应将此 IP 例化包含在 SystemVerilog 测试激励文件中。文章来源地址https://www.toymoban.com/news/detail-439867.html
AXI VIP加入到TB
Snop AXI VIP overriew (TBC)
AXI VIP 的设计示例包含 3 个 AXI VIP:其中一个配置为 Master、一个配置为 Pass-through,另一个配置为 Slave。
文章来源:https://www.toymoban.com/news/detail-439867.html
注:所有测试激励文件都是以 SystemVerilog 语言编写的。要使用 AXI VIP 的全部功能,应将此 IP 例化包含在 SystemVerilog 测试激励文件中。
到了这里,关于AXI 系列 之 AXI概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!