29 use IEEE.STD_LOGIC_1164.
ALL;
30 library xil_defaultlib;
35 generic( num_quad_tx_rx: natural := 1
39 TTC_CLK : IN std_logic;
40 MGT_CLK_GTREFCLK_PAD_N_IN : IN std_logic_vector(num_quad_tx_rx-1 downto 0);
41 MGT_CLK_GTREFCLK_PAD_P_IN : IN std_logic_vector(num_quad_tx_rx-1 downto 0);
43 mgt_TXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
44 mgt_RXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
46 mgt_SOFT_RESET_TX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
47 mgt_SOFT_RESET_RX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
49 RXN_IN : IN mgt_rx_array(num_quad_tx_rx-1 downto 0);
50 RXP_IN : IN mgt_rx_array(num_quad_tx_rx-1 downto 0);
51 TXN_IN : OUT mgt_tx_array(num_quad_tx_rx-1 downto 0);
52 TXP_IN : OUT mgt_tx_array(num_quad_tx_rx-1 downto 0);
54 rxdata_quad_array : out mgt_rxdata_array (num_quad_tx_rx -1 downto 0);
55 txdata_quad_array : in mgt_txdata_array (num_quad_tx_rx -1 downto 0);
57 mgt_TX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
58 mgt_RX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
59 rxbyteisaligned_quad_array : out mgt_rxbyteisaligned_array(num_quad_tx_rx -1 downto 0);
60 rxresetdone_quad_array : out mgt_rxresetdone_array (num_quad_tx_rx -1 downto 0);
61 txresetdone_quad_array : out mgt_txresetdone_array (num_quad_tx_rx -1 downto 0);
63 gt_rxpd_array : in mgt_rxpd_array (num_quad_tx_rx -1 downto 0);
64 gt_txpd_array : in mgt_txpd_array (num_quad_tx_rx -1 downto 0);
65 loopback_quad_array : in mgt_loopback_array (num_quad_tx_rx-1 downto 0);
66 rxchariscomma_quad_array : out mgt_rxchariskcomm_array (num_quad_tx_rx -1 downto 0);
67 rxcharisk_quad_array : out mgt_rxcharisk_array (num_quad_tx_rx -1 downto 0);
68 txcharisk_quad_array : in mgt_txcharisk_array (num_quad_tx_rx -1 downto 0);
69 txbufstatus_quad_array : out mgt_txbufstatus_array (num_quad_tx_rx -1 downto 0);
70 rxbyterealign_quad_array : out mgt_rxbyterealign_array (num_quad_tx_rx -1 downto 0);
71 rxcommadet_quad_array : out mgt_rxcommadet_array (num_quad_tx_rx -1 downto 0);
72 rxdisperr_quad_array : out mgt_rxdisperr_array (num_quad_tx_rx -1 downto 0);
73 rxnotintable_quad_array : out mgt_rxnotintable_array (num_quad_tx_rx -1 downto 0);
76 gt0_cpllfbclklost_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
77 gt0_cplllock_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
78 gt1_cpllfbclklost_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
79 gt1_cplllock_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
80 gt2_cpllfbclklost_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
81 gt2_cplllock_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
82 gt3_cpllfbclklost_out : out std_logic_vector(num_quad_tx_rx -1 downto 0) ;
83 gt3_cplllock_out : out std_logic_vector(num_quad_tx_rx -1 downto 0)
93 signal RXN_IN_tx_rx,RXP_IN_tx_rx : mgt_rx_array (num_quad_tx_rx -1 downto 0);
94 signal TXN_IN_tx_rx,TXP_IN_tx_rx : mgt_tx_array (num_quad_tx_rx -1 downto 0);
105 MGT_GEN: for i in 0 to num_quad_tx_rx-1
111 -- This part will
generate n quads, n*4 = 4n mgts.
117 RXN_IN => RXN_IN
(i
).RXN_IN ,
118 RXP_IN => RXP_IN
(i
).RXP_IN,
120 TXP_OUT => TXP_IN
(i
).TXP_OUT,
122 Q0_CLK0_GTREFCLK_PAD_P_IN => MGT_CLK_GTREFCLK_PAD_P_IN
(i
) ,
157 gt0_txpd_in => gt_txpd_array
(i
).gt0_txpd,
160 gt0_rxnotintable_out => rxnotintable_quad_array
(i
).gt0_rxnotintable,
161 gt0_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt0_rxbyterealign,
162 gt0_rxcommadet_out => rxcommadet_quad_array
(i
).gt0_rxcommadet,
165 gt0_rxcharisk_out => rxcharisk_quad_array
(i
).gt0_rxcharisk_out,
176 gt1_txpd_in => gt_txpd_array
(i
).gt1_txpd,
179 gt1_rxnotintable_out => rxnotintable_quad_array
(i
).gt1_rxnotintable,
180 gt1_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt1_rxbyterealign,
181 gt1_rxcommadet_out => rxcommadet_quad_array
(i
).gt1_rxcommadet,
184 gt1_rxcharisk_out => rxcharisk_quad_array
(i
).gt1_rxcharisk_out,
194 gt2_txpd_in => gt_txpd_array
(i
).gt2_txpd,
197 gt2_rxnotintable_out => rxnotintable_quad_array
(i
).gt2_rxnotintable,
198 gt2_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt2_rxbyterealign,
199 gt2_rxcommadet_out => rxcommadet_quad_array
(i
).gt2_rxcommadet,
202 gt2_rxcharisk_out => rxcharisk_quad_array
(i
).gt2_rxcharisk_out,
211 gt3_loopback_in => loopback_quad_array
(i
).gt0_loopback_in,
213 gt3_txpd_in => gt_txpd_array
(i
).gt3_txpd,
216 gt3_rxnotintable_out => rxnotintable_quad_array
(i
).gt3_rxnotintable,
217 gt3_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt3_rxbyterealign,
218 gt3_rxcommadet_out => rxcommadet_quad_array
(i
).gt3_rxcommadet,
221 gt3_rxcharisk_out => rxcharisk_quad_array
(i
).gt3_rxcharisk_out,
235 end generate MGT_GEN;
out gt1_rxdata_out std_logic_vector( 31 downto 0)
Receive Ports - FPGA RX interface Ports for gt1.
out gt3_txbufstatus_out std_logic_vector( 1 downto 0)
Transmit Ports - TX Buffer Ports for gt3.
out gt3_rxbyteisaligned_out std_logic
Receive Ports - RX Byte and Word Alignment Ports for gt3.
out gt2_txresetdone_out std_logic
Transmit Ports - TX Fabric Clock Output Control Ports for gt2.
in gt1_txdata_in std_logic_vector( 31 downto 0)
Transmit Ports - TX Data Path interface gt1.
out GT0_TXUSRCLK_OUT std_logic
tx user clock out gt0
out gt0_txbufstatus_out std_logic_vector( 1 downto 0)
Transmit Ports - TX Buffer Ports for gt0.
out TXN_OUT std_logic_vector( 3 downto 0)
tx quad output
out gt0_rxdisperr_out std_logic_vector( 3 downto 0)
Receive Ports - RX 8B/10B Decoder Ports for gt0.
out GT3_TX_FSM_RESET_DONE_OUT std_logic
status reset of the tx fsm gt3
out GT2_RX_FSM_RESET_DONE_OUT std_logic
status reset of the rx fsm gt2
out gt2_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt2.
out gt2_cplllock_out std_logic
gt2_cplllock_out
in gt2_rxpd_in std_logic_vector( 1 downto 0)
Power-Down Ports for gt2.
out gt1_txbufstatus_out std_logic_vector( 1 downto 0)
Transmit Ports - TX Buffer Ports for gt1.
out gt0_rxdata_out std_logic_vector( 31 downto 0)
Receive Ports - FPGA RX interface Ports for gt0.
out GT2_TXUSRCLK_OUT std_logic
tx user clock out gt2
out gt3_rxdisperr_out std_logic_vector( 3 downto 0)
Receive Ports - RX 8B/10B Decoder Ports for gt3.
in gt2_loopback_in std_logic_vector( 2 downto 0)
Loopback Ports for gt2.
out gt2_cpllfbclklost_out std_logic
gt2_cpllfbclklost_out
out gt1_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt1.
out gt1_cpllfbclklost_out std_logic
gt1_cpllfbclklost_out
in gt0_txdata_in std_logic_vector( 31 downto 0)
Transmit Ports - TX Data Path interface for gt0.
out gt3_rxdata_out std_logic_vector( 31 downto 0)
Receive Ports - FPGA RX interface Ports for gt3.
out gt2_rxbyteisaligned_out std_logic
Receive Ports - RX Byte and Word Alignment Ports for gt2.
out gt0_cplllock_out std_logic
gt0_cplllock_out
out GT1_RX_FSM_RESET_DONE_OUT std_logic
status reset of the rx fsm gt1
out gt0_rxchariscomma_out std_logic_vector( 3 downto 0)
Receive Ports - RX8B/10B Decoder Ports for gt0.
out gt0_txresetdone_out std_logic
Transmit Ports - TX Initialization and Reset Ports for gt0.
out GT3_TXUSRCLK_OUT std_logic
tx user clock out gt3
out GT3_RX_FSM_RESET_DONE_OUT std_logic
status reset of the rx fsm gt3
out gt2_rxdisperr_out std_logic_vector( 3 downto 0)
Receive Ports - RX 8B/10B Decoder Ports for gt2.
out gt0_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt0.
in gt3_txdata_in std_logic_vector( 31 downto 0)
Transmit Ports - TX Data Path interface for gt3.
out gt3_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt3.
out gt2_txbufstatus_out std_logic_vector( 1 downto 0)
Transmit Ports - TX Buffer Ports for gt2.
in gt3_txcharisk_in std_logic_vector( 3 downto 0)
Transmit Transmit Ports - 8b10b Encoder Control Ports for gt3.
in gt0_rxpd_in std_logic_vector( 1 downto 0)
Power-Down Ports for gt0.
out gt2_rxchariscomma_out std_logic_vector( 3 downto 0)
Receive Ports - RX8B/10B Decoder Ports for gt2.
out GT3_RXUSRCLK_OUT std_logic
rx user clock out gt3
out gt0_rxbyteisaligned_out std_logic
Receive Ports - RX Byte and Word Alignment Ports for gt0.
out GT0_TX_FSM_RESET_DONE_OUT std_logic
status reset of the tx fsm gt0
in SOFT_RESET_TX_IN std_logic
soft reset of tx quad
out GT1_RXUSRCLK_OUT std_logic
rx user clock out gt1
out gt1_txresetdone_out std_logic
Transmit Ports - TX Initialization and Reset Ports for gt1.
in gt1_txcharisk_in std_logic_vector( 3 downto 0)
Transmit Transmit Ports - 8b10b Encoder Control Ports for gt1.
in gt1_rxpd_in std_logic_vector( 1 downto 0)
Power-Down Ports for gt1.
out gt1_rxbyteisaligned_out std_logic
Receive Ports - RX Byte and Word Alignment Ports for gt1.
in RXN_IN std_logic_vector( 3 downto 0)
rx quad input
out GT2_RXUSRCLK_OUT std_logic
rx user clock out gt2
out gt1_rxchariscomma_out std_logic_vector( 3 downto 0)
Receive Ports - RX8B/10B Decoder Ports for gt1.
out gt2_rxdata_out std_logic_vector( 31 downto 0)
Receive Ports - FPGA RX interface Ports for gt2.
in gt3_rxpd_in std_logic_vector( 1 downto 0)
Power-Down Ports for gt3.
in Q0_CLK0_GTREFCLK_PAD_N_IN std_logic
clock input to the quad
in gt2_txcharisk_in std_logic_vector( 3 downto 0)
Transmit Transmit Ports - 8b10b Encoder Control Ports for gt2.
out gt3_rxchariscomma_out std_logic_vector( 3 downto 0)
Receive Ports - RX8B/10B Decoder Ports for gt3.
out gt0_cpllfbclklost_out std_logic
gt0_cpllfbclklost_out
in gt2_txdata_in std_logic_vector( 31 downto 0)
Transmit Ports - TX Data Path interface for gt2.
out GT2_TX_FSM_RESET_DONE_OUT std_logic
status reset of the tx fsm gt2
in gt1_loopback_in std_logic_vector( 2 downto 0)
Loopback Ports for gt1.
out gt3_cpllfbclklost_out std_logic
gt3_cpllfbclklost_out
out gt1_cplllock_out std_logic
gt1_cplllock_out
in gt0_txcharisk_in std_logic_vector( 3 downto 0)
Transmit Transmit Ports - 8b10b Encoder Control Ports for gt0.
out GT0_RXUSRCLK_OUT std_logic
rx user clock out gt0
out GT0_RX_FSM_RESET_DONE_OUT std_logic
status reset of the rx fsm gto
out gt1_rxdisperr_out std_logic_vector( 3 downto 0)
Receive Ports - RX 8B/10B Decoder Ports for gt1.
out gt3_txresetdone_out std_logic
Transmit Ports - TX Initialization and Reset Ports for gt3.
in SOFT_RESET_RX_IN std_logic
soft reset of rx quad
in gt0_loopback_in std_logic_vector( 2 downto 0)
Loopback Ports for gt0.
out gt3_cplllock_out std_logic
gt3_cplllock_out
out GT1_TX_FSM_RESET_DONE_OUT std_logic
status reset of the tx fsm gt1
out GT1_TXUSRCLK_OUT std_logic
tx user clock out gt1