1 ------------------------------------------------------------------------------- 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2009-05-27 5 -- Last update: 2017-03-28 6 ------------------------------------------------------------------------------- 8 -- Top Level Transmit interface module for the Pretty Good Protocol core. 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;
21 use ieee.std_logic_arith.
all;
22 use ieee.std_logic_unsigned.
all;
29 --! @ingroup protocols_pgp_pgp2b_core 40 -- System clock, reset & control 53 locFifoStatus :
in AxiStreamCtrlArray(
3 downto 0);
64 -- Define architecture 87 signal crcTxOut : slv(31 downto 0);
-- Transmit calculated CRC value 109 Tx_CRC : label is "TRUE";
113 -- Sync flow control & buffer status 114 U_VcFlowGen: for i in 0 to 3 generate 183 -- Physical Interface 306 U_Vc_Gen: for i in 0 to 3 generate 308 -- Add pipeline stages to ensure ready stays asserted 338 end generate CRC_TX_1xLANE;
344 end generate CRC_TX_2xLANE;
AxiStreamConfigType := ssiAxiStreamConfig( 2, TKEEP_COMP_C) SSI_PGP2B_CONFIG_C
slv( 3 downto 0) intTxSof
PIPE_STAGES_Gnatural range 0 to 16:= 0
slv( 2 downto 0) crcTxWidthAdjust
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
slv( 3 downto 0) syncLocPause
in vc3FrameTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
slv( 31 downto 0) crcTxInAdjust
out phyTxLanesOutPgp2bTxPhyLaneOutArray( 0 to TX_LANE_CNT_G- 1)
AxiStreamMasterArray( 3 downto 0) intTxMasters
out crcTxInslv( TX_LANE_CNT_G* 16- 1 downto 0)
slv( TX_LANE_CNT_G* 2- 1 downto 0) intPhyTxDataK
slv( TX_LANE_CNT_G* 16- 1 downto 0) intPhyTxData
in rstsl :=not RST_POLARITY_G
slv( 3 downto 0) syncRemPause
out schTxDataVcslv( 1 downto 0)
NUM_VC_EN_Ginteger range 1 to 4:= 4
out CRCOUTstd_logic_vector( 31 downto 0)
TX_LANE_CNT_Ginteger range 1 to 2:= 1
in vc1FrameTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
out sAxisSlaveAxiStreamSlaveType
RST_ASYNC_Gboolean := false
in cellTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
slv( TX_LANE_CNT_G* 16- 1 downto 0) cellTxData
in CRCINstd_logic_vector( 31 downto 0)
in CRCCLKENstd_logic := '1'
in vc2FrameTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
slv( 3 downto 0) intTxEofe
in schTxDataVcslv( 1 downto 0)
slv( 3 downto 0) rawReady
in mAxisSlaveAxiStreamSlaveType
out cellTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
PAYLOAD_CNT_TOP_Ginteger := 7
array(natural range <> ) of Pgp2bTxPhyLaneOutType Pgp2bTxPhyLaneOutArray
in pgpTxOpCodeslv( 7 downto 0)
in remFifoStatusAxiStreamCtrlArray( 3 downto 0)
NUM_VC_EN_Ginteger range 1 to 4:= 4
AxiStreamSlaveArray( 3 downto 0) intTxSlaves
VC_INTERLEAVE_Ginteger := 1
slv( 3 downto 0) locOverflow
in sAxisMasterAxiStreamMasterType
in locFifoStatusAxiStreamCtrlArray( 3 downto 0)
VC_INTERLEAVE_Ginteger := 1
TX_LANE_CNT_Ginteger range 1 to 2:= 1
slv( 3 downto 0) gateRemPause
array(natural range <> ) of AxiStreamCtrlType AxiStreamCtrlArray
out phyTxDataKslv( TX_LANE_CNT_G* 2- 1 downto 0)
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
out mAxisMasterAxiStreamMasterType
CRC_INITbit_vector := x"FFFFFFFF"
out pgpTxSlavesAxiStreamSlaveArray( 3 downto 0)
slv( 3 downto 0) syncLocOverFlow
in CRCDATAWIDTHstd_logic_vector( 2 downto 0)
TX_LANE_CNT_Ginteger range 1 to 2:= 1
in pgpLocDataslv( 7 downto 0)
RST_ASYNC_Gboolean := false
slv( 31 downto 0) crcTxOut
in rstsl :=not RST_POLARITY_G
in vc0FrameTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
slv( 31 downto 0) crcTxOutAdjust
out phyTxDataslv( TX_LANE_CNT_G* 16- 1 downto 0)
in crcTxOutslv( 31 downto 0)
out pgpTxOutPgp2bTxOutType
in pgpTxMastersAxiStreamMasterArray( 3 downto 0)
slv( 3 downto 0) locPause
slv( 1 downto 0) schTxDataVc
slv( 3 downto 0) intvalid
slv( TX_LANE_CNT_G* 16- 1 downto 0) crcTxIn