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