Xilinx Aurora 8B/10B IP核(2):Shared Logic的选择

1 概念

Shared Logic(共享逻辑) 指的是 Aurora IP 核运行所必需,但又可以被多个 IP 核实例共享的 FPGA 资源。主要包括:

  • 收发器公共模块 :如 GTHE2_COMMON, GTXE2_COMMON, GTPE2_COMMON。这些模块为同一个 Quad 内的多个收发器通道提供 QPLL 时钟源和参考时钟路由。

  • 时钟缓冲与生成

    • 参考时钟的差分输入缓冲器:IBUFDS_GTE2/3/4

    • 用户时钟生成模块:MMCM/PLLBUFG/BUFG_GT

  • 复位逻辑 :对 resetgt_reset 输入信号进行去抖和同步的逻辑。

这两个选项决定了这些共享资源是被封装在 IP 核内部 ,还是被提取到 IP 核外部的示例设计层次


2 选项一:Include Shared Logic in Core(共享逻辑在核心内)

2.1 含义

将所有共享逻辑(时钟、复位、公共模块)打包在 IP 核 aurora_8b10b_0 的内部。生成的 IP 核是一个功能完整、自包含的"黑盒子"。

复制代码
    Top-Level Design
    └── aurora_8b10b_0 (IP Core)
        ├── <component_name>_support (Shared Logic)
        │   ├── IBUFDS_GTE* (Refclk Buffer)
        │   ├── GT*_COMMON (QPLL)
        │   ├── Clock Module (MMCM/PLL, BUFG)
        │   └── Reset Debouncer
        └── <component_name>_core (Aurora Protocol Engine)

2.2 端口变化

IP 核的端口会更"干净",主要是用户接口和串行收发端口。

它会输出一些由内部共享逻辑生成的时钟和状态信号,供用户逻辑使用,例如:

  • user_clk_out

  • sync_clk_out

  • gt_refclk1_out

  • sys_reset_out

  • gt_reset_out

  • quad1_common_lock_out (PLL 锁定状态)

2.3 优点

  1. 简单易用:开箱即用,无需关心内部时钟和复位生成。对于初学者或快速原型开发非常友好。

  2. 自成一体:IP 核自身就是完整的,不需要外部依赖。

  3. 适合单一实例 :当你的设计中只有一个 Aurora IP 核时,这是最直接的选择。

2.4 缺点

  1. 资源浪费 :如果设计中有多个 Aurora IP 核(尤其是在同一个 Quad 内),每个核都会实例化自己的一套共享逻辑(如 GTHE2_COMMON),这会导致资源冲突和浪费,因为一个 Quad 只能有一个 GTHE2_COMMON 实例。

  2. 灵活性差难以让多个 IP 核共享同一套时钟和复位资源。


3 选项二:Include Shared Logic in Example Design(共享逻辑在示例设计中)

3.1 含义

将共享逻辑从 IP 核内部剥离出来 ,放在更高一层的模块中(通常是自动生成的示例设计 aurora_8b10b_0_exdes)。IP 核本身 aurora_8b10b_0 变成一个"纯协议引擎",它需要从外部接收所有必要的时钟和复位信号。

复制代码
    Top-Level Design (e.g., aurora_8b10b_0_exdes)
    ├── <component_name>_support (Shared Logic - NOW OUTSIDE IP)
    │   ├── IBUFDS_GTE* (Refclk Buffer)
    │   ├── GT*_COMMON (QPLL)
    │   ├── Clock Module (MMCM/PLL, BUFG)
    │   └── Reset Debouncer
    └── aurora_8b10b_0 (IP Core - "Core" only)
        └── <component_name>_core (Aurora Protocol Engine)

3.2 端口变化

IP 核的端口会变得更"复杂",因为它需要输入所有由外部共享逻辑提供的信号.

  • gt_refclk1_in (而不是自己缓冲)

  • gt0_pll0outclk_in (从外部 Common 模块来的时钟)

  • init_clk_in (外部提供的初始化时钟)

  • user_clk (外部提供,而不是自己输出)

  • sync_clk (外部提供)

  • gt_reset_in (外部提供去抖后的复位)

3.3 优点

  1. 资源优化 :这是多实例设计的关键 。一个共享逻辑模块(*_support)可以驱动多个 Aurora IP 核,共享同一个 QPLL 和时钟网络,极大节省资源。

  2. 设计灵活:你可以创建自己的顶层模块,精细控制时钟和复位策略,让多个 IP 核协同工作。

  3. 符合最佳实践在复杂的、使用多个高速串行 IP 核的设计中,这是推荐和必需的方法

3.4 缺点

  1. 复杂度高:用户需要负责正确连接所有从共享逻辑模块到 IP 核的时钟和控制信号。

  2. 依赖示例设计 :在开发初期,通常需要基于生成的示例设计进行修改,而不是直接实例化一个孤立的 IP 核。


4 决策指南:如何选择?

设计场景 推荐选项 理由
设计中只有一个 Aurora IP 核 Include Shared Logic in Core 简单,直接,避免不必要的连接复杂性。
快速原型/评估 Include Shared Logic in Core 快速生成比特流进行硬件测试,无需理解复杂的时钟连接。
设计中有多个 Aurora IP 核 Include Shared Logic in Example Design 必须选择此项。避免 QPLL 和时钟缓冲器冲突,优化资源使用。
在 IP Integrator 中使用 Include Shared Logic in Example Design IPI 可以自动管理共享逻辑的连接,当放置多个实例时,工具会自动将其中一个配置为共享逻辑提供者。
需要自定义时钟/复位策略 Include Shared Logic in Example Design 提供更大的灵活性,让你完全控制时钟和复位来源。

5 高级技巧与注意事项

  • 在 IP Integrator 中的行为 :当使用 IP Integrator 框图设计时,如果你放置了多个 Aurora IP 核,Vivado 会自动处理 共享逻辑。通常,第一个被放置的 IP 核会被设置为 Include Shared Logic in Core,后续的核会被自动设置为 Include Shared Logic in Example Design,并且它们的共享逻辑端口会自动连接到第一个核。你可以通过右键点击 IP 核并选择 "Show IP Configuration..." -> "Shared Logic" 选项卡来查看和修改。

  • 从旧版本迁移:如果你在升级一个使用旧版本 Aurora IP 的设计,很可能需要从 "in core" 模式迁移到 "in example design" 模式,这通常需要重新构建你的顶层连接。

  • 调试 :当选择 "in example design" 时,如果链路无法建立,请务必先检查共享逻辑模块输出的时钟和锁定信号(如 user_clk, quad1_common_lock_out)是否正确,然后再去排查 Aurora 核本身的问题。

总而言之,这是一个在"易用性"和"灵活性与效率"之间的权衡。对于任何严肃的、可能扩展的多通道应用,从开始就选择 Include Shared Logic in Example Design 是更明智和面向未来的选择。

相关推荐
嵌入式软硬件攻城狮5 小时前
4.FPGA字符格式
fpga开发
Terasic友晶科技5 小时前
2-基于FPGA开发板DE23-Lite的串口通信设计 (FT2232H)
fpga开发·串口·uart·de23-lite
第二层皮-合肥6 小时前
FPGA工程师12实战项目-基于PCIe的高速ADC采集项目
fpga开发
第二层皮-合肥14 小时前
USB3.0PHY介绍
fpga开发
czhaii1 天前
51的DSP来了, 100MHz, STC32G144K246
stm32·单片机·fpga开发
FPGA_ADDA2 天前
全国产复旦微FMQL100TAI 核心板
fpga开发·信号处理·全国产·fmql100tai·zynq7国产化
Terasic友晶科技2 天前
5-基于C5G 开发板的FPGA 串口通信设计 (FT232R, Altera UART IP和Nios II系统串口收发命令)
fpga开发·串口·uart·c5g
爱敲代码的loopy2 天前
verilog-正弦波生成器
fpga开发
尤老师FPGA2 天前
DDR4系列之ECC功能(六)
fpga开发·ddr4