Entity: RssiAxiLiteRegItf

Diagram

time TPD_G boolean COMMON_CLK_G positive SEGMENT_ADDR_SIZE_G real TIMEOUT_UNIT_G natural INIT_SEQ_N_G positive CONN_ID_G positive VERSION_G boolean HEADER_CHKSUM_EN_G positive MAX_NUM_OUTS_SEG_G positive MAX_SEG_SIZE_G positive RETRANS_TOUT_G positive ACK_TOUT_G positive NULL_TOUT_G positive MAX_RETRANS_CNT_G positive MAX_CUM_ACK_CNT_G natural MAX_OUT_OF_SEQUENCE_G sl axiClk_i sl axiRst_i AxiLiteReadMasterType axilReadMaster AxiLiteWriteMasterType axilWriteMaster sl devClk_i sl devRst_i RssiParamType negRssiParam_i Slv32Array(1 downto 0) frameRate_i Slv64Array(1 downto 0) bandwidth_i slv(6 downto 0) status_i slv(31 downto 0) dropCnt_i slv(31 downto 0) validCnt_i slv(31 downto 0) resendCnt_i slv(31 downto 0) reconCnt_i AxiLiteReadSlaveType axilReadSlave AxiLiteWriteSlaveType axilWriteSlave sl openRq_o sl closeRq_o sl mode_o sl injectFault_o slv(7 downto 0) initSeqN_o RssiParamType appRssiParam_o

Description


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

Company : SLAC National Accelerator Laboratory

Description: Register decoding for RSSI core 0x00 (RW)- Control register [4:0]: bit 0: Open connection request (Default '0') bit 1: Close connection request (Default '0') bit 2: Mode (Default '0'): - '0': Use internal parameters from generics - '1': Use parameters from Axil bit 3: Header checksum enable (Default '1') bit 4: Inject fault to the next packet header checksum (Default '0') Acts on rising edge - injects exactly one fault in next segment (ACK, NULL, or DATA) 0x01 (RW)- Initial sequence number [7:0] (Default x"80") 0x02 (RW)- Version register [3:0](Default x"1") 0x03 (RW)- Maximum out standing segments 7:0: Defines the max number of segments in the RSSI receiver buffer 0x04 (RW)- Maximum segment size [15:0](Default x"0400") Defines the size of segment buffer! Number of bytes! 0x05 (RW)- Retransmission timeout [15:0](Default 50) Unit depends on TIMEOUT_UNIT_G 0x06 (RW)- Cumulative acknowledgment timeout [15:0](Default 50) Unit depends on TIMEOUT_UNIT_G 0x07 (RW)- Null segment timeout [15:0](Default 50) Unit depends on TIMEOUT_UNIT_G Server: Close connection if Null segment missed! Client: Transmit Null segment when nullSegTout/2 reached! 0x08 (RW)- Maximum number of retransmissions [7:0](Default x"02") How many times segments are retransmitted before the connection gets broken. 0x09 (RW)- Maximum cumulative acknowledgments [7:0](Default x"03") When more than maxCumAck are received and not acknowledged the ACK packet will be sent to acknowledge the received packets. Even though the cumulative acknowledgment timeout has not been reached yet! 0x0A (RW)- Max out of sequence segments (EACK) [7:0](Default x"03") Currently not used TBD 0x0B (RW)- Connection ID [31:0](Default x"12345678") Every connection should have unique connection ID. Statuses 0x10 (R)- Status register [5:0]: bit(0) : Connection Active bit(1) : Maximum retransmissions exceeded retransMax bit(2) : Null timeout reached (server) r.nullTout bit(3) : Error in acknowledgment mechanism bit(4) : SSI Frame length too long bit(5) : Connection to peer timed out bit(6) : Parameters from peer rejected (Client) or new proposed(Server) 0x11 (R)- Number of valid segments [31:0]: The value rests to 0 when new connection open is requested. 0x12 (R)- Number of dropped segments [31:0]: The value rests to 0 when new connection open is requested. 0x13 (R)- Counts all retransmission requests within the active connection [31:0]: The value rests to 0 when new connection open is requested. 0x14 (R)- Counts all reconnections from reset [31:0]:

The value rests to 0 when module is reset.

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 General Configurations
COMMON_CLK_G boolean false true if axiClk_i = devClk_i
SEGMENT_ADDR_SIZE_G positive 7 2^SEGMENT_ADDR_SIZE_G = Number of 64 bit wide data words
TIMEOUT_UNIT_G real 1.0E-6 Defaults form generics
INIT_SEQ_N_G natural 16#80#
CONN_ID_G positive 16#12345678#
VERSION_G positive 1
HEADER_CHKSUM_EN_G boolean true
MAX_NUM_OUTS_SEG_G positive 8 <=(2**WINDOW_ADDR_SIZE_G)
MAX_SEG_SIZE_G positive 1024 Number of bytes
RETRANS_TOUT_G positive 50 unit depends on TIMEOUT_UNIT_G
ACK_TOUT_G positive 25 unit depends on TIMEOUT_UNIT_G
NULL_TOUT_G positive 200 unit depends on TIMEOUT_UNIT_G
MAX_RETRANS_CNT_G positive 2
MAX_CUM_ACK_CNT_G positive 3
MAX_OUT_OF_SEQUENCE_G natural 3

Ports

Port name Direction Type Description
axiClk_i in sl AXI Clk
axiRst_i in sl
axilReadMaster in AxiLiteReadMasterType Axi-Lite Register Interface (locClk domain)
axilReadSlave out AxiLiteReadSlaveType
axilWriteMaster in AxiLiteWriteMasterType
axilWriteSlave out AxiLiteWriteSlaveType
devClk_i in sl Rssi Clk
devRst_i in sl
openRq_o out sl RegistersControl (RW)
closeRq_o out sl
mode_o out sl
injectFault_o out sl
initSeqN_o out slv(7 downto 0)
appRssiParam_o out RssiParamType
negRssiParam_i in RssiParamType
frameRate_i in Slv32Array(1 downto 0) Status (RO)
bandwidth_i in Slv64Array(1 downto 0)
status_i in slv(6 downto 0)
dropCnt_i in slv(31 downto 0)
validCnt_i in slv(31 downto 0)
resendCnt_i in slv(31 downto 0)
reconCnt_i in slv(31 downto 0)

Signals

Name Type Description
r RegType
rin RegType
s_RdAddr natural Integer address
s_WrAddr natural
s_status slv(status_i'range) Synced status signals
s_dropCnt slv(31 downto 0)
s_validCnt slv(31 downto 0)
s_reconCnt slv(31 downto 0)
s_resendCnt slv(31 downto 0)
dummyBit sl
negRssiParam RssiParamType

Constants

Name Type Value Description
REG_INIT_C RegType ( -- Control (RW) control => "01000",
-- Parameters (RW) initSeqN => toSlv(INIT_SEQ_N_G,
8),
appRssiParam => ( version => toSlv(VERSION_G,
4),
chksumEn => "1",
timeoutUnit => toSlv(integer(0.0 - (ieee.math_real.log(TIMEOUT_UNIT_G)/ieee.math_real.log(10.0))),
8),
maxOutsSeg => toSlv(MAX_NUM_OUTS_SEG_G,
8),
maxSegSize => toSlv(MAX_SEG_SIZE_G,
16),
retransTout => toSlv(RETRANS_TOUT_G,
16),
cumulAckTout => toSlv(ACK_TOUT_G,
16),
nullSegTout => toSlv(NULL_TOUT_G,
16),
maxRetrans => toSlv(MAX_RETRANS_CNT_G,
8),
maxCumAck => toSlv(MAX_CUM_ACK_CNT_G,
8),
maxOutofseq => toSlv(MAX_OUT_OF_SEQUENCE_G,
8),
connectionId => toSlv(CONN_ID_G,
32)),
-- AXI lite axilReadSlave => AXI_LITE_READ_SLAVE_INIT_C,
axilWriteSlave => AXI_LITE_WRITE_SLAVE_INIT_C)

Types

Name Type Description
RegType

Processes

Instantiations