一、gte2_common的作用
1.GTXE2_COMMON 是 Xilinx 7 系列 FPGA 中 GTX 收发器 Quad 的核心组件
2.gtxe2_common用于封装QPLL
3.GTXE2_COMMON 原语封装了 Quad PLL (QPLL),为同一 Quad 内的 4 个 GTX 通道提供共享时钟
4.每个 Quad 只能包含一个 GTXE2_COMMON 实例,它通过 QPLL 生成高速时钟信号,支持 5.93GHz~12.5GHz 的线速率操作
5.用于时钟管理,该原语负责选择 Quad 的参考时钟(通过 QPLLREFCLKSEL[2:0] 配置),支持来自管脚、上方或下方 Quad 的 6 个时钟源选项,并协调时钟分配
6.GTE2_COMMON是共享逻辑的核心组成部分,包含收发器差分缓冲器、复位逻辑和时钟模块等关键资源。
7.不管是使用cpll还是qpll,都必须使用gtxe2_common。GTXE2_COMMON 使用模式:必须按照(Xilinx 答复 43339)中的说明为 GTX 量产收发器更改 GTXE2_COMMON 使用模式。只要在设计中使用了 CPLL,就必须对 GTXE2_COMMON 模块进行实例化。否则,BIAS_CFG 将在软件模型中被错误设置为 64'h0000000000000000
二、为何使用gte2_common
1.根本原因:在7系列FPGA中,GTXE2_COMMON 原语负责管理一个 Quad(包含4个GTX收发器通道和1个COMMON模块)的全局配置和电源偏置(Bias)电路。其配置参数 BIAS_CFG 是一个64位的十六进制值。
2.需要负责全局配置和电源偏置电路。
三、不使用gte2_common会造成的错误
如果在设计中使用了 CPLL(通道专用的PLL),但没有正确实例化 GTXE2_COMMON 原语,Vivado工具在综合实现时可能会无法正确推断出所需的 BIAS_CFG 值,从而将其错误地设置为全零 (64‘h0000000000000000)
四、异常后果
一个全零的 BIAS_CFG 设置会导致Quad的偏置电路工作异常,可能引发以下问题:
1.GTX收发器性能不稳定(高误码率)
2.收发器根本无法正常工作(无输出或无法锁定)
3.在极端情况下,甚至可能对硬件造成损害
五、正确实例化 GTXE2_COMMON
// 注意:这只是示例,请务必从您的Vivado Language Templates中获取最新版本
GTXE2_COMMON #(
// Synthesis attributes
.BIAS_CFG(64'h0000040000001000), // !!! 这就是正确的BIAS_CFG值示例 !!!
.COMMON_CFG(32'h00000000),
.QPLL_CFG(27'h06801C1),
.QPLL_CLKOUT_CFG(4'b0000),
.QPLL_COARSE_FREQ_OVRD(6'b010000),
.QPLL_COARSE_FREQ_OVRD_EN(1'b0),
.QPLL_CP(10'b0000011111),
.QPLL_CP_MONITOR_EN(1'b0),
.QPLL_DMONITOR_SEL(1'b0),
// ... 其他参数省略,保持默认即可
.QPLL_REFCLK_DIV(1)
)
gtxe2_common_inst (
.QPLLLOCKDETCLK(QPLLLOCKDETCLK),
.QPLLLOCKEN(1‘b1), // 通常需要使能
.QPLLOUTCLK(QPLLOUTCLK), // QPLL输出时钟
.QPLLOUTREFCLK(QPLLOUTREFCLK),
.QPLLLOCK(QPLLLOCK), // QPLL锁定信号
.QPLLREFCLKLOST(QPLLREFCLKLOST),
.QPLLREFCLKSEL(3’b001), // 选择参考时钟源
.GTGREFCLK(1‘b0),
.GTNORTHREFCLK0(1’b0),
.GTNORTHREFCLK1(1‘b0),
.GTSOUTHREFCLK0(1’b0),
.GTSOUTHREFCLK1(1‘b0),
.QPLLPD(1’b0), // 勿使能QPLL断电
.QPLLRESET(QPLLRESET), // QPLL复位信号
.BGBYPASSB(1‘b1),
.BGMONITORENB(1’b1),
.BGPDB(1‘b1),
.BGRCALOVRD(5’b11111),
.REFCLKOUTMONITOR(),
.DRPADDR(8‘b0),
.DRPCLK(1’b0),
.DRPDI(16‘b0),
.DRPDO(),
.DRPEN(1’b0),
.DRPRDY(),
.DRPWE(1‘b0)
);