免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。
读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。
本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。
若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。
前言
本期介绍一下FIFO Generator 中的AXI FIFO
一、AXI FIFO Feature Overview
1.Easy Integration of Independent FIFOs for Read and Write Channels
-
AXI协议的通道:
-
写通道(Write Channels):
- 包括:
- 写地址通道(Write Address Channel):用于传输写操作的目标地址。
- 写数据通道(Write Data Channel):用于传输要写入的数据。
- 写响应通道(Write Response Channel):用于接收写操作的响应,确认写入是否成功。
- 包括:
-
读通道(Read Channels):
- 包括:
- 读地址通道(Read Address Channel):用于传输读取操作的目标地址。
- 读数据通道(Read Data Channel):用于接收从目标地址读取的数据。
- 包括:
-
-
FIFO生成器核心(FIFO Generator Core):
- 该核心提供了生成写通道、读通道或两者的能力。
- 如果只生成写通道,会集成三个FIFO(先进先出缓冲区)。
- 如果只生成读通道,会集成两个FIFO。
- 如果同时选择生成写通道和读通道,总共会集成五个独立的FIFO。
-
独立FIFO实现:
- FIFO生成器核心可以为每个通道实现独立的FIFO。这意味着每个读通道和写通道都有其独立的缓冲区,从而提高了数据传输的效率。
-
FIFO类型配置:
- 对于每个通道,FIFO生成器核心可以独立配置生成不同类型的FIFO:
- 块RAM(Block RAM):适合需要较大存储空间的场景,通常用于存储大量数据。
- 分布式内存(Distributed Memory):适合存储需求较小的场景,具有较低的延迟。
- 内置FIFO(Built-in FIFO):可能是FPGA内部预先定义的FIFO结构,方便快速实现。
- 对于每个通道,FIFO生成器核心可以独立配置生成不同类型的FIFO:
-
FIFO深度配置:
- 每个FIFO的深度(即能够存储的数据条目数量)也可以独立配置。这使得设计者能够根据具体应用的需求,优化FIFO的大小,以满足不同的读写速率和数据流量。
2.Clock and Reset Implementation and Operation
-
共享信号:
- 所有实例化的FIFO共享时钟信号和异步低有效重置信号。这意味着所有FIFO在同一时钟下工作,并且重置操作是统一进行的。
-
时钟配置选项:
- FIFO生成器核心支持独立时钟和共用时钟操作:
- 独立时钟配置:允许在写端口和读端口使用不同的时钟域。这对于需要在不同时钟频率或相位下进行数据传输的应用非常有用。FIFO生成器核心负责处理时钟域之间的同步,设计者无需担心时钟的相位和频率匹配问题。
- 共用时钟配置:如果数据缓冲只需要在单一时钟域内进行,可以选择共用时钟选项,从而生成针对单一时钟优化的FIFO核心。这种情况下,所有FIFO将在同一时钟下工作,有助于简化设计。
- FIFO生成器核心支持独立时钟和共用时钟操作:
3.Automatic FIFO Width Calculation
-
对称宽度支持:
- AXI FIFO支持读端口和写端口的对称宽度。这意味着在设计时,FIFO的读写数据宽度可以保持一致,这有助于简化数据流的管理。
-
FIFO宽度的确定:
- FIFO的宽度由所选择的接口类型(AXI4-Stream或AXI内存映射)以及用户在该接口内选择的信号和信号宽度决定。也就是说,FIFO的宽度不是固定的,而是根据具体应用和配置灵活调整的。
-
自动计算机制:
- AXI FIFO的宽度会通过各个信号宽度的聚合自动计算得出。这意味着用户只需配置相关信号宽度,FIFO生成器核心会自动计算出最终的FIFO宽度,降低了设计过程中的复杂性。
4.Supported Configuration, Memory and Application Types
The FIFO Generator core provides selectable configuration options: FIFO, Register Slice and
Pass Through Wire. The core implements FIFOs built from block RAM or distributed RAM
memory types. Depending on the application type selection (Data FIFO, Packet FIFO, or Low
latency FIFO), the core combines memory primitives in an optimal configuration based on
the calculated width and selected depth of the FIFO.
5.Register slices
-
单向传输:
- 每个AXI通道仅在一个方向上传输信息(例如,读或写),并且不同通道之间没有固定关系。这种设计使得在任意通道中插入寄存器切片成为可能。
-
寄存器切片的作用:
- 插入寄存器切片会增加一个周期的延迟,但可以提供更高的操作频率。这意味着通过在数据路径中增加寄存器,数据传输的稳定性和频率可以得到提高。
-
寄存器切片选项:
- 核心提供两种寄存器切片选项:
- 完全注册(Fully Registered):采用双级流水线寄存器,适用于对数据稳定性要求较高的应用。
- 轻量级(Light Weight):采用单级流水线寄存器,适用于对延迟要求较低且希望减少资源占用的场合。
- 核心提供两种寄存器切片选项:
6.Pass Through Wire
The core offers the pass through wire option for the AXI memory mapped interface making
all input signals pass through to output.
7.Packet FIFO
-
Packet FIFO配置:
- Packet FIFO配置会延迟数据包(突发传输)的开始,直到接收到数据包的最后一个数据单元(LAST beat)。这种做法确保在主设备开始传输数据时,数据的可用性是连续的。
-
避免源端阻塞:
- 通过延迟传输的开始,Packet FIFO可以避免在源设备(主设备)端出现阻塞,从而保持AXI数据通道的畅通。这对于实时信号通道尤其重要,因为这些通道可能以低于下游AXI交换机或从设备(如高带宽内存)的数据速率运行。
-
应用场景:
- 这种配置在需要将数据从主设备流畅传输到高带宽设备的场合非常有价值,特别是在数据源和目标之间存在带宽不匹配的情况下。Packet FIFO原理适用于AXI4/AXI3内存映射突发事务(包括读和写)以及AXI4-Stream数据包传输。这表明该功能可以广泛应用于多种AXI协议类型中。
-
存储与转发(Store-and-Forward):
- 这一特性有时被称为“存储与转发”,强调在内存映射写入和流传输中的行为。这意味着数据在完全接收之前不会被转发,确保数据完整性。
-
内存映射读取延迟:
- 对于内存映射读取,事务会延迟,直到FIFO中有足够的空余空间以确保整个读数据包的连续缓冲。换句话说,系统会根据AR通道事务的预期结果来管理FIFO的空间。需要注意的是,读取事务不依赖于RLAST信号,这与写入操作不同。
-
时钟配置支持:
- Packet FIFO功能支持共用时钟AXI4/AXI3和共用/独立时钟AXI4-Stream配置,但不支持AXI4-Lite配置。这意味着在特定的时钟配置下,可以利用Packet FIFO的优势,而在AXI4-Lite中则不能使用。
8.AXI4-Stream Packet FIFO
-
AXI4-Stream接口:
- FIFO生成器核心使用AXI4-Stream接口来实现Packet FIFO功能。这意味着数据传输遵循AXI4-Stream协议的规则。
-
tvalid信号:
- 当在AXI4-Stream从设备端接收到完整的数据包(由tlast信号标记)时,或者当AXI4-Stream FIFO变为满状态时,FIFO生成器核心会在主设备端指示tvalid信号。这表明数据有效且可供读取。
-
FIFO满的特殊情况:
- 当FIFO变满并指示tvalid时,这是一个特殊情况。在这种情况下,Packet FIFO仍会作为正常的前写转发(FWFT)FIFO运作,即将从设备接收到的数据持续转发到主设备,直到收到来自从设备的tlast信号。这确保了数据在FIFO满的情况下仍然可以持续流动。
9.AXI4/AXI3 Packet FIFO
-
写通道的Packet FIFO:
- 当在AXI W通道从设备端接收到完整的数据包(由wlast信号标记)时,FIFO生成器核心会在AXI AW通道主设备端指示awvalid信号。
- 写通道的Packet FIFO与写地址通道(AW通道)相结合,确保在AXI W通道从设备端接收到所需的所有数据之前,不会将AW传输发布到AXI写地址通道。这可以避免因数据不完整而导致的传输错误。
- 写通道的最小深度设置为512,这使得写通道Packet FIFO能够容纳两个最大长度的数据包。
-
读通道的Packet FIFO:
- 当在AXI R通道主设备端接收到完整的数据包(由rlast信号标记)时,FIFO生成器核心会在AXI R通道从设备端指示rvalid信号。
- 读通道的Packet FIFO与读地址通道(AR通道)相结合,确保在Packet FIFO中没有足够空间来存储相关数据时,不会将AR传输发布到AXI读地址通道。这同样有助于维护数据的完整性。
- 读通道的最小深度同样设置为512,使得读通道Packet FIFO也能够容纳两个最大长度的数据包。
10.Low Latency FIFO
The core offers the Low Latency FIFO option for the memory mapped and AXI4-Stream
interfaces in common clock mode of operation. In this mode, the latency is 1.
11.Error Injection and Correction (ECC) Support
The block RAM macros are equipped with built-in Error Injection and Correction Checking.
This feature is available for both the common and independent clock block RAM FIFOs.
12.AXI Slave Interface for Performing Writes
-
AXI从设备接口:
- AXI FIFO提供一个AXI从设备接口,用于执行写操作。这意味着AXI FIFO作为从设备响应来自AXI主设备的写请求。
-
信号交互:
- AXI主设备通过发送INFORMATION和VALID信号来传输数据。这些信号表示主设备希望写入的数据以及该数据是否有效。
- AXI FIFO通过断言READY信号来接收INFORMATION。当READY信号被断言时,表示FIFO准备好接收数据。
-
FIFO满的状态:
- READY信号仅在FIFO满时被取消断言。这意味着如果FIFO已满,AXI FIFO将不再接受新的写入请求,主设备必须等待直到FIFO有足够的空间来进行下一次写入
13.AXI Master Interface for Performing Reads
-
AXI主设备接口:
- AXI FIFO提供一个AXI主设备接口,用于执行读操作。这意味着AXI FIFO作为主设备向AXI从设备请求数据。
-
信号交互:
- AXI FIFO通过提供INFORMATION和VALID信号来传输数据。INFORMATION信号表示当前要发送的数据,VALID信号指示该数据有效。
- 当AXI FIFO检测到来自AXI从设备接口的READY信号被断言时,它会将下一个INFORMATION信号放置到总线上。这表明FIFO已准备好发送数据。
-
FIFO空的状态:
- VALID信号仅在FIFO为空时被取消断言。这意味着在FIFO没有可用数据时,主设备将不再发送有效数据,避免产生错误或无效数据传输。
二、AXI FIFO Applications
1.AXI4-Stream FIFOs
-
适用场景:
- AXI4-Stream FIFO最适合用于非地址基础的点对点应用。这种设计不依赖于特定的内存地址,而是通过流式数据传输进行数据交换。
-
接口功能:
- 这些FIFO可以用于与其他IP核心接口,如DSP功能的AXI4版本(例如FFT、DDS和FIR)。这表明AXI4-Stream FIFO能够在不同的IP核心之间有效地传输数据,特别是在信号处理和实时数据流处理的应用中。
-
数据移动器块:
- 图1-10展示了如何使用AXI4-Stream FIFO来创建数据移动器块。在这个应用中,数据移动器用于连接PCI Express、以太网MAC和USB模块,这些模块通过LocalLink与AXI系统总线进行接口。
-
AXI互连和数据移动器:
- 图1-10中的AXI互连和数据移动器块可以在Vivado IP目录中找到。这意味着用户可以直接利用这些现成的模块来构建自己的设计,从而简化开发过程。
-
功能支持:
- AXI4-Stream FIFO支持大多数Native接口FIFO在第一个字落下模式下所支持的功能。这表明AXI4-Stream FIFO能够提供与传统FIFO相似的性能,同时利用AXI4-Stream的优势。
-
简化接口:
- 使用AXI4-Stream FIFO可以替代Native接口FIFO,使与最新版本的其他AXI LogiCORE IP功能的接口更加容易。这意味着开发人员可以更方便地集成和交互不同的IP模块。
2.AXI4/AXI3 Memory Mapped FIFOs
AXI4/AXI3接口的完整版本称为AXI4/AXI3。它也可以称为AXI内存映射。在内存映射系统总线设计中使用AXI4/AXI3 fifo,例如桥接需要内存映射接口连接到其他AXI4/AXI3块的应用程序。
图1-11显示了一个用于AXI4/AXI3 fifo的示例应用程序,其中它们用于AXI4/AXI3到AXI4/AXI3桥接应用程序,使运行在200、100、66和156 MHz的不同AXI4/AXI3时钟域能够相互通信。AXI4/AXI3 -to-AXI4- lite桥接是另一个与AXI4/AXI3 FIFO相关的应用程序(例如,用于执行协议转换)。AXI4/AXI3 fifo也可以在IP核内用于缓冲数据或事务(例如,DRAM控制器)。图1-11所示的AXI Interconnect块是Vivado IP目录中可用的IP核。
3.AXI4-Lite FIFOs
The AXI4-Lite interface is a simpler AXI interface that supports applications that only need
to perform simple Control/Status Register accesses, or peripherals access.
Figure 1-12 shows an AXI4-Lite FIFO being used in an AXI4/AXI3 to AXI4-Lite bridging
application to perform protocol conversion. The AXI4-Lite Interconnect in Figure 1-12 is
also available as an IP core in the Vivado IP catalog.
总结
再见
标签:Stream,Packet,FIFO,AXI4,AXI,通道 From: https://blog.csdn.net/qq_52538756/article/details/143229940