免责声明:
本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。
读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。
本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。
若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。
前言
在 Xilinx FPGA 架构中,大多数 IP 核都基于 AXI 总线进行连接。AXI Interconnect 核在这一架构中起到了至关重要的桥接作用,它负责连接多个 AXI 主接口和从接口,实现高效的数据传输和流量管理。
一、AXI Infrastructure Cores
-
AXI Crossbar:
- 功能:它用于将一个或多个 AXI 内存映射的主设备连接到一个或多个类似的从设备。它实现了多对多连接,可以使多个主设备同时访问多个从设备,确保数据流的有效性和吞吐量。
- 用途:在系统中有多个主设备和多个从设备时,AXI Crossbar 能够根据优先级和带宽要求进行调度。
-
AXI Data Width Converter:
- 功能:用于连接一个 AXI 内存映射的主设备和一个具有不同数据宽度的从设备。它可以处理不同宽度的数据路径,例如将 32 位数据宽度转换为 64 位或反之亦然。
- 用途:在主设备和从设备的数据宽度不一致时,使用这个模块确保两者之间的数据传输正常。
-
AXI Clock Converter:
- 功能:用于连接处于不同时钟域的 AXI 内存映射主设备和从设备。它解决了跨时钟域的数据传输问题,确保时钟域之间的数据同步和正确传输。
- 用途:在多时钟域的设计中使用,例如一个模块工作在 100 MHz 时钟域,另一个模块工作在 200 MHz 时钟域。
-
AXI Protocol Converter:
- 功能:用于连接不同 AXI 协议的主设备和从设备。例如,AXI4 与 AXI3 或 AXI4-Lite 协议之间的转换。
- 用途:在系统中使用不同 AXI 协议的模块时,确保不同协议的模块之间能够通信。
-
AXI Data FIFO:
- 功能:在 AXI 内存映射的主设备和从设备之间通过 FIFO 缓存区传递数据。它可以缓冲数据流,调节数据传输的速度,避免数据丢失或堵塞。
- 用途:在主设备和从设备的数据传输速度不一致时,使用 FIFO 来平衡数据流。
-
AXI Register Slice:
- 功能:用于在主设备和从设备之间插入流水线寄存器,以分隔时序路径,通常用于打破关键路径,优化时序性能。
- 用途:在时序紧张的设计中,通过增加寄存器切片来提高系统的时钟频率。
-
AXI MMU (Memory Management Unit):
- 功能:提供地址范围解码和重映射服务,通常用于地址转换和权限管理。
- 用途:在复杂的内存体系结构中,使用 MMU 进行地址重映射,确保系统的灵活性和安全性。
-
Slave Interfaces (SI):
- 每个 SI 连接到一个 AXI 主设备(master),负责接收主设备发出的读写事务请求。
- AXI Interconnect core 可以配置多达 16 个 SI 接口,也就是说它最多可以同时连接 16 个不同的主设备。
-
Master Interfaces (MI):
- 每个 MI 连接到一个 AXI 从设备(slave),负责向从设备发出读写事务。
- AXI Interconnect core 同样可以配置多达 16 个 MI 接口,也就是最多可以连接 16 个从设备。
二、Latency
三、AXI Register Slice
1. FULLY_REGISTERED 模式:
- 描述:在 FULLY_REGISTERED 模式下,寄存器切片适用于每个相关通道,具有 1 个延迟周期,且 没有气泡周期。
- 细节:
- 由于没有气泡周期,这种配置能够实现 100% 的通道带宽,即传输效率最高。
- 这种模式非常适合对时序要求严格且需要高数据传输率的场景。
2. LIGHT_WEIGHT 模式:
- 描述:在 LIGHT_WEIGHT 模式下,寄存器切片适用于每个相关通道,具有 1 个延迟周期,并且会产生 1 个气泡周期。
- 细节:
- 由于存在一个气泡周期,这种模式的最佳通道带宽为 50%。
- 这种配置适用于写地址通道(AW)、读地址通道(AR)、以及响应通道(B)的传输,也适用于涉及 AXI4-Lite 终端的所有传输。
- 该模式适用于对时序要求不高且数据传输率需求较低的场景。
3. SI Reg 或 MI Reg 模式:
- 描述:无论是 SI Reg 还是 MI Reg 模式,都具有 1 个延迟周期,且 没有气泡周期。
- 细节:
- 这种配置与 FULLY_REGISTERED 模式类似,能够实现 100% 的通道带宽。
- 它用于在 Slave Interface(SI)或 Master Interface(MI)侧引入寄存器切片,以优化时序和提升性能。
4. SLR Crossing 模式和 SLR TDM Crossing 模式:
- 描述:这两种模式下的寄存器切片延迟为 3 个 aclk 周期,且 没有气泡周期。
- 细节:
- SLR Crossing:用于跨越单一 SLR(Super Logic Region)边界的情况。
- SLR TDM Crossing:适用于通过时分复用(TDM)方法跨越 SLR 边界的情况。
- 两者均在跨越 FPGA 内部不同逻辑区域(SLR)时提供稳定的延迟,并保证数据传输的持续性。
5. Multi SLR Crossing 模式:
- 描述:在 Multi SLR Crossing 模式下,整体延迟取决于跨越的 SLR 边界数量以及每个 SLR 区域内配置的流水线阶段数,延迟可能介于 1 到 17 个周期 之间。
- 细节:
- 此模式用于在复杂的 FPGA 设计中跨越多个 SLR 边界,延迟因设计的具体配置而异。
- 这种模式通常用于跨越多个逻辑区域且对时序要求较为宽松的场合。
四、AXI Data FIFO
W and R channels: Three latency cycles with no bubble cycles.
AW, AR, and B channels: One latency cycle if Packet mode is enabled; otherwise no
latency.
五、AXI Data Width Converter
- AW and AR channels: One latency cycle.
- W channel when upsizing: One latency cycle (for each cycle in which packing
- completes), with no bubble cycles on the SI-side (narrow) interface.
- R channel when upsizing: One latency cycle.
- B channel: no latency.
- R channel when downsizing: no latency (for each cycle in which packing completes),
- with no bubble cycles on the MI-side (narrow) interface.
- W channel when downsizing: no latency.
六、AXI Protocol Converter
- AXI4 or AXI3 to AXI4-Lite conversion: two latency cycles from ARVALID or from
- (AWVALID and WVALID) when configured in "conversion" mode, no latency on any
- channels when configured in "unprotected" mode.
- AXI4 to AXI3 conversion:
- AW and AR channels: One latency cycle.
- W, R, and B channels: no latency.
- Other conversions: no latency.
七、AXI MMU
-
AW and AR channels: One latency cycle with one bubble cycle.
-
W, R, and B channels: No latency.
八、Maximum Performance
SAMD, AXI4 Protocol
-
• Connectivity Mode: Shared-Address/Multiple-Data (SAMD, as selected by Maximize
-
Performance strategy)
-
• Protocol: AXI4 or AXI3
SASD, AXI4 Protocol
Common Configuration:
• Connectivity Mode: Shared-Address/Shared-Data (SASD, as selected by Minimize Area
strategy)
• Protocol: AXI4 or AXI3
SASD, AXI4-Lite Protocol
Common Configuration:
• Connectivity Mode: SASD (Minimize Area strategy)
• Protocol: AXI4-Lite
AXI Clock Converter
Common Configuration:
• ID Width: 4 (AXI4 and AXI3 only)
• Address Width: 32
• User Width: 0
• Read/Write
AXI Data FIFO
Common Configuration:
• ID Width: 4 (AXI4 and AXI3 only)
• Address Width: 32
• User Width: 0
• Read/Write
• Protocol: AXI3 or AXI4
AXI Data Width Converter
Common Configuration:
• ID Width: 4 (AXI4 and AXI3 only)
• Address Width: 32
• User Width: 0
• Read/Write
AXI MMU
Common Configuration:
• Protocol: AXI4, AXI3 or AXI4-Lite
• Data Width: 32-1024
• Address Width = 32
• Number of address ranges: 32
AXI Protocol Converter
Common Configuration:
• ID Width: 4 (AXI4 and AXI3 only)
• Address Width: 32
• User Width: 0
• Read/Write
AXI Register Slice
Common Configuration:
• ID Width: 4 (AXI4 and AXI3 only)
• Address Width: 32
• User Width: 0
• Read/Write
• Type: Fully-registered or Light-weigh
• Protocol: AXI4, AXI3 or AXI4-Lite
九、Customizing and Generating the Core
Interconnect Optimization Strategy
1. Custom自定义策略:
- 描述:如果参数值设为 Custom (0),则互连的配置将根据其他配置页面中的参数设置进行定制化配置。
- 细节:
- 这种策略允许用户根据特定的设计需求和系统要求手动配置 AXI Interconnect 的各项参数,以达到特定的性能或资源利用目标。
- 适用于需要细粒度控制互连结构的高级设计场景。
2. Minimize Area最小化面积策略:
- 描述:如果参数值设为 Minimize Area (1),则启用尽量减少互连实例中所使用的基础设施 IP 核面积的功能。
- 具体优化:
- 互连中的交叉开关(crossbar)被配置为 SASD(Shared-Access Shared Data,共享访问共享数据)模式。
- SASD 模式:这种模式减少了硬件资源的使用,通过共享访问路径和数据路径来最小化交叉开关的面积占用。
- 适用场景:
- 这种策略适合资源受限的设计中,尤其是在 FPGA 的逻辑资源有限的情况下,优先考虑降低面积而非性能。
3. Maximize Performance最大化性能策略:
- 描述:如果参数值设为 Maximize Performance (2),则启用尽量提高互连实例中所使用的基础设施 IP 核性能的功能。
- 具体优化:
- 互连中的交叉开关被配置为 SAMD(Single-Access Multiple Data,单一访问多数据)模式,即传统交叉开关模式。
- 在所有 SI(Slave Interface)接口上启用 数据包模式 FIFO,以支持更高效的数据传输。
- 所有交叉开关的接收和发出阈值都被提高,以允许每个连接的主设备和从设备处理多个未完成的事务。
- 适用场景:
- 这种策略适用于对性能要求极高的设计场景,尤其是在需要最大限度提升数据吞吐量和并行处理能力的情况下。
Enable Register Slice
1. None- 不插入寄存器切片:
- 描述:如果选择了 None,则 不插入 任何寄存器切片。
- 细节:
- 在这种配置下,数据直接通过,不引入任何额外的延迟或资源开销。
- 适用于不需要在 SI 侧进行时序优化的场景,或者系统时序已经满足要求的情况下。
2. Outer - 在外层插入寄存器切片:
- 描述:如果选择了 Outer ,则在 SI 耦合单元层次结构的 SI 侧 插入一个寄存器切片。
- 细节:
- 这种配置在 SI 侧的外部插入寄存器切片,主要用于改善跨模块时序路径的性能。
- 适用于需要在 SI 接口和后续逻辑之间插入一个固定的寄存器切片,以增强时序稳定性的场景。
3. Auto- 自动插入寄存器切片:
- 描述:如果选择了 Auto,则当检测到 SI 耦合单元具有 公共时序路径 时,会在 SI 耦合单元层次结构中自动插入寄存器切片。
- 细节:
- 此配置允许工具自动判断是否需要插入寄存器切片,主要基于时序路径的分析结果。
- 适用于希望系统自动优化时序,但不希望手动插入寄存器切片的场景。
4. Outer and Auto - 外层和自动插入寄存器切片:
- 描述:如果选择了 Outer and Auto,则在 SI 耦合单元层次结构的 SI 侧 插入一个寄存器切片,并且如果检测到 SI 耦合单元具有公共时序路径,还可以 额外插入一个寄存器切片。
- 细节:
- 这种配置结合了 Outer 和 Auto 的优点,在 SI 侧固定插入一个寄存器切片,同时在需要时进一步优化。
- 适用于需要在关键路径上提供额外时序裕量的场景,确保系统具有最佳的时序性能。
Enable Data FIFO
1. None - 不插入数据 FIFO:
- 描述:如果参数值设为None,则 不插入 数据 FIFO。
- 细节:
- 在这种配置下,数据直接通过 SI 接口,不使用任何额外的缓冲。
- 适用于数据流量较低且系统时序良好,不需要额外缓冲的场景。
2. 32-deep - 插入 32 深度的数据 FIFO:
- 描述:如果参数值设为32-deep,则在 SI 侧插入一个 32 深度 的数据 FIFO。
- 细节:
- 插入一个 32 深度的数据 FIFO,可以提供一定程度的数据缓冲,从而应对一些突发的数据流量或小范围的时序波动。
- 适用于需要基本数据缓冲来平衡轻微数据流量波动的场景。
3. 512-deep - 插入 512 深度的数据 FIFO 并启用数据包模式:
- 描述:如果参数值设为 2,则在 SI 侧插入一个 512 深度 的数据 FIFO,并且启用其数据包模式功能。
- 细节:
- 512 深度的数据 FIFO 提供了更大的缓冲容量,可以应对更大的数据流量和时序波动。
- 启用数据包模式功能意味着数据可以以数据包的形式传输,进一步提高了数据传输的效率和系统的吞吐量。
- 适用于高数据流量场景,特别是在需要高效处理突发性数据流的情况下。
AXI Interconnect Core — Advanced Options Tab
Clock Domain Crossing MTBF Options
Synchronization Stages(同步阶段):
- 描述:该选项指定在 AXI Interconnect 核中用于任何异步时钟域转换耦合器的同步阶段数。
- 格式/范围:整数值,范围为 2 到 8。
- 默认值:2。
同步阶段数的作用:
- 时钟域交叉(CDC, Clock Domain Crossing)是指在不同时钟域之间传输信号。在此过程中,信号需要在异步时钟域之间进行安全可靠的同步,以避免亚稳态和数据丢失。
- 同步阶段 指的是信号在进入目标时钟域时,经过的同步寄存器级数。这些寄存器有助于减少亚稳态的风险,并提高数据的稳定性和可靠性。
配置选项的影响:
- 较少的同步阶段(如 2):
- 优点:更少的延迟,信号在时钟域之间传递更快。
- 缺点:可能会增加亚稳态发生的风险,尤其是在高频或不稳定的环境下。
- 更多的同步阶段(如 8):
- 优点:大大降低亚稳态的风险,提高系统的可靠性和稳定性。
- 缺点:增加了信号在时钟域之间传递的延迟。
选择合适的同步阶段数:
- 2 个同步阶段(默认值)通常适用于大多数情况,能够提供较好的性能与可靠性平衡。
- 如果你的设计涉及高频或关键应用,可以考虑增加同步阶段数,以提高系统的容错性。
- 如果对时延非常敏感,且时钟域之间相对稳定,较少的同步阶段可能是更好的选择。
Interconnect Crossbar Options
Data Width of the AXI Crossbar(AXI 交叉开关的数据宽度):
- 描述:当指定此值时,它将覆盖 AXI Interconnect 实例中 AXI Crossbar 的
DATA_WIDTH
参数的任何 IP 集成器自动生成的值。 - 作用:这个选项允许你明确设置交叉开关的数据宽度,而不是依赖工具自动选择的配置。
Interconnect Debug Options
Enable Protocol Checkers and mark interfaces for debug:
- 描述:当选中该选项时,AXI Protocol Checker IP 核会在 AXI Interconnect 核内实例化,并连接到每个启用的 AXI 主接口和 AXI 从接口。此外,每个 AXI Interconnect 核的 AXI 接口也会被标记用于调试。
- 作用:这允许对 AXI 传输进行实时监控,帮助识别和解决协议违例、性能瓶颈和其他可能的问题。
调试选项:
-
Maximum number of idle cycles for READY monitoring:
- 描述:指定在所有启用的协议检查器中,用于 READY 信号监控的最大空闲周期数。
- 作用:如果在指定的周期内 READY 信号保持低电平(表示总线没有准备好),协议检查器将会触发警报。这有助于检测由于资源冲突或其他问题导致的总线延迟。
-
Maximum READ Transactions per ID:
- 描述:指定在所有启用的协议检查器中,每个 ID 允许的最大未完成读事务数量。
- 作用:限制未完成读事务的数量有助于防止系统中过多的并发读操作导致的资源冲突或死锁情况。
-
Maximum Write Transactions per ID:
- 描述:指定在所有启用的协议检查器中,每个 ID 允许的最大未完成写事务数量。
- 作用:限制未完成写事务的数量有助于防止系统中过多的并发写操作导致的资源冲突或其他性能问题。
总结
使用 AXI Interconnect 时,除了基础配置外,还有几个重要方面需要注意,以确保你的系统能够高效稳定地运行:
1. 数据带宽和吞吐量
- 带宽匹配:确保 AXI Interconnect 的数据宽度和带宽配置匹配你的应用需求。如果数据宽度不匹配,可能导致性能瓶颈或数据丢失。
- 性能模式:选择适当的性能模式(例如,Maximum Performance)以满足系统的吞吐量要求。
2. 时钟域交叉
- 同步阶段:配置合适数量的同步阶段以处理时钟域交叉。这有助于减少亚稳态的风险,尤其是在涉及多个时钟域的设计中。
- 时钟频率:确保所有时钟域的频率设置正确,避免时钟频率差异引起的问题。
3. 协议检查和调试
- 协议检查器:启用 AXI 协议检查器以监控和调试 AXI 总线事务,帮助识别协议违例或性能问题。
- 调试选项:根据需要配置调试选项,如最大空闲周期、读写事务数等,以优化监控效果。
4. FIFO 和寄存器切片
- 数据 FIFO:根据数据流量需求选择合适的 FIFO 大小和模式。数据 FIFO 可以缓冲数据,避免由于时序问题导致的数据丢失。
- 寄存器切片:使用寄存器切片来缓解时序路径中的延迟,特别是在复杂设计中,有助于提高时序稳定性。
5. 交叉开关配置
- 数据宽度:确保 AXI Crossbar 的数据宽度设置符合系统需求。如果需要更高的带宽,调整数据宽度以提供足够的传输能力。
- 模式选择:选择合适的交叉开关模式(如 SASD 或 SAMD)以平衡资源使用和性能。
6. 资源利用
- 资源预算:注意 AXI Interconnect 可能消耗的 FPGA 资源,确保系统设计在资源预算内运行。
- 优化资源:根据性能需求和资源使用情况进行优化,如减少不必要的功能或调整配置以节省资源。
7. 综合与时序分析
- 时序约束:在综合和实现过程中应用适当的时序约束,确保设计在目标时钟频率下正确工作。
- 综合工具:利用 FPGA 综合工具进行详细的时序分析和优化,确保设计满足性能和时序要求。
8. 测试和验证
- 功能测试:在设计完成后,进行全面的功能测试,验证所有 AXI 接口和数据路径的正确性。
- 性能测试:测试系统在实际应用中的性能,以确保 AXI Interconnect 能够满足设计要求。