1 ------------------------------------------------------------------------------- 2 -- File : Pgp2bLane.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2009-05-27 5 -- Last update: 2017-03-28 6 ------------------------------------------------------------------------------- 8 -- Top Level Transmit/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;
30 --! @ingroup protocols_pgp_pgp2b_core 43 --------------------------------- 44 -- Transmitter Interface 45 --------------------------------- 47 -- System clock, reset & control 64 --------------------------------- 66 --------------------------------- 68 -- System clock, reset & control 81 -- Receive flow control 94 -- Define architecture 104 ----------------------------- 106 ----------------------------- 141 ----------------------------- 143 -----------------------------
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
TX_ENABLE_Gboolean := true
Pgp2bTxOutType :=(( others => '0'),( others => '0'), '0', '0', '0', '0') PGP2B_TX_OUT_INIT_C
out phyTxLanesOutPgp2bTxPhyLaneOutArray( 0 to TX_LANE_CNT_G- 1)
AxiStreamMasterType intRxMaster
out pgpTxSlavesAxiStreamSlaveArray( 3 downto 0)
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
NUM_VC_EN_Ginteger range 1 to 4:= 4
TX_LANE_CNT_Ginteger range 1 to 2:= 1
out mAxisMastersAxiStreamMasterArray( NUM_MASTERS_G- 1 downto 0)
PAYLOAD_CNT_TOP_Ginteger := 7
in pgpRxInPgp2bRxInType := PGP2B_RX_IN_INIT_C
Pgp2bRxInType :=( '0', '0', "000") PGP2B_RX_IN_INIT_C
VC_INTERLEAVE_Ginteger := 1
in phyRxLanesInPgp2bRxPhyLaneInArray( 0 to RX_LANE_CNT_G- 1)
out pgpRxOutPgp2bRxOutType
RX_ENABLE_Gboolean := true
PAYLOAD_CNT_TOP_Ginteger := 7
array(natural range <> ) of Pgp2bTxPhyLaneOutType Pgp2bTxPhyLaneOutArray
out pgpRxOutPgp2bRxOutType
in pgpTxMastersAxiStreamMasterArray( 3 downto 0) :=( others => AXI_STREAM_MASTER_INIT_C)
out sAxisSlaveAxiStreamSlaveType
NUM_VC_EN_Ginteger range 1 to 4:= 4
out pgpRxMasterAxiStreamMasterType
in remFifoStatusAxiStreamCtrlArray( 3 downto 0)
PAYLOAD_CNT_TOP_Ginteger := 7
VC_INTERLEAVE_Ginteger := 1
in locFifoStatusAxiStreamCtrlArray( 3 downto 0)
out phyRxLanesOutPgp2bRxPhyLaneOutArray( 0 to LANE_CNT_G- 1)
AxiStreamSlaveType :=(tReady => '0') AXI_STREAM_SLAVE_INIT_C
Pgp2bTxInType :=( '0', '0',( others => '0'),( others => '0'), '0') PGP2B_TX_IN_INIT_C
in pgpRxCtrlAxiStreamCtrlArray( 3 downto 0) :=( others => AXI_STREAM_CTRL_UNUSED_C)
in sAxisMasterAxiStreamMasterType
array(natural range <> ) of AxiStreamCtrlType AxiStreamCtrlArray
RX_LANE_CNT_Ginteger range 1 to 2:= 1
array(natural range <> ) of Pgp2bRxPhyLaneOutType Pgp2bRxPhyLaneOutArray
Pgp2bRxPhyLaneInType :=(( others => '0'),( others => '0'),( others => '0'),( others => '0')) PGP2B_RX_PHY_LANE_IN_INIT_C
out pgpTxOutPgp2bTxOutType
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
in phyRxLanesInPgp2bRxPhyLaneInArray( 0 to LANE_CNT_G- 1) :=( others => PGP2B_RX_PHY_LANE_IN_INIT_C)
out remFifoStatusAxiStreamCtrlArray( 3 downto 0)
out phyTxLanesOutPgp2bTxPhyLaneOutArray( 0 to LANE_CNT_G- 1)
LANE_CNT_Ginteger range 1 to 2:= 1
out pgpTxSlavesAxiStreamSlaveArray( 3 downto 0)
AxiStreamCtrlType :=(pause => '0',overflow => '0',idle => '1') AXI_STREAM_CTRL_UNUSED_C
in mAxisSlavesAxiStreamSlaveArray( NUM_MASTERS_G- 1 downto 0)
in pgpTxInPgp2bTxInType := PGP2B_TX_IN_INIT_C
Pgp2bRxPhyLaneOutType :=(polarity => '0') PGP2B_RX_PHY_LANE_OUT_INIT_C
Pgp2bRxOutType :=( '0', '0', "00", '0', '0', '0', '0', '0', '0',( others => '0'), '0',( others => '0'),( others => '0'),( others => '0')) PGP2B_RX_OUT_INIT_C
out pgpRxMastersAxiStreamMasterArray( 3 downto 0)
AxiStreamSlaveType :=(tReady => '1') AXI_STREAM_SLAVE_FORCE_C
Pgp2bTxPhyLaneOutType :=(( others => '0'),( others => '0')) PGP2B_TX_PHY_LANE_OUT_INIT_C
AxiStreamCtrlArray( 3 downto 0) remFifoStatus
array(natural range <> ) of Pgp2bRxPhyLaneInType Pgp2bRxPhyLaneInArray
out pgpTxOutPgp2bTxOutType
NUM_MASTERS_Ginteger range 1 to 32:= 12
in pgpTxMastersAxiStreamMasterArray( 3 downto 0)
out phyRxLanesOutPgp2bRxPhyLaneOutArray( 0 to RX_LANE_CNT_G- 1)
out pgpRxMasterMuxedAxiStreamMasterType