1 ------------------------------------------------------------------------------- 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2009-05-27 5 -- Last update: 2017-03-28 6 ------------------------------------------------------------------------------- 8 -- Cell Receive 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 38 -- System clock, reset & control 59 -- Define architecture 96 Rx_CRC : label is "TRUE";
107 -- Interface connection 227 -- Generate valid and dest values 231 intMaster.tDest(3 downto 0) := "0000";
234 intMaster.tDest(3 downto 0) := "0001";
237 intMaster.tDest(3 downto 0) := "0010";
240 intMaster.tDest(3 downto 0) := "0011";
269 end generate CRC_RX_1xLANE;
275 end generate CRC_RX_2xLANE;
AxiStreamConfigType := ssiAxiStreamConfig( 2, TKEEP_COMP_C) SSI_PGP2B_CONFIG_C
out pgpRxLinkErrorsl := '0'
slv(( RX_LANE_CNT_G* 16)- 1 downto 0) intRxData
out pgpRemLinkReadysl := '0'
slv( 31 downto 0) crcRxInAdjust
AxiStreamMasterType :=(tValid => '0',tData =>( others => '0'),tStrb =>( others => '1'),tKeep =>( others => '1'),tLast => '0',tDest =>( others => '0'),tId =>( others => '0'),tUser =>( others => '0')) AXI_STREAM_MASTER_INIT_C
slv( 31 downto 0) crcRxOut
out CRCOUTstd_logic_vector( 31 downto 0)
out pgpRxLinkDownsl := '0'
PAYLOAD_CNT_TOP_Ginteger := 7
in CRCINstd_logic_vector( 31 downto 0)
in CRCCLKENstd_logic := '1'
slv( RX_LANE_CNT_G* 2- 1 downto 0) intPhyRxDecErr
in phyRxLanesInPgp2bRxPhyLaneInArray( 0 to RX_LANE_CNT_G- 1)
out pgpRxOutPgp2bRxOutType
EN_SHORT_CELLS_Ginteger := 1
slv( 1 downto 0) :=( others => '0') intPhyRxPolarity
RX_LANE_CNT_Ginteger range 1 to 2:= 1
slv( 1 downto 0) linkPolarity
PAYLOAD_CNT_TOP_Ginteger := 7
slv( RX_LANE_CNT_G* 2- 1 downto 0) intPhyRxDispErr
out pgpRxMasterAxiStreamMasterType
slv( 31 downto 0) crcRxOutAdjust
slv( 3 downto 0) remOverflow
in cellRxDataslv( RX_LANE_CNT_G* 16- 1 downto 0)
in phyRxDecErrslv( RX_LANE_CNT_G* 2- 1 downto 0)
out vcFrameRxDataslv( RX_LANE_CNT_G* 16- 1 downto 0)
out phyRxPolarityslv( RX_LANE_CNT_G- 1 downto 0)
array(natural range <> ) of AxiStreamCtrlType AxiStreamCtrlArray
slv( RX_LANE_CNT_G* 16- 1 downto 0) cellRxData
RX_LANE_CNT_Ginteger range 1 to 2:= 1
out crcRxInslv( RX_LANE_CNT_G* 16- 1 downto 0)
array(natural range <> ) of Pgp2bRxPhyLaneOutType Pgp2bRxPhyLaneOutArray
out remFifoStatusAxiStreamCtrlArray( 3 downto 0)
slv( RX_LANE_CNT_G* 16- 1 downto 0) crcRxIn
CRC_INITbit_vector := x"FFFFFFFF"
out pgpRxOpCodeslv( 7 downto 0)
slv( 3 downto 0) remPause
in CRCDATAWIDTHstd_logic_vector( 2 downto 0)
slv( RX_LANE_CNT_G* 2- 1 downto 0) intPhyRxDataK
RX_LANE_CNT_Ginteger range 1 to 2:= 1
slv( 3 downto 0) intRxVcValid
in phyRxDataslv( RX_LANE_CNT_G* 16- 1 downto 0)
in phyRxDataKslv( RX_LANE_CNT_G* 2- 1 downto 0)
slv( 2 downto 0) crcRxWidthAdjust
in phyRxDispErrslv( RX_LANE_CNT_G* 2- 1 downto 0)
array(natural range <> ) of Pgp2bRxPhyLaneInType Pgp2bRxPhyLaneInArray
in crcRxOutslv( 31 downto 0)
out cellRxDataslv( RX_LANE_CNT_G* 16- 1 downto 0)
slv( RX_LANE_CNT_G* 16- 1 downto 0) intPhyRxData
out phyRxLanesOutPgp2bRxPhyLaneOutArray( 0 to RX_LANE_CNT_G- 1)
slv( 3 downto 0) overflow
out pgpRemDataslv( 7 downto 0) :=( others => '0')