1 ------------------------------------------------------------------------------- 2 -- File : TenGigEthGthUltraScaleWrapper.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2015-04-08 5 -- Last update: 2016-09-29 6 ------------------------------------------------------------------------------- 7 -- Description: GTH Ultra Scale Wrapper for 10GBASE-R Ethernet 8 -- Note: This module supports up to a MGT QUAD of 10GigE interfaces 9 ------------------------------------------------------------------------------- 10 -- This file is part of 'SLAC Firmware Standard Library'. 11 -- It is subject to the license terms in the LICENSE.txt file found in the 12 -- top-level directory of this distribution and at: 13 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 14 -- No part of 'SLAC Firmware Standard Library', including this file, 15 -- may be copied, modified, propagated, or distributed except according to 16 -- the terms contained in the LICENSE.txt file. 17 ------------------------------------------------------------------------------- 20 use ieee.std_logic_1164.
all;
28 --! @ingroup ethernet_TenGigEthCore_gthUltraScale 34 -- QUAD PLL Configurations 36 -- AXI-Lite Configurations 39 -- AXI Streaming Configurations 42 -- Local Configurations 43 localMac :
in Slv48Array(NUM_LANE_G-1
downto 0) := (
others => MAC_ADDR_INIT_C);
44 -- Streaming DMA Interface 51 -- Slave AXI-Lite Interface 70 -- Transceiver Debug Interface 76 -- MGT Clock Port (156.25 MHz or 312.5 MHz) 85 end TenGigEthGthUltraScaleWrapper;
107 PwrUpRst_Inst :
entity work.
PwrUpRst 116 ---------------------- 117 -- Common Clock Module 118 ---------------------- 125 -- MGT Clock Port (156.25 MHz or 312.5 MHz) 150 -- AXI-Lite Configurations 153 -- AXI Streaming Configurations 156 -- Local Configurations 158 -- Streaming DMA Interface 165 -- Slave AXI-Lite Interface 182 -- Transceiver Debug Interface 198 end generate GEN_LANE;
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_SLVERR_C
in sigDetslv( NUM_LANE_G- 1 downto 0) :=( others => '1')
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
AXIS_CONFIG_GAxiStreamConfigArray( 3 downto 0) :=( others => AXI_STREAM_CONFIG_INIT_C)
in dmaObMasterAxiStreamMasterType
array(natural range <> ) of AxiLiteWriteSlaveType AxiLiteWriteSlaveArray
QPLL_REFCLK_SEL_Gslv( 2 downto 0) := "001"
out dmaObSlaveAxiStreamSlaveType
in localMacSlv48Array( NUM_LANE_G- 1 downto 0) :=( others => MAC_ADDR_INIT_C)
AXIS_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
in dmaClkslv( NUM_LANE_G- 1 downto 0)
in localMacslv( 47 downto 0) := MAC_ADDR_INIT_C
QPLL_REFCLK_SEL_Gslv( 2 downto 0) := "001"
in gtTxPreCursorslv( 4 downto 0) := "00000"
in dmaObMastersAxiStreamMasterArray( NUM_LANE_G- 1 downto 0)
REF_CLK_FREQ_Greal := 156.25E+6
REF_CLK_FREQ_Greal := 156.25E+6
array(natural range <> ) of AxiLiteReadMasterType AxiLiteReadMasterArray
out gtTxNslv( NUM_LANE_G- 1 downto 0)
out axiLiteReadSlaveAxiLiteReadSlaveType
in axiLiteClkslv( NUM_LANE_G- 1 downto 0) :=( others => '0')
out phyReadyslv( NUM_LANE_G- 1 downto 0)
out axiLiteWriteSlaveAxiLiteWriteSlaveType
REF_CLK_FREQ_Greal := 156.25E+6
out txDisableslv( NUM_LANE_G- 1 downto 0)
in axiLiteReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
in arstsl :=not IN_POLARITY_G
EN_AXI_REG_Gboolean := false
in axiLiteRstslv( NUM_LANE_G- 1 downto 0) :=( others => '0')
array(natural range <> ) of AxiStreamConfigType AxiStreamConfigArray
slv( 1 downto 0) := "10" AXI_RESP_SLVERR_C
in dmaIbSlavesAxiStreamSlaveArray( NUM_LANE_G- 1 downto 0)
out axiLiteWriteSlavesAxiLiteWriteSlaveArray( NUM_LANE_G- 1 downto 0)
out gtTxPslv( NUM_LANE_G- 1 downto 0)
in gtTxPreCursorslv( 4 downto 0) := "00000"
out dmaIbMastersAxiStreamMasterArray( NUM_LANE_G- 1 downto 0)
in gtTxDiffCtrlslv( 3 downto 0) := "1110"
in dmaRstslv( NUM_LANE_G- 1 downto 0)
NUM_LANE_Gnatural range 1 to 4:= 1
in txFaultslv( NUM_LANE_G- 1 downto 0) :=( others => '0')
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_SLVERR_C
in dmaIbSlaveAxiStreamSlaveType
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
out phyClkslv( NUM_LANE_G- 1 downto 0)
in axiLiteWriteMastersAxiLiteWriteMasterArray( NUM_LANE_G- 1 downto 0) :=( others => AXI_LITE_WRITE_MASTER_INIT_C)
in gtRxNslv( NUM_LANE_G- 1 downto 0)
DURATION_Gnatural range 0 to (( 2** 30)- 1):= 156250000
out axiLiteReadSlavesAxiLiteReadSlaveArray( NUM_LANE_G- 1 downto 0)
AxiLiteReadMasterType :=(araddr =>( others => '0'),arprot =>( others => '0'),arvalid => '0',rready => '1') AXI_LITE_READ_MASTER_INIT_C
AxiStreamConfigType :=(TSTRB_EN_C => false,TDATA_BYTES_C => 16,TDEST_BITS_C => 4,TID_BITS_C => 0,TKEEP_MODE_C => TKEEP_NORMAL_C,TUSER_BITS_C => 4,TUSER_MODE_C => TUSER_NORMAL_C) AXI_STREAM_CONFIG_INIT_C
array(natural range <> ) of AxiLiteWriteMasterType AxiLiteWriteMasterArray
in axiLiteWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
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
out dmaObSlavesAxiStreamSlaveArray( NUM_LANE_G- 1 downto 0)
out dmaIbMasterAxiStreamMasterType
EN_AXI_REG_Gboolean := false
array(natural range <> ) of AxiLiteReadSlaveType AxiLiteReadSlaveArray
in gtRxPslv( NUM_LANE_G- 1 downto 0)
slv( NUM_LANE_G- 1 downto 0) qpllRst
in axiLiteReadMastersAxiLiteReadMasterArray( NUM_LANE_G- 1 downto 0) :=( others => AXI_LITE_READ_MASTER_INIT_C)
out phyRstslv( NUM_LANE_G- 1 downto 0)
in gtTxPostCursorslv( 4 downto 0) := "00000"
in gtTxPostCursorslv( 4 downto 0) := "00000"
in gtTxDiffCtrlslv( 3 downto 0) := "1110"