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.

Generics

Generic

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,…

Ports

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