大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。
上课时我们讲了AXI响应信号 (Response Signaling):RRESP和 BRESP,本课时介绍一下AXI协议的Ordering Model :AXI协议如何使用事务ID标签来启用乱序事务处理和发出多个未完成事务的能力。。
这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。
系列文章
【总线】设计fpga系统时,为什么要使用总线?-CSDN博客
【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客
【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客
【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客
【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)-CSDN博客
【总线】AXI4第八课时:介绍AXI的 “原子访问“ :独占访问(Exclusive Access)和锁定访问(Locked Access)-CSDN博客
【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP-CSDN博客
本章节的内容文字看懂应该没问题,但是理解就难一些了, 一般情况下大家使用axi的时候都是使用的现成的程序或IP,只要约定好位宽,连接好信号,不需要大家考虑这些内容。有兴趣的可以了解一下。
本章描述 AXI 协议用事务 ID tags 来处理多地址和乱序传输。
1、五种事务 IDs
( 1) AWID 这个 ID tag 是写地址群组信号。
( 2) WID 这个是写 ID tag 在写事务中,与写数据在一起,主机传送一个WID 去匹配与地址相一致的 AWID。
( 3) BID 这个 ID tag 是写响应事务中。设备会传送 BID 去匹配与 AWID和 WID 相一致的事务。
( 4) ARID 这个 ID tag 是读地址群组信号。
( 5) RID 这个 ID tag 是在读事务中。 设备传送 RID 去匹配与 ARID 相一致的事务。
2、主机可以使用一个事务的 ARID 或者 AWID 段提供的附加信息排序主机的需要。事务序列规则如下:
( 1) 从不同主机传输的事务没有先后顺序限制。他们可以以任意顺序完成。
( 2) 从同一个主机传输的不同 ID 事务,也没有先后顺序限制。他们可以以任意顺序完成。
( 3) 相同数值的 AWID 写事务数据序列必须按照顺序依次写入主机发送的地址内。
( 4) 相同数值的 ARID 读事务数据序列必须遵循下面的顺序:
◇1 当从相同设备读相同的 ARID 时, 设备必须确保读数据按照相同的地址顺序接受。
◇2 当从不同的设备读相同的 ARID 时, 接口处必须确保读数据按照主机发送的相同的地址顺序。
( 5) 在相同的 AWID 和 ARID 的读事务和写事务之间没有先后顺序限制。 如果主机要求有顺序限制, 那么必须确保第一次事务完全完成后才开始执行第二个事务。
3、当一个主机接口与 interconnect 相连时, interconnect 会在信号 ARID、 AWID、WID 段添加一位,每一个主机端口都是独一无二的。这样做有两个影响:
( 1)主机不需要去知道其他主机的 ID 数值, 因为 interconnect 是 ID 值是唯一的,当将主机 number 添加到段中。
( 2)在设备接口处的 ID 段的宽度要比主机接口处的 ID 段宽。
对于读数据, interconnect 附加一位到 RID 段中,用来判断哪个主机端口读取数据。 Interconnect 会移除 RID 段中的这一位在将 RID 的值送往正确的主机端口之前。
AXI协议支持乱序事务完成和发出多个未完成事务的能力。这些特性使得实现高性能互连成为可能,最大化了数据吞吐量和系统效率。
ID信号通过使每个端口充当多个有序端口来支持乱序事务。所有具有给定ID的事务必须有序,但对于具有不同ID的事务的排序没有限制。五个事务ID是:
注意:从设备和主设备不必使用这些高级特性。简单的主设备和从设备可以一次处理一个事务,按照它们被发出的顺序。
能够发出多个未完成事务意味着主设备可以在不必等待早期事务完成的情况下发出事务地址。这个特性可以通过使事务并行处理来提高系统性能。
事务乱序完成的能力意味着到更快内存区域的事务可以在不必等待早期事务到较慢内存区域的情况下完成。这个特性也可以通过减少事务延迟的影响来提高系统性能。
注意:事务的重新排序是相对于其他事务的。没有设施可以重新排序突发数据传输内的事务。定义突发的地址和控制信号控制突发内传输的顺序。
AXI协议提供了一个ID字段,使主设备能够发出多个独立的事务,每个事务都必须按顺序返回。
主设备可以使用事务的ARID或AWID字段来提供有关主设备的排序要求的额外信息。管理事务排序的规则如下:
不同主设备的事务之间没有排序限制。它们可以以任何顺序完成。
来自同一主设备但具有不同ID值的事务之间没有排序限制。它们可以以任何顺序完成。
具有相同AWID值的一系列写事务的数据必须按照主设备发出地址的顺序完成。
具有相同ARID值的一系列读事务的数据必须按以下顺序返回:
具有相同AWID和ARID的读写事务之间没有排序限制。如果主设备需要排序限制,则必须确保第一个事务在发出第二个事务之前完全完成。
在主设备接口,具有相同ARID值的读事务返回的读数据必须与主设备发出地址的顺序相同。具有不同ARID值的读事务的数据可以以任何顺序返回,并且交错返回具有不同ARID字段的事务的读数据也是可以接受的。
从设备必须按接收地址的顺序返回具有相同ARID值的一系列读事务的读数据。在具有不同ARID值的一系列读事务中,从设备可以以不同于事务到达顺序的顺序返回读数据。
从设备必须确保任何返回的读数据的RID值与它正在响应的地址的ARID值匹配。
互连必须确保来自不同从设备的一系列具有相同ARID值的读事务按顺序完成。
读数据重新排序深度是挂起在从设备中的地址数量,这些地址可以重新排序。处理所有事务的顺序的从设备具有读数据重新排序深度为一。读数据重新排序深度是一个静态值,必须由从设备的设计师指定。
如果从设备不支持写数据交错(见第8-6页的写数据交错),主设备必须按照它发出事务地址的顺序发出写事务的数据。
大多数从设备设计不支持写数据交错,因此这些类型的从设备设计必须按接收地址的顺序接收写数据。如果互连将来自不同主设备的写事务组合到一个从设备,它必须确保按地址顺序组合写数据。
这些限制甚至适用于具有不同AWID值的写事务。
写数据交错使从设备接口能够接受具有不同AWID值的交错写数据。从设备声明一个写数据交错深度,表明接口是否可以接受来自具有不同AWID值的源的交错写数据。写数据交错深度是静态配置的。默认情况下,任何接口的写数据交错深度为一。
注意:不允许交错具有相同AWID的不同事务的写数据。
写数据交错深度是当前挂起在从设备接口中的不同地址的数量,这些地址可以提供写数据。例如,具有两个挂起地址的从设备,所有地址都具有不同的AWID值,可以接收数据的任何一个前两个挂起地址。
从设备接收每个事务的第一个数据项的顺序必须与它接收事务地址的顺序相同。
写数据交错可以防止互连组合发往同一从设备的多个数据流时发生阻塞。互连可能会组合来自慢源的一个写数据流和来自快源的另一个写数据流。通过交错两个写数据流,互连可以提高系统性能。
注意:如果两个具有不同AWID值的写事务访问相同或重叠的地址位置,则处理顺序未定义。更高级别的协议必须确保事务处理的正确顺序。
能够内部控制写数据生成的主设备接口会按照它生成地址的顺序生成所有写数据。然而,如果主设备接口可以从具有不同速度的多个源传递写数据,它可以交错这些源以最大限度地利用互连。
读写事务之间没有排序限制,它们可以以任何顺序完成。
如果主设备要求读写事务之间有特定的关系,则必须确保在发出后续事务之前完成早期事务。在读取的情况下,早期事务可以在将最后读取的数据返回给主设备时被认为是完成的。在写入的情况下,只有当主设备收到写响应时,事务才被认为是完成的,当所有写数据已发送时,认为写事务完成是不可接受的。
对于被外设占据的地址区域,这通常意味着在需要排序限制的读写事务之间切换时,需要等待早期事务完成。
对于内存区域,主设备可以实施地址检查以针对未完成的事务,以确定新事务是否可能是相同的或重叠的地址区域。如果事务不重叠,则可以在不必等待早期事务完成的情况下开始新事务。
当主设备接口连接到互连时,互连将附加额外的位到ARID、AWID和WID字段,这些位对该主设备端口是唯一的。这有两个效果:
对于读数据,互连使用RID字段的附加位来确定读数据是发往哪个主设备端口的。互连在将RID值传递到正确的主设备端口之前,会移除RID字段的这些附加位。
为了利用AXI乱序事务能力,请使用以下建议:
注意:对于只支持单一有序接口的主设备,将ID输出连接到一个常数值(如0)是可以接受的。
对于那些不使用排序信息并简单地按顺序处理所有事务的从设备,可以使用标准现成模块向从设备添加ID功能,从而使得设计没有ID信号的从设备基本功能成为可能。