36 use IEEE.STD_LOGIC_1164.
all;
44 generic(num_quad_tx_rx : natural := 20;
45 QUAD_ENABLE : std_logic_vector (19 downto 0) := (others => '0')
48 clk280 : in std_logic;
49 TTC_CLK : in std_logic;
50 MGT_CLK_GTREFCLK_PAD_N_IN : in std_logic_vector(num_quad_tx_rx-1 downto 0);
51 MGT_CLK_GTREFCLK_PAD_P_IN : in std_logic_vector(num_quad_tx_rx-1 downto 0);
53 mgt_TXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
54 mgt_RXUSRCLK_OUT : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
56 mgt_SOFT_RESET_TX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
57 mgt_SOFT_RESET_RX_IN : in std_logic_vector(num_quad_tx_rx -1 downto 0);
59 RXN_IN : in mgt_rx_array(num_quad_tx_rx-1 downto 0);
60 RXP_IN : in mgt_rx_array(num_quad_tx_rx-1 downto 0);
61 TXN_IN : out mgt_tx_array(num_quad_tx_rx-1 downto 0);
62 TXP_IN : out mgt_tx_array(num_quad_tx_rx-1 downto 0);
64 rxdata_quad_array : out mgt_rxdata_array (num_quad_tx_rx -1 downto 0);
65 txdata_quad_array : in mgt_txdata_array (num_quad_tx_rx -1 downto 0);
67 mgt_DATA_VALID_IN : in std_logic_vector(4*num_quad_tx_rx -1 downto 0);
68 mgt_TX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
69 mgt_RX_FSM_RESET_DONE : out std_logic_vector(4*num_quad_tx_rx -1 downto 0);
70 rxbyteisaligned_quad_array : out mgt_rxbyteisaligned_array(num_quad_tx_rx -1 downto 0);
71 rxresetdone_quad_array : out mgt_rxresetdone_array (num_quad_tx_rx -1 downto 0);
72 txresetdone_quad_array : out mgt_txresetdone_array (num_quad_tx_rx -1 downto 0);
74 gt_rxpd_array : in mgt_rxpd_array (num_quad_tx_rx -1 downto 0);
75 gt_txpd_array : in mgt_txpd_array (num_quad_tx_rx -1 downto 0);
76 loopback_quad_array : in mgt_loopback_array (num_quad_tx_rx-1 downto 0);
77 rxchariscomma_quad_array : out mgt_rxchariskcomm_array (num_quad_tx_rx -1 downto 0);
78 rxcharisk_quad_array : out mgt_rxcharisk_array (num_quad_tx_rx -1 downto 0);
79 txcharisk_quad_array : in mgt_txcharisk_array (num_quad_tx_rx -1 downto 0);
80 txbufstatus_quad_array : out mgt_txbufstatus_array (num_quad_tx_rx -1 downto 0);
81 rxbyterealign_quad_array : out mgt_rxbyterealign_array (num_quad_tx_rx -1 downto 0);
82 rxcommadet_quad_array : out mgt_rxcommadet_array (num_quad_tx_rx -1 downto 0);
83 rxdisperr_quad_array : out mgt_rxdisperr_array (num_quad_tx_rx -1 downto 0);
84 rxnotintable_quad_array : out mgt_rxnotintable_array (num_quad_tx_rx -1 downto 0);
85 mgt_QPLLREFCLKLOST_OUT : out std_logic_vector(num_quad_tx_rx-1 downto 0);
86 mgt_QPLLLOCK_OUT : out std_logic_vector (num_quad_tx_rx -1 downto 0)
95 signal RXN_IN_tx_rx, RXP_IN_tx_rx : mgt_rx_array (num_quad_tx_rx-1 downto 0);
96 signal TXN_IN_tx_rx, TXP_IN_tx_rx : mgt_tx_array (num_quad_tx_rx-1 downto 0);
100 MGT_GEN : for i in 0 to num_quad_tx_rx-1
104 -- This part will
generate 4 quads,
4*4 =
16 mgts.
105 generic map (ENABLED => QUAD_ENABLE
(i
))
110 RXN_IN => RXN_IN
(i
).RXN_IN,
111 RXP_IN => RXP_IN
(i
).RXP_IN,
113 TXP_OUT => TXP_IN
(i
).TXP_OUT,
115 Q0_CLK0_GTREFCLK_PAD_P_IN => MGT_CLK_GTREFCLK_PAD_P_IN
(i
),
148 gt0_txpd_in => gt_txpd_array
(i
).gt0_txpd,
151 gt0_rxnotintable_out => rxnotintable_quad_array
(i
).gt0_rxnotintable,
152 gt0_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt0_rxbyterealign,
153 gt0_rxcommadet_out => rxcommadet_quad_array
(i
).gt0_rxcommadet,
156 gt0_rxcharisk_out => rxcharisk_quad_array
(i
).gt0_rxcharisk_out,
167 gt1_txpd_in => gt_txpd_array
(i
).gt1_txpd,
170 gt1_rxnotintable_out => rxnotintable_quad_array
(i
).gt1_rxnotintable,
171 gt1_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt1_rxbyterealign,
172 gt1_rxcommadet_out => rxcommadet_quad_array
(i
).gt1_rxcommadet,
175 gt1_rxcharisk_out => rxcharisk_quad_array
(i
).gt1_rxcharisk_out,
185 gt2_txpd_in => gt_txpd_array
(i
).gt2_txpd,
188 gt2_rxnotintable_out => rxnotintable_quad_array
(i
).gt2_rxnotintable,
189 gt2_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt2_rxbyterealign,
190 gt2_rxcommadet_out => rxcommadet_quad_array
(i
).gt2_rxcommadet,
193 gt2_rxcharisk_out => rxcharisk_quad_array
(i
).gt2_rxcharisk_out,
204 gt3_txpd_in => gt_txpd_array
(i
).gt3_txpd,
207 gt3_rxnotintable_out => rxnotintable_quad_array
(i
).gt3_rxnotintable,
208 gt3_rxbyterealign_out => rxbyterealign_quad_array
(i
).gt3_rxbyterealign,
209 gt3_rxcommadet_out => rxcommadet_quad_array
(i
).gt3_rxcommadet,
212 gt3_rxcharisk_out => rxcharisk_quad_array
(i
).gt3_rxcharisk_out,
221 GT0_QPLLREFCLKLOST_OUT => mgt_QPLLREFCLKLOST_OUT
(i
),
224 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 GT3_DATA_VALID_IN std_logic
status of data valid in not used gt3
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
in GT0_DATA_VALID_IN std_logic
status of data valid in not used gt0
out GT0_QPLLLOCK_OUT std_logic
COMMON PORTS.
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 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 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 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.
in gt3_loopback_in std_logic_vector( 2 downto 0)
Loopback Ports for gt3.
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.
in GT1_DATA_VALID_IN std_logic
status of data valid in not used 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.
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 clk280 std_logic
fabric clock of 280MHz
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.
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.
in gt0_txcharisk_in std_logic_vector( 3 downto 0)
Transmit Transmit Ports - 8b10b Encoder Control Ports 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 in not used 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
in gt0_loopback_in std_logic_vector( 2 downto 0)
Loopback Ports for gt0.
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