⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtp_dual_1000x.v

📁 Xilinx Virtex5 SGMII高速串行通信例程。
💻 V
📖 第 1 页 / 共 2 页
字号:
		.RXENMCOMMAALIGN0         (ENMCOMMAALIGN_0_REC),
		.RXENPCOMMAALIGN0         (ENPCOMMAALIGN_0_REC),
		.RXCDRRESET0              (1'b0),
		.RXCHBONDI0               (3'b000),
		.RXCOMMADETUSE0           (1'b1),
		.RXDATAWIDTH0             (1'b0),
		.RXDEC8B10BUSE0           (1'b1),
		.RXENCHANSYNC0            (1'b0),
		.RXENEQB0                 (1'b1),
		.RXENPRBSTST0             (2'b00),
		.RXENSAMPLEALIGN0         (1'b0),
		.RXEQMIX0                 (2'b00),
		.RXEQPOLE0                (4'b0000),
		.RXN0                     (RX1N_0),
		.RXP0                     (RX1P_0),
		.RXPMASETPHASE0           (1'b0),
		.RXPOLARITY0              (1'b0),
		.RXPOWERDOWN0             (2'b00),
		.RXSLIDE0                 (1'b0),
		.RXUSRCLK0                (RXRECCLK_0_BUFR),
		.RXUSRCLK20               (RXRECCLK_0_BUFR),
		.TXBUFDIFFCTRL0           (3'b000),
		.TXBYPASS8B10B0           (2'b00),
		.TXCHARDISPMODE0          ({1'b0, TXCHARDISPMODE_0}),
		.TXCHARDISPVAL0           ({1'b0, TXCHARDISPVAL_0}),
		.TXCHARISK0               ({1'b0, TXCHARISK_0}),
		.TXDATA0                  ({8'b00000000, TXDATA_0}),
		.TXCOMSTART0              (1'b0),
		.TXCOMTYPE0               (1'b0),
		.TXDATAWIDTH0             (1'b0),
		.TXDETECTRX0              (1'b0),
		.TXDIFFCTRL0              (3'b000),
		.TXELECIDLE0              (1'b0),
		.TXENC8B10BUSE0           (1'b1),
		.TXENPRBSTST0             (2'b00),
		.TXINHIBIT0               (1'b0),
		.TXPOLARITY0              (1'b0),
		.TXPOWERDOWN0             (2'b00),
		.TXPREEMPHASIS0           (3'b000),
		.TXRESET0                 (TXRESET_0),
		.TXUSRCLK0                (TXUSRCLK_0),
		.TXUSRCLK20               (TXUSRCLK2_0),
		.RXELECIDLERESET0         (rxelecidlereset0_i),
        // unused
		.PHYSTATUS1               (),
		.RESETDONE1               (),
		.RXBUFSTATUS1             (),
		.RXBYTEISALIGNED1         (),
		.RXBYTEREALIGN1           (),
		.RXCHANBONDSEQ1           (),
		.RXCHANISALIGNED1         (),
		.RXCHANREALIGN1           (),
		.RXCHARISCOMMA1           (),
		.RXCHARISK1               (),
		.RXCHBONDO1               (),
		.RXCLKCORCNT1             (),
		.RXCOMMADET1              (),
		.RXDATA1                  (),
		.RXDISPERR1               (),
		.RXELECIDLE1              (),
		.RXLOSSOFSYNC1            (),
		.RXNOTINTABLE1            (),
		.RXOVERSAMPLEERR1         (),
		.RXPRBSERR1               (),
		.RXRECCLK1                (),
		.RXRUNDISP1               (),
		.RXSTATUS1                (),
		.RXVALID1                 (),
		.TXBUFSTATUS1             (),
		.TXKERR1                  (),
		.TXN1                     (TX1N_1_UNUSED),
		.TXOUTCLK1                (),
		.TXP1                     (TX1P_1_UNUSED),
		.TXRUNDISP1               (),
		.LOOPBACK1                (3'b000),
		.PRBSCNTRESET1            (1'b0),		
		.RXBUFRESET1              (1'b0),
		.RXCDRRESET1              (1'b0),
		.RXCHBONDI1               (3'b000),
		.RXCOMMADETUSE1           (1'b0),
		.RXDATAWIDTH1             (1'b0),
		.RXDEC8B10BUSE1           (1'b0),
		.RXENCHANSYNC1            (1'b0),
		.RXENEQB1                 (1'b1),
		.RXENMCOMMAALIGN1         (1'b0),
		.RXENPCOMMAALIGN1         (1'b0),
		.RXENPRBSTST1             (2'b00),
		.RXENSAMPLEALIGN1         (1'b0),
		.RXEQMIX1                 (2'b00),
		.RXEQPOLE1                (4'b0000),
		.RXN1                     (RX1N_1_UNUSED),
		.RXP1                     (RX1P_1_UNUSED),
		.RXPMASETPHASE1           (1'b0),
		.RXPOLARITY1              (1'b0),
		.RXPOWERDOWN1             (2'b11),
		.RXRESET1                 (1'b0),
		.RXSLIDE1                 (1'b0),
		.RXUSRCLK1                (1'b0),
		.RXUSRCLK21               (1'b0),
		.TXBUFDIFFCTRL1           (3'b000),
		.TXBYPASS8B10B1           (2'b00),
		.TXCHARDISPMODE1          (2'b00),
		.TXCHARDISPVAL1           (2'b00),
		.TXCHARISK1               (2'b00),
		.TXCOMSTART1              (1'b0),
		.TXCOMTYPE1               (1'b0),
		.TXDATA1                  (16'h0000),
		.TXDATAWIDTH1             (1'b0),
		.TXDETECTRX1              (1'b0),
		.TXDIFFCTRL1              (3'b000),
		.TXELECIDLE1              (1'b0),
		.TXENC8B10BUSE1           (1'b0),
		.TXENPRBSTST1             (2'b00),
		.TXINHIBIT1               (1'b0),
		.TXPOLARITY1              (1'b0),
		.TXPOWERDOWN1             (2'b11),
		.TXPREEMPHASIS1           (3'b000),
		.TXRESET1                 (1'b0),
		.TXUSRCLK1                (1'b0),
		.TXUSRCLK21               (1'b0),
		.RXELECIDLERESET1         (1'b0));
    //synthesis attribute CLK25_DIVIDER of GTP_1000X is 5
    defparam GTP_1000X.CLK25_DIVIDER = 5;
    //synthesis attribute CLK_COR_ADJ_LEN_0 of GTP_1000X is 2
    defparam GTP_1000X.CLK_COR_ADJ_LEN_0 = 2;
    //synthesis attribute CLK_COR_ADJ_LEN_1 of GTP_1000X is 2
    defparam GTP_1000X.CLK_COR_ADJ_LEN_1 = 2;
    //synthesis attribute CLK_COR_DET_LEN_0 of GTP_1000X is 2
    defparam GTP_1000X.CLK_COR_DET_LEN_0 = 2;
    //synthesis attribute CLK_COR_DET_LEN_1 of GTP_1000X is 2
    defparam GTP_1000X.CLK_COR_DET_LEN_1 = 2;
    //synthesis attribute CLK_COR_SEQ_1_1_0 of GTP_1000X is 0110111100
    defparam GTP_1000X.CLK_COR_SEQ_1_1_0 = 10'b0110111100;
    //synthesis attribute CLK_COR_SEQ_1_1_1 of GTP_1000X is 0110111100
    defparam GTP_1000X.CLK_COR_SEQ_1_1_1 = 10'b0110111100;
    //synthesis attribute CLK_COR_SEQ_1_2_0 of GTP_1000X is 0001010000
    defparam GTP_1000X.CLK_COR_SEQ_1_2_0 = 10'b0001010000;
    //synthesis attribute CLK_COR_SEQ_1_2_1 of GTP_1000X is 0001010000
    defparam GTP_1000X.CLK_COR_SEQ_1_2_1 = 10'b0001010000;
    //synthesis attribute CLK_COR_SEQ_2_1_0 of GTP_1000X is 0110111100
    defparam GTP_1000X.CLK_COR_SEQ_2_1_0 = 10'b0110111100;
    //synthesis attribute CLK_COR_SEQ_2_1_1 of GTP_1000X is 0110111100
    defparam GTP_1000X.CLK_COR_SEQ_2_1_1 = 10'b0110111100;
    //synthesis attribute CLK_COR_SEQ_2_2_0 of GTP_1000X is 0001010000
    defparam GTP_1000X.CLK_COR_SEQ_2_2_0 = 10'b0001010000;
    //synthesis attribute CLK_COR_SEQ_2_2_1 of GTP_1000X is 0001010000
    defparam GTP_1000X.CLK_COR_SEQ_2_2_1 = 10'b0001010000;
    //synthesis attribute CLK_COR_SEQ_2_USE_0 of GTP_1000X is "TRUE"
    defparam GTP_1000X.CLK_COR_SEQ_2_USE_0 = "TRUE";
    //synthesis attribute COMMA_10B_ENABLE_0 of GTP_1000X is 0001111111
    defparam GTP_1000X.COMMA_10B_ENABLE_0 = 10'b0001111111;
    //synthesis attribute COMMA_10B_ENABLE_1 of GTP_1000X is 0001111111
    defparam GTP_1000X.COMMA_10B_ENABLE_1 = 10'b0001111111;
    //synthesis attribute MCOMMA_10B_VALUE_0 of GTP_1000X is 1010000011
    defparam GTP_1000X.MCOMMA_10B_VALUE_0 = 10'b1010000011;
    //synthesis attribute MCOMMA_10B_VALUE_1 of GTP_1000X is 1010000011
    defparam GTP_1000X.MCOMMA_10B_VALUE_1 = 10'b1010000011;
    //synthesis attribute PCI_EXPRESS_MODE_0 of GTP_1000X is "FALSE"
    defparam GTP_1000X.PCI_EXPRESS_MODE_0 = "FALSE";
    //synthesis attribute PCI_EXPRESS_MODE_1 of GTP_1000X is "FALSE"
    defparam GTP_1000X.PCI_EXPRESS_MODE_1 = "FALSE";
    //synthesis attribute PCOMMA_10B_VALUE_0 of GTP_1000X is 0101111100
    defparam GTP_1000X.PCOMMA_10B_VALUE_0 = 10'b0101111100;
    //synthesis attribute PCOMMA_10B_VALUE_1 of GTP_1000X is 0101111100
    defparam GTP_1000X.PCOMMA_10B_VALUE_1 = 10'b0101111100;
    //synthesis attribute PLL_DIVSEL_FB of GTP_1000X is 2
    defparam GTP_1000X.PLL_DIVSEL_FB = 2;
    //synthesis attribute PLL_DIVSEL_REF of GTP_1000X is 1
    defparam GTP_1000X.PLL_DIVSEL_REF = 1;
    //synthesis attribute PLL_RXDIVSEL_OUT_0 of GTP_1000X is 2
    defparam GTP_1000X.PLL_RXDIVSEL_OUT_0 = 2;
    //synthesis attribute PLL_RXDIVSEL_OUT_1 of GTP_1000X is 2
    defparam GTP_1000X.PLL_RXDIVSEL_OUT_1 = 2;
    //synthesis attribute PLL_TXDIVSEL_COMM_OUT of GTP_1000X is 2
    defparam GTP_1000X.PLL_TXDIVSEL_COMM_OUT = 2;
    //synthesis attribute TXRX_INVERT_0 of GTP_1000X is 00000
    defparam GTP_1000X.TXRX_INVERT_0 = 5'b00000;
    //synthesis attribute TXRX_INVERT_1 of GTP_1000X is 00000
    defparam GTP_1000X.TXRX_INVERT_1 = 5'b00000;
    //synthesis attribute AC_CAP_DIS_0 of GTP_1000X is "TRUE"
    defparam GTP_1000X.AC_CAP_DIS_0 = "TRUE";
    //synthesis attribute AC_CAP_DIS_1 of GTP_1000X is "TRUE"
    defparam GTP_1000X.AC_CAP_DIS_1 = "TRUE";
    //synthesis attribute RCV_TERM_MID_0 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_MID_0 = "FALSE";
    //synthesis attribute RCV_TERM_MID_1 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_MID_1 = "FALSE";
    //synthesis attribute RCV_TERM_GND_0 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_GND_0 = "FALSE";
    //synthesis attribute RCV_TERM_GND_1 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_GND_1 = "FALSE";
    //synthesis attribute RCV_TERM_VTTRX_0 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_VTTRX_0 = "FALSE";
    //synthesis attribute RCV_TERM_VTTRX_1 of GTP_1000X is "FALSE"
    defparam GTP_1000X.RCV_TERM_VTTRX_1 = "FALSE";
    //synthesis attribute TX_DIFF_BOOST_0 of GTP_1000X is "TRUE"
    defparam GTP_1000X.TX_DIFF_BOOST_0 = "TRUE";
    //synthesis attribute TX_DIFF_BOOST_1 of GTP_1000X is "TRUE"
    defparam GTP_1000X.TX_DIFF_BOOST_1 = "TRUE";
    //synthesis attribute PLL_SATA_0 of GTP_1000X is "TRUE"
    defparam GTP_1000X.PLL_SATA_0 = "TRUE";
    //synthesis attribute PLL_SATA_1 of GTP_1000X is "TRUE"
    defparam GTP_1000X.PLL_SATA_1 = "TRUE";
    //synthesis attribute PMA_RX_CFG_0 of GTP_1000X is 25'h0dce110
    defparam GTP_1000X.PMA_RX_CFG_0 = 25'h0dce110;
    //synthesis attribute PMA_RX_CFG_1 of GTP_1000X is 25'h0dce110
    defparam GTP_1000X.PMA_RX_CFG_1 = 25'h0dce110;



   // Route RXRECLK0 through a regional clock buffer
   BUFR rxrecclk0bufr (.I(RXRECCLK_0), .O(RXRECCLK_0_BUFR), .CE(1'b1), .CLR(1'b0)); 

   // Instantiate the RX elastic buffer. This performs clock
   // correction on the incoming data to cope with differences 
   // between the user clock and the clock recovered from the data.
   rx_elastic_buffer rx_elastic_buffer_inst_0(
    // Signals from the GTP on RXRECCLK. 
    .rxrecclk          (RXRECCLK_0_BUFR),
    .reset             (RXRESET_0_REC),
    .rxchariscomma_rec (RXCHARISCOMMA_0_REC),
    .rxcharisk_rec     (RXCHARISK_0_REC),
    .rxdisperr_rec     (RXDISPERR_0_REC),
    .rxnotintable_rec  (RXNOTINTABLE_0_REC),
    .rxrundisp_rec     (RXRUNDISP_0_REC),
    .rxdata_rec        (RXDATA_0_REC),

    // Signals reclocked onto USRCLK.
    .rxusrclk2         (RXUSRCLK2_0),
    .rxreset           (RXRESET_0),
    .rxchariscomma_usr (RXCHARISCOMMA_0),
    .rxcharisk_usr     (RXCHARISK_0_INT),
    .rxdisperr_usr     (RXDISPERR_0_INT),
    .rxnotintable_usr  (RXNOTINTABLE_0_INT),
    .rxrundisp_usr     (RXRUNDISP_0_INT),
    .rxclkcorcnt_usr   (RXCLKCORCNT_0),
    .rxbuferr          (RXBUFERR_0_INT),
    .rxdata_usr        (RXDATA_0_INT)
  );

  assign RXBUFERR_0 = RXBUFERR_0_INT | RXBUFERR_0_REC;

  // Resynchronise the RXRESET onto the RXRECCLK domain
  always @(posedge RXRECCLK_0_BUFR or posedge RXRESET_0)
  begin
    if (RXRESET_0 == 1'b1)
    begin
        RXRESET_0_REG  <=1'b1;
        RXRESET_0_REC  <=1'b1;
    end
    else
    begin
        RXRESET_0_REG  <= 1'b0;
        RXRESET_0_REC  <= RXRESET_0_REG;
    end
  end

  // Re-align signals from the USRCLK domain into the 
  // RXRECCLK domain
  always @(posedge RXRECCLK_0_BUFR or posedge RXRESET_0_REC)
  begin
    if (RXRESET_0_REC == 1'b1)
    begin
      ENPCOMMAALIGN_0_REG <= 1'b0;
      ENPCOMMAALIGN_0_REC <= 1'b0;
      ENMCOMMAALIGN_0_REG <= 1'b0;
      ENMCOMMAALIGN_0_REC <= 1'b0;
    end    
    else
    begin
      ENPCOMMAALIGN_0_REG <= ENPCOMMAALIGN_0;
      ENPCOMMAALIGN_0_REC <= ENPCOMMAALIGN_0_REG;
      ENMCOMMAALIGN_0_REG <= ENMCOMMAALIGN_0;
      ENMCOMMAALIGN_0_REC <= ENMCOMMAALIGN_0_REG;
    end
  end
  
 
                       
   //---------------------------------------------------------------------------
   // EMAC0 to GTP logic shim
   //---------------------------------------------------------------------------

   // When the RXNOTINTABLE condition is detected, the Virtex5 RocketIO
   // GTP outputs the raw 10B code in a bit swapped order to that of the
   // Virtex-II Pro RocketIO.
   always @ (RXNOTINTABLE_0_INT, RXDISPERR_0_INT, RXCHARISK_0_INT, RXDATA_0_INT,
                         RXRUNDISP_0_INT)
   begin
      if (RXNOTINTABLE_0_INT == 1'b1)
      begin
         RXDATA_0[0] <= RXDISPERR_0_INT;
         RXDATA_0[1] <= RXCHARISK_0_INT;
         RXDATA_0[2] <= RXDATA_0_INT[7];
         RXDATA_0[3] <= RXDATA_0_INT[6];
         RXDATA_0[4] <= RXDATA_0_INT[5];
         RXDATA_0[5] <= RXDATA_0_INT[4];
         RXDATA_0[6] <= RXDATA_0_INT[3];
         RXDATA_0[7] <= RXDATA_0_INT[2];
         RXRUNDISP_0 <= RXDATA_0_INT[1];
         RXCHARISK_0 <= RXDATA_0_INT[0];
      end
      else
      begin
         RXDATA_0    <= RXDATA_0_INT;
         RXRUNDISP_0 <= RXRUNDISP_0_INT;
         RXCHARISK_0 <= RXCHARISK_0_INT;
      end
   end



endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -