描述
要通过其他未使用的GTX正确转发参考时钟,需要实例化GTX。本答复记录提供了一种正确的方法,用于实例化具有最小互连的GTX并对用户设计产生影响,并提供了一个示例Verilog实例。
在12.3及更高版本中,这种情况伴随着以下错误消息:
“ERROR:PhysDesignRules:2270”
如果参考时钟引脚未通过LOC约束绑定到特定位置,则可能会看到此错误。 RocketIO向导会在示例设计的UCF文件中自动生成这些约束,并可用作参考。
解
GTX需要通过连接的3组端口进行实例化:TX串行对,RX串行对和CLKIN端口。
- 串行对需要连接到设计顶层的输出端口。
- CLKIN端口需要连接到BUFG或IBUFDS的输出。
- 可以实例化本地IBUFDS,或者可以使用在设计中使用的相邻IBUFDS。
TXPOWERDOWN [1:0]和RXPOWERDOWN {1:0]可以连接到2’b11以节省功耗,但REFCLKPWRDNB需要连接到1’b1以保持参考时钟路由供电。
以下实例已经过测试,可以在这方面发挥作用:
assign tied_to_ground_i = 1’b0;
assign tied_to_ground_vec_i = 64’h0000000000000000;
assign tied_to_vcc_i = 1’b1;
assign tied_to_vcc_vec_i = 64’hffffffffffffffff;
GTX_DUAL gtx_dual_i
(
// ———————- Loopback和Powerdown Ports ———————-
.LOOPBACK0(tied_to_vcc_vec_i [2:0]),
.LOOPBACK1(tied_to_vcc_vec_i [2:0]),
.RXPOWERDOWN0(tied_to_vcc_vec_i [1:0]),
.RXPOWERDOWN1(tied_to_vcc_vec_i [1:0]),
.TXPOWERDOWN0(tied_to_vcc_vec_i [1:0]),
.TXPOWERDOWN1(tied_to_vcc_vec_i [1:0]),
// ———————接收端口 – 8b10b解码器———————-
.RXCHARISCOMMA0(),
.RXCHARISCOMMA1(),
.RXCHARISK0(),
.RXCHARISK1(),
.RXDEC8B10BUSE0(tied_to_ground_i),
.RXDEC8B10BUSE1(tied_to_ground_i),
.RXDISPERR0(),
.RXDISPERR1(),
.RXNOTINTABLE0(),
.RXNOTINTABLE1(),
.RXRUNDISP0(),
.RXRUNDISP1(),
// —————–接收端口 – 通道绑定端口——————
.RXCHANBONDSEQ0(),
.RXCHANBONDSEQ1(),
.RXCHBONDI0(tied_to_ground_vec_i [2:0]),
.RXCHBONDI1(tied_to_ground_vec_i [2:0]),
.RXCHBONDO0(),
.RXCHBONDO1(),
.RXENCHANSYNC0(tied_to_ground_i),
.RXENCHANSYNC1(tied_to_ground_i),
// —————–接收端口 – 时钟校正端口—————–
.RXCLKCORCNT0(),
.RXCLKCORCNT1(),
// ————-接收端口 – 逗号检测和对齐————–
.RXBYTEISALIGNED0(),
.RXBYTEISALIGNED1(),
.RXBYTEREALIGN0(),
.RXBYTEREALIGN1(),
.RXCOMMADET0(),
.RXCOMMADET1(),
.RXCOMMADETUSE0(tied_to_ground_i),
.RXCOMMADETUSE1(tied_to_ground_i),
.RXENMCOMMAALIGN0(tied_to_ground_i),
.RXENMCOMMAALIGN1(tied_to_ground_i),
.RXENPCOMMAALIGN0(tied_to_ground_i),
.RXENPCOMMAALIGN1(tied_to_ground_i),
.RXSLIDE0(tied_to_ground_i),
.RXSLIDE1(tied_to_ground_i),
// ———————接收端口 – PRBS检测———————
.PRBSCNTRESET0(tied_to_ground_i),
.PRBSCNTRESET1(tied_to_ground_i),
.RXENPRBSTST0(tied_to_ground_vec_i [1:0]),
.RXENPRBSTST1(tied_to_ground_vec_i [1:0]),
.RXPRBSERR0(),
.RXPRBSERR1(),
// —————–接收端口 – RX数据路径接口—————–
.RXDATA0(),
.RXDATA1(),
.RXDATAWIDTH0(tied_to_vcc_i),
.RXDATAWIDTH1(tied_to_vcc_i),
.RXRECCLK0(),
.RXRECCLK1(),
.RXRESET0(tied_to_ground_i),
.RXRESET1(tied_to_ground_i),
.RXUSRCLK0(tied_to_ground_i),
.RXUSRCLK1(tied_to_ground_i),
.RXUSRCLK20(tied_to_ground_i),
.RXUSRCLK21(tied_to_ground_i),
// —–接收端口 – RX驱动器,OOB信号,耦合和公式,CDR ——
.RXCDRRESET0(tied_to_ground_i),
.RXCDRRESET1(tied_to_ground_i),
.RXELECIDLE0(),
.RXELECIDLE1(),
.RXENEQB0(tied_to_vcc_i),
.RXENEQB1(tied_to_vcc_i),
.RXEQMIX0(tied_to_ground_vec_i [1:0]),
.RXEQMIX1(tied_to_ground_vec_i [1:0]),
.RXEQPOLE0(tied_to_ground_vec_i [3:0]),
.RXEQPOLE1(tied_to_ground_vec_i [3:0]),
.RXN0(RXN0_IN),
.RXN1(RXN1_IN),
.RXP0(RXP0_IN),
.RXP1(RXP1_IN),
// ——接收端口 – RX弹性缓冲器和相位对准端口——-
.RXBUFRESET0(tied_to_ground_i),
.RXBUFRESET1(tied_to_ground_i),
.RXBUFSTATUS0(),
.RXBUFSTATUS1(),
.RXCHANISALIGNED0(),
.RXCHANISALIGNED1(),
.RXCHANREALIGN0(),
.RXCHANREALIGN1(),
.RXPMASETPHASE0(tied_to_ground_i),
.RXPMASETPHASE1(tied_to_ground_i),
.RXSTATUS0(),
.RXSTATUS1(),
// ————-接收端口 – RX丢失同步状态机————–
.RXLOSSOFSYNC0(),
.RXLOSSOFSYNC1(),
// ——————–接收端口 – RX过采样———————
.RXENSAMPLEALIGN0(tied_to_ground_i),
.RXENSAMPLEALIGN1(tied_to_ground_i),
.RXOVERSAMPLEERR0(),
.RXOVERSAMPLEERR1(),
// ————接收端口 – PCI Express的RX管道控制————-
.PHYSTATUS0(),
.PHYSTATUS1(),
.RXVALID0(),
.RXVALID1(),
// —————接收端口 – RX极性控制端口—————-
.RXPOLARITY0(tied_to_ground_i),
.RXPOLARITY1(tied_to_ground_i),
// ———–共享端口 – 动态重配置端口(DRP)————
.DADDR(tied_to_ground_vec_i [6:0]),
.DCLK(tied_to_ground_i),
.DEN(tied_to_ground_i),
.DI(tied_to_ground_vec_i [15:0]),
.DO(),
.DRDY(),
.DWE(tied_to_ground_i),
// ——————-共享端口 – 平铺和PLL端口——————–
.CLKIN(CLKIN_IN),
.GTXRESET(tied_to_ground_i),
.GTXTEST(tied_to_ground_vec_i [3:0]),
.INTDATAWIDTH(tied_to_vcc_i),
.PLLLKDET(),
.PLLLKDETEN(tied_to_vcc_i),
.PLLPOWERDOWN(tied_to_ground_i),
.REFCLKOUT(),
.REFCLKPWRDNB(tied_to_vcc_i),
.RESETDONE0(),
.RESETDONE1(),
// ————–传输端口 – 8b10b编码器控制端口————–
.TXBYPASS8B10B0(tied_to_ground_vec_i [1:0]),
.TXBYPASS8B10B1(tied_to_ground_vec_i [1:0]),
.TXCHARDISPMODE0(tied_to_ground_vec_i [1:0]),
.TXCHARDISPMODE1(tied_to_ground_vec_i [1:0]),
.TXCHARDISPVAL0(tied_to_ground_vec_i [1:0]),
.TXCHARDISPVAL1(tied_to_ground_vec_i [1:0]),
.TXCHARISK0(tied_to_ground_vec_i [1:0]),
.TXCHARISK1(tied_to_ground_vec_i [1:0]),
.TXENC8B10BUSE0(tied_to_ground_i),
.TXENC8B10BUSE1(tied_to_ground_i),
.TXKERR0(),
.TXKERR1(),
.TXRUNDISP0(),
.TXRUNDISP1(),
// ———–发送端口 – TX缓冲和相位对齐————
.TXBUFSTATUS0(),
.TXBUFSTATUS1(),
// —————-传输端口 – TX数据路径接口—————–
.TXDATA0(tied_to_ground_vec_i [15:0]),
.TXDATA1(tied_to_ground_vec_i [15:0]),
.TXDATAWIDTH0(tied_to_vcc_i),
.TXDATAWIDTH1(tied_to_vcc_i),
.TXOUTCLK0(),
.TXOUTCLK1(),
.TXRESET0(tied_to_ground_i),
.TXRESET1(tied_to_ground_i),
.TXUSRCLK0(tied_to_ground_i),
.TXUSRCLK1(tied_to_ground_i),
.TXUSRCLK20(tied_to_ground_i),
.TXUSRCLK21(tied_to_ground_i),
// ————-传输端口 – TX驱动程序和OOB信令————–
.TXBUFDIFFCTRL0(tied_to_vcc_vec_i [2:0]),
.TXBUFDIFFCTRL1(tied_to_vcc_vec_i [2:0]),
.TXDIFFCTRL0(tied_to_vcc_vec_i [2:0]),
.TXDIFFCTRL1(tied_to_vcc_vec_i [2:0]),
.TXINHIBIT0(tied_to_ground_i),
.TXINHIBIT1(tied_to_ground_i),
.TXN0(TXN0_OUT),
.TXN1(TXN1_OUT),
.TXP0(TXP0_OUT),
.TXP1(TXP1_OUT),
.TXPREEMPHASIS0(tied_to_vcc_vec_i [2:0]),
.TXPREEMPHASIS1(tied_to_vcc_vec_i [2:0]),
// ——————-传输端口 – TX PRBS生成器——————-
.TXENPRBSTST0(tied_to_ground_vec_i [1:0]),
.TXENPRBSTST1(tied_to_ground_vec_i [1:0]),
// ——————传输端口 – TX极性控制——————
.TXPOLARITY0(tied_to_ground_i),
.TXPOLARITY1(tied_to_ground_i),
// —————传输端口 – PCI Express的TX端口—————-
.TXDETECTRX0(tied_to_ground_i),
.TXDETECTRX1(tied_to_ground_i),
.TXELECIDLE0(tied_to_ground_i),
.TXELECIDLE1(tied_to_ground_i),
// ——————-传输端口 – SATA的TX端口——————-
.TXCOMSTART0(tied_to_ground_i),
.TXCOMSTART1(tied_to_ground_i),
.TXCOMTYPE0(tied_to_ground_i),
.TXCOMTYPE1(tied_to_ground_i)
);
没有回复内容