Metadata Insertor

ENTITY METADATA_INSERTOR IS

Takes items from input MVB stream and inserts them to MFB stream as metadata without affecting the MFB flow in any other way.

Generics

Generic

Type

Default

Description

=====

MVB characteristics

=====

=====

MVB_ITEMS

integer

2

MVB_ITEM_WIDTH

integer

128

=====

MFB characteristics

=====

=====

MFB_REGIONS

integer

2

MFB_REGION_SIZE

integer

1

MFB_BLOCK_SIZE

integer

8

MFB_ITEM_WIDTH

integer

32

MFB_META_WIDTH

integer

0

Width of default MFB metadata

=====

Others

=====

=====

INSERT_MODE

integer

0

Metadata insertion mode options:
  • 0 - Insert in SOF Region

  • 1 - Insert in EOF Region

  • 2 - Insert for valid all regions of the frame. Leads to a slight increase of logic paths. When two frames are present in one region, Metadata will be inserted for the one with SOP.

MVB_FIFO_SIZE

natural

0

Input MVB FIFO size. Set to 0 for no FIFO at all

MVB_FIFOX_MULTI

boolean

False

Enable FIFOX Multi for better effectivity MVB_FIFO_SIZE must be >= 16

DEVICE

string

“ULTRASCALE”

Target device:
  • “ULTRASCALE”,

  • “7SERIES”

Ports

Port

Type

Mode

Description

=====

Clock and Reset

=====

=====

CLK

std_logic

in

RESET

std_logic

in

=====

RX MVB

=====

=====

RX_MVB_DATA

std_logic_vector(MVB_ITEMS*MVB_ITEM_WIDTH-1 downto 0)

in

RX_MVB_VLD

std_logic_vector(MVB_ITEMS -1 downto 0)

in

RX_MVB_SRC_RDY

std_logic

in

RX_MVB_DST_RDY

std_logic

out

=====

RX MFB

=====

=====

RX_MFB_DATA

std_logic_vector(MFB_REGIONS*MFB_REGION_SIZE*MFB_BLOCK_SIZE*MFB_ITEM_WIDTH-1 downto 0)

in

RX_MFB_META

std_logic_vector(MFB_REGIONS*MFB_META_WIDTH-1 downto 0)

in

Gets propagated to TX MFB without change

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

=====

=====

TX_MFB_DATA

std_logic_vector(MFB_REGIONS*MFB_REGION_SIZE*MFB_BLOCK_SIZE*MFB_ITEM_WIDTH-1 downto 0)

out

TX_MFB_META

std_logic_vector(MFB_REGIONS*MFB_META_WIDTH-1 downto 0)

out

Original Metadata from RX MFB

TX_MFB_META_NEW

std_logic_vector(MFB_REGIONS*MVB_ITEM_WIDTH-1 downto 0)

out

Inserted metadata from RX MVB

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