9 use IEEE.STD_LOGIC_1164.
all;
17 generic(num_quad_tx_rx : natural:= 2 );
20 TTC_CLK : in std_logic;
21 MGT_CLK_GTREFCLK_PAD_N_IN : in std_logic_vector(num_quad_tx_rx-1 downto 0);
22 MGT_CLK_GTREFCLK_PAD_P_IN : in std_logic_vector(num_quad_tx_rx-1 downto 0);
24 mgt_TXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
25 mgt_RXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
27 mgt_SOFT_RESET_TX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
28 mgt_SOFT_RESET_RX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
30 RXN_IN : in mgt_rx_array(num_quad_tx_rx-1 downto 0);
31 RXP_IN : in mgt_rx_array(num_quad_tx_rx-1 downto 0);
32 TXN_IN : out mgt_tx_array(num_quad_tx_rx-1 downto 0);
33 TXP_IN : out mgt_tx_array(num_quad_tx_rx-1 downto 0);
35 rxdata_quad_array : out mgt_rxdata_array (num_quad_tx_rx -1 downto 0);
36 txdata_quad_array : in mgt_txdata_array (num_quad_tx_rx -1 downto 0);
38 mgt_DATA_VALID_IN : in std_logic_vector(4*num_quad_tx_rx -1 downto 0);
39 mgt_TX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
40 mgt_RX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
41 rxbyteisaligned_quad_array : out mgt_rxbyteisaligned_array(num_quad_tx_rx -1 downto 0);
42 rxresetdone_quad_array : out mgt_rxresetdone_array (num_quad_tx_rx -1 downto 0);
43 txresetdone_quad_array : out mgt_txresetdone_array (num_quad_tx_rx -1 downto 0);
45 gt_rxpd_array : in mgt_rxpd_array (num_quad_tx_rx -1 downto 0);
46 gt_txpd_array : in mgt_txpd_array (num_quad_tx_rx -1 downto 0);
47 rxchariscomma_quad_array : out mgt_rxchariskcomm_array (num_quad_tx_rx -1 downto 0);
48 rxcharisk_quad_array : out mgt_rxcharisk_array (num_quad_tx_rx -1 downto 0);
49 txcharisk_quad_array : in mgt_txcharisk_array (num_quad_tx_rx -1 downto 0);
50 txbufstatus_quad_array : out mgt_txbufstatus_array (num_quad_tx_rx -1 downto 0);
51 rxbyterealign_quad_array : out mgt_rxbyterealign_array (num_quad_tx_rx -1 downto 0);
52 rxcommadet_quad_array : out mgt_rxcommadet_array (num_quad_tx_rx -1 downto 0);
53 rxdisperr_quad_array : out mgt_rxdisperr_array (num_quad_tx_rx -1 downto 0);
54 rxnotintable_quad_array : out mgt_rxnotintable_array (num_quad_tx_rx -1 downto 0);
55 mgt_QPLLREFCLKLOST_OUT : out std_logic_vector(num_quad_tx_rx-1 downto 0);
56 mgt_QPLLLOCK_OUT : out std_logic_vector (num_quad_tx_rx -1 downto 0)
65 signal RXN_IN_tx_rx, RXP_IN_tx_rx : mgt_rx_array (num_quad_tx_rx-1 downto 0);
66 signal TXN_IN_tx_rx, TXP_IN_tx_rx : mgt_tx_array (num_quad_tx_rx-1 downto 0);
70 MGT_GEN : for i in 0 to num_quad_tx_rx-1
74 -- This part will
generate 2 quads,
2*4 =
8 mgts.
80 RXN_IN => RXN_IN
(i
).RXN_IN,
81 RXP_IN => RXP_IN
(i
).RXP_IN,
83 TXP_OUT => TXP_IN
(i
).TXP_OUT,
85 Q1_CLK1_GTREFCLK_PAD_P_IN => MGT_CLK_GTREFCLK_PAD_P_IN
(i
),
120 gt0_rxnotintable_out => rxnotintable_quad_array
(i
).gt0_rxnotintable,
121 gt0_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt0_rxbyterealign,
122 gt0_rxcommadet_out => rxcommadet_quad_array
(i
).gt0_rxcommadet,
125 gt0_rxcharisk_out => rxcharisk_quad_array
(i
).gt0_rxcharisk_out,
134 gt1_txpd_in => gt_txpd_array
(i
).gt1_txpd,
137 gt1_rxnotintable_out => rxnotintable_quad_array
(i
).gt1_rxnotintable,
138 gt1_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt1_rxbyterealign,
139 gt1_rxcommadet_out => rxcommadet_quad_array
(i
).gt1_rxcommadet,
142 gt1_rxcharisk_out => rxcharisk_quad_array
(i
).gt1_rxcharisk_out,
152 gt2_txpd_in => gt_txpd_array
(i
).gt2_txpd,
155 gt2_rxnotintable_out => rxnotintable_quad_array
(i
).gt2_rxnotintable,
156 gt2_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt2_rxbyterealign,
157 gt2_rxcommadet_out => rxcommadet_quad_array
(i
).gt2_rxcommadet,
160 gt2_rxcharisk_out => rxcharisk_quad_array
(i
).gt2_rxcharisk_out,
171 gt3_txpd_in => gt_txpd_array
(i
).gt3_txpd,
174 gt3_rxnotintable_out => rxnotintable_quad_array
(i
).gt3_rxnotintable,
175 gt3_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt3_rxbyterealign,
176 gt3_rxcommadet_out => rxcommadet_quad_array
(i
).gt3_rxcommadet,
179 gt3_rxcharisk_out => rxcharisk_quad_array
(i
).gt3_rxcharisk_out,
187 GT0_QPLLLOCK_OUT => mgt_QPLLLOCK_OUT
(i
),
188 GT0_QPLLREFCLKLOST_OUT => mgt_QPLLREFCLKLOST_OUT
(i
),
193 end generate MGT_GEN;
out gt1_rxdata_out std_logic_vector( 31 downto 0)
Receive Ports - FPGA RX interface Ports for gt1.
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 Initialization and Reset Ports for gt2.
in GT3_DATA_VALID_IN std_logic
status o3f data valid gt
in Q1_CLK1_GTREFCLK_PAD_N_IN std_logic
clock input to the quad
in gt1_txdata_in std_logic_vector( 31 downto 0)
Transmit Ports - TX Data Path interface for gt1.
out GT0_TXUSRCLK_OUT std_logic
tx user clock out 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
in GT0_DATA_VALID_IN std_logic
status of data valid gt0
out gt2_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt2.
in gt2_rxpd_in std_logic_vector( 1 downto 0)
Power-Down Ports for gt2.
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.
out gt1_rxresetdone_out std_logic
Receive Ports -RX Initialization and Reset Ports for gt1.
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 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 gt2.
in GT1_DATA_VALID_IN std_logic
status of data valid gt1
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.
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)
rx power down bit
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 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.
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 gt0_txpd_in std_logic_vector( 1 downto 0)
tx power down bit
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
in GT2_DATA_VALID_IN std_logic
status of data valid gt2
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
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