UltraScale+的40G/50G Ethernet Subsystem IP核使用(2)

前言

上文介绍了40G/50G Ethernet Subsystem IP核的使用,对于每个QSFP都单独使用一个GT参考时钟,本文将基于此介绍GT时钟共享。
在这里插入图片描述

一、设计框图

在这里插入图片描述
在这里插入图片描述

二、模块修改

主要是修改QPLL的参考时钟输入,我这里QSFP1的BANL在QSFP2的呗面,所以QSFP2想要使用QSFP1的GT参考时钟需要将COMMON的参考时钟输入选为011.
在这里插入图片描述
主要修改l_ethernet_1_common_wrapper模块,增加参数GTYE4_COMMON_QPLL0REFCLKSEL 进行参考时钟选择和南北时钟输入。

module l_ethernet_1_common_wrapper#(
  parameter GTYE4_COMMON_QPLL0REFCLKSEL = 3'b001
)
(
     input  refclk,
     input  north_refclk  ,
     input  south_refclk  ,
     input  [0 :0]  qpll0reset,
     output [0 :0]  qpll0lock,
     output [0 :0]  qpll0outclk,
     output [0 :0]  qpll0outrefclk,
     input          drpclk_common_in,
     input  [0 :0]  qpll1reset,
     output [0 :0]  qpll1lock,
     output [0 :0]  qpll1outclk,
     output [0 :0]  qpll1outrefclk
    );

  // List of signals to connect to GT Common block
  wire [0 :0] GTYE4_COMMON_QPLL0RESET;
  wire [0 :0] GTYE4_COMMON_GTREFCLK00;
  wire [0 :0] GTYE4_COMMON_QPLL0LOCK;
  wire [0 :0] GTYE4_COMMON_QPLL0OUTCLK;
  wire [0 :0] GTYE4_COMMON_QPLL0OUTREFCLK;
  wire [0 :0] GTYE4_COMMON_QPLL1RESET;
  wire [0 :0] GTYE4_COMMON_QPLL1LOCK;
  wire [0 :0] GTYE4_COMMON_QPLL1OUTCLK;
  wire [0 :0] GTYE4_COMMON_QPLL1OUTREFCLK;
  wire                               [15:0] GTYE4_COMMON_DRPADDR;
  wire                               [0:0] GTYE4_COMMON_DRPCLK;
  wire                               [15:0] GTYE4_COMMON_DRPDI;
  wire                               [0:0] GTYE4_COMMON_DRPEN;
  wire                               [0:0] GTYE4_COMMON_DRPWE;
  wire                               [15:0] GTYE4_COMMON_DRPDO;
  wire                               [0:0] GTYE4_COMMON_DRPRDY;

  wire GTYE4_COMMON_GTSOUTHREFCLK00;
  wire GTYE4_COMMON_GTNORTHREFCLK00;
  
  
  assign GTYE4_COMMON_GTSOUTHREFCLK00 = south_refclk;
  assign GTYE4_COMMON_GTNORTHREFCLK00 = north_refclk;


  // Connect only required internal signals to GT Common block
  assign GTYE4_COMMON_QPLL0RESET = qpll0reset;
  assign GTYE4_COMMON_GTREFCLK00 = refclk;
  assign qpll0lock               = GTYE4_COMMON_QPLL0LOCK;
  assign qpll0outclk             = GTYE4_COMMON_QPLL0OUTCLK;
  assign qpll0outrefclk          = GTYE4_COMMON_QPLL0OUTREFCLK;  
  assign GTYE4_COMMON_QPLL1RESET = qpll1reset;
  assign qpll1lock               = GTYE4_COMMON_QPLL1LOCK;
  assign qpll1outclk             = GTYE4_COMMON_QPLL1OUTCLK;
  assign qpll1outrefclk          = GTYE4_COMMON_QPLL1OUTREFCLK;
  assign GTYE4_COMMON_DRPADDR    = 16'b0;
  assign GTYE4_COMMON_DRPCLK     = drpclk_common_in;
  assign GTYE4_COMMON_DRPDI      = 16'b0;
  assign GTYE4_COMMON_DRPEN      = 1'b0;
  assign GTYE4_COMMON_DRPWE      = 1'b0;

  l_ethernet_1_gt_gtye4_common_wrapper l_ethernet_1_gt_gtye4_common_wrapper_i
  (
   .GTYE4_COMMON_BGBYPASSB(1'b1),
   .GTYE4_COMMON_BGMONITORENB(1'b1),
   .GTYE4_COMMON_BGPDB(1'b1),
   .GTYE4_COMMON_BGRCALOVRD(5'b10000),
   .GTYE4_COMMON_BGRCALOVRDENB(1'b1),
   .GTYE4_COMMON_DRPADDR(16'b0000000000000000),
   .GTYE4_COMMON_DRPCLK(1'b0),
   .GTYE4_COMMON_DRPDI(16'b0000000000000000),
   .GTYE4_COMMON_DRPDO(),
   .GTYE4_COMMON_DRPEN(1'b0),
   .GTYE4_COMMON_DRPRDY(),
   .GTYE4_COMMON_DRPWE(1'b0),
   .GTYE4_COMMON_GTGREFCLK0(1'b0),
   .GTYE4_COMMON_GTGREFCLK1(1'b0),
   .GTYE4_COMMON_GTNORTHREFCLK00(GTYE4_COMMON_GTNORTHREFCLK00),
   .GTYE4_COMMON_GTNORTHREFCLK01(1'b0),
   .GTYE4_COMMON_GTNORTHREFCLK10(1'b0),
   .GTYE4_COMMON_GTNORTHREFCLK11(1'b0),
   .GTYE4_COMMON_GTREFCLK00(GTYE4_COMMON_GTREFCLK00),
   .GTYE4_COMMON_GTREFCLK01(1'b0),
   .GTYE4_COMMON_GTREFCLK10(1'b0),
   .GTYE4_COMMON_GTREFCLK11(1'b0),
   .GTYE4_COMMON_GTSOUTHREFCLK00(GTYE4_COMMON_GTSOUTHREFCLK00),
   .GTYE4_COMMON_GTSOUTHREFCLK01(1'b0),
   .GTYE4_COMMON_GTSOUTHREFCLK10(1'b0),
   .GTYE4_COMMON_GTSOUTHREFCLK11(1'b0),
   .GTYE4_COMMON_PCIERATEQPLL0(3'b000),
   .GTYE4_COMMON_PCIERATEQPLL1(3'b000),
   .GTYE4_COMMON_PMARSVD0(8'b00000000),
   .GTYE4_COMMON_PMARSVD1(8'b00000000),
   .GTYE4_COMMON_PMARSVDOUT0(),
   .GTYE4_COMMON_PMARSVDOUT1(),
   .GTYE4_COMMON_QPLL0CLKRSVD0(1'b0),
   .GTYE4_COMMON_QPLL0CLKRSVD1(1'b0),
   .GTYE4_COMMON_QPLL0FBCLKLOST(),
   .GTYE4_COMMON_QPLL0FBDIV(8'b00000000),
   .GTYE4_COMMON_QPLL0LOCK(GTYE4_COMMON_QPLL0LOCK),
   .GTYE4_COMMON_QPLL0LOCKDETCLK(1'b0),
   .GTYE4_COMMON_QPLL0LOCKEN(1'b1),
   .GTYE4_COMMON_QPLL0OUTCLK(GTYE4_COMMON_QPLL0OUTCLK),
   .GTYE4_COMMON_QPLL0OUTREFCLK(GTYE4_COMMON_QPLL0OUTREFCLK),
   .GTYE4_COMMON_QPLL0PD(1'b0),
   .GTYE4_COMMON_QPLL0REFCLKLOST(),
   .GTYE4_COMMON_QPLL0REFCLKSEL(GTYE4_COMMON_QPLL0REFCLKSEL),
   .GTYE4_COMMON_QPLL0RESET(GTYE4_COMMON_QPLL0RESET),
   .GTYE4_COMMON_QPLL1CLKRSVD0(1'b0),
   .GTYE4_COMMON_QPLL1CLKRSVD1(1'b0),
   .GTYE4_COMMON_QPLL1FBCLKLOST(),
   .GTYE4_COMMON_QPLL1FBDIV(8'b00000000),
   .GTYE4_COMMON_QPLL1LOCK(GTYE4_COMMON_QPLL1LOCK),
   .GTYE4_COMMON_QPLL1LOCKDETCLK(1'b0),
   .GTYE4_COMMON_QPLL1LOCKEN(1'b0),
   .GTYE4_COMMON_QPLL1OUTCLK(GTYE4_COMMON_QPLL1OUTCLK),
   .GTYE4_COMMON_QPLL1OUTREFCLK(GTYE4_COMMON_QPLL1OUTREFCLK),
   .GTYE4_COMMON_QPLL1PD(1'b1),
   .GTYE4_COMMON_QPLL1REFCLKLOST(),
   .GTYE4_COMMON_QPLL1REFCLKSEL(3'b001),
   .GTYE4_COMMON_QPLL1RESET(GTYE4_COMMON_QPLL1RESET),
   .GTYE4_COMMON_QPLLDMONITOR0(),
   .GTYE4_COMMON_QPLLDMONITOR1(),
   .GTYE4_COMMON_QPLLRSVD1(8'b00000000),
   .GTYE4_COMMON_QPLLRSVD2(5'b00000),
   .GTYE4_COMMON_QPLLRSVD3(5'b00000),
   .GTYE4_COMMON_QPLLRSVD4(8'b00000000),
   .GTYE4_COMMON_RCALENB(1'b1),
   .GTYE4_COMMON_REFCLKOUTMONITOR0(),
   .GTYE4_COMMON_REFCLKOUTMONITOR1(),
   .GTYE4_COMMON_RXRECCLK0SEL(),
   .GTYE4_COMMON_RXRECCLK1SEL(),
   .GTYE4_COMMON_SDM0DATA(25'b0000000000000000000000000),
   .GTYE4_COMMON_SDM0FINALOUT(),
   .GTYE4_COMMON_SDM0RESET(1'b0),
   .GTYE4_COMMON_SDM0TESTDATA(),
   .GTYE4_COMMON_SDM0TOGGLE(1'b0),
   .GTYE4_COMMON_SDM0WIDTH(2'b00),
   .GTYE4_COMMON_SDM1DATA(25'b0000000000000000000000000),
   .GTYE4_COMMON_SDM1FINALOUT(),
   .GTYE4_COMMON_SDM1RESET(1'b0),
   .GTYE4_COMMON_SDM1TESTDATA(),
   .GTYE4_COMMON_SDM1TOGGLE(1'b0),
   .GTYE4_COMMON_SDM1WIDTH(2'b00),
   .GTYE4_COMMON_UBCFGSTREAMEN(1'b0),
   .GTYE4_COMMON_UBDADDR(),
   .GTYE4_COMMON_UBDEN(),
   .GTYE4_COMMON_UBDI(),
   .GTYE4_COMMON_UBDO(16'b0000000000000000),
   .GTYE4_COMMON_UBDRDY(1'b0),
   .GTYE4_COMMON_UBDWE(),
   .GTYE4_COMMON_UBENABLE(1'b0),
   .GTYE4_COMMON_UBGPI(2'b00),
   .GTYE4_COMMON_UBINTR(2'b00),
   .GTYE4_COMMON_UBIOLMBRST(1'b0),
   .GTYE4_COMMON_UBMBRST(1'b0),
   .GTYE4_COMMON_UBMDMCAPTURE(1'b0),
   .GTYE4_COMMON_UBMDMDBGRST(1'b0),
   .GTYE4_COMMON_UBMDMDBGUPDATE(1'b0),
   .GTYE4_COMMON_UBMDMREGEN(4'b0000),
   .GTYE4_COMMON_UBMDMSHIFT(1'b0),
   .GTYE4_COMMON_UBMDMSYSRST(1'b0),
   .GTYE4_COMMON_UBMDMTCK(1'b0),
   .GTYE4_COMMON_UBMDMTDI(1'b0),
   .GTYE4_COMMON_UBMDMTDO(),
   .GTYE4_COMMON_UBRSVDOUT(),
   .GTYE4_COMMON_UBTXUART()
  );

三、上板

上板接收数据一切正常。
在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺子学不会FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值