Entity: Pgp4Tx
- File: Pgp4Tx.vhd
Diagram
Description
Title : PGPv4: https://confluence.slac.stanford.edu/x/1dzgEQ
Company : SLAC National Accelerator Laboratory
Description: Pgpv4 Transmit
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 | |
| NUM_VC_G | integer range 1 to 16 | 1 | PGP configuration |
| CELL_WORDS_MAX_G | integer | 256 | Number of 64-bit words per cell |
| MUX_MODE_G | string | "INDEXED" | Or "ROUTED" |
| MUX_TDEST_ROUTES_G | Slv8Array | (0 => "--------") | Only used in ROUTED mode |
| MUX_TDEST_LOW_G | integer range 0 to 7 | 0 | |
| MUX_ILEAVE_EN_G | boolean | true | |
| MUX_ILEAVE_ON_NOTVALID_G | boolean | true |
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| pgpTxClk | in | sl | Transmit interface |
| pgpTxRst | in | sl | |
| pgpTxIn | in | Pgp4TxInType | |
| pgpTxOut | out | Pgp4TxOutType | |
| pgpTxMasters | in | AxiStreamMasterArray(NUM_VC_G-1 downto 0) | |
| pgpTxSlaves | out | AxiStreamSlaveArray(NUM_VC_G-1 downto 0) | |
| locRxFifoCtrl | in | AxiStreamCtrlArray(NUM_VC_G-1 downto 0) | Status of receive and remote FIFOs (Asynchronous) |
| locRxLinkReady | in | sl | |
| remRxFifoCtrl | in | AxiStreamCtrlArray(NUM_VC_G-1 downto 0) | |
| remRxLinkReady | in | sl | |
| phyTxActive | in | sl | PHY interface |
| phyTxReady | in | sl | |
| phyTxValid | out | sl | |
| phyTxStart | out | sl | |
| phyTxData | out | slv(63 downto 0) | |
| phyTxHeader | out | slv(1 downto 0) |
Signals
| Name | Type | Description |
|---|---|---|
| syncLocRxFifoCtrl | AxiStreamCtrlArray(NUM_VC_G-1 downto 0) | |
| syncLocRxLinkReady | sl | |
| syncRemRxFifoCtrl | AxiStreamCtrlArray(NUM_VC_G-1 downto 0) | |
| syncRemRxLinkReady | sl | |
| disableSel | slv(NUM_VC_G-1 downto 0) | Pipeline signals |
| rearbitrate | sl | |
| muxedTxMaster | AxiStreamMasterType | |
| muxedTxSlave | AxiStreamSlaveType | |
| packetizedTxMaster | AxiStreamMasterType | |
| packetizedTxSlave | AxiStreamSlaveType | |
| phyTxActiveL | sl | |
| protTxValid | sl | |
| protTxReady | sl | |
| protTxStart | sl | |
| protTxData | slv(63 downto 0) | |
| protTxHeader | slv(1 downto 0) |
Processes
- DISABLE_SEL: ( pgpTxIn, syncRemRxFifoCtrl )
Description
Use synchronized remote status to disable channels from mux selection All flow control overriden by pgpTxIn 'disable' and 'flowCntlDis'
Instantiations
- U_Synchronizer_REM: surf.Synchronizer
- U_Synchronizer_LOC: surf.Synchronizer
Description
Synchronize local rx status
- U_AxiStreamMux_1: surf.AxiStreamMux
Description
Multiplex the incomming tx streams with interleaving
- U_AxiStreamPacketizer2_1: surf.AxiStreamPacketizer2
Description
[in]
Feed muxed stream to packetizer
Note that the mux is doing the work of chunking
Packetizer applies packet formatting and CRC
rearbitrate signal doesn't really do anything (yet)
- U_Pgp4TxProtocol_1: surf.Pgp4TxProtocol
Description
[in]
Feed packets into PGP TX Protocol engine
Translates Packetizer2 frames, status, and opcodes into unscrambled 64b66b charachters
- U_Scrambler_1: surf.Scrambler
Description
[out]
Scramble the data for 64b66b