8.21. mqnic_tx_scheduler_block

mqnic_tx_scheduler_block is the top-level block for the transmit scheduler. It is instantiated in mqnic_interface. This is a pluggable module, intended to be replaced by a customized implementation via the build system. See …. for more details.

Two variations are provided:

  • mqnic_tx_scheduler_block_rr: round-robin transmit scheduler (tx_scheduler_rr)

  • mqnic_tx_scheduler_block_rr_tdma: round-robin transmit scheduler (tx_scheduler_rr) with TDMA scheduler controller

8.21.1. Parameters

PORTS

Number of ports, default 1.

INDEX

Scheduler index, default 0.

REG_ADDR_WIDTH

Width of control register interface address in bits, default 16.

REG_DATA_WIDTH

Width of control register interface data in bits, default 32.

REG_STRB_WIDTH

Width of control register interface strb, must be set to (REG_DATA_WIDTH/8).

RB_BASE_ADDR

Register block base address, default 0.

RB_NEXT_PTR

Register block next pointer, default 0.

AXIL_DATA_WIDTH

Width of AXI lite data bus in bits, default 32.

AXIL_ADDR_WIDTH

Width of AXI lite address bus in bits, default 16.

AXIL_STRB_WIDTH

Width of AXI lite wstrb (width of data bus in words), must be set to AXIL_DATA_WIDTH/8.

AXIL_OFFSET

Offset to AXI lite interface, default 0.

LEN_WIDTH

Length field width, default 16.

REQ_TAG_WIDTH

Transmit request tag field width, default 8.

OP_TABLE_SIZE

Number of outstanding operations, default 16.

QUEUE_INDEX_WIDTH

Queue index width, default 6.

PIPELINE

Pipeline setting, default 3.

TDMA_INDEX_WIDTH

Scheduler TDMA index width, default 8.

PTP_TS_WIDTH

PTP timestamp width, default 96.

AXIS_TX_DEST_WIDTH

AXI stream tdest signal width, default $clog2(PORTS)+4.

MAX_TX_SIZE

Max transmit packet size, default 2048.

8.21.2. Ports

clk

Logic clock. Most interfaces are synchronous to this clock.

Signal

Dir

Width

Description

clk

in

1

Logic clock

rst

Logic reset, active high

Signal

Dir

Width

Description

rst

in

1

Logic reset, active high

ctrl_reg

Control register interface

Signal

Dir

Width

Description

ctrl_reg_wr_addr

in

REG_ADDR_WIDTH

Write address

ctrl_reg_wr_data

in

REG_DATA_WIDTH

Write data

ctrl_reg_wr_strb

in

REG_STRB_WIDTH

Write byte enable

ctrl_reg_wr_en

in

1

Write enable

ctrl_reg_wr_wait

out

1

Write wait

ctrl_reg_wr_ack

out

1

Write acknowledge

ctrl_reg_rd_addr

in

REG_ADDR_WIDTH

Read address

ctrl_reg_rd_en

in

1

Read enable

ctrl_reg_rd_data

out

REG_DATA_WIDTH

Read data

ctrl_reg_rd_wait

out

1

Read wait

ctrl_reg_rd_ack

out

1

Read acknowledge

s_axil

AXI-Lite slave interface. This interface provides access to memory-mapped per-queue control registers.

Signal

Dir

Width

Description

s_axil_awaddr

in

AXIL_ADDR_WIDTH

Write address

s_axil_awprot

in

3

Write protect

s_axil_awvalid

in

1

Write address valid

s_axil_awready

out

1

Write address ready

s_axil_wdata

in

AXIL_DATA_WIDTH

Write data

s_axil_wstrb

in

AXIL_STRB_WIDTH

Write data strobe

s_axil_wvalid

in

1

Write data valid

s_axil_wready

out

1

Write data ready

s_axil_bresp

out

2

Write response status

s_axil_bvalid

out

1

Write response valid

s_axil_bready

in

1

Write response ready

s_axil_araddr

in

AXIL_ADDR_WIDTH

Read address

s_axil_arprot

in

3

Read protect

s_axil_arvalid

in

1

Read address valid

s_axil_arready

out

1

Read address ready

s_axil_rdata

out

AXIL_DATA_WIDTH

Read response data

s_axil_rresp

out

2

Read response status

s_axil_rvalid

out

1

Read response valid

s_axil_rready

in

1

Read response ready

m_axis_tx_req

Transmit request output, for transmit requests to the transmit engine.

Signal

Dir

Width

Description

m_axis_tx_req_queue

out

QUEUE_INDEX_WIDTH

Queue index

m_axis_tx_req_tag

out

REQ_TAG_WIDTH

Tag

m_axis_tx_req_dest

out

AXIS_TX_DEST_WIDTH

Destination port and TC

m_axis_tx_req_valid

out

1

Valid

m_axis_tx_req_ready

in

1

Ready

s_axis_tx_req_status

Transmit request status input, for responses from the transmit engine.

Signal

Dir

Width

Description

s_axis_tx_req_status_len

in

LEN_WIDTH

Packet length

s_axis_tx_req_status_tag

in

REQ_TAG_WIDTH

Tag

s_axis_tx_req_status_valid

in

1

Valid

s_axis_doorbell

Doorbell input, for enqueue notifications from the transmit queue manager.

Signal

Dir

Width

Description

s_axis_doorbell_queue

in

QUEUE_INDEX_WIDTH

Queue index

s_axis_doorbell_valid

in

1

Valid

ptp_ts

PTP time input from PTP clock

Signal

Dir

Width

Description

ptp_ts_96

in

PTP_TS_WIDTH

PTP time

ptp_ts_step

in

1

PTP clock step

config

Configuration signals

Signal

Dir

Width

Description

mtu

in

LEN_WIDTH

MTU