MFB FRAME EXTENDER
- ENTITY MFB_FRAME_EXTENDER IS
The MFB_FRAME_EXTENDER component allows an MFB frame to be extended by adding empty MFB blocks to its beginning. This component can be used, for example, to efficiently insert metadata into the framework.
GenericsGeneric
Type
Default
Description
MFB_REGIONS
natural
4
The number of MFB regions
MFB_REGION_SIZE
natural
8
MFB region size in blocks, must be power of two
MFB_BLOCK_SIZE
natural
8
MFB block size in items, must be 8
MFB_ITEM_WIDTH
natural
8
MFB item size in bits, must be 8
PKT_MTU
natural
2**14
Maximum size of a MFB frame (in bytes)
MVB_FIFO_DEPTH
natural
32
Set the depth of RX MVB FIFOX Multi
MFB_FIFO_DEPTH
natural
32
Set the depth of RX MFB FIFOX Multi
USERMETA_WIDTH
natural
32
Width of User Metadata information
DEVICE
string
“AGILEX”
Target device: AGILEX, STRATIX10, ULTRASCALE,…
Port
Type
Mode
Description
=====
Clock and Resets inputs
=====
=====
CLK
std_logic
in
RESET
std_logic
in
=====
RX MFB+MVB interface
=====
=====
RX_MVB_USERMETA
std_logic_vector(MFB_REGIONS*USERMETA_WIDTH-1 downto 0)
in
RX_MVB_FRAME_LENGTH
std_logic_vector(MFB_REGIONS*log2(PKT_MTU)-1 downto 0)
in
RX MFB frame size in MFB items
RX_MVB_EXT_SIZE
std_logic_vector(MFB_REGIONS*log2(PKT_MTU)-1 downto 0)
in
Frame extension size in MFB items, but must be divisible by MFB_BLOCK_SIZE
RX_MVB_EXT_ONLY
std_logic_vector(MFB_REGIONS-1 downto 0)
in
It only uses the new part (EXT_SIZE) of the frame, the rest is discarded. This can be useful, for example, when we need to send only metadata instead of the frame.
RX_MVB_EXT_EN
std_logic_vector(MFB_REGIONS-1 downto 0)
in
Enables the extension of the MFB frame
RX_MVB_VLD
std_logic_vector(MFB_REGIONS-1 downto 0)
in
RX_MVB_SRC_RDY
std_logic
in
RX_MVB_DST_RDY
std_logic
out
RX_MFB_DATA
std_logic_vector(MFB_REGIONS*MFB_REGION_SIZE*MFB_BLOCK_SIZE*MFB_ITEM_WIDTH-1 downto 0)
in
RX_MFB_SOF
std_logic_vector(MFB_REGIONS-1 downto 0)
in
RX_MFB_EOF
std_logic_vector(MFB_REGIONS-1 downto 0)
in
RX_MFB_SOF_POS
std_logic_vector(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE))-1 downto 0)
in
RX_MFB_EOF_POS
std_logic_vector(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE*MFB_BLOCK_SIZE))-1 downto 0)
in
RX_MFB_SRC_RDY
std_logic
in
RX_MFB_DST_RDY
std_logic
out
=====
TX MFB interface
=====
=====
TX_MVB_USERMETA
std_logic_vector(MFB_REGIONS*USERMETA_WIDTH-1 downto 0)
out
TX_MVB_VLD
std_logic_vector(MFB_REGIONS-1 downto 0)
out
TX_MVB_SRC_RDY
std_logic
out
TX_MVB_DST_RDY
std_logic
in
TX_MFB_DATA
std_logic_vector(MFB_REGIONS*MFB_REGION_SIZE*MFB_BLOCK_SIZE*MFB_ITEM_WIDTH-1 downto 0)
out
TX_MFB_USERMETA
std_logic_vector(MFB_REGIONS*USERMETA_WIDTH-1 downto 0)
out
TX_MFB_SOF
std_logic_vector(MFB_REGIONS-1 downto 0)
out
TX_MFB_EOF
std_logic_vector(MFB_REGIONS-1 downto 0)
out
TX_MFB_SOF_POS
std_logic_vector(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE))-1 downto 0)
out
TX_MFB_EOF_POS
std_logic_vector(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE*MFB_BLOCK_SIZE))-1 downto 0)
out
TX_MFB_SRC_RDY
std_logic
out
TX_MFB_DST_RDY
std_logic
in