Entity: Pgp2bRxCell

Diagram

time TPD_G integer range 1 to 2 RX_LANE_CNT_G integer EN_SHORT_CELLS_G integer PAYLOAD_CNT_TOP_G sl pgpRxClkEn sl pgpRxClk sl pgpRxClkRst sl pgpRxFlush sl pgpRxLinkReady sl cellRxPause sl cellRxSOC sl cellRxSOF sl cellRxEOC sl cellRxEOF sl cellRxEOFE slv(RX_LANE_CNT_G*16-1 downto 0) cellRxData slv(31 downto 0) crcRxOut sl pgpRxCellError sl vcFrameRxSOF sl vcFrameRxEOF sl vcFrameRxEOFE slv(RX_LANE_CNT_G*16-1 downto 0) vcFrameRxData sl vc0FrameRxValid sl vc0RemAlmostFull sl vc0RemOverflow sl vc1FrameRxValid sl vc1RemAlmostFull sl vc1RemOverflow sl vc2FrameRxValid sl vc2RemAlmostFull sl vc2RemOverflow sl vc3FrameRxValid sl vc3RemAlmostFull sl vc3RemOverflow slv(RX_LANE_CNT_G*16-1 downto 0) crcRxIn sl crcRxInit sl crcRxValid

Description


Title : PGPv2b: https://confluence.slac.stanford.edu/x/q86fD

Company : SLAC National Accelerator Laboratory

Description:

Cell Receive interface module for the Pretty Good Protocol core.

This file is part of 'SLAC Firmware Standard Library'. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of 'SLAC Firmware Standard Library', including this file, may be copied, modified, propagated, or distributed except according to

the terms contained in the LICENSE.txt file.

Generics

Generic name Type Value Description
TPD_G time 1 ns
RX_LANE_CNT_G integer range 1 to 2 1 Number of receive lanes, 1-2
EN_SHORT_CELLS_G integer 1 Enable short non-EOF cells
PAYLOAD_CNT_TOP_G integer 7 Top bit for payload counter

Ports

Port name Direction Type Description
pgpRxClkEn in sl Master clock Enable
pgpRxClk in sl Master clock
pgpRxClkRst in sl Synchronous reset input
pgpRxFlush in sl Flush the link
pgpRxLinkReady in sl Local side has link
pgpRxCellError out sl A cell error has occured
cellRxPause in sl Cell data pause
cellRxSOC in sl Cell data start of cell
cellRxSOF in sl Cell data start of frame
cellRxEOC in sl Cell data end of cell
cellRxEOF in sl Cell data end of frame
cellRxEOFE in sl Cell data end of frame error
cellRxData in slv(RX_LANE_CNT_G*16-1 downto 0) Cell data data
vcFrameRxSOF out sl PGP frame data start of frame
vcFrameRxEOF out sl PGP frame data end of frame
vcFrameRxEOFE out sl PGP frame data error
vcFrameRxData out slv(RX_LANE_CNT_G*16-1 downto 0) PGP frame data
vc0FrameRxValid out sl PGP frame data is valid
vc0RemAlmostFull out sl Remote buffer almost full
vc0RemOverflow out sl Remote buffer overflow
vc1FrameRxValid out sl PGP frame data is valid
vc1RemAlmostFull out sl Remote buffer almost full
vc1RemOverflow out sl Remote buffer overflow
vc2FrameRxValid out sl PGP frame data is valid
vc2RemAlmostFull out sl Remote buffer almost full
vc2RemOverflow out sl Remote buffer overflow
vc3FrameRxValid out sl PGP frame data is valid
vc3RemAlmostFull out sl Remote buffer almost full
vc3RemOverflow out sl Remote buffer overflow
crcRxIn out slv(RX_LANE_CNT_G*16-1 downto 0) Receive data for CRC
crcRxInit out sl Receive CRC value init
crcRxValid out sl Receive data for CRC is valid
crcRxOut in slv(31 downto 0) Receive calculated CRC value

Signals

Name Type Description
dly0SOC sl
dly0SOF sl
dly0EOC sl
dly0EOF sl
dly0EOFE sl
dly0Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly1SOC sl
dly1SOF sl
dly1EOC sl
dly1EOF sl
dly1EOFE sl
dly1Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly2SOC sl
dly2SOF sl
dly2EOC sl
dly2EOF sl
dly2EOFE sl
dly2Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly3SOC sl
dly3SOF sl
dly3EOC sl
dly3EOF sl
dly3EOFE sl
dly3Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly4SOC sl
dly4SOF sl
dly4EOC sl
dly4EOF sl
dly4EOFE sl
dly4Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly5SOC sl
dly5SOF sl
dly5EOC sl
dly5EOF sl
dly5EOFE sl
dly5Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly6SOC sl
dly6SOF sl
dly6EOC sl
dly6EOF sl
dly6EOFE sl
dly6Data slv(RX_LANE_CNT_G*16-1 downto 0)
dly7SOC sl
dly7SOF sl
dly7EOC sl
dly7EOF sl
dly7EOFE sl
dly7Data slv(RX_LANE_CNT_G*16-1 downto 0)
intCrcRxValid sl
crcNotZero sl
linkDownCnt slv(4 downto 0)
compSOC sl
compData slv(RX_LANE_CNT_G*16-1 downto 0)
detSOC sl
detSOF sl
outData slv(RX_LANE_CNT_G*16-1 downto 0)
detEOC sl
detEOF sl
detEOFE sl
inCellEn sl
nxtCellEn sl
inCellSerErr sl
inCellSOF sl
inCellEOC sl
inCellEOF sl
inCellEOFE sl
inCellCnt slv(PAYLOAD_CNT_TOP_G downto 0)
vcInFrame slv(3 downto 0)
currVc slv(1 downto 0)
serErr sl
vc0Serial slv(5 downto 0)
vc0Valid sl
vc1Serial slv(5 downto 0)
vc1Valid sl
vc2Serial slv(5 downto 0)
vc2Valid sl
vc3Serial slv(5 downto 0)
vc3Valid sl
abortVc slv(1 downto 0)
abortEn sl
intCellError sl
dlyCellError sl

Processes

Description
Detect current VC, check cell serial number

Description
Receive cell tracking

Description
Data Output

Description
Update buffer status on successfull cell reception