Entity: RssiCore

Diagram

time TPD_G real CLK_FREQUENCY_G real TIMEOUT_UNIT_G boolean SERVER_G boolean RETRANSMIT_ENABLE_G positive range 1 to 10 WINDOW_ADDR_SIZE_G positive SEGMENT_ADDR_SIZE_G AxiStreamConfigType APP_AXIS_CONFIG_G AxiStreamConfigType TSP_AXIS_CONFIG_G boolean BYP_TX_BUFFER_G boolean BYP_RX_BUFFER_G string SYNTH_MODE_G string MEMORY_TYPE_G natural INIT_SEQ_N_G positive CONN_ID_G positive VERSION_G boolean HEADER_CHKSUM_EN_G positive range 2 to 1024 MAX_NUM_OUTS_SEG_G positive MAX_SEG_SIZE_G positive ACK_TOUT_G positive RETRANS_TOUT_G positive NULL_TOUT_G positive MAX_RETRANS_CNT_G positive MAX_CUM_ACK_CNT_G sl clk_i sl rst_i sl openRq_i sl closeRq_i sl inject_i AxiStreamMasterType sAppAxisMaster_i AxiStreamSlaveType mAppAxisSlave_i AxiStreamMasterType sTspAxisMaster_i AxiStreamSlaveType mTspAxisSlave_i sl axiClk_i sl axiRst_i AxiLiteReadMasterType axilReadMaster AxiLiteWriteMasterType axilWriteMaster AxiStreamSlaveType sAppAxisSlave_o AxiStreamMasterType mAppAxisMaster_o AxiStreamSlaveType sTspAxisSlave_o AxiStreamMasterType mTspAxisMaster_o AxiLiteReadSlaveType axilReadSlave AxiLiteWriteSlaveType axilWriteSlave slv(6 downto 0) statusReg_o slv(15 downto 0) maxSegSize_o

Description


Title : RSSI Protocol: https://confluence.slac.stanford.edu/x/1IyfD

Company : SLAC National Accelerator Laboratory

Description: The module is based upon RUDP (Cisco implementation) RFC-908, RFC-1151, draft-ietf-sigtran-reliable-udp-00. The specifications in the drafts are modified by internal simplifications and improvements.

         Interfaces to transport and application side through AxiStream ports          The AxiStream IO port widths can be adjusted (AxiStream FIFOs added to IO)          Optional AxiLite Register interface. More info on registers is in RssiAxiLiteRegItf.vhd          The module can act as Server or Client:             - Server: - Passively listens for connection request from client,                       - Monitors connection activity NULL segment timeouts             - Client: - Actively requests connection                       - Sends NULL packages if there is no incoming data

Status register: statusReg_o(0) : Connection Active statusReg_o(1) : Maximum retransmissions exceeded r.retransMax and statusReg_o(2) : Null timeout reached (server) r.nullTout; statusReg_o(3) : Error in acknowledgment mechanism statusReg_o(4) : SSI Frame length too long statusReg_o(5) : Connection to peer timed out statusReg_o(6) : Client rejected the connection (parameters out of range)

Server proposed new parameters (parameters out of range)

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
CLK_FREQUENCY_G real 100.0E6
TIMEOUT_UNIT_G real 1.0E-6 us (Applies to all the timeouts in the core)
SERVER_G boolean true Module is server or client
RETRANSMIT_ENABLE_G boolean true Enable/Disable retransmissions in tx module
WINDOW_ADDR_SIZE_G positive range 1 to 10 3 2^WINDOW_ADDR_SIZE_G = Max number of segments in buffer
SEGMENT_ADDR_SIZE_G positive 7 2^SEGMENT_ADDR_SIZE_G = Number of 64 bit wide data words
APP_AXIS_CONFIG_G AxiStreamConfigType AXIS Configurations
TSP_AXIS_CONFIG_G AxiStreamConfigType
BYP_TX_BUFFER_G boolean false Generic RSSI parameters
BYP_RX_BUFFER_G boolean false
SYNTH_MODE_G string "inferred"
MEMORY_TYPE_G string "block"
INIT_SEQ_N_G natural 16#80# Version and connection ID
CONN_ID_G positive 16#12345678#
VERSION_G positive 1
HEADER_CHKSUM_EN_G boolean true
MAX_NUM_OUTS_SEG_G positive range 2 to 1024 8 <=(2**WINDOW_ADDR_SIZE_G)
MAX_SEG_SIZE_G positive 1024 <= (2*SEGMENT_ADDR_SIZE_G)8 Number of bytes
ACK_TOUT_G positive 25 unit depends on TIMEOUT_UNIT_G
RETRANS_TOUT_G positive 50 unit depends on TIMEOUT_UNIT_G (Recommended >= MAX_NUM_OUTS_SEG_G*Data segment transmission time)
NULL_TOUT_G positive 200 unit depends on TIMEOUT_UNIT_G (Recommended >= 4*RETRANS_TOUT_G)
MAX_RETRANS_CNT_G positive 2 Counters
MAX_CUM_ACK_CNT_G positive 3

Ports

Port name Direction Type Description
clk_i in sl
rst_i in sl
openRq_i in sl High level Application side interface
closeRq_i in sl
inject_i in sl
sAppAxisMaster_i in AxiStreamMasterType SSI Application side
sAppAxisSlave_o out AxiStreamSlaveType
mAppAxisMaster_o out AxiStreamMasterType
mAppAxisSlave_i in AxiStreamSlaveType
sTspAxisMaster_i in AxiStreamMasterType SSI Transport side
sTspAxisSlave_o out AxiStreamSlaveType
mTspAxisMaster_o out AxiStreamMasterType
mTspAxisSlave_i in AxiStreamSlaveType
axiClk_i in sl AXI-Lite Register Interface
axiRst_i in sl
axilReadMaster in AxiLiteReadMasterType
axilReadSlave out AxiLiteReadSlaveType
axilWriteMaster in AxiLiteWriteMasterType
axilWriteSlave out AxiLiteWriteSlaveType
statusReg_o out slv(6 downto 0) Internal statuses
maxSegSize_o out slv(15 downto 0)

Signals

Name Type Description
s_rxBuffBusy sl
s_appRssiParam RssiParamType RSSI Parameters
s_rxRssiParam RssiParamType
s_rssiParam RssiParamType
s_sndResend sl Tx Segment requests
s_sndSyn sl
s_sndAck sl
s_sndAckMon sl
s_sndAckCon sl
s_sndRst sl
s_sndNull sl
s_synHeadSt sl Header states
s_rstHeadSt sl
s_dataHeadSt sl
s_nullHeadSt sl
s_ackHeadSt sl
s_txSeqN slv(7 downto 0) Current transmitted or received SeqN and AckN
s_txAckN slv(7 downto 0)
s_rxLastSeqN slv(7 downto 0)
s_rxAckN slv(7 downto 0)
s_rxLastAckN slv(7 downto 0)
s_headerAddr slv(7 downto 0) Tx Header
s_headerData slv(RSSI_WORD_WIDTH_C*8-1 downto 0)
s_headerRdy sl
s_txChkEnable sl Tx Checksum
s_txChkValid sl
s_txChkStrobe sl
s_txChkLength positive
s_txChksum slv(15 downto 0)
s_rxChkEnable sl Rx Checksum
s_rxChkValid sl
s_rxChkCheck sl
s_rxChkStrobe sl
s_rxChkLength positive
s_rxValidSeg sl Rx Statuses
s_rxDropSeg sl
s_rxFlags flagsType
s_rxBufferSize integer range 1 to 2 ** (SEGMENT_ADDR_SIZE_G) Rx segment buffer
s_rxWindowSize integer range 1 to 2 ** (WINDOW_ADDR_SIZE_G)
s_rxWrBuffAddr slv(BUFFER_ADDR_WIDTH_C-1 downto 0)
s_rxWrBuffData slv(RSSI_WORD_WIDTH_C*8-1 downto 0)
s_rxWrBuffWe sl
s_rxRdBuffRe sl
s_rxRdBuffAddr slv(BUFFER_ADDR_WIDTH_C-1 downto 0)
s_rxRdBuffData slv(RSSI_WORD_WIDTH_C*8-1 downto 0)
s_txBufferSize integer range 1 to 2 ** (SEGMENT_ADDR_SIZE_G) Tx segment buffer
s_txWindowSize integer range 1 to 2 ** (WINDOW_ADDR_SIZE_G)
s_txWrBuffAddr slv(BUFFER_ADDR_WIDTH_C-1 downto 0)
s_txWrBuffData slv(RSSI_WORD_WIDTH_C*8-1 downto 0)
s_txWrBuffWe sl
s_txRdBuffRe sl
s_txRdBuffAddr slv(BUFFER_ADDR_WIDTH_C-1 downto 0)
s_txRdBuffData slv(RSSI_WORD_WIDTH_C*8-1 downto 0)
s_rxAck sl Acknowledge pulse when valid segment with acknowledge flag received
s_rstFifo sl Application Fifo reset when connection is closed
s_sAppAxisMaster AxiStreamMasterType AXIS Application side
s_sAppAxisSlave AxiStreamSlaveType
s_mAppAxisMaster AxiStreamMasterType
s_mAppAxisSlave AxiStreamSlaveType
s_mAppAxisCtrl AxiStreamCtrlType
s_sAppSsiMaster SsiMasterType SSI Application side
s_sAppSsiSlave SsiSlaveType
s_mAppSsiMaster SsiMasterType
s_mAppSsiSlave SsiSlaveType
s_sTspAxisMaster AxiStreamMasterType AXIS Transport side
s_sTspAxisSlave AxiStreamSlaveType
s_mTspAxisMaster AxiStreamMasterType
s_mTspAxisSlave AxiStreamSlaveType
s_mTspAxisCtrl AxiStreamCtrlType
s_sTspSsiMaster SsiMasterType SSI Transport side
s_sTspSsiSlave SsiSlaveType
s_mTspSsiMaster SsiMasterType
s_mTspSsiSlave SsiSlaveType
s_txBufferEmpty sl Monitor input signals
s_lenErr sl
s_ackErr sl
s_peerConnTout sl
s_paramReject sl
s_initSeqN slv(7 downto 0) Connection control and parameters
s_connActive sl
s_closeRq sl
s_closed sl
s_openRq sl
s_intCloseRq sl
s_txAckF sl
s_injectFaultReg sl Fault injection
s_injectFault sl
s_openRqReg sl Axi Lite registers
s_closeRqReg sl
s_modeReg sl '0': Use internal parameters from generics
s_initSeqNReg slv(7 downto 0) '1': Use parameters from Axil
s_appRssiParamReg RssiParamType
s_statusReg slv(statusReg_o'range)
s_dropCntReg slv(31 downto 0)
s_validCntReg slv(31 downto 0)
s_reconCntReg slv(31 downto 0)
s_resendCntReg slv(31 downto 0)
monMasters AxiStreamMasterArray(1 downto 0)
monSlaves AxiStreamSlaveArray(1 downto 0)
frameRate Slv32Array(1 downto 0)
bandwidth Slv64Array(1 downto 0)

Constants

Name Type Value Description
BUFFER_ADDR_WIDTH_C positive (SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)

Processes

Description
///////////////////////////////////////////////////////// ---------------------------------------------------------- Parameter assignment ---------------------------------------------------------- /////////////////////////////////////////////////////////

Instantiations

Description

/////////////////////////////////////////////////////////

Register interface

/////////////////////////////////////////////////////////

Description
Application side

Description
Transport side

Description

/////////////////////////////////////////////////////////

Connection and monitoring part

Description

/////////////////////////////////////////////////////////

TX part

/////////////////////////////////////////////////////////
Header decoder module

Description

Description

/////////////////////////////////////////////////////////

RX part

/////////////////////////////////////////////////////////

Description

/////////////////////////////////////////////////////////

Output AXIS fifos

/////////////////////////////////////////////////////////
Application side

Description
Transport side