1 ------------------------------------------------------------------------------- 2 -- File : Pgp2bGth7FixedLatWrapper.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2015-04-01 5 -- Last update: 2016-08-24 6 ------------------------------------------------------------------------------- 7 -- Description: Gth7 Fixed Latency Wrapper 8 ------------------------------------------------------------------------------- 9 -- This file is part of 'SLAC Firmware Standard Library'. 10 -- It is subject to the license terms in the LICENSE.txt file found in the 11 -- top-level directory of this distribution and at: 12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 13 -- No part of 'SLAC Firmware Standard Library', including this file, 14 -- may be copied, modified, propagated, or distributed except according to 15 -- the terms contained in the LICENSE.txt file. 16 ------------------------------------------------------------------------------- 19 use ieee.std_logic_1164.
all;
28 use unisim.vcomponents.
all;
31 --! @ingroup protocols_pgp_pgp2b_gth7 34 -- Select Master or Slave 44 -- QPLL Configurations 48 -- CPLL Configurations 52 -- MMCM Configurations 70 -- Status and Clock Signals 82 -- Frame Transmit Interface - 1 Lane, Array of 4 VCs 85 -- Frame Receive Interface - 1 Lane, Array of 4 VCs 100 -- AXI-Lite Interface 107 end Pgp2bGth7FixedLatWrapper;
134 gtQPllReset : sl := '0';
136 attribute KEEP_HIERARCHY : ;
137 attribute KEEP_HIERARCHY of 140 Pgp2bGth7Fixedlat_Inst : label is "TRUE";
144 -- Set the status outputs 151 -- GT Reference Clock 152 IBUFDS_GTE2_Inst : IBUFDS_GTE2
166 PwrUpRst_Inst :
entity work.
PwrUpRst 177 CLKOUT4_CASCADE => false,
178 COMPENSATION =>
"ZHOLD",
179 STARTUP_WAIT => false,
182 CLKFBOUT_PHASE =>
0.000,
183 CLKFBOUT_USE_FINE_PS => false,
185 CLKOUT0_PHASE =>
0.000,
186 CLKOUT0_DUTY_CYCLE =>
0.500,
187 CLKOUT0_USE_FINE_PS => false,
189 CLKOUT1_PHASE =>
0.000,
190 CLKOUT1_DUTY_CYCLE =>
0.500,
191 CLKOUT1_USE_FINE_PS => false,
193 REF_JITTER1 =>
0.006) 196 CLKFBOUT => clkFbOut,
209 -- Input clock control 213 -- Tied to always select the primary input clock 215 -- Ports for dynamic reconfiguration 216 DADDR =>
(others => '0'
),
219 DI =>
(others => '0'
),
223 -- Ports for dynamic phase shift 228 -- Other control and status signals 230 CLKINSTOPPED =>
open,
231 CLKFBSTOPPED =>
open,
254 pllLockDetClk <= stableClock;
255 qPllReset <= stableRst or gtQPllReset;
256 rxClock <= rxRecClk when(RX_CLK_SEL_G = true) else txClock;
295 -- Configure PLL sources 329 -- Frame Transmit Interface - 1 Lane, Array of 4 VCs 332 -- Frame Receive Interface - 1 Lane, Array of 4 VCs 340 -- AXI-Lite Interface
QPLL_REFCLK_SEL_Gbit_vector := "001"
in txPreCursorslv( 4 downto 0) :=( others => '0')
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
QPLL_REFCLK_DIV_Ginteger := 1
PAYLOAD_CNT_TOP_Ginteger := 7
out pgpTxSlavesAxiStreamSlaveArray( 3 downto 0)
in pgpTxMastersAxiStreamMasterArray( 3 downto 0) :=( others => AXI_STREAM_MASTER_INIT_C)
mmcme2_adv mmcm_adv_instmmcm_adv_inst
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
TX_CLK25_DIV_Ginteger := 5
CPLL_REFCLK_SEL_Gbit_vector := "001"
NUM_VC_EN_Ginteger range 1 to 4:= 4
out pgpRxMastersAxiStreamMasterArray( 3 downto 0)
TX_ENABLE_Gboolean := true
out axilWriteSlaveAxiLiteWriteSlaveType
out axilReadSlaveAxiLiteReadSlaveType
VC_INTERLEAVE_Ginteger := 0
in txPreCursorslv( 4 downto 0) :=( others => '0')
RX_CLK_SEL_Gboolean := true
CPLL_REFCLK_DIV_Ginteger range 1 to 2:= 1
RX_OS_CFG_Gbit_vector := "0000010000000"
MMCM_TXCLK_DIVIDE_Gnatural := 8
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
in txPostCursorslv( 4 downto 0) :=( others => '0')
QPLL_FBDIV_RATIO_Gbit := '1'
out axilWriteSlaveAxiLiteWriteSlaveType
QPLL_REFCLK_DIV_Ginteger := 1
TX_CLK25_DIV_Ginteger := 5
out pgpRxOutPgp2bRxOutType
in arstsl :=not IN_POLARITY_G
out pgpTxOutPgp2bTxOutType
CPLL_FBDIV_Ginteger range 1 to 5:= 4
QPLL_FBDIV_RATIO_Gbit := '1'
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
slv( 1 downto 0) := "11" AXI_RESP_DECERR_C
MMCM_GTCLK_DIVIDE_Greal := 8.000
RX_OS_CFG_Gbit_vector := "0000010000000"
STABLE_CLOCK_PERIOD_Greal := 4.0E-9
in txDiffCtrlslv( 3 downto 0) := "1000"
out pgpRxOutPgp2bRxOutType
out axilReadSlaveAxiLiteReadSlaveType
out pgpTxSlavesAxiStreamSlaveArray( 3 downto 0)
in gtQPllRefClkLostsl := '0'
in txPostCursorslv( 4 downto 0) :=( others => '0')
array(natural range <> ) of AxiStreamCtrlType AxiStreamCtrlArray
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
in txDiffCtrlslv( 3 downto 0) := "1000"
RXCDR_CFG_Gbit_vector := x"0002007FE1000C2200018"
MMCM_CLKIN_PERIOD_Greal := 8.000
RX_CLK25_DIV_Ginteger := 5
out pgpRxMasterMuxedAxiStreamMasterType
RX_ENABLE_Gboolean := true
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
RX_ENABLE_Gboolean := true
AxiLiteReadMasterType :=(araddr =>( others => '0'),arprot =>( others => '0'),arvalid => '0',rready => '1') AXI_LITE_READ_MASTER_INIT_C
CPLL_FBDIV_45_Ginteger := 5
RXCDR_CFG_Gbit_vector := x"0002007FE1000C2200018"
VC_INTERLEAVE_Ginteger := 0
MMCM_CLKFBOUT_MULT_Greal := 8.000
in pgpRxCtrlAxiStreamCtrlArray( 3 downto 0)
CPLL_REFCLK_DIV_Ginteger := 1
QPLL_FBDIV_Gbit_vector := "0100100000"
AxiLiteWriteMasterType :=(awaddr =>( others => '0'),awprot =>( others => '0'),awvalid => '0',wdata =>( others => '0'),wstrb =>( others => '1'),wvalid => '0',bready => '1') AXI_LITE_WRITE_MASTER_INIT_C
CPLL_FBDIV_45_Ginteger range 4 to 5:= 5
in pgpTxMastersAxiStreamMasterArray( 3 downto 0)
PAYLOAD_CNT_TOP_Ginteger := 7
TX_ENABLE_Gboolean := true
NUM_VC_EN_Ginteger range 1 to 4:= 4
MASTER_SEL_Gboolean := true
RX_CLK25_DIV_Ginteger := 5
QPLL_FBDIV_Gbit_vector := "0100100000"
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
out pgpTxOutPgp2bTxOutType
in pgpRxCtrlAxiStreamCtrlArray( 3 downto 0)
out pgpRxMasterMuxedAxiStreamMasterType
in pgpRxMmcmLockedsl := '1'
out pgpRxMastersAxiStreamMasterArray( 3 downto 0)
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C