CROSSBARX STREAM2
- ENTITY MFB_CROSSBARX_STREAM2 IS
The MFB_CROSSBARX_STREAM2 module uses data copying between two buffers to rearrange packets on the MFB bus. It modifies (extends/trims at the beginning or end) and discards selected packets. The user must ensure that the final packet length is not less than 60B. Future features include the support for multiple input streams (merging) and packet duplication.
GenericsGeneric
Type
Default
Description
IN_STREAMS
natural
1
IN_STREAMS must be 1 for now!!!
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)
PKT_ID_WIDTH
natural
10
The width determines the total number of packet IDs that the component can handle simultaneously
MOD_WIDTH
natural
7
The width determines the maximum size of packet modifications
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
CLK_X2
std_logic
in
RESET
std_logic
in
=====
RX MFB+MVB interface
=====
=====
RX_MVB_USERMETA
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*USERMETA_WIDTH-1 downto 0)
in
RX_MVB_DISCARD
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
Flag specifying packets to drop
RX_MVB_MOD_SOF_SIZE
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*MOD_WIDTH-1 downto 0)
in
Size of packet SOF expansion/truncation in MFB items, valid with
RX_MVB_MOD_SOF_EN
RX_MVB_MOD_SOF_TYPE
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
SOF packet modification type: 0 = expansion, 1 = truncation, valid with
RX_MVB_MOD_SOF_EN
RX_MVB_MOD_SOF_EN
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
Enable modification of Start of Packet (SOF)
RX_MVB_MOD_EOF_SIZE
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*MOD_WIDTH-1 downto 0)
in
Size of packet EOF expansion/truncation in MFB items, valid with
RX_MVB_MOD_EOF_EN
RX_MVB_MOD_EOF_TYPE
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
EOF packet modification type: 0 = expansion, 1 = truncation, valid with
RX_MVB_MOD_EOF_EN
RX_MVB_MOD_EOF_EN
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
Enable modification of End of Packet (EOF)
RX_MVB_VLD
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
RX_MVB_SRC_RDY
std_logic_vector(IN_STREAMS-1 downto 0)
in
RX_MVB_DST_RDY
std_logic_vector(IN_STREAMS-1 downto 0)
out
RX_MFB_DATA
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*MFB_REGION_SIZE*MFB_BLOCK_SIZE*MFB_ITEM_WIDTH-1 downto 0)
in
RX_MFB_SOF
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
RX_MFB_EOF
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS-1 downto 0)
in
RX_MFB_SOF_POS
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE))-1 downto 0)
in
RX_MFB_EOF_POS
slv_array_t(IN_STREAMS-1 downto 0)(MFB_REGIONS*max(1,log2(MFB_REGION_SIZE*MFB_BLOCK_SIZE))-1 downto 0)
in
RX_MFB_SRC_RDY
std_logic_vector(IN_STREAMS-1 downto 0)
in
RX_MFB_DST_RDY
std_logic_vector(IN_STREAMS-1 downto 0)
out
=====
TX MFB+MVB 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_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