mac_ctrl_rx

Diagram

DATA_WIDTH KEEP_ENABLE KEEP_WIDTH ID_ENABLE ID_WIDTH DEST_ENABLE DEST_WIDTH USER_ENABLE USER_WIDTH USE_READY MCF_PARAMS_SIZE wire clk wire rst wire [DATA_WIDTH-1:0] s_axis_tdata wire [KEEP_WIDTH-1:0] s_axis_tkeep wire s_axis_tvalid wire s_axis_tlast wire [ID_WIDTH-1:0] s_axis_tid wire [DEST_WIDTH-1:0] s_axis_tdest wire [USER_WIDTH-1:0] s_axis_tuser wire m_axis_tready wire [47:0] cfg_mcf_rx_eth_dst_mcast wire cfg_mcf_rx_check_eth_dst_mcast wire [47:0] cfg_mcf_rx_eth_dst_ucast wire cfg_mcf_rx_check_eth_dst_ucast wire [47:0] cfg_mcf_rx_eth_src wire cfg_mcf_rx_check_eth_src wire [15:0] cfg_mcf_rx_eth_type wire [15:0] cfg_mcf_rx_opcode_lfc wire cfg_mcf_rx_check_opcode_lfc wire [15:0] cfg_mcf_rx_opcode_pfc wire cfg_mcf_rx_check_opcode_pfc wire cfg_mcf_rx_forward wire cfg_mcf_rx_enable wire s_axis_tready wire [DATA_WIDTH-1:0] m_axis_tdata wire [KEEP_WIDTH-1:0] m_axis_tkeep wire m_axis_tvalid wire m_axis_tlast wire [ID_WIDTH-1:0] m_axis_tid wire [DEST_WIDTH-1:0] m_axis_tdest wire [USER_WIDTH-1:0] m_axis_tuser wire mcf_valid wire [47:0] mcf_eth_dst wire [47:0] mcf_eth_src wire [15:0] mcf_eth_type wire [15:0] mcf_opcode wire [MCF_PARAMS_SIZE*8-1:0] mcf_params wire [ID_WIDTH-1:0] mcf_id wire [DEST_WIDTH-1:0] mcf_dest wire [USER_WIDTH-1:0] mcf_user wire stat_rx_mcf

Description

Bloque que se encarga de controlar la recepción MAC.

dst dst dst dst dst dst src src src src src src type type opcode opcode

Generics

Generic name Type Value Description
DATA_WIDTH 8 Ancho de datos en bits
KEEP_ENABLE DATA_WIDTH > 8 Flag para habilitar señal de keep
KEEP_WIDTH DATA_WIDTH / 8 Ancho de la señal keep
ID_ENABLE 0 Flag para habilitar ID
ID_WIDTH 8 Ancho de la señal ID
DEST_ENABLE 0 Flag para habilitar el destino
DEST_WIDTH 8 Ancho de la señal de destino
USER_ENABLE 1 Flag para habilitar el usuario
USER_WIDTH 1 Ancho de la señal de usuario
USE_READY 0 Uso de señal de ready
MCF_PARAMS_SIZE 18 Tamaño de los parámetros del marco de control MAC

Ports

Port name Direction Type Description
clk input wire Señal de clock
rst input wire Señal de reset
s_axis_tdata input wire [DATA_WIDTH-1:0] Datos de entrada
s_axis_tkeep input wire [KEEP_WIDTH-1:0] Señal keep de entrada
s_axis_tvalid input wire Señal de datos de entrada validos
s_axis_tready output wire Señal de ready para datos de entrada
s_axis_tlast input wire Señal last para datos de entrada
s_axis_tid input wire [ID_WIDTH-1:0] ID de entrada
s_axis_tdest input wire [DEST_WIDTH-1:0] Destino de entrada
s_axis_tuser input wire [USER_WIDTH-1:0] Usuario de entrada
m_axis_tdata output wire [DATA_WIDTH-1:0] Datos de salida
m_axis_tkeep output wire [KEEP_WIDTH-1:0] Señal keep de salida
m_axis_tvalid output wire Señal de válida para datos de salida
m_axis_tready input wire Señal de ready para datos de salida
m_axis_tlast output wire Señal last para datos de salida
m_axis_tid output wire [ID_WIDTH-1:0] ID de salida
m_axis_tdest output wire [DEST_WIDTH-1:0] Destino de salida
m_axis_tuser output wire [USER_WIDTH-1:0] Usuario de salida
mcf_valid output wire Señal de marco de control MAC valido
mcf_eth_dst output wire [47:0] Dirección MAC de destino para el marco de control MAC
mcf_eth_src output wire [47:0] Dirección MAC de origen para el marco de control MAC
mcf_eth_type output wire [15:0] Tipo Ethernet para el marco de control MAC
mcf_opcode output wire [15:0] Opcode para el marco de control MAC
mcf_params output wire [MCF_PARAMS_SIZE*8-1:0] Parámetros para el marco de control MAC
mcf_id output wire [ID_WIDTH-1:0] ID para el marco de control MAC
mcf_dest output wire [DEST_WIDTH-1:0] Destino para el marco de control MAC
mcf_user output wire [USER_WIDTH-1:0] Campo de usuario para el marco de control MAC
cfg_mcf_rx_eth_dst_mcast input wire [47:0] Configuración de dirección MAC de destino multicast
cfg_mcf_rx_check_eth_dst_mcast input wire Verificación de dirección MAC de destino multicast
cfg_mcf_rx_eth_dst_ucast input wire [47:0] Configuración de dirección MAC de destino unicast
cfg_mcf_rx_check_eth_dst_ucast input wire Verificación de dirección MAC de destino unicast
cfg_mcf_rx_eth_src input wire [47:0] Configuración de dirección MAC de origen
cfg_mcf_rx_check_eth_src input wire Verificación de dirección MAC de origen
cfg_mcf_rx_eth_type input wire [15:0] Configuración de tipo Ethernet
cfg_mcf_rx_opcode_lfc input wire [15:0] Opcode para Control de Flujo de Enlace (LFC)
cfg_mcf_rx_check_opcode_lfc input wire Verificación de opcode de Control de Flujo de Enlace (LFC)
cfg_mcf_rx_opcode_pfc input wire [15:0] Opcode para Control de Flujo de Prioridad (PFC)
cfg_mcf_rx_check_opcode_pfc input wire Verificación de opcode de Control de Flujo de Prioridad (PFC)
cfg_mcf_rx_forward input wire Configuración de habilitación de reenvío
cfg_mcf_rx_enable input wire Configuración de habilitación de recepción de marco de control MAC
stat_rx_mcf output wire Salida de estado para el marco de control MAC

Signals

Name Type Description
read_mcf_reg = 1'b1 reg Registro de lectura de MCF
read_mcf_next reg Registro de lectura de MCF
mcf_frame_reg = 1'b0 reg Registro de marco de MCF
mcf_frame_next reg Registro de marco de MCF
ptr_reg = 0 reg [PTR_WIDTH-1:0] Registro de puntero
ptr_next reg [PTR_WIDTH-1:0] Registro de puntero
s_axis_tready_reg = 1'b0 reg Registro de listo para la salida
s_axis_tready_next reg Registro de listo para la salida
m_axis_tdata_int reg [DATA_WIDTH-1:0] Registro para almacenar datos en el camino de datos interno
m_axis_tkeep_int reg [KEEP_WIDTH-1:0] Registro para almacenar señales de keep en el camino de datos interno
m_axis_tvalid_int reg Registro para almacenar la señal de validez en el camino de datos interno
m_axis_tready_int_reg = 1'b0 reg Registro para almacenar la señal de preparado en el camino de datos interno
m_axis_tlast_int reg Registro para almacenar la señal de último en el camino de datos interno
m_axis_tid_int reg [ID_WIDTH-1:0] Registro para almacenar el ID en el camino de datos interno
m_axis_tdest_int reg [DEST_WIDTH-1:0] Registro para almacenar el destino en el camino de datos interno
m_axis_tuser_int reg [USER_WIDTH-1:0] Registro para almacenar la información de usuario en el camino de datos interno
m_axis_tready_int_early wire Wire para la señal temprana de preparado en el camino de datos interno
mcf_valid_reg = 0 reg Válido de MCF
mcf_valid_next reg Válido de MCF
mcf_eth_dst_reg = 0 reg [47:0] Destino Ethernet de MCF
mcf_eth_dst_next reg [47:0] Destino Ethernet de MCF
mcf_eth_src_reg = 0 reg [47:0] Origen Ethernet de MCF
mcf_eth_src_next reg [47:0] Origen Ethernet de MCF
mcf_eth_type_reg = 0 reg [15:0] Tipo Ethernet de MCF
mcf_eth_type_next reg [15:0] Tipo Ethernet de MCF
mcf_opcode_reg = 0 reg [15:0] Opcode de MCF
mcf_opcode_next reg [15:0] Opcode de MCF
mcf_params_reg = 0 reg [MCF_PARAMS_SIZE*8-1:0] Parámetros de MCF
mcf_params_next reg [MCF_PARAMS_SIZE*8-1:0] Parámetros de MCF
mcf_id_reg = 0 reg [ID_WIDTH-1:0] ID de MCF
mcf_id_next reg [ID_WIDTH-1:0] ID de MCF
mcf_dest_reg = 0 reg [DEST_WIDTH-1:0] Destino de MCF
mcf_dest_next reg [DEST_WIDTH-1:0] Destino de MCF
mcf_user_reg = 0 reg [USER_WIDTH-1:0] Usuario de MCF
mcf_user_next reg [USER_WIDTH-1:0] Usuario de MCF
stat_rx_mcf_reg = 1'b0 reg
stat_rx_mcf_next reg
mcf_eth_dst_mcast_match = mcf_eth_dst_next == cfg_mcf_rx_eth_dst_mcast wire
mcf_eth_dst_ucast_match = mcf_eth_dst_next == cfg_mcf_rx_eth_dst_ucast wire
mcf_eth_src_match = mcf_eth_src_next == cfg_mcf_rx_eth_src wire
mcf_eth_type_match = mcf_eth_type_next == cfg_mcf_rx_eth_type wire
mcf_opcode_lfc_match = mcf_opcode_next == cfg_mcf_rx_opcode_lfc wire
mcf_opcode_pfc_match = mcf_opcode_next == cfg_mcf_rx_opcode_pfc wire
mcf_eth_dst_match = ((mcf_eth_dst_mcast_match && cfg_mcf_rx_check_et wire
mcf_opcode_match = ((mcf_opcode_lfc_match && cfg_mcf_rx_check_ wire
mcf_match = (mcf_eth_dst_match && wire
k integer
m_axis_tdata_reg = {DATA_WIDTH{1'b0}} reg [DATA_WIDTH-1:0] Registro para datos de salida
m_axis_tkeep_reg = {KEEP_WIDTH{1'b0}} reg [KEEP_WIDTH-1:0] Registro para mantener bits de datos de salida válidos
m_axis_tvalid_reg = 1'b0 reg Registro de señal de validez actual y siguiente
m_axis_tvalid_next reg Registro de señal de validez actual y siguiente
m_axis_tlast_reg = 1'b0 reg Registro de señal de último dato de salida
m_axis_tid_reg = {ID_WIDTH{1'b0}} reg [ID_WIDTH-1:0] Registro de identificador de transacción de salida
m_axis_tdest_reg = {DEST_WIDTH{1'b0}} reg [DEST_WIDTH-1:0] Registro de destino de transacción de salida
m_axis_tuser_reg = {USER_WIDTH{1'b0}} reg [USER_WIDTH-1:0] Registro de datos de usuario de salida
temp_m_axis_tdata_reg = {DATA_WIDTH{1'b0}} reg [DATA_WIDTH-1:0] Registro temporal para datos de salida
temp_m_axis_tkeep_reg = {KEEP_WIDTH{1'b0}} reg [KEEP_WIDTH-1:0] Registro temporal para mantener bits de datos de salida válidos
temp_m_axis_tvalid_reg = 1'b0 reg Registro temporal de señal de validez actual y siguiente
temp_m_axis_tvalid_next reg Registro temporal de señal de validez actual y siguiente
temp_m_axis_tlast_reg = 1'b0 reg Registro temporal de señal de último dato de salida
temp_m_axis_tid_reg = {ID_WIDTH{1'b0}} reg [ID_WIDTH-1:0] Registro temporal de identificador de transacción de salida
temp_m_axis_tdest_reg = {DEST_WIDTH{1'b0}} reg [DEST_WIDTH-1:0] Registro temporal de destino de transacción de salida
temp_m_axis_tuser_reg = {USER_WIDTH{1'b0}} reg [USER_WIDTH-1:0] Registro temporal de datos de usuario de salida
store_axis_int_to_output reg Señal para almacenar datos internos en la salida
store_axis_int_to_temp reg Señal para almacenar datos internos en el registro temporal
store_axis_temp_to_output reg Señal para almacenar datos temporales en la salida

Constants

Name Type Value Description
BYTE_LANES KEEP_ENABLE ? KEEP_WIDTH : 1 Ancho de carriles de bytes
HDR_SIZE 60 Tamaño del encabezado en bytes
CYCLE_COUNT (HDR_SIZE + BYTE_LANES - 1) / BYTE_LANES Cantidad de ciclos necesarios para el encabezado
PTR_WIDTH $ Ancho del puntero para el número de ciclos
OFFSET HDR_SIZE % BYTE_LANES Desplazamiento del tamaño del encabezado en bytes

Processes