SURF  1.0
RssiCore.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : RssiCore.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2015-08-09
5 -- Last update: 2016-05-13
6 -------------------------------------------------------------------------------
7 -- Description: The module is based upon RUDP (Cisco implementation) RFC-908, RFC-1151, draft-ietf-sigtran-reliable-udp-00.
8 -- The specifications in the drafts are modified by internal simplifications and improvements.
9 --
10 -- Interfaces to transport and application side through AxiStream ports
11 -- The AxiStream IO port widths can be adjusted (AxiStream FIFOs added to IO)
12 -- Optional AxiLite Register interface. More info on registers is in RssiAxiLiteRegItf.vhd
13 -- The module can act as Server or Client:
14 -- - Server: - Passively listens for connection request from client,
15 -- - Monitors connection activity NULL segment timeouts
16 -- - Client: - Actively requests connection
17 -- - Sends NULL packages if there is no incoming data
18 -- Status register:
19 -- statusReg_o(0) : Connection Active
20 -- statusReg_o(1) : Maximum retransmissions exceeded r.retransMax and
21 -- statusReg_o(2) : Null timeout reached (server) r.nullTout;
22 -- statusReg_o(3) : Error in acknowledgment mechanism
23 -- statusReg_o(4) : SSI Frame length too long
24 -- statusReg_o(5) : Connection to peer timed out
25 -- statusReg_o(6) : Client rejected the connection (parameters out of range)
26 -- Server proposed new parameters (parameters out of range)
27 -------------------------------------------------------------------------------
28 -- This file is part of 'SLAC Firmware Standard Library'.
29 -- It is subject to the license terms in the LICENSE.txt file found in the
30 -- top-level directory of this distribution and at:
31 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
32 -- No part of 'SLAC Firmware Standard Library', including this file,
33 -- may be copied, modified, propagated, or distributed except according to
34 -- the terms contained in the LICENSE.txt file.
35 -------------------------------------------------------------------------------
36 
37 library ieee;
38 use ieee.std_logic_1164.all;
39 use ieee.std_logic_unsigned.all;
40 use ieee.std_logic_arith.all;
41 use ieee.math_real.all;
42 
43 use work.StdRtlPkg.all;
44 use work.RssiPkg.all;
45 use work.SsiPkg.all;
46 use work.AxiStreamPkg.all;
47 use work.AxiLitePkg.all;
48 
49 --! @see entity
50  --! @ingroup protocols_rssi
51 entity RssiCore is
52  generic (
53  TPD_G : time := 1 ns;
54  CLK_FREQUENCY_G : real := 100.0E6;
55  TIMEOUT_UNIT_G : real := 1.0E-6; -- us (Applies to all the timeouts in the core)
56 
57  SERVER_G : boolean := true; -- Module is server or client
58 
59  RETRANSMIT_ENABLE_G : boolean := true; -- Enable/Disable retransmissions in tx module
60 
61  WINDOW_ADDR_SIZE_G : positive range 1 to 10 := 3; -- 2^WINDOW_ADDR_SIZE_G = Max number of segments in buffer
62  SEGMENT_ADDR_SIZE_G : positive := 7; -- 2^SEGMENT_ADDR_SIZE_G = Number of 64 bit wide data words
63 
65 
66  -- AXIS Configurations
67  APP_AXIS_CONFIG_G : AxiStreamConfigType := ssiAxiStreamConfig(4, TKEEP_NORMAL_C);
68  TSP_AXIS_CONFIG_G : AxiStreamConfigType := ssiAxiStreamConfig(16, TKEEP_NORMAL_C);
69 
70  -- Generic RSSI parameters
71 
72  -- Version and connection ID
73  INIT_SEQ_N_G : natural := 16#80#;
74  CONN_ID_G : positive := 16#12345678#;
75  VERSION_G : positive := 1;
76  HEADER_CHKSUM_EN_G : boolean := true;
77 
78  -- Window parameters of receiver module
79  MAX_NUM_OUTS_SEG_G : positive range 2 to 1024 := 8; -- <=(2**WINDOW_ADDR_SIZE_G)
80  MAX_SEG_SIZE_G : positive := 1024; -- <= (2**SEGMENT_ADDR_SIZE_G)*8 Number of bytes
81 
82  -- RSSI Timeouts
83  ACK_TOUT_G : positive := 25; -- unit depends on TIMEOUT_UNIT_G
84  RETRANS_TOUT_G : positive := 50; -- unit depends on TIMEOUT_UNIT_G (Recommended >= MAX_NUM_OUTS_SEG_G*Data segment transmission time)
85  NULL_TOUT_G : positive := 200; -- unit depends on TIMEOUT_UNIT_G (Recommended >= 4*RETRANS_TOUT_G)
86 
87  -- Counters
88  MAX_RETRANS_CNT_G : positive := 2;
89  MAX_CUM_ACK_CNT_G : positive := 3
90  );
91  port (
92  clk_i : in sl;
93  rst_i : in sl;
94 
95  -- High level Application side interface
96  openRq_i : in sl;
97  closeRq_i : in sl;
98  inject_i : in sl := '0';
99 
100  -- SSI Application side
103  mAppAxisMaster_o : out AxiStreamMasterType;
104  mAppAxisSlave_i : in AxiStreamSlaveType;
105 
106  -- SSI Transport side
111 
112  -- AXI-Lite Register Interface
113  axiClk_i : in sl := '0';
114  axiRst_i : in sl := '0';
119 
120  -- Internal statuses
121  statusReg_o : out slv(6 downto 0));
122 end entity RssiCore;
123 
124 architecture rtl of RssiCore is
125  --
126  constant FIFO_ADDR_WIDTH_C : positive := ite((SEGMENT_ADDR_SIZE_G < 7), 9, SEGMENT_ADDR_SIZE_G+2);
127  constant FIFO_PAUSE_THRESH_C : positive := ((2**FIFO_ADDR_WIDTH_C)-1) - 16; -- FIFO_FULL - padding (128 bytes)
128 
129  -- RSSI Parameters
130  signal s_appRssiParam : RssiParamType;
131  signal s_rxRssiParam : RssiParamType;
132  signal s_rssiParam : RssiParamType;
133 
134  -- Tx Segment requests
135  signal s_sndResend : sl;
136  signal s_sndSyn : sl;
137  signal s_sndAck : sl;
138  signal s_sndAckMon : sl;
139  signal s_sndAckCon : sl;
140 
141  signal s_sndRst : sl;
142  signal s_sndNull : sl;
143 
144  -- Header states
145  signal s_synHeadSt : sl;
146  signal s_rstHeadSt : sl;
147  signal s_dataHeadSt : sl;
148  signal s_nullHeadSt : sl;
149  signal s_ackHeadSt : sl;
150 
151  -- Current transmitted or received SeqN and AckN
152  signal s_txSeqN : slv(7 downto 0);
153  signal s_txAckN : slv(7 downto 0);
154 
155  signal s_rxSeqN : slv(7 downto 0);
156  signal s_rxLastSeqN : slv(7 downto 0);
157  signal s_rxAckN : slv(7 downto 0);
158  signal s_rxLastAckN : slv(7 downto 0);
159 
160  -- Tx Header
161  signal s_headerAddr : slv(7 downto 0);
162  signal s_headerData : slv(RSSI_WORD_WIDTH_C*8-1 downto 0);
163  signal s_headerRdy : sl;
164 
165  -- Tx Checksum
166  signal s_txChkEnable : sl;
167  signal s_txChkValid : sl;
168  signal s_txChkStrobe : sl;
169  signal s_txChkLength : positive;
170  signal s_txChksum : slv(15 downto 0);
171 
172  -- Rx Checksum
173  signal s_rxChkEnable : sl;
174  signal s_rxChkValid : sl;
175  signal s_rxChkCheck : sl;
176  signal s_rxChkStrobe : sl;
177  signal s_rxChkLength : positive;
178 
179  -- Rx Statuses
180  signal s_rxValidSeg : sl;
181  signal s_rxDropSeg : sl;
182  signal s_rxFlags : flagsType;
183 
184  -- Rx segment buffer
185  signal s_rxBufferSize : integer range 1 to 2 ** (SEGMENT_ADDR_SIZE_G);
186  signal s_rxWindowSize : integer range 1 to 2 ** (WINDOW_ADDR_SIZE_G);
187  signal s_rxWrBuffAddr : slv((SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)-1 downto 0);
188  signal s_rxWrBuffData : slv(RSSI_WORD_WIDTH_C*8-1 downto 0);
189  signal s_rxWrBuffWe : sl;
190  signal s_rxRdBuffRe : sl;
191  signal s_rxRdBuffAddr : slv((SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)-1 downto 0);
192  signal s_rxRdBuffData : slv(RSSI_WORD_WIDTH_C*8-1 downto 0);
193 
194  -- Tx segment buffer
195  signal s_txBufferSize : integer range 1 to 2 ** (SEGMENT_ADDR_SIZE_G);
196  signal s_txWindowSize : integer range 1 to 2 ** (WINDOW_ADDR_SIZE_G);
197  signal s_txWrBuffAddr : slv((SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)-1 downto 0);
198  signal s_txWrBuffData : slv(RSSI_WORD_WIDTH_C*8-1 downto 0);
199  signal s_txWrBuffWe : sl;
200  signal s_txRdBuffRe : sl;
201  signal s_txRdBuffAddr : slv((SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)-1 downto 0);
202  signal s_txRdBuffData : slv(RSSI_WORD_WIDTH_C*8-1 downto 0);
203 
204  -- Acknowledge pulse when valid segment
205  -- with acknowledge flag received
206  signal s_rxAck : sl;
207 
208  -- Application Fifo reset when connection is closed
209  signal s_rstFifo : sl;
210 
211  -- AXIS Application side
212  signal s_sAppAxisMaster : AxiStreamMasterType;
213  signal s_sAppAxisSlave : AxiStreamSlaveType;
214  signal s_mAppAxisMaster : AxiStreamMasterType;
215  signal s_mAppAxisSlave : AxiStreamSlaveType;
216  signal s_mAppAxisCtrl : AxiStreamCtrlType;
217 
218  -- SSI Application side
219  signal s_sAppSsiMaster : SsiMasterType;
220  signal s_sAppSsiSlave : SsiSlaveType;
221  signal s_mAppSsiMaster : SsiMasterType;
222  signal s_mAppSsiSlave : SsiSlaveType;
223 
224  -- AXIS Transport side
225  signal s_sTspAxisMaster : AxiStreamMasterType;
226  signal s_sTspAxisSlave : AxiStreamSlaveType;
227  signal s_mTspAxisMaster : AxiStreamMasterType;
228  signal s_mTspAxisSlave : AxiStreamSlaveType;
229  signal s_mTspAxisCtrl : AxiStreamCtrlType;
230 
231  -- SSI Transport side
232  signal s_sTspSsiMaster : SsiMasterType;
233  signal s_sTspSsiSlave : SsiSlaveType;
234  signal s_mTspSsiMaster : SsiMasterType;
235  signal s_mTspSsiSlave : SsiSlaveType;
236 
237  -- Monitor input signals
238  signal s_txBufferEmpty : sl;
239  signal s_lenErr : sl;
240  signal s_ackErr : sl;
241  signal s_peerConnTout : sl;
242  signal s_paramReject : sl;
243 
244  -- Connection control and parameters
245  signal s_initSeqN : slv(7 downto 0);
246  signal s_connActive : sl;
247  signal s_closeRq : sl;
248  signal s_closed : sl;
249  signal s_openRq : sl;
250  signal s_intCloseRq : sl;
251  signal s_txAckF : sl;
252 
253  -- Fault injection
254  signal s_injectFaultReg : sl;
255  signal s_injectFault : sl;
256 
257  -- Axi Lite registers
258  signal s_openRqReg : sl;
259  signal s_closeRqReg : sl;
260  signal s_modeReg : sl; -- '0': Use internal parameters from generics
261  -- '1': Use parameters from Axil
262  signal s_initSeqNReg : slv(7 downto 0);
263  signal s_appRssiParamReg : RssiParamType;
264 
265  signal s_statusReg : slv(statusReg_o'range);
266  signal s_dropCntReg : slv(31 downto 0);
267  signal s_validCntReg : slv(31 downto 0);
268  signal s_reconCntReg : slv(31 downto 0);
269  signal s_resendCntReg : slv(31 downto 0);
270 
271  signal monMasters : AxiStreamMasterArray(1 downto 0);
272  signal monSlaves : AxiStreamSlaveArray(1 downto 0);
273  signal frameRate : Slv32Array(1 downto 0);
274  signal bandwidth : Slv64Array(1 downto 0);
275 
276  -- attribute dont_touch : string;
277  -- attribute dont_touch of bandwidth : signal is "TRUE";
278  -- attribute dont_touch of s_mAppAxisCtrl : signal is "TRUE";
279  -- attribute dont_touch of s_mTspAxisCtrl : signal is "TRUE";
280 
281 ----------------------------------------------------------------------
282 begin
283  -- Assertions to check generics
284  assert (1 <= MAX_NUM_OUTS_SEG_G and MAX_NUM_OUTS_SEG_G <=(2**WINDOW_ADDR_SIZE_G)) report "MAX_NUM_OUTS_SEG_G should be less or equal to 2**WINDOW_ADDR_SIZE_G" severity failure;
285  assert (8 <= MAX_SEG_SIZE_G and MAX_SEG_SIZE_G <=(2**SEGMENT_ADDR_SIZE_G)*8) report "MAX_SEG_SIZE_G should be less or equal to (2**SEGMENT_ADDR_SIZE_G)*8" severity failure;
286 
287 
288  -- /////////////////////////////////////////////////////////
289  ------------------------------------------------------------
290  -- Register interface
291  ------------------------------------------------------------
292  -- /////////////////////////////////////////////////////////
293  AxiLiteRegItf_INST : entity work.RssiAxiLiteRegItf
294  generic map (
295  TPD_G => TPD_G,
300  CONN_ID_G => CONN_ID_G,
301  VERSION_G => VERSION_G,
311  port map (
312  axiClk_i => axiClk_i,
313  axiRst_i => axiRst_i,
318 
319  -- DevClk domain
320  devClk_i => clk_i,
321  devRst_i => rst_i,
322 
323  -- Control
324  openRq_o => s_openRqReg,
325  closeRq_o => s_closeRqReg,
326  mode_o => s_modeReg,
327  initSeqN_o => s_initSeqNReg,
328  appRssiParam_o => s_appRssiParamReg,
329  injectFault_o => s_injectFaultReg,
330 
331  -- Status (RO)
332  frameRate_i => frameRate,
333  bandwidth_i => bandwidth,
334  status_i => s_statusReg,
335  dropCnt_i => s_dropCntReg,
336  validCnt_i => s_validCntReg,
337  resendCnt_i => s_resendCntReg,
338  reconCnt_i => s_reconCntReg
339  );
340 
341  s_injectFault <= s_injectFaultReg or inject_i;
342 
343  -- /////////////////////////////////////////////////////////
344  ------------------------------------------------------------
345  -- Parameter assignment
346  ------------------------------------------------------------
347  -- /////////////////////////////////////////////////////////
348  combParamAssign : process (closeRq_i, openRq_i, s_appRssiParamReg, s_closeRqReg, s_initSeqNReg,
349  s_intCloseRq, s_modeReg, s_openRqReg) is
350  begin
351  if (s_modeReg = '0') then
352  -- Use external requests
353  s_closeRq <= s_closeRqReg or closeRq_i or s_intCloseRq;
354  s_openRq <= s_openRqReg or openRq_i;
355 
356  -- Assign application side Rssi parameters from generics
357  s_appRssiParam.maxOutsSeg <= toSlv(MAX_NUM_OUTS_SEG_G, 8);
358  s_appRssiParam.maxSegSize <= toSlv(MAX_SEG_SIZE_G, 16);
359  s_appRssiParam.retransTout <= toSlv(RETRANS_TOUT_G, 16);
360  s_appRssiParam.cumulAckTout <= toSlv(ACK_TOUT_G, 16);
361  s_appRssiParam.nullSegTout <= toSlv(NULL_TOUT_G, 16);
362  s_appRssiParam.maxRetrans <= toSlv(MAX_RETRANS_CNT_G, 8);
363  s_appRssiParam.maxCumAck <= toSlv(MAX_CUM_ACK_CNT_G, 8);
364  s_appRssiParam.maxOutofseq <= toSlv(0, 8);
365  s_appRssiParam.version <= toSlv(VERSION_G, 4);
366  s_appRssiParam.connectionId <= toSlv(CONN_ID_G, 32);
367  s_appRssiParam.chksumEn <= ite(HEADER_CHKSUM_EN_G, "1", "0");
368  s_appRssiParam.timeoutUnit <= toSlv(integer(0.0 - (ieee.math_real.log(TIMEOUT_UNIT_G)/ieee.math_real.log(10.0))), 8);
369  --
370  s_initSeqN <= toSlv(INIT_SEQ_N_G, 8);
371  else
372  -- Use axil register requests
373  s_closeRq <= s_closeRqReg or s_intCloseRq;
374  s_openRq <= s_openRqReg;
375 
376  -- Assign application side Rssi parameters from Axilite registers
377  s_appRssiParam <= s_appRssiParamReg;
378  --
379  s_initSeqN <= s_initSeqNReg;
380  end if;
381  end process combParamAssign;
382 
383  -- /////////////////////////////////////////////////////////
384  ------------------------------------------------------------
385  -- Input AXIS fifos
386  ------------------------------------------------------------
387  -- /////////////////////////////////////////////////////////
388 
389  -- Application Fifo reset when connection is closed
390  s_rstFifo <= rst_i or not s_connActive;
391 
392  -- Application side
393  AppFifoIn_INST : entity work.AxiStreamFifoV2
394  generic map (
395  TPD_G => TPD_G,
396  SLAVE_READY_EN_G => true,
397  VALID_THOLD_G => 1,
398  GEN_SYNC_FIFO_G => true,
399  BRAM_EN_G => true,
400  INT_PIPE_STAGES_G => 0,
401  PIPE_STAGES_G => 1,
402  FIFO_ADDR_WIDTH_G => 9,
405  port map (
406  sAxisClk => clk_i,
407  sAxisRst => s_rstFifo,
408  sAxisMaster => monMasters(0),
409  sAxisSlave => monSlaves(0),
410  sAxisCtrl => open,
411  --
412  mAxisClk => clk_i,
413  mAxisRst => s_rstFifo,
414  mAxisMaster => s_sAppAxisMaster,
415  mAxisSlave => s_sAppAxisSlave,
416  mTLastTUser => open);
417 
418  monMasters(0) <= sAppAxisMaster_i;
419  sAppAxisSlave_o <= monSlaves(0);
420 
421  -- Transport side
422  TspFifoIn_INST : entity work.AxiStreamFifoV2
423  generic map (
424  TPD_G => TPD_G,
425  SLAVE_READY_EN_G => true,
426  VALID_THOLD_G => 1,
427  GEN_SYNC_FIFO_G => true,
428  BRAM_EN_G => true,
429  INT_PIPE_STAGES_G => 0,
430  PIPE_STAGES_G => 1,
431  FIFO_ADDR_WIDTH_G => 9,
434  port map (
435  sAxisClk => clk_i,
436  sAxisRst => rst_i,
439  sAxisCtrl => open,
440  --
441  mAxisClk => clk_i,
442  mAxisRst => rst_i,
443  mAxisMaster => s_sTspAxisMaster,
444  mAxisSlave => s_sTspAxisSlave,
445  mTLastTUser => open);
446 
447  -- /////////////////////////////////////////////////////////
448  ------------------------------------------------------------
449  -- Input AXIS conversion to SSI
450  ------------------------------------------------------------
451  -- /////////////////////////////////////////////////////////
452 
453  -- Application side
454  s_sAppSsiMaster <= axis2SsiMaster(RSSI_AXIS_CONFIG_C, s_sAppAxisMaster);
455  s_sAppAxisSlave <= ssi2AxisSlave(s_sAppSsiSlave);
456 
457  -- Transport side
458  s_sTspSsiMaster <= axis2SsiMaster(RSSI_AXIS_CONFIG_C, s_sTspAxisMaster);
459  s_sTspAxisSlave <= ssi2AxisSlave(s_sTspSsiSlave);
460 
461  -- /////////////////////////////////////////////////////////
462  ------------------------------------------------------------
463  -- Connection and monitoring part
464  ------------------------------------------------------------
465  ConnFSM_INST : entity work.ConnFSM
466  generic map (
467  TPD_G => TPD_G,
468  SERVER_G => SERVER_G,
475  port map (
476  clk_i => clk_i,
477  rst_i => rst_i,
478  connRq_i => s_openRq,
479  closeRq_i => s_closeRq,
480  closed_o => s_closed,
481  rxRssiParam_i => s_rxRssiParam,
482  appRssiParam_i => s_appRssiParam,
483  rssiParam_o => s_rssiParam,
484  rxFlags_i => s_rxFlags,
485  rxValid_i => s_rxValidSeg,
486  synHeadSt_i => s_synHeadSt,
487  ackHeadSt_i => s_ackHeadSt,
488  rstHeadSt_i => s_rstHeadSt,
489  connActive_o => s_connActive,
490  sndSyn_o => s_sndSyn,
491  sndAck_o => s_sndAckCon,
492  sndRst_o => s_sndRst,
493  txAckF_o => s_txAckF,
494  rxBufferSize_o => s_rxBufferSize,
495  rxWindowSize_o => s_rxWindowSize,
496  txBufferSize_o => s_txBufferSize,
497  txWindowSize_o => s_txWindowSize,
498  peerTout_o => s_peerConnTout,
499  paramReject_o => s_paramReject);
500 
501  Monitor_INST : entity work.Monitor
502  generic map (
503  TPD_G => TPD_G,
506  SERVER_G => SERVER_G,
509  port map (
510  clk_i => clk_i,
511  rst_i => rst_i,
512  connActive_i => s_connActive,
513 
514  rssiParam_i => s_rssiParam,
515  rxFlags_i => s_rxFlags,
516  rxValid_i => s_rxValidSeg,
517  rxDrop_i => s_rxDropSeg,
518  ackHeadSt_i => s_ackHeadSt,
519  rstHeadSt_i => s_rstHeadSt,
520  dataHeadSt_i => s_dataHeadSt,
521  nullHeadSt_i => s_nullHeadSt,
522  rxLastSeqN_i => s_rxLastSeqN,
523  rxWindowSize_i => s_rxWindowSize,
524  lenErr_i => s_lenErr,
525  ackErr_i => s_ackErr,
526  peerConnTout_i => s_peerConnTout,
527  paramReject_i => s_paramReject,
528  txBufferEmpty_i => s_txBufferEmpty,
529  sndResend_o => s_sndResend,
530  sndAck_o => s_sndAckMon,
531  sndNull_o => s_sndNull,
532  closeRq_o => s_intCloseRq,
533  statusReg_o => s_statusReg,
534  dropCnt_o => s_dropCntReg,
535  validCnt_o => s_validCntReg,
536  resendCnt_o => s_resendCntReg,
537  reconCnt_o => s_reconCntReg
538  );
539 
540  -- /////////////////////////////////////////////////////////
541  ------------------------------------------------------------
542  -- TX part
543  ------------------------------------------------------------
544  -- /////////////////////////////////////////////////////////
545 
546  -- Header decoder module
547  HeaderReg_INST : entity work.HeaderReg
548  generic map (
549  TPD_G => TPD_G,
550 
557  port map (
558  clk_i => clk_i,
559  rst_i => rst_i,
560  synHeadSt_i => s_synHeadSt,
561  rstHeadSt_i => s_rstHeadSt,
562  dataHeadSt_i => s_dataHeadSt,
563  nullHeadSt_i => s_nullHeadSt,
564  ackHeadSt_i => s_ackHeadSt,
565 
566  ack_i => s_txAckF, -- Connected to ConnectFSM
567  txSeqN_i => s_txSeqN,
568  rxAckN_i => s_rxLastSeqN,
569  headerValues_i => s_rssiParam,
570  addr_i => s_headerAddr,
571  headerData_o => s_headerData,
572  ready_o => s_headerRdy,
573  headerLength_o => s_txChkLength);
574 
575  -- TX FSM
576  -----------------------------------------
577  -- Group all ack requests
578  s_sndAck <= s_sndAckCon or s_sndAckMon;
579 
580  --
581  TxFSM_INST : entity work.TxFSM
582  generic map (
583  TPD_G => TPD_G,
593  port map (
594  clk_i => clk_i,
595  rst_i => rst_i,
596  connActive_i => s_connActive,
597  closed_i => s_closed,
598  injectFault_i => s_injectFault,
599 
600  sndSyn_i => s_sndSyn,
601  sndAck_i => s_sndAck,
602  sndRst_i => s_sndRst,
603  sndResend_i => s_sndResend,
604  sndNull_i => s_sndNull,
605 
606  windowSize_i => s_txWindowSize,
607  bufferSize_i => s_txBufferSize,
608 
609 
610  wrBuffWe_o => s_txWrBuffWe,
611  wrBuffAddr_o => s_txWrBuffAddr,
612  wrBuffData_o => s_txWrBuffData,
613  rdBuffAddr_o => s_txRdBuffAddr,
614  rdBuffData_i => s_txRdBuffData,
615 
616  rdHeaderAddr_o => s_headerAddr,
617  rdHeaderData_i => s_headerData,
618  headerRdy_i => s_headerRdy,
619  headerLength_i => s_txChkLength,
620 
621  chksumValid_i => s_txChkValid,
622  chksumEnable_o => s_txChkEnable,
623  chksumStrobe_o => s_txChkStrobe,
624  chksum_i => s_txChksum,
625 
626  initSeqN_i => s_initSeqN,
627 
628  txSeqN_o => s_txSeqN,
629  synHeadSt_o => s_synHeadSt,
630  ackHeadSt_o => s_ackHeadSt,
631  dataHeadSt_o => s_dataHeadSt,
632  dataSt_o => open, -- may be used in the future otherwise remove
633  rstHeadSt_o => s_rstHeadSt,
634  nullHeadSt_o => s_nullHeadSt,
635 
636  lastAckN_o => s_rxLastAckN,
637  ack_i => s_rxAck,
638  ackN_i => s_rxAckN,
639 
640  appSsiMaster_i => s_sAppSsiMaster,
641  appSsiSlave_o => s_sAppSsiSlave,
642 
643  tspSsiSlave_i => s_mTspSsiSlave,
644  tspSsiMaster_o => s_mTspSsiMaster,
645 
646  bufferEmpty_o => s_txBufferEmpty,
647  lenErr_o => s_lenErr,
648  ackErr_o => s_ackErr);
649 
650  -----------------------------------------------
651  -- Tx buffer RAM
652  TxBuffer_INST : entity work.SimpleDualPortRam
653  generic map (
654  TPD_G => TPD_G,
655  DATA_WIDTH_G => RSSI_WORD_WIDTH_C*8,
656  ADDR_WIDTH_G => (SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)
657  )
658  port map (
659  -- Port A - Write only
660  clka => clk_i,
661  wea => s_txWrBuffWe,
662  addra => s_txWrBuffAddr,
663  dina => s_txWrBuffData,
664 
665  -- Port B - Read only
666  clkb => clk_i,
667  rstb => rst_i,
668  addrb => s_txRdBuffAddr,
669  doutb => s_txRdBuffData);
670 
671  tx_Chksum_INST : entity work.Chksum
672  generic map (
673  TPD_G => TPD_G,
674  DATA_WIDTH_G => 64,
675  CSUM_WIDTH_G => 16
676  )
677  port map (
678  clk_i => clk_i,
679  rst_i => rst_i,
680  enable_i => s_txChkEnable,
681  strobe_i => s_txChkStrobe,
682  init_i => x"0000",
683  length_i => s_txChkLength,
684  data_i => endianSwap64(s_mTspSsiMaster.data(RSSI_WORD_WIDTH_C*8-1 downto 0)),
685  chksum_o => s_txChksum,
686  valid_o => s_txChkValid,
687  check_o => open);
688 
689  -- /////////////////////////////////////////////////////////
690  ------------------------------------------------------------
691  -- RX part
692  ------------------------------------------------------------
693  -- /////////////////////////////////////////////////////////
694  RxFSM_INST : entity work.RxFSM
695  generic map (
696  TPD_G => TPD_G,
700  port map (
701  clk_i => clk_i,
702  rst_i => rst_i,
703  connActive_i => s_connActive,
704  rxWindowSize_i => s_rxWindowSize,
705  rxBufferSize_i => s_rxBufferSize,
706  txWindowSize_i => s_txWindowSize,
707  lastAckN_i => s_rxLastAckN, --
708  rxSeqN_o => s_rxSeqN,
709  rxLastSeqN_o => s_rxLastSeqN,
710  rxAckN_o => s_rxAckN,
711  rxValidSeg_o => s_rxValidSeg,
712  rxDropSeg_o => s_rxDropSeg,
713  rxFlags_o => s_rxFlags,
714  rxParam_o => s_rxRssiParam,
715  chksumValid_i => s_rxChkValid,
716  chksumOk_i => s_rxChkCheck,
717  chksumEnable_o => s_rxChkEnable,
718  chksumStrobe_o => s_rxChkStrobe,
719  chksumLength_o => s_rxChkLength,
720  wrBuffWe_o => s_rxWrBuffWe,
721  wrBuffAddr_o => s_rxWrBuffAddr,
722  wrBuffData_o => s_rxWrBuffData,
723  rdBuffAddr_o => s_rxRdBuffAddr,
724  rdBuffData_i => s_rxRdBuffData,
725  tspSsiMaster_i => s_sTspSsiMaster,
726  tspSsiSlave_o => s_sTspSsiSlave,
727  appSsiMaster_o => s_mAppSsiMaster,
728  appSsiSlave_i => s_mAppSsiSlave);
729 
730  -- Rx buffer RAM
731  RxBuffer_INST : entity work.SimpleDualPortRam
732  generic map (
733  TPD_G => TPD_G,
734  DATA_WIDTH_G => RSSI_WORD_WIDTH_C*8,
735  ADDR_WIDTH_G => (SEGMENT_ADDR_SIZE_G+WINDOW_ADDR_SIZE_G)
736  )
737  port map (
738  -- Port A - Write only
739  clka => clk_i,
740  wea => s_rxWrBuffWe,
741  addra => s_rxWrBuffAddr,
742  dina => s_rxWrBuffData,
743 
744  -- Port B - Read only
745  clkb => clk_i,
746  rstb => rst_i,
747  addrb => s_rxRdBuffAddr,
748  doutb => s_rxRdBuffData);
749 
750  -- Acknowledge valid packet
751  s_rxAck <= s_rxValidSeg and s_rxFlags.ack and s_connActive;
752 
753  rx_Chksum_INST : entity work.Chksum
754  generic map (
755  TPD_G => TPD_G,
756  DATA_WIDTH_G => 64,
757  CSUM_WIDTH_G => 16
758  )
759  port map (
760  clk_i => clk_i,
761  rst_i => rst_i,
762  enable_i => s_rxChkEnable,
763  strobe_i => s_rxChkStrobe,
764  init_i => x"0000",
765  length_i => s_rxChkLength,
766  data_i => s_rxWrBuffData,
767  chksum_o => open,
768  valid_o => s_rxChkValid,
769  check_o => s_rxChkCheck);
770 
771  -- /////////////////////////////////////////////////////////
772  ------------------------------------------------------------
773  -- Output SSI conversion to AXIS
774  ------------------------------------------------------------
775  -- /////////////////////////////////////////////////////////
776 
777  -- SSI Application side
778  s_mAppAxisMaster <= ssi2AxisMaster(RSSI_AXIS_CONFIG_C, s_mAppSsiMaster);
779  s_mAppSsiSlave <= axis2SsiSlave(RSSI_AXIS_CONFIG_C, s_mAppAxisSlave, s_mAppAxisCtrl);
780  -- SSI Transport side
781  s_mTspAxisMaster <= ssi2AxisMaster(RSSI_AXIS_CONFIG_C, s_mTspSsiMaster);
782  s_mTspSsiSlave <= axis2SsiSlave(RSSI_AXIS_CONFIG_C, s_mTspAxisSlave, s_mTspAxisCtrl);
783 
784  -- /////////////////////////////////////////////////////////
785  ------------------------------------------------------------
786  -- Output AXIS fifos
787  ------------------------------------------------------------
788  -- /////////////////////////////////////////////////////////
789 
790  -- Application side
791  AppFifoOut_INST : entity work.AxiStreamFifoV2
792  generic map (
793  TPD_G => TPD_G,
794  SLAVE_READY_EN_G => false,
795  VALID_THOLD_G => 1,
796  GEN_SYNC_FIFO_G => true,
797  BRAM_EN_G => true,
798  INT_PIPE_STAGES_G => 0,
799  PIPE_STAGES_G => 1,
800  CASCADE_SIZE_G => 1,
801  CASCADE_PAUSE_SEL_G => 0,
802  FIFO_ADDR_WIDTH_G => FIFO_ADDR_WIDTH_C,
803  FIFO_FIXED_THRESH_G => true,
804  FIFO_PAUSE_THRESH_G => FIFO_PAUSE_THRESH_C,
807  port map (
808  sAxisClk => clk_i,
809  sAxisRst => s_rstFifo,
810  sAxisMaster => s_mAppAxisMaster,
811  sAxisSlave => s_mAppAxisSlave,
812  sAxisCtrl => s_mAppAxisCtrl,
813  --
814  mAxisClk => clk_i,
815  mAxisRst => s_rstFifo,
816  mAxisMaster => monMasters(1),
817  mAxisSlave => monSlaves(1),
818  mTLastTUser => open);
819 
820  mAppAxisMaster_o <= monMasters(1);
821  monSlaves(1) <= mAppAxisSlave_i;
822 
823  -- Transport side
824  TspFifoOut_INST : entity work.AxiStreamFifoV2
825  generic map (
826  TPD_G => TPD_G,
827  SLAVE_READY_EN_G => false,
828  VALID_THOLD_G => 1,
829  GEN_SYNC_FIFO_G => true,
830  BRAM_EN_G => true,
831  INT_PIPE_STAGES_G => 0,
832  PIPE_STAGES_G => 1,
833  CASCADE_SIZE_G => 1,
834  CASCADE_PAUSE_SEL_G => 0,
835  FIFO_ADDR_WIDTH_G => FIFO_ADDR_WIDTH_C,
836  FIFO_FIXED_THRESH_G => true,
837  FIFO_PAUSE_THRESH_G => FIFO_PAUSE_THRESH_C,
840  port map (
841  sAxisClk => clk_i,
842  sAxisRst => rst_i,
843  sAxisMaster => s_mTspAxisMaster,
844  sAxisSlave => s_mTspAxisSlave,
845  sAxisCtrl => s_mTspAxisCtrl,
846  --
847  mAxisClk => clk_i,
848  mAxisRst => rst_i,
851  mTLastTUser => open);
852 ----------------------------------------
853 -- Output assignment
854  statusReg_o <= s_statusReg;
855 
856  PACKET_RATE :
857  for i in 1 downto 0 generate
858  U_AxiStreamMon : entity work.AxiStreamMon
859  generic map (
860  TPD_G => TPD_G,
863  port map (
864  -- AXIS Stream Interface
865  axisClk => clk_i,
866  axisRst => rst_i,
867  axisMaster => monMasters(i),
868  axisSlave => monSlaves(i),
869  -- Status Interface
870  statusClk => axiClk_i,
871  statusRst => axiRst_i,
872  frameRate => frameRate(i),
873  bandwidth => bandwidth(i));
874  end generate PACKET_RATE;
875 
876 end architecture rtl;
in clk_isl
Definition: HeaderReg.vhd:44
out rstHeadSt_osl
Definition: TxFSM.vhd:126
in rst_isl
Definition: RxFSM.vhd:64
out appSsiMaster_oSsiMasterType
Definition: RxFSM.vhd:119
out rxFlags_oflagsType
Definition: RxFSM.vhd:93
in rst_isl
Definition: TxFSM.vhd:71
out sndNull_osl
Definition: Monitor.vhd:95
in ackErr_isl
Definition: Monitor.vhd:89
in axisSlaveAxiStreamSlaveType
out rxDropSeg_osl
Definition: RxFSM.vhd:90
in chksum_islv( 15 downto 0)
Definition: TxFSM.vhd:113
FIFO_ADDR_WIDTH_Ginteger range 4 to 48:= 9
in injectFault_isl
Definition: TxFSM.vhd:79
out tspSsiMaster_oSsiMasterType
Definition: TxFSM.vhd:144
SYN_HEADER_SIZE_Gnatural := 24
Definition: HeaderReg.vhd:36
AxiStreamConfigType :=ssiAxiStreamConfig(dataBytes => RSSI_WORD_WIDTH_C,tKeepMode => TKEEP_COMP_C,tUserMode => TUSER_FIRST_LAST_C,tDestBits => 0,tUserBits => 2) RSSI_AXIS_CONFIG_C
Definition: RssiPkg.vhd:33
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
out sAxisCtrlAxiStreamCtrlType
array(natural range <> ) of slv( 31 downto 0) Slv32Array
Definition: StdRtlPkg.vhd:379
in lenErr_isl
Definition: Monitor.vhd:88
ACK_HEADER_SIZE_Gnatural := 8
Definition: TxFSM.vhd:61
VERSION_Gpositive := 1
Definition: RssiCore.vhd:75
TIMEOUT_UNIT_Greal := 1.0E-6
CSUM_WIDTH_Gpositive := 16
Definition: Chksum.vhd:35
in addrbslv( ADDR_WIDTH_G- 1 downto 0) :=( others => '0')
in appSsiSlave_iSsiSlaveType
Definition: RxFSM.vhd:122
in clk_isl
Definition: Monitor.vhd:58
AXIS_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
out rssiParam_oRssiParamType
Definition: ConnFSM.vhd:60
in peerConnTout_isl
Definition: Monitor.vhd:90
in dataHeadSt_isl
Definition: Monitor.vhd:84
out sndRst_osl
Definition: ConnFSM.vhd:82
ACK_TOUT_Gpositive := 25
NULL_TOUT_Gpositive := 200
out headerData_oslv(( RSSI_WORD_WIDTH_C* 8)- 1 downto 0)
Definition: HeaderReg.vhd:70
in rdHeaderData_islv( RSSI_WORD_WIDTH_C* 8- 1 downto 0)
Definition: TxFSM.vhd:103
out rxBufferSize_ointeger range 1 to 2**( SEGMENT_ADDR_SIZE_G)
Definition: ConnFSM.vhd:87
in rstbsl :=not ( RST_POLARITY_G)
in rxDrop_isl
Definition: Monitor.vhd:79
MAX_SEG_SIZE_Gpositive := 1024
Definition: RssiCore.vhd:80
in nullHeadSt_isl
Definition: Monitor.vhd:85
out doutbslv( DATA_WIDTH_G- 1 downto 0)
TPD_Gtime := 1 ns
Definition: Chksum.vhd:31
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
Definition: RssiCore.vhd:115
PIPE_STAGES_Gnatural range 0 to 16:= 1
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
out wrBuffData_oslv( RSSI_WORD_WIDTH_C* 8- 1 downto 0)
Definition: TxFSM.vhd:95
out sndSyn_osl
Definition: ConnFSM.vhd:80
out wrBuffData_oslv( RSSI_WORD_WIDTH_C* 8- 1 downto 0)
Definition: RxFSM.vhd:108
SERVER_Gboolean := true
Definition: RssiCore.vhd:57
AxiLiteWriteMasterType
Definition: AxiLitePkg.vhd:111
std_logic sl
Definition: StdRtlPkg.vhd:28
CLK_FREQUENCY_Greal := 100.0E6
Definition: ConnFSM.vhd:37
out rxSeqN_oslv( 7 downto 0)
Definition: RxFSM.vhd:78
out mTspAxisMaster_oAxiStreamMasterType
Definition: RssiCore.vhd:109
slv( 3 downto 0) version
Definition: RssiPkg.vhd:53
in lastAckN_islv( 7 downto 0)
Definition: RxFSM.vhd:75
out chksumLength_opositive
Definition: RxFSM.vhd:103
out check_osl
Definition: Chksum.vhd:67
MAX_CUM_ACK_CNT_Gpositive := 3
in clk_isl
Definition: Chksum.vhd:37
out connActive_osl
Definition: ConnFSM.vhd:74
slv( 31 downto 0) connectionId
Definition: RssiPkg.vhd:69
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_SLVERR_C
out rdHeaderAddr_oslv( 7 downto 0)
Definition: TxFSM.vhd:102
in connRq_isl
Definition: ConnFSM.vhd:50
in length_ipositive
Definition: Chksum.vhd:50
out dataHeadSt_osl
Definition: TxFSM.vhd:124
ACK_TOUT_Gpositive := 25
Definition: RssiCore.vhd:83
out dataSt_osl
Definition: TxFSM.vhd:125
out chksum_oslv( CSUM_WIDTH_G- 1 downto 0)
Definition: Chksum.vhd:61
out txSeqN_oslv( 7 downto 0)
Definition: TxFSM.vhd:119
in appRssiParam_iRssiParamType
Definition: ConnFSM.vhd:57
out chksumEnable_osl
Definition: TxFSM.vhd:110
out chksumEnable_osl
Definition: RxFSM.vhd:101
in bandwidth_iSlv64Array( 1 downto 0)
SLAVE_AXI_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
in headerValues_iRssiParamType
Definition: HeaderReg.vhd:63
in status_islv( 6 downto 0)
in ack_isl
Definition: TxFSM.vhd:133
TIMEOUT_UNIT_Greal := 1.0E-6
Definition: ConnFSM.vhd:36
in sTspAxisMaster_iAxiStreamMasterType
Definition: RssiCore.vhd:107
in ackHeadSt_isl
Definition: ConnFSM.vhd:69
in txWindowSize_iinteger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: RxFSM.vhd:72
array(natural range <> ) of slv( 63 downto 0) Slv64Array
Definition: StdRtlPkg.vhd:347
WINDOW_ADDR_SIZE_Gpositive := 7
Definition: RxFSM.vhd:58
out axilWriteSlaveAxiLiteWriteSlaveType
SLAVE_READY_EN_Gboolean := true
out statusReg_oslv( 6 downto 0)
Definition: RssiCore.vhd:121
FIFO_FIXED_THRESH_Gboolean := true
WINDOW_ADDR_SIZE_Gpositive range 1 to 10:= 3
Definition: RssiCore.vhd:61
_library_ ieeeieee
Definition: RssiCore.vhd:37
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
in sndRst_isl
Definition: TxFSM.vhd:84
out frameRateslv( 31 downto 0)
MAX_SEG_SIZE_Gpositive := 1024
SEGMENT_ADDR_SIZE_Gpositive := 3
slv( 15 downto 0) nullSegTout
Definition: RssiPkg.vhd:62
out txWindowSize_ointeger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: ConnFSM.vhd:91
CONN_ID_Gpositive := 16#12345678#
Definition: RssiCore.vhd:74
in addr_islv( 7 downto 0)
Definition: HeaderReg.vhd:69
out sTspAxisSlave_oAxiStreamSlaveType
Definition: RssiCore.vhd:108
in openRq_isl
Definition: RssiCore.vhd:96
in connActive_isl
Definition: RxFSM.vhd:67
in connActive_isl
Definition: TxFSM.vhd:74
out axilReadSlaveAxiLiteReadSlaveType
positive := 8 RSSI_WORD_WIDTH_C
Definition: RssiPkg.vhd:32
GEN_SYNC_FIFO_Gboolean := false
MAX_NUM_OUTS_SEG_Gpositive := 8
in resendCnt_islv( 31 downto 0)
in synHeadSt_isl
Definition: ConnFSM.vhd:68
natural := 8 ACK_HEADER_SIZE_C
Definition: RssiPkg.vhd:43
out nullHeadSt_osl
Definition: TxFSM.vhd:127
out sndAck_osl
Definition: Monitor.vhd:96
Definition: TxFSM.vhd:53
in sAppAxisMaster_iAxiStreamMasterType
Definition: RssiCore.vhd:101
out dropCnt_oslv( CNT_WIDTH_G- 1 downto 0)
Definition: Monitor.vhd:103
in rxWindowSize_iinteger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: RxFSM.vhd:70
in connActive_isl
Definition: Monitor.vhd:62
MAX_OUT_OF_SEQUENCE_Gnatural := 3
out rxValidSeg_osl
Definition: RxFSM.vhd:87
in clk_isl
Definition: TxFSM.vhd:70
out ackErr_osl
Definition: TxFSM.vhd:148
out closeRq_osl
Definition: Monitor.vhd:99
in clk_isl
Definition: RxFSM.vhd:63
sl data
Definition: RssiPkg.vhd:92
slv( 7 downto 0) maxRetrans
Definition: RssiPkg.vhd:64
in rxFlags_iFlagsType
Definition: Monitor.vhd:68
TPD_Gtime := 1 ns
Definition: HeaderReg.vhd:34
in headerRdy_isl
Definition: TxFSM.vhd:105
out reconCnt_oslv( CNT_WIDTH_G- 1 downto 0)
Definition: Monitor.vhd:107
out sndAck_osl
Definition: ConnFSM.vhd:81
SERVER_Gboolean := true
Definition: ConnFSM.vhd:34
out rxLastSeqN_oslv( 7 downto 0)
Definition: RxFSM.vhd:84
MAX_NUM_OUTS_SEG_Gpositive range 2 to 1024:= 8
Definition: RssiCore.vhd:79
flagsType
Definition: RssiPkg.vhd:86
TPD_Gtime := 1 ns
Definition: Monitor.vhd:47
DATA_HEADER_SIZE_Gnatural := 8
Definition: TxFSM.vhd:65
NULL_TOUT_Gpositive := 200
Definition: RssiCore.vhd:85
in inject_isl := '0'
Definition: RssiCore.vhd:98
RST_HEADER_SIZE_Gnatural := 8
Definition: HeaderReg.vhd:39
WINDOW_ADDR_SIZE_Gpositive := 3
Definition: TxFSM.vhd:57
in txSeqN_islv( 7 downto 0)
Definition: HeaderReg.vhd:59
natural := 8 EACK_HEADER_SIZE_C
Definition: RssiPkg.vhd:44
slv( 7 downto 0) maxOutofseq
Definition: RssiPkg.vhd:67
out synHeadSt_osl
Definition: TxFSM.vhd:122
in axiClk_isl := '0'
Definition: RssiCore.vhd:113
out wrBuffWe_osl
Definition: RxFSM.vhd:106
in rdBuffData_islv( RSSI_WORD_WIDTH_C* 8- 1 downto 0)
Definition: RxFSM.vhd:112
out bufferEmpty_osl
Definition: TxFSM.vhd:152
out wrBuffWe_osl
Definition: TxFSM.vhd:93
in rdBuffData_islv( RSSI_WORD_WIDTH_C* 8- 1 downto 0)
Definition: TxFSM.vhd:99
in ack_isl
Definition: HeaderReg.vhd:56
TPD_Gtime := 1 ns
in rxFlags_iFlagsType
Definition: ConnFSM.vhd:63
out appRssiParam_oRssiParamType
SsiMasterType
Definition: SsiPkg.vhd:65
slv( 15 downto 0) retransTout
Definition: RssiPkg.vhd:60
VERSION_Gpositive := 1
in sndAck_isl
Definition: TxFSM.vhd:83
in rxValid_isl
Definition: ConnFSM.vhd:66
HEADER_CHKSUM_EN_Gboolean := true
Definition: RssiCore.vhd:76
in rst_isl
Definition: Monitor.vhd:59
slv( 1 downto 0) := "11" AXI_RESP_DECERR_C
Definition: AxiLitePkg.vhd:49
RST_HEADER_SIZE_Gnatural := 8
Definition: TxFSM.vhd:63
in ackHeadSt_isl
Definition: Monitor.vhd:82
in rxLastSeqN_islv( 7 downto 0)
Definition: Monitor.vhd:71
slv( 7 downto 0) maxCumAck
Definition: RssiPkg.vhd:65
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_DECERR_C
Definition: RssiCore.vhd:64
out rxWindowSize_ointeger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: ConnFSM.vhd:88
in sndResend_isl
Definition: TxFSM.vhd:85
ADDR_WIDTH_Ginteger range 1 to ( 2** 24):= 4
RETRANS_TOUT_Gpositive := 50
Definition: RssiCore.vhd:84
in rxRssiParam_iRssiParamType
Definition: ConnFSM.vhd:54
HEADER_CHKSUM_EN_Gboolean := true
Definition: RxFSM.vhd:59
DATA_WIDTH_Gpositive := 64
Definition: Chksum.vhd:33
INT_PIPE_STAGES_Gnatural range 0 to 16:= 0
RETRANSMIT_ENABLE_Gboolean := true
Definition: RssiCore.vhd:59
HEADER_CHKSUM_EN_Gboolean := true
Definition: TxFSM.vhd:68
in dataHeadSt_isl
Definition: HeaderReg.vhd:50
out rdBuffAddr_oslv(( SEGMENT_ADDR_SIZE_G+ WINDOW_ADDR_SIZE_G)- 1 downto 0)
Definition: TxFSM.vhd:98
in validCnt_islv( 31 downto 0)
in data_islv( DATA_WIDTH_G- 1 downto 0)
Definition: Chksum.vhd:58
out rdBuffAddr_oslv(( SEGMENT_ADDR_SIZE_G+ WINDOW_ADDR_SIZE_G)- 1 downto 0)
Definition: RxFSM.vhd:111
SsiSlaveType
Definition: SsiPkg.vhd:77
in enable_isl
Definition: Chksum.vhd:44
Definition: RxFSM.vhd:55
SEGMENT_ADDR_SIZE_Gpositive := 7
Definition: TxFSM.vhd:58
in init_islv( CSUM_WIDTH_G- 1 downto 0)
Definition: Chksum.vhd:55
NULL_HEADER_SIZE_Gnatural := 8
Definition: HeaderReg.vhd:40
MAX_RETRANS_CNT_Gpositive := 2
Definition: RssiCore.vhd:88
in addraslv( ADDR_WIDTH_G- 1 downto 0) :=( others => '0')
in strobe_isl
Definition: Chksum.vhd:47
in dropCnt_islv( 31 downto 0)
in mTspAxisSlave_iAxiStreamSlaveType
Definition: RssiCore.vhd:110
AxiLiteReadMasterType
Definition: AxiLitePkg.vhd:59
BRAM_EN_Gboolean := true
APP_AXIS_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 4, TKEEP_NORMAL_C)
Definition: RssiCore.vhd:67
natural := 24 SYN_HEADER_SIZE_C
Definition: RssiPkg.vhd:42
CLK_FREQUENCY_Greal := 100.0E6
Definition: Monitor.vhd:49
out tspSsiSlave_oSsiSlaveType
Definition: RxFSM.vhd:116
natural := 8 RST_HEADER_SIZE_C
Definition: RssiPkg.vhd:45
in clk_isl
Definition: ConnFSM.vhd:46
in appSsiMaster_iSsiMasterType
Definition: TxFSM.vhd:139
TPD_Gtime := 1 ns
Definition: RssiCore.vhd:53
out peerTout_osl
Definition: ConnFSM.vhd:94
RETRANSMIT_ENABLE_Gboolean := true
Definition: Monitor.vhd:56
slv( 15 downto 0) cumulAckTout
Definition: RssiPkg.vhd:61
SEGMENT_ADDR_SIZE_Gpositive := 7
Definition: ConnFSM.vhd:44
NULL_HEADER_SIZE_Gnatural := 8
Definition: TxFSM.vhd:64
out axilWriteSlaveAxiLiteWriteSlaveType
Definition: RssiCore.vhd:118
slv( 7 downto 0) maxOutsSeg
Definition: RssiPkg.vhd:57
sl ack
Definition: RssiPkg.vhd:88
TIMEOUT_UNIT_Greal := 1.0E-6
Definition: RssiCore.vhd:55
RETRANS_TOUT_Gpositive := 50
out bandwidthslv( 63 downto 0)
TPD_Gtime := 1 ns
SEGMENT_ADDR_SIZE_Gpositive := 3
Definition: RxFSM.vhd:61
in tspSsiMaster_iSsiMasterType
Definition: RxFSM.vhd:115
in rst_isl
Definition: Chksum.vhd:38
TPD_Gtime := 1 ns
Definition: TxFSM.vhd:55
in sndSyn_isl
Definition: TxFSM.vhd:82
TPD_Gtime := 1 ns
Definition: RxFSM.vhd:57
in windowSize_iinteger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: TxFSM.vhd:89
AXIS_CLK_FREQ_Greal := 156.25E+6
out appSsiSlave_oSsiSlaveType
Definition: TxFSM.vhd:140
WINDOW_ADDR_SIZE_Gpositive := 3
Definition: ConnFSM.vhd:42
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
in paramReject_isl
Definition: Monitor.vhd:91
in initSeqN_islv( 7 downto 0)
Definition: TxFSM.vhd:116
slv( 15 downto 0) maxSegSize
Definition: RssiPkg.vhd:58
MAX_RETRANS_CNT_Gpositive := 2
in rxValid_isl
Definition: Monitor.vhd:78
in closed_isl
Definition: TxFSM.vhd:76
out sAxisSlaveAxiStreamSlaveType
in mAppAxisSlave_iAxiStreamSlaveType
Definition: RssiCore.vhd:104
out valid_osl
Definition: Chksum.vhd:64
HEADER_CHKSUM_EN_Gboolean := true
in rst_isl
Definition: HeaderReg.vhd:45
MAX_RETRANS_CNT_Gpositive := 2
Definition: ConnFSM.vhd:40
AxiLiteReadMasterType :=(araddr =>( others => '0'),arprot =>( others => '0'),arvalid => '0',rready => '1') AXI_LITE_READ_MASTER_INIT_C
Definition: AxiLitePkg.vhd:69
WINDOW_ADDR_SIZE_Gpositive := 7
Definition: Monitor.vhd:51
in rxBufferSize_iinteger range 1 to 2**( SEGMENT_ADDR_SIZE_G)
Definition: RxFSM.vhd:71
DATA_HEADER_SIZE_Gnatural := 8
Definition: HeaderReg.vhd:42
AxiLiteReadSlaveType
Definition: AxiLitePkg.vhd:85
out sndResend_osl
Definition: Monitor.vhd:94
ACK_HEADER_SIZE_Gnatural := 8
Definition: HeaderReg.vhd:37
out closed_osl
Definition: ConnFSM.vhd:77
out chksumStrobe_osl
Definition: TxFSM.vhd:111
in reconCnt_islv( 31 downto 0)
out chksumStrobe_osl
Definition: RxFSM.vhd:102
in rxAckN_islv( 7 downto 0)
Definition: HeaderReg.vhd:60
out mTLastTUserslv( 7 downto 0)
AxiLiteWriteMasterType :=(awaddr =>( others => '0'),awprot =>( others => '0'),awvalid => '0',wdata =>( others => '0'),wstrb =>( others => '1'),wvalid => '0',bready => '1') AXI_LITE_WRITE_MASTER_INIT_C
Definition: AxiLitePkg.vhd:125
natural := 8 NULL_HEADER_SIZE_C
Definition: RssiPkg.vhd:46
in sAxisMasterAxiStreamMasterType
in rssiParam_iRssiParamType
Definition: Monitor.vhd:65
SEGMENT_ADDR_SIZE_Gpositive := 7
Definition: RssiCore.vhd:62
in sndNull_isl
Definition: TxFSM.vhd:86
in rxWindowSize_iinteger range 1 to 2**( WINDOW_ADDR_SIZE_G)
Definition: Monitor.vhd:72
in axiRst_isl := '0'
Definition: RssiCore.vhd:114
out statusReg_oslv( STATUS_WIDTH_G downto 0)
Definition: Monitor.vhd:102
RssiParamType
Definition: RssiPkg.vhd:52
EACK_HEADER_SIZE_Gnatural := 8
Definition: HeaderReg.vhd:38
out mAxisMasterAxiStreamMasterType
in txBufferEmpty_isl
Definition: Monitor.vhd:75
in chksumValid_isl
Definition: RxFSM.vhd:99
in chksumValid_isl
Definition: TxFSM.vhd:109
out initSeqN_oslv( 7 downto 0)
in synHeadSt_isl
Definition: HeaderReg.vhd:48
in axisMasterAxiStreamMasterType
slv( 0 downto 0) chksumEn
Definition: RssiPkg.vhd:54
in frameRate_iSlv32Array( 1 downto 0)
in rst_isl
Definition: ConnFSM.vhd:47
EACK_HEADER_SIZE_Gnatural := 8
Definition: TxFSM.vhd:62
out sAppAxisSlave_oAxiStreamSlaveType
Definition: RssiCore.vhd:102
out lastAckN_oslv( 7 downto 0)
Definition: TxFSM.vhd:130
in closeRq_isl
Definition: RssiCore.vhd:97
INIT_SEQ_N_Gnatural := 16#80#
Definition: RssiCore.vhd:73
out paramReject_osl
Definition: ConnFSM.vhd:96
in nullHeadSt_isl
Definition: HeaderReg.vhd:51
in closeRq_isl
Definition: ConnFSM.vhd:51
out ready_osl
Definition: HeaderReg.vhd:71
out lenErr_osl
Definition: TxFSM.vhd:147
out txBufferSize_ointeger range 1 to 2**( SEGMENT_ADDR_SIZE_G)
Definition: ConnFSM.vhd:90
SYN_HEADER_SIZE_Gnatural := 24
Definition: TxFSM.vhd:60
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
Definition: RssiCore.vhd:117
in mAxisSlaveAxiStreamSlaveType
in rstHeadSt_isl
Definition: HeaderReg.vhd:49
CASCADE_SIZE_Ginteger range 1 to ( 2** 24):= 1
out axilReadSlaveAxiLiteReadSlaveType
Definition: RssiCore.vhd:116
in ackN_islv( 7 downto 0)
Definition: TxFSM.vhd:134
FIFO_PAUSE_THRESH_Ginteger range 1 to ( 2** 24):= 1
VALID_THOLD_Ginteger range 0 to ( 2** 24):= 1
in rstHeadSt_isl
Definition: ConnFSM.vhd:70
in rst_isl
Definition: RssiCore.vhd:93
TSP_AXIS_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 16, TKEEP_NORMAL_C)
Definition: RssiCore.vhd:68
CONN_ID_Gpositive := 16#12345678#
out rxParam_oRssiParamType
Definition: RxFSM.vhd:96
MAX_CUM_ACK_CNT_Gpositive := 3
Definition: RssiCore.vhd:90
out rxAckN_oslv( 7 downto 0)
Definition: RxFSM.vhd:81
out resendCnt_oslv( CNT_WIDTH_G- 1 downto 0)
Definition: Monitor.vhd:105
out headerLength_opositive
Definition: HeaderReg.vhd:73
INIT_SEQ_N_Gnatural := 16#80#
CLK_FREQUENCY_Greal := 100.0E6
Definition: RssiCore.vhd:54
in headerLength_ipositive
Definition: TxFSM.vhd:106
in chksumOk_isl
Definition: RxFSM.vhd:100
natural := 8 DATA_HEADER_SIZE_C
Definition: RssiPkg.vhd:47
MASTER_AXI_CONFIG_GAxiStreamConfigType := AXI_STREAM_CONFIG_INIT_C
in bufferSize_iinteger range 1 to 2**( SEGMENT_ADDR_SIZE_G)
Definition: TxFSM.vhd:90
out txAckF_osl
Definition: ConnFSM.vhd:83
RETRANS_TOUT_Gpositive := 50
Definition: ConnFSM.vhd:39
in tspSsiSlave_iSsiSlaveType
Definition: TxFSM.vhd:143
TIMEOUT_UNIT_Greal := 1.0E-6
Definition: Monitor.vhd:48
in rstHeadSt_isl
Definition: Monitor.vhd:83
TPD_Gtime := 1 ns
Definition: ConnFSM.vhd:33
_use_ math_realmath_real
Definition: RssiCore.vhd:41
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
CASCADE_PAUSE_SEL_Ginteger range 0 to ( 2** 24):= 0
out wrBuffAddr_oslv(( SEGMENT_ADDR_SIZE_G+ WINDOW_ADDR_SIZE_G)- 1 downto 0)
Definition: TxFSM.vhd:94
out validCnt_oslv( CNT_WIDTH_G- 1 downto 0)
Definition: Monitor.vhd:104
out wrBuffAddr_oslv(( SEGMENT_ADDR_SIZE_G+ WINDOW_ADDR_SIZE_G)- 1 downto 0)
Definition: RxFSM.vhd:107
in ackHeadSt_isl
Definition: HeaderReg.vhd:52
out ackHeadSt_osl
Definition: TxFSM.vhd:123
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
slv( 7 downto 0) timeoutUnit
Definition: RssiPkg.vhd:55
SERVER_Gboolean := true
Definition: Monitor.vhd:50
in dinaslv( DATA_WIDTH_G- 1 downto 0) :=( others => '0')
in clk_isl
Definition: RssiCore.vhd:92