📄 sata_gtp_tile.v
字号:
// Electrical idle reset logic signals wire [2:0] loopback1_i; wire rxelecidle1_i; wire resetdone1_i; wire rxelecidlereset1_i; wire serialloopback1_i; // Shared Electrical Idle Reset signal wire rxenelecidleresetb_i,rxelecidle0_i1;// //********************************* Main Body of Code************************** //------------------------- Static signal Assigments --------------------- 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; // Invert TXUSRCLK2 for GTP0 (Improves timing for 2 byte interface) assign txusrclk20_n = !TXUSRCLK20_IN; // Invert TXUSRCLK2 for GTP1 (Improves timing for 2 byte interface) assign txusrclk21_n = !TXUSRCLK21_IN; //------------------- GTP Datapath byte mapping ----------------- // The GTP provides little endian data (first byte received on RXDATA[7:0]) assign RXDATA0_OUT = rxdata0_i; // The GTP transmits little endian data (TXDATA[7:0] transmitted first) assign txdata0_i = TXDATA0_IN; // The GTP provides little endian data (first byte received on RXDATA[7:0]) assign RXDATA1_OUT = rxdata1_i; // The GTP transmits little endian data (TXDATA[7:0] transmitted first) assign txdata1_i = TXDATA1_IN; //------------------------- Electrical Idle Reset Circuit --------------- assign RXELECIDLE0_OUT = rxelecidle0_i; assign RESETDONE0_OUT = resetdone0_i; assign loopback0_i = LOOPBACK0_IN; assign RXELECIDLE1_OUT = rxelecidle1_i; assign RESETDONE1_OUT = resetdone1_i; assign loopback1_i = LOOPBACK1_IN; FD rxelecidle0_ia (.D(rxelecidle0_i),.Q(rxelecidle0_i1),.C(TXUSRCLK20_IN)); FD rxelecidle0_ib (.D(rxelecidle0_i1),.Q(rxelecidle0_i2),.C(TXUSRCLK20_IN)); //assign rxelecidle0_i1=(rxelecidle0_i && resetdone0_i) && !serialloopback0_i; //Drive RXELECIDLERESET with elec idle reset enabled during normal operation when RXELECIDLE goes high assign rxelecidlereset0_i = ((rxelecidle0_i||rxelecidle0_i1||rxelecidle0_i2) && resetdone0_i) && !serialloopback0_i; assign rxelecidlereset1_i = (rxelecidle1_i && resetdone1_i) && !serialloopback1_i; assign rxenelecidleresetb_i = !(rxelecidlereset0_i||rxelecidlereset1_i); assign serialloopback0_i = !loopback0_i[0] && loopback0_i[1] && !loopback0_i[2]; assign serialloopback1_i = !loopback1_i[0] && loopback1_i[1] && !loopback1_i[2]; //------------------------- GT11 Instantiations -------------------------- GTP_DUAL # ( //_______________________ Simulation-Only Attributes __________________ .SIM_RECEIVER_DETECT_PASS0 ("TRUE"), .SIM_RECEIVER_DETECT_PASS1 ("TRUE"), .SIM_GTPRESET_SPEEDUP (TILE_SIM_GTPRESET_SPEEDUP), .SIM_PLL_PERDIV2 (TILE_SIM_PLL_PERDIV2), //___________________________ Shared Attributes _______________________ //---------------------- Tile and PLL Attributes ---------------------- .CLK25_DIVIDER (6), .CLKINDC_B ("TRUE"), .OOB_CLK_DIVIDER (6), .OVERSAMPLE_MODE ("FALSE"), .PLL_DIVSEL_FB (2), .PLL_DIVSEL_REF (1), .PLL_TXDIVSEL_COMM_OUT (1), .TX_SYNC_FILTERB (1), //______________________ Transmit Interface Attributes ________________ //----------------- TX Buffering and Phase Alignment ------------------ .TX_BUFFER_USE_0 ("TRUE"), .TX_XCLK_SEL_0 ("TXOUT"), .TXRX_INVERT_0 (5'b00000), .TX_BUFFER_USE_1 ("TRUE"), .TX_XCLK_SEL_1 ("TXOUT"), .TXRX_INVERT_1 (5'b00000), //------------------- TX Serial Line Rate settings -------------------- .PLL_TXDIVSEL_OUT_0 (2), .PLL_TXDIVSEL_OUT_1 (2), //------------------- TX Driver and OOB signalling -------------------- .TX_DIFF_BOOST_0 ("TRUE"), .TX_DIFF_BOOST_1 ("TRUE"), //---------------- TX Pipe Control for PCI Express/SATA --------------- .COM_BURST_VAL_0 (4'b0101),//(4'b1111), .COM_BURST_VAL_1 (4'b0101),//(4'b1111), //_______________________ Receive Interface Attributes ________________ //---------- RX Driver,OOB signalling,Coupling and Eq.,CDR ------------ .AC_CAP_DIS_0 ("FALSE"),//("TRUE"), .OOBDETECT_THRESHOLD_0 (3'b000), .PMA_CDR_SCAN_0 (27'h6c07640), .PMA_RX_CFG_0 (25'h09f0051), .RCV_TERM_GND_0 ("FALSE"), .RCV_TERM_MID_0 ("TRUE"),//("FALSE"), .RCV_TERM_VTTRX_0 ("TRUE"), .TERMINATION_IMP_0 (50), .AC_CAP_DIS_1 ("FALSE"),//("TRUE"), .OOBDETECT_THRESHOLD_1 (3'b000), .PMA_CDR_SCAN_1 (27'h6c07640), .PMA_RX_CFG_1 (25'h09f0051), .RCV_TERM_GND_1 ("FALSE"), .RCV_TERM_MID_1 ("TRUE"),//("FALSE"), .RCV_TERM_VTTRX_1 ("TRUE"), .TERMINATION_IMP_1 (50), .PCS_COM_CFG (28'h1680a0e), .TERMINATION_CTRL (5'b10100), .TERMINATION_OVRD ("FALSE"), //------------------- RX Serial Line Rate Settings -------------------- .PLL_RXDIVSEL_OUT_0 (2), .PLL_SATA_0 ("FALSE"), .PLL_RXDIVSEL_OUT_1 (2), .PLL_SATA_1 ("FALSE"), //------------------------- PRBS Detection ---------------------------- .PRBS_ERR_THRESHOLD_0 (32'h00000001), .PRBS_ERR_THRESHOLD_1 (32'h00000001), //------------------- Comma Detection and Alignment ------------------- .ALIGN_COMMA_WORD_0 (2),//(1), .COMMA_10B_ENABLE_0 (10'b1111111111), .COMMA_DOUBLE_0 ("FALSE"), .DEC_MCOMMA_DETECT_0 ("TRUE"), .DEC_PCOMMA_DETECT_0 ("TRUE"), .DEC_VALID_COMMA_ONLY_0 ("FALSE"), .MCOMMA_10B_VALUE_0 (10'b1010000011), .MCOMMA_DETECT_0 ("TRUE"), .PCOMMA_10B_VALUE_0 (10'b0101111100), .PCOMMA_DETECT_0 ("TRUE"), .RX_SLIDE_MODE_0 ("PCS"), .ALIGN_COMMA_WORD_1 (2),//(1), .COMMA_10B_ENABLE_1 (10'b1111111111), .COMMA_DOUBLE_1 ("FALSE"), .DEC_MCOMMA_DETECT_1 ("TRUE"), .DEC_PCOMMA_DETECT_1 ("TRUE"), .DEC_VALID_COMMA_ONLY_1 ("FALSE"), .MCOMMA_10B_VALUE_1 (10'b1010000011), .MCOMMA_DETECT_1 ("TRUE"), .PCOMMA_10B_VALUE_1 (10'b0101111100), .PCOMMA_DETECT_1 ("TRUE"), .RX_SLIDE_MODE_1 ("PCS"), //------------------- RX Loss-of-sync State Machine ------------------- .RX_LOSS_OF_SYNC_FSM_0 ("FALSE"), .RX_LOS_INVALID_INCR_0 (8), .RX_LOS_THRESHOLD_0 (128), .RX_LOSS_OF_SYNC_FSM_1 ("FALSE"), .RX_LOS_INVALID_INCR_1 (8), .RX_LOS_THRESHOLD_1 (128), //------------ RX Elastic Buffer and Phase alignment ports ------------ .RX_BUFFER_USE_0 ("TRUE"), .RX_XCLK_SEL_0 ("RXREC"), .RX_BUFFER_USE_1 ("TRUE"), .RX_XCLK_SEL_1 ("RXREC"), //--------------------- Clock Correction Attributes ------------------- .CLK_CORRECT_USE_0 ("TRUE"), .CLK_COR_ADJ_LEN_0 (4), .CLK_COR_DET_LEN_0 (4), .CLK_COR_INSERT_IDLE_FLAG_0 ("FALSE"), .CLK_COR_KEEP_IDLE_0 ("FALSE"), .CLK_COR_MAX_LAT_0 (18), .CLK_COR_MIN_LAT_0 (16), .CLK_COR_PRECEDENCE_0 ("TRUE"), .CLK_COR_REPEAT_WAIT_0 (0), .CLK_COR_SEQ_1_1_0 (10'b0110111100), .CLK_COR_SEQ_1_2_0 (10'b0001001010), .CLK_COR_SEQ_1_3_0 (10'b0001001010), .CLK_COR_SEQ_1_4_0 (10'b0001111011), .CLK_COR_SEQ_1_ENABLE_0 (4'b1111), .CLK_COR_SEQ_2_1_0 (10'b0000000000), .CLK_COR_SEQ_2_2_0 (10'b0000000000), .CLK_COR_SEQ_2_3_0 (10'b0000000000), .CLK_COR_SEQ_2_4_0 (10'b0000000000), .CLK_COR_SEQ_2_ENABLE_0 (4'b0000), .CLK_COR_SEQ_2_USE_0 ("FALSE"), .RX_DECODE_SEQ_MATCH_0 ("TRUE"), .CLK_CORRECT_USE_1 ("TRUE"), .CLK_COR_ADJ_LEN_1 (4), .CLK_COR_DET_LEN_1 (4), .CLK_COR_INSERT_IDLE_FLAG_1 ("FALSE"), .CLK_COR_KEEP_IDLE_1 ("FALSE"), .CLK_COR_MAX_LAT_1 (18), .CLK_COR_MIN_LAT_1 (16), .CLK_COR_PRECEDENCE_1 ("TRUE"), .CLK_COR_REPEAT_WAIT_1 (0), .CLK_COR_SEQ_1_1_1 (10'b0110111100), .CLK_COR_SEQ_1_2_1 (10'b0001001010), .CLK_COR_SEQ_1_3_1 (10'b0001001010), .CLK_COR_SEQ_1_4_1 (10'b0001111011), .CLK_COR_SEQ_1_ENABLE_1 (4'b1111), .CLK_COR_SEQ_2_1_1 (10'b0000000000), .CLK_COR_SEQ_2_2_1 (10'b0000000000), .CLK_COR_SEQ_2_3_1 (10'b0000000000), .CLK_COR_SEQ_2_4_1 (10'b0000000000), .CLK_COR_SEQ_2_ENABLE_1 (4'b0000), .CLK_COR_SEQ_2_USE_1 ("FALSE"), .RX_DECODE_SEQ_MATCH_1 ("TRUE"), //-------------------- Channel Bonding Attributes --------------------- .CHAN_BOND_1_MAX_SKEW_0 (7), .CHAN_BOND_2_MAX_SKEW_0 (7), .CHAN_BOND_LEVEL_0 (TILE_CHAN_BOND_LEVEL_0), .CHAN_BOND_MODE_0 (TILE_CHAN_BOND_MODE_0), .CHAN_BOND_SEQ_1_1_0 (10'b0000000000),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -