Module ip_mac_hostif_arb

pi_resetlogicpi_clocklogicpi_tx_frame_transmitlogicpi_regs_csr0_barlogicpi_rx_reqlogicpi_tx_reqlogicpi_rx_ds_reqlogicpi_tx_ds_reqlogicpi_tx_upd_reqlogicpi_rx_mcmd[1:0]logicpi_rx_maddr[31:0]logicpi_rx_mdata[31:0]logicpi_rx_mlastlogicpi_tx_mcmd[1:0]logicpi_tx_maddr[31:0]logicpi_tx_mlastlogicpi_rx_ds_mcmd[1:0]logicpi_rx_ds_maddr[31:0]logicpi_rx_ds_mlastlogicpi_tx_ds_mcmd[1:0]logicpi_tx_ds_maddr[31:0]logicpi_tx_ds_mlastlogicpi_tx_upd_mcmd[1:0]logicpi_tx_upd_maddr[31:0]logicpi_tx_upd_mdata[31:0]logicpi_tx_upd_mlastlogicpo_host_mcmdreg[1:0]po_host_maddrreg[31:0]po_host_mdatareg[31:0]po_host_mlastregpo_rx_allowedregpo_rx_ds_allowedregpo_tx_allowedregpo_tx_ds_allowedregpo_tx_upd_allowedreg

Block Diagram of ip_mac_hostif_arb

Ports

Name

Type

Direction

Description

pi_reset

wire logic

input

Global interface global asynchronous pi_reset

pi_clock

wire logic

input

host pi_clock

pi_tx_frame_transmit

wire logic

input

from pi_mac_hostif_tx

pi_regs_csr0_bar

wire logic

input

from banks regs

pi_rx_req

wire logic

input

pi_tx_req

wire logic

input

pi_rx_ds_req

wire logic

input

pi_tx_ds_req

wire logic

input

pi_tx_upd_req

wire logic

input

pi_rx_mcmd

wire logic [1 : 0]

input

pi_rx_maddr

wire logic [31 : 0]

input

pi_rx_mdata

wire logic [31 : 0]

input

pi_rx_mlast

wire logic

input

pi_tx_mcmd

wire logic [1 : 0]

input

pi_tx_maddr

wire logic [31 : 0]

input

pi_tx_mlast

wire logic

input

pi_tx_mdata,

pi_rx_ds_mcmd

wire logic [1 : 0]

input

pi_rx_ds_maddr

wire logic [31 : 0]

input

pi_rx_ds_mlast

wire logic

input

pi_tx_ds_mcmd

wire logic [1 : 0]

input

pi_tx_ds_maddr

wire logic [31 : 0]

input

pi_tx_ds_mlast

wire logic

input

pi_tx_upd_mcmd

wire logic [1 : 0]

input

pi_tx_upd_maddr

wire logic [31 : 0]

input

pi_tx_upd_mdata

wire logic [31 : 0]

input

pi_tx_upd_mlast

wire logic

input

po_host_mcmd

reg [1 : 0]

output

po_host_maddr

reg [31 : 0]

output

po_host_mdata

reg [31 : 0]

output

po_host_mlast

reg

output

po_rx_allowed

reg

output

po_rx_ds_allowed

reg

output

po_tx_allowed

reg

output

po_tx_ds_allowed

reg

output

po_tx_upd_allowed

reg

output

Always Blocks

always @ ( posedge pi_clock or negedge pi_reset )

process for arbiter *


always @ ( arb_state or pi_rx_req or pi_tx_req or pi_rx_ds_req or pi_tx_ds_req or pi_tx_upd_req )

arbiter allowed calculation pi_tx_frame_transmit

always @ ( arb_state or po_rx_allowed or po_tx_allowed or po_rx_ds_allowed or po_tx_ds_allowed or po_tx_upd_allowed )

arbiter next state calculation

`ARB_RX `ARB_RX = 3'b010 `ARB_TX `ARB_TX = 3'b011 `ARB_RX_DS `ARB_RX_DS = 3'b100 `ARB_TX_DS `ARB_TX_DS = 3'b101 `ARB_TX_UPD `ARB_TX_UPD = 3'b110 `ARB_IDLE `ARB_IDLE = 3'b000 `ARB_S0 `ARB_S0 = 3'b001 DEFAULT default 1 [!(~ pi_reset)]
FSM Transitions for arb_state

#

Current State

Next State

Condition

Comment

1

`ARB_IDLE

`ARB_S0

[!(~ pi_reset)]

always @ ( po_rx_allowed or po_tx_allowed or po_rx_ds_allowed or po_tx_ds_allowed or po_tx_upd_allowed or pi_rx_mcmd or pi_rx_maddr or pi_rx_mdata or pi_rx_mlast or pi_tx_mcmd or pi_tx_maddr or pi_tx_mlast or pi_rx_ds_mcmd or pi_rx_ds_maddr or pi_rx_ds_mlast or pi_tx_ds_mcmd or pi_tx_ds_maddr or pi_tx_ds_mlast or pi_tx_upd_mcmd or pi_tx_upd_maddr or pi_tx_upd_mdata or pi_tx_upd_mlast )

arbiter multiplexor

Instances