GTM Quad 内包含三种 PLLLCPLL、RPLL 和 CPLL按用途和频率范围分工。HSCLK0 和 HSCLK1 块内各有一个 LCPLL 和一个 RPLL。四个通道各有一个 CPLL。REFCLK 输入/输出结构GTM 的 MGTREFCLK 差分引脚支持输入和输出两种工作模式两种模式在运行期间不能切换。输入模式参考时钟由外部板级振荡器提供通过专用差分引脚对MGTREFCLKP/N0 和 MGTREFCLKP/N1送入 GTM每个 Quad 有两组独立的参考时钟引脚。常见参考时钟频率156.25 MHz25G/100G Ethernet、161.1328125 MHzCPRI、155.52 MHzOTN等。参考时钟输入通过 IBUFDS_GTME5 原语例化。该原语将差分时钟转换为单端时钟输出两路O差分转单端后的参考时钟未经 PLL 锁相直接送给 GTME5_QUAD 内部的 LCPLL 作为参考源ODIV2O 的直通或 2 分频同样未经 PLL 锁相经 BUFG_GT 进入 FPGA 逻辑时钟网络可作为用户逻辑的系统时钟ODIV2 的模式由 REFCLK_HROW_CK_SEL 属性控制0 为直通1 为 2 分频2 为固定低电平。IBUFDS_GTME5 有一个低有效异步时钟使能信号 CEB拉高时关闭时钟缓冲器。IBUFDS_GTE5 #( .REFCLK_EN_TX_PATH(1b0), // 保留设为 1b0 .REFCLK_HROW_CK_SEL(0), // 0: ODIV2 O, 1: ODIV2 /2, 2: ODIV2 0 .REFCLK_ICNTL_RX(0) // Use the recommended value from the Wizard ) IBUFDS_GTE5_inst ( .O(O), // 输出到 GTME5_QUAD 的 LCPLL 参考时钟端口 .ODIV2(ODIV2), // 输出到 HROW 时钟网络经 BUFG_GT 驱动 .CEB(CEB), // 低有效异步时钟使能拉高关闭时钟缓冲器 .I(I), // 差分输入正端 .IB(IB) // 差分输入负端 );参考时钟必须在器件配置完成之前或手动复位序列启动之前稳定可用。GTPOWERGOOD 信号置位之前IBUFDS_GTME5 的输出不能使用。输出模式输出模式输出的是接收通道 CDR 恢复出来的时钟RXRECCLKOUT。比如一个 Quad 从接收数据流中恢复出时钟经 MGTREFCLK 引脚送到片外走 PCB 走线进入另一个 Quad 的 MGTREFCLK 引脚作为其参考时钟。这样多个 Quad 可以同步到同一条链路的恢复时钟上避免各自用独立参考时钟引入频差。输出模式通过 OBUFDS_GTME5 或 OBUFDS_GTME5_ADV 原语实现。OBUFDS_GTME5恢复时钟始终来自同一个通道。I 接 GTME5_QUAD 的 HSCLK[0/1]_RXRECCLKOUT[0/1]。OBUFDS_GTE5 #( .REFCLK_EN_DRV(1b1), // 保留设为 1b1 .REFCLK_EN_TX_PATH(1b1) // 保留设为 1b1 ) OBUFDS_GTE5_inst ( .O(O), // 差分输出正端映射到 MGTREFCLKP .OB(OB), // 差分输出负端映射到 MGTREFCLKN .CEB(CEB), // 低有效异步时钟使能拉高关闭 .I(I) // 恢复时钟输入来自 HSCLK[0/1]_RXRECCLKOUT[0/1] );OBUFDS_GTME5_ADV通过 RXRECCLKSEL 动态选择恢复时钟来源。I[0]–I[3] 分别对应通道 0–3 的 RXRECCLKOUT。OBUFDS_GTE5_ADV #( .REFCLK_EN_DRV(1b1), // 保留设为 1b1 .REFCLK_EN_TX_PATH(1b1) // 保留设为 1b1 ) OBUFDS_GTE5_ADV_inst ( .O(O), // 差分输出正端映射到 MGTREFCLKP .OB(OB), // 差分输出负端映射到 MGTREFCLKN .CEB(CEB), // 低有效异步时钟使能拉高关闭 .I(I), // 4 位恢复时钟输入I[0]CH0, I[1]CH1, I[2]CH2, I[3]CH3 .RXRECCLKSEL(RXRECCLKSEL) // 2 位选择来自 HSCLK[0/1]_RXRECCLKSEL );参考时钟选择与分布每个 LCPLL 可以从以下几个来源中选择参考时钟本地 GTREFCLK0当前 Quad 的专用参考时钟引脚 0本地 GTREFCLK1当前 Quad 的专用参考时钟引脚 1NORTHREFCLK0 / NORTHREFCLK1来自下方 Quad 的参考时钟SOUTHREFCLK0 / SOUTHREFCLK1来自上方 Quad 的参考时钟GTGREFCLK — 全局参考时钟保留参考时钟通过一个 7 选 1 的多路选择器完成选择。选择方式有两种静态属性HS0/1_LCPLL_IPS_REFCLK_SEL或动态端口HSCLK0/1_LCPLLREFCLKSEL由 HS0/1_LCPLL_IPS_PIN_EN 属性切换。IPS_PIN_EN 0 时静态属性控制IPS_PIN_EN 1 时动态端口控制。选择编码HSCLK0 为例HSCLK0_LCPLLREFCLKSEL选择的输入3’b001本地 GTREFCLK0HSCLK0_LCPLLGTREFCLK03’b010本地 GTREFCLK1HSCLK0_LCPLLGTREFCLK13’b011北向 GTREFCLK03’b100北向 GTREFCLK13’b101南向 GTREFCLK03’b110南向 GTREFCLK13’b111GTGREFCLK保留只接一个参考时钟源时固定设为 3’b001。HSCLK0 和 HSCLK1 的本地参考时钟输入端映射不同HSCLK0输入端 1 → HSCLK0_LCPLLGTREFCLK0输入端 2 → HSCLK0_LCPLLGTREFCLK1HSCLK1输入端 1 → HSCLK1_LCPLLGTREFCLK1输入端 2 → HSCLK1_LCPLLGTREFCLK0动态切换参考时钟后需要对 LCPLL 重新复位。参考时钟共享参考时钟最多可以向上和向下各跨越两个 Quad即最多 5 个连续 Quad 共享同一个参考时钟源。但物理上南北方向各只有两条 routing track存在竞争关系。以向下看为例当前 Quad Q(n) 有 NORTHREFCLK0/1 两个输入来源是下方 Quad Q(n-1) 和 Q(n-2) 共四组引脚。如果 Q(n-1) 自己也在从 Q(n-3) 引入参考时钟那两条 routing track 已被占用Q(n) 就只能接到 Q(n-1) 的时钟接不到 Q(n-2)。SSI 器件中参考时钟不能跨越 SLR 边界。Intelligent Pin Selection智能引脚选择IPS 是 Versal 器件中的参考时钟映射逻辑。设计实现过程中IPS 自动分析参考时钟连接将各时钟路由到 PLL 输入多路选择器上。推荐做法是将参考时钟从上到下依次接入输入多路选择器不留空位。IPS 在实现过程中自动完成映射。LCPLLLCPLLLC Tank PLL是 GTM 的主 PLL采用 LC 振荡器具有最佳的抖动性能。每个 Quad 有两个 LCPLL分别位于 HSCLK0 和 HSCLK1 中。LCPLL 的 VCO 名义工作范围为 9.5–15 GHz具体范围取决于器件速度等级。LCPLL 的结构输入参考时钟经过分频器 /M 后进入鉴频鉴相器Phase Frequency Detector与反馈分频信号比较输出经过电荷泵Charge Pump和环路滤波器Loop Filter后控制 VCO。VCO 输出经过分数-N 分频器Fraction-N Divider反馈回输入端。锁相检测器Lock Indicator比较参考时钟和 VCO 反馈时钟的频率判断是否锁定输出 LCPLLLOCK 信号。频率计算LCPLL 输出频率 (GHz)f_PLLCLKOUT f_PLLCLKIN × N.FractionalPart / M线速率 (Gb/s)f_LineRate Modulation × f_PLLCLKOUT / D分数部分FractionalPart SDMDATA / 2^SDMWIDTH各参数的可设范围参数来源可设值MHSCLK[0/1]_LCPLL_CFG01, 2, 3, 4NA_HS[0/1]_LCPLLFBDIV16–160属性值为 14–158实际值为属性值 2DTXOUT_DIV / RXOUT_DIV1, 2, 4ModulationTX Configurable Driver4 (NRZ), 8 (PAM4)SDMWIDTHHSCLK[0/1]_LCPLL_LGC_CFG112, 16, 20, 24SDMDATAHSCLK[0/1]_LCPLLSDMDATA[SDMWIDTH1:SDMWIDTH]补码整数 −2 到 1[SDMWIDTH−1:0]小数部分 0 到 2^SDMWIDTH−1LCPLLCLKOUT_RATE由 HSDIST_DIV2SEL 属性HSCLK0/1_HSDIST_CFG控制。设为 HALF 时LCPLL 输出频率为 VCO 频率的一半。分数-N 分频Fractional-N Divider分数-N 分频使 LCPLL 可以锁定到非整数倍的参考频率上覆盖更多线速率。分数部分通过 SDMSigma-Delta Modulator实现SDM 的宽度由 SDMWIDTH 设定数据由 SDMDATA 设定。分数-N 分频也可以通过 BYPASS 属性旁路此时 LCPLL 工作在整数-N 模式。Fractional-N 模式下 FBDIV 有限制调制线速率NFractionalPart 范围PAM419–58 Gb/sN ≤ 800.1–0.9PAM476–112 Gb/sN ≤ 210.1–0.9NRZ9.5–29 Gb/sN ≤ 800.1–0.9Dynamic Frac-NSDMDATA 通常静态设置但也可以持续更新实现动态分数-N 分频。动态 Frac-N 通过 SDMTOGGLE 信号触发数据传输。由于动态 Frac-N 基于 LCPLL 工作同一 LCPLL 下的所有通道共享同一个 PPM 调整无法独立控制。时序要求T1SDMDATA 在 SDMTOGGLE 置位前必须稳定至少一个 SYSTEM 时钟周期SDMTOGGLE 在此期间保持低电平T2SDMTOGGLE 必须保持高电平至少三个 FBCLK 周期SDMDATA 在此期间不能变化T3SDMTOGGLE 必须保持低电平至少三个 FBCLK 周期SDMDATA 在此期间不能变化SYSTEM 时钟可使用 USRCLK 或 ABPCLK。动态 Frac-N 的线速率限制NRZ 不超过 29 Gb/sPAM4 不超过 112 Gb/s。频率偏差应在 ±100 ppm 以内双向或 200 ppm单向。SDMDATA 控制方式SDMDATA 可通过端口或属性控制由 HS[0/1]_LCPLL_SDM_PIN_EN 选择1’b0默认属性控制使用 A_HS[0/1]_LCPLLSDMDATA1’b1端口控制使用 HSCLK[0/1]_LCPLLSDMDATALCPLL 主要属性以下属性均设置在 GTME5_QUAD 原语上实际使用时由 Transceivers Wizard 根据线速率和协议自动配置。属性位域说明A_HS0/1_LCPLLFBDIV[7:0] / [23:16]反馈分频 N属性值 2 实际值有效 14–158实际 16–160LCPLL_PREDIV[24:20]参考时钟分频 M001001, 000002, 000013, 000104TXOUT_DIV[14:13]TX 串行时钟分频 D000/1, 001/2, 010/4RXOUT_DIV[28:26]RX 串行时钟分频 D000/1, 001/2HSDIST_DIV2SEL[16:16]LCPLLCLKOUT_RATE0Full, 1HalfLCPLLLOCKEN[11:11]锁相检测器使能SDM_WIDTHSEL[10:9]SDM 宽度0024, 0120, 1016, 1112BYPASS[7:7]低有效旁路分数-N 分频器A_HS0/1_LCPLLPD[31:31]LCPLL Power Down0上电, 1断电LCPLL 端口端口方向说明HSCLK[0/1]_LCPLLLOCK输出LCPLL 频率锁定指示高有效。锁定前收发器和时钟输出不可靠HSCLK[0/1]_LCPLLRESET输入LCPLL 复位高有效HSCLK[0/1]_LCPLLREFCLKSEL[2:0]输入动态参考时钟选择HSCLK[0/1]_LCPLLSDMDATA[25:0]输入分数-N 分频数据输入。通过 HS[0/1]_LCPLL_SDM_PIN_EN 切换端口/属性控制HSCLK[0/1]_LCPLLSDMTOGGLE输入保留设为 0HSCLK[0/1]_LCPLLGTREFCLK0/1输入本地参考时钟HSCLK[0/1]_LCPLLNORTHREFCLK0/1输入来自下方 Quad 的参考时钟HSCLK[0/1]_LCPLLSOUTHREFCLK0/1输入来自上方 Quad 的参考时钟HSCLK[0/1]_LCPLLPD输入保留。通过 A_HS[0/1]_LCPLLPD 属性控制 Power DownLCPLL 复位LCPLL 在使用前必须复位。LCPLLRESET 是高有效异步复位脉冲宽度至少为一个参考时钟周期。内部复位控制器产生 LCPLL 内部复位后再产生 SDM 复位。LCPLL 锁定时间受带宽设置和时钟频率影响。复位后 LCPLLLOCK 从低变高表示锁定完成。在 LCPLLLOCK 置位之前收发器时钟输出不可靠。RPLL每个 HSCLK 块内还有一个 RPLLRing Oscillator PLL覆盖约 4–8 GHz 频率范围最高线速率约 12.5 Gb/s具体依速度等级而定见 DS956。RPLL 用于低线速率场景功耗比 LCPLL 低。CPLL每个通道内部有一个 CPLL覆盖更低的频率范围用于单个通道独立的时钟生成和串化。在 GTM 中 CPLL 的角色与前代架构UltraScale/UltraScale中的 CPLL 类似。时钟分配HSCLK0 中的 LCPLL/RPLL 默认为 CH0 和 CH1 提供时钟。HSCLK1 中的 LCPLL/RPLL 默认为 CH2 和 CH3 提供时钟。同一 Quad 内任意 LCPLL 的输出也可以通过交叉连接为其他通道提供时钟。LCPLL 输出送到 TX 和 RX 的时钟分频器生成串行时钟和并行时钟供 PMA 和 PCS 使用。这种交叉连接使同一个 Quad 内的 4 个通道可以使用不同的线速率工作前提是各速率都在所选 PLL 的覆盖范围内。Fabric 时钟输出控制Fabric 即 FPGA 可编程逻辑部分。LCPLL 输出送到通道后经过可编程分频器Programmable Divider生成并行输出时钟供 Fabric 使用。TX 和 RX 各有独立的可编程分频器和时钟选择逻辑。TXOUTCLKTXOUTCLK 通过 TXOUTCLKCTL 属性选择时钟源TXOUTCLKCTL输出3’b001TXPHYCLK 的 2 分频3’b010TXPHYCLKPISO 后的分频时钟PLL 复位时会中断3’b011TXREFCLKPMALCPLL 输入参考时钟通用推荐3’b100TXREFCLKPMA 的 2 分频3’b101TXPROGDIVCLK可编程分频器输出可编程分频器支持的分频值4、5、5.5、8、10、16、16.5、20、32、33、40、64、66。TX 串行时钟分频 D 由 TXOUT_DIV 设置000/1, 001/2, 010/4。固定线速率时配合 CH*_TXRATE 8’b00000000 使用。RXOUTCLKRXOUTCLK 通过 RXOUTCLKCTL 属性选择时钟源RXOUTCLKCTL输出3’b001RXPHYCLK 的 2 分频3’b010RXPHYCLKCDR 恢复时钟PLL 或 CDR 复位时中断3’b011RXREFCLKPMALCPLL 输入参考时钟3’b100RXREFCLKPMA 的 2 分频3’b101RXPROGDIVCLK可编程分频器输出RX 可编程分频器的分频值与 TX 相同。BUFG_GTBUFG_GT 是 GT 专用全局时钟 buffer位于 GT 时钟输出和 FPGA 时钟网络之间。其输入可以来自 TXOUTCLK、RXOUTCLK也可以来自 IBUFDS_GTME5 的 ODIV2。输出驱动 FPGA 内部的全局时钟树供用户逻辑使用。BUFG_GT 自带 DIV[2:0] 可编程分频器和时钟使能DIV 设置由 Transceivers Wizard 自动计算。ODIV2 到 BUFG_GT 这条路不经过 PLL直接把外部参考时钟或它的 2 分频送入 fabric比如把 156.25 MHz 参考时钟同时喂给 LCPLL 和用户逻辑做系统时钟。USRCLK 计算TXUSRCLK和 RXUSRCLK是 FPGA 逻辑与 GTM 之间并行数据接口的同步时钟USRCLK f_LineRate / DATA_WIDTH例如112 Gb/s PAM4、512 位接口 USRCLK 218.75 MHz58 Gb/s PAM4、256 位接口 USRCLK 226.5625 MHz28.21 Gb/s NRZ、64 位接口 USRCLK 440.78125 MHzUSRCLK 由 TXOUTCLK 或 RXOUTCLK 经过 BUFG_GT 生成。必须先确认 PLL 锁定、可编程分频器稳定后才能将 USRCLK 提供给通道使用。