@@ -68,6 +68,16 @@ architecture FULL of MFB_MERGER is
6868 signal rx_mvb_hdr_p_arr : slv_array_2d_t(2 - 1 downto 0 )(MVB_ITEMS- 1 downto 0 )(1 + HDR_WIDTH- 1 downto 0 );
6969 signal rx_mvb_hdr_p : slv_array_t(2 - 1 downto 0 )(MVB_ITEMS* (1 + HDR_WIDTH)- 1 downto 0 );
7070
71+ -- RX MFB FIFO signals
72+ signal rx_fifo_mfb_data : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS* MFB_DATA_WIDTH- 1 downto 0 );
73+ signal rx_fifo_mfb_meta : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS* MFB_META_WIDTH- 1 downto 0 );
74+ signal rx_fifo_mfb_sof : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS- 1 downto 0 );
75+ signal rx_fifo_mfb_eof : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS- 1 downto 0 );
76+ signal rx_fifo_mfb_sof_pos : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS* SOF_POS_WIDTH- 1 downto 0 );
77+ signal rx_fifo_mfb_eof_pos : slv_array_t(2 - 1 downto 0 )(MFB_REGIONS* EOF_POS_WIDTH- 1 downto 0 );
78+ signal rx_fifo_mfb_src_rdy : std_logic_vector (2 - 1 downto 0 );
79+ signal rx_fifo_mfb_dst_rdy : std_logic_vector (2 - 1 downto 0 );
80+
7181 -----------------------------------------------
7282
7383 -- RX MVB hdr from input PIPEs with payload added
@@ -295,6 +305,57 @@ begin
295305
296306 -- -------------------------------------------------------------------------
297307
308+ -- -------------------------------------------------------------------------
309+ -- Optional Input FIFOs
310+ -- -------------------------------------------------------------------------
311+
312+ in_mfb_fifo_g : for ii in 0 to 2 - 1 generate
313+ in_mfb_fifo_g2 : if (IN_MFB_FIFO_EN = True ) generate
314+ mfb_fifo_i : entity work.MFB_FIFOX
315+ generic map (
316+ REGIONS => MFB_REGIONS,
317+ REGION_SIZE => MFB_REG_SIZE,
318+ BLOCK_SIZE => MFB_BLOCK_SIZE,
319+ ITEM_WIDTH => MFB_ITEM_WIDTH,
320+ META_WIDTH => MFB_META_WIDTH,
321+ FIFO_DEPTH => INPUT_FIFO_SIZE,
322+ RAM_TYPE => " AUTO" ,
323+ DEVICE => DEVICE
324+ )
325+ port map (
326+ CLK => CLK,
327+ RST => RESET,
328+
329+ RX_DATA => rx_mfb_data(ii),
330+ RX_META => rx_mfb_meta(ii),
331+ RX_SOF_POS => rx_mfb_sof_pos(ii),
332+ RX_EOF_POS => rx_mfb_eof_pos(ii),
333+ RX_SOF => rx_mfb_sof(ii),
334+ RX_EOF => rx_mfb_eof(ii),
335+ RX_SRC_RDY => rx_mfb_src_rdy(ii),
336+ RX_DST_RDY => rx_mfb_dst_rdy(ii),
337+
338+ TX_DATA => rx_fifo_mfb_data(ii),
339+ TX_META => rx_fifo_mfb_meta(ii),
340+ TX_SOF_POS => rx_fifo_mfb_sof_pos(ii),
341+ TX_EOF_POS => rx_fifo_mfb_eof_pos(ii),
342+ TX_SOF => rx_fifo_mfb_sof(ii),
343+ TX_EOF => rx_fifo_mfb_eof(ii),
344+ TX_SRC_RDY => rx_fifo_mfb_src_rdy(ii),
345+ TX_DST_RDY => rx_fifo_mfb_dst_rdy(ii)
346+ );
347+ else generate
348+ rx_fifo_mfb_data(ii) <= rx_mfb_data(ii);
349+ rx_fifo_mfb_meta(ii) <= rx_mfb_meta(ii);
350+ rx_fifo_mfb_sof_pos(ii) <= rx_mfb_sof_pos(ii);
351+ rx_fifo_mfb_eof_pos(ii) <= rx_mfb_eof_pos(ii);
352+ rx_fifo_mfb_sof(ii) <= rx_mfb_sof(ii);
353+ rx_fifo_mfb_eof(ii) <= rx_mfb_eof(ii);
354+ rx_fifo_mfb_src_rdy(ii) <= rx_mfb_src_rdy(ii);
355+ rx_mfb_dst_rdy(ii) <= rx_fifo_mfb_dst_rdy(ii);
356+ end generate ;
357+ end generate ;
358+
298359 no_in_pipe_gen : if (IN_PIPE_EN = false ) generate
299360
300361 -- -------------------------------------------------------------------------
@@ -308,14 +369,14 @@ begin
308369 rx_in_pipe_mvb_src_rdy(i) <= rx_mvb_src_rdy(i);
309370 rx_mvb_dst_rdy (i) <= rx_in_pipe_mvb_dst_rdy(i);
310371
311- rx_in_pipe_mfb_data (i) <= rx_mfb_data (i);
312- rx_in_pipe_mfb_meta (i) <= rx_mfb_meta (i);
313- rx_in_pipe_mfb_sof (i) <= rx_mfb_sof (i);
314- rx_in_pipe_mfb_eof (i) <= rx_mfb_eof (i);
315- rx_in_pipe_mfb_sof_pos(i) <= rx_mfb_sof_pos (i);
316- rx_in_pipe_mfb_eof_pos(i) <= rx_mfb_eof_pos (i);
317- rx_in_pipe_mfb_src_rdy(i) <= rx_mfb_src_rdy (i);
318- rx_mfb_dst_rdy (i) <= rx_in_pipe_mfb_dst_rdy(i);
372+ rx_in_pipe_mfb_data (i) <= rx_fifo_mfb_data (i);
373+ rx_in_pipe_mfb_meta (i) <= rx_fifo_mfb_meta (i);
374+ rx_in_pipe_mfb_sof (i) <= rx_fifo_mfb_sof (i);
375+ rx_in_pipe_mfb_eof (i) <= rx_fifo_mfb_eof (i);
376+ rx_in_pipe_mfb_sof_pos(i) <= rx_fifo_mfb_sof_pos (i);
377+ rx_in_pipe_mfb_eof_pos(i) <= rx_fifo_mfb_eof_pos (i);
378+ rx_in_pipe_mfb_src_rdy(i) <= rx_fifo_mfb_src_rdy (i);
379+ rx_fifo_mfb_dst_rdy (i) <= rx_in_pipe_mfb_dst_rdy(i);
319380 end generate ;
320381
321382 -- -------------------------------------------------------------------------
@@ -403,14 +464,14 @@ begin
403464 CLK => CLK,
404465 RESET => RESET,
405466
406- RX_DATA => rx_mfb_data (i),
407- RX_META => rx_mfb_meta (i),
408- RX_SOF_POS => rx_mfb_sof_pos (i),
409- RX_EOF_POS => rx_mfb_eof_pos (i),
410- RX_SOF => rx_mfb_sof (i),
411- RX_EOF => rx_mfb_eof (i),
412- RX_SRC_RDY => rx_mfb_src_rdy (i),
413- RX_DST_RDY => rx_mfb_dst_rdy (i),
467+ RX_DATA => rx_fifo_mfb_data (i),
468+ RX_META => rx_fifo_mfb_meta (i),
469+ RX_SOF_POS => rx_fifo_mfb_sof_pos (i),
470+ RX_EOF_POS => rx_fifo_mfb_eof_pos (i),
471+ RX_SOF => rx_fifo_mfb_sof (i),
472+ RX_EOF => rx_fifo_mfb_eof (i),
473+ RX_SRC_RDY => rx_fifo_mfb_src_rdy (i),
474+ RX_DST_RDY => rx_fifo_mfb_dst_rdy (i),
414475
415476 TX_DATA => rx_in_pipe_mfb_data (i),
416477 TX_META => rx_in_pipe_mfb_meta (i),
0 commit comments