mac_ctrl_tx

Diagram

DATA_WIDTH KEEP_ENABLE KEEP_WIDTH ID_ENABLE ID_WIDTH DEST_ENABLE DEST_WIDTH USER_ENABLE USER_WIDTH 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 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 tx_pause_req 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_ready wire tx_pause_ack wire stat_tx_mcf

Description

Bloque que se encarga de configurar el transmisor MAC

Generics

Generic name Type Value Description
DATA_WIDTH 8 Ancho de los datos en bits
KEEP_ENABLE DATA_WIDTH>8 Habilita el uso de 'keep' si el ancho de datos es mayor que 8
KEEP_WIDTH DATA_WIDTH/8 Ancho de 'keep', calculado como el ancho de datos dividido por 8
ID_ENABLE 0 Habilita el campo de identificación
ID_WIDTH 8 Ancho del campo de identificación
DEST_ENABLE 0 Habilita el campo de destino
DEST_WIDTH 8 Ancho del campo de destino
USER_ENABLE 1 Habilita el campo de usuario
USER_WIDTH 1 Ancho del campo de usuario
MCF_PARAMS_SIZE 18 Tamaño en bytes de los parámetros del marco de control MAC

Ports

Port name Direction Type Description
clk input wire Señal de reloj
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 validez de datos de entrada
s_axis_tready output wire Señal de preparado de datos de entrada
s_axis_tlast input wire Indicador de último dato de entrada
s_axis_tid input wire [ID_WIDTH-1:0] Identificador de transacción de entrada
s_axis_tdest input wire [DEST_WIDTH-1:0] Destino de transacción de entrada
s_axis_tuser input wire [USER_WIDTH-1:0] Usuario de transacción 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 validez de datos de salida
m_axis_tready input wire Señal de preparado de datos de salida
m_axis_tlast output wire Indicador de último dato de salida
m_axis_tid output wire [ID_WIDTH-1:0] Identificador de transacción de salida
m_axis_tdest output wire [DEST_WIDTH-1:0] Destino de transacción de salida
m_axis_tuser output wire [USER_WIDTH-1:0] Usuario de transacción de salida
mcf_valid input wire Validez del marco de control MAC
mcf_ready output wire Listo para recibir marco de control MAC
mcf_eth_dst input wire [47:0] Dirección de destino Ethernet del marco de control MAC
mcf_eth_src input wire [47:0] Dirección de origen Ethernet del marco de control MAC
mcf_eth_type input wire [15:0] Tipo Ethernet del marco de control MAC
mcf_opcode input wire [15:0] Código de operación del marco de control MAC
mcf_params input wire [MCF_PARAMS_SIZE*8-1:0] Parámetros del marco de control MAC
mcf_id input wire [ID_WIDTH-1:0] Identificador del marco de control MAC
mcf_dest input wire [DEST_WIDTH-1:0] Destino del marco de control MAC
mcf_user input wire [USER_WIDTH-1:0] Usuario del marco de control MAC
tx_pause_req input wire Solicitud de pausa de transmisión
tx_pause_ack output wire Confirmación de pausa de transmisión
stat_tx_mcf output wire Estado de transmisión del marco de control MAC

Signals

Name Type Description
send_data_reg = 1'b0 reg Registro para la señal de envío de datos
send_data_next reg Registro para la señal de envío de datos
send_mcf_reg = 1'b0 reg Registro para la señal de envío de marco de control MAC
send_mcf_next reg Registro para la señal de envío de marco de control MAC
ptr_reg = 0 reg [PTR_WIDTH-1:0] Registro para el puntero de control
ptr_next reg [PTR_WIDTH-1:0] Registro para el puntero de control
s_axis_tready_reg = 1'b0 reg Registro para la señal de listo de datos de entrada AXI stream
s_axis_tready_next reg Registro para la señal de listo de datos de entrada AXI stream
mcf_ready_reg = 1'b0 reg Registro para la señal de listo de marco de control MAC
mcf_ready_next reg Registro para la señal de listo de marco de control MAC
tx_pause_ack_reg = 1'b0 reg Registro para la confirmación de pausa de transmisión
tx_pause_ack_next reg Registro para la confirmación de pausa de transmisión
stat_tx_mcf_reg = 1'b0 reg Registro para el estado de transmisión del marco de control MAC
stat_tx_mcf_next reg Registro para el estado de transmisión del marco de control MAC
m_axis_tdata_int reg [DATA_WIDTH-1:0] Datos de salida internos del camino de datos
m_axis_tkeep_int reg [KEEP_WIDTH-1:0] Señal 'keep' de salida interna del camino de datos
m_axis_tvalid_int reg Señal de validez de datos de salida interna
m_axis_tready_int_reg = 1'b0 reg Registro para la señal de preparado de datos de salida interna
m_axis_tlast_int reg Indicador de último dato de salida interno
m_axis_tid_int reg [ID_WIDTH-1:0] Identificador de transacción de salida interno
m_axis_tdest_int reg [DEST_WIDTH-1:0] Destino de transacción de salida interno
m_axis_tuser_int reg [USER_WIDTH-1:0] Usuario de transacción de salida interno
m_axis_tready_int_early wire Señal anticipada de preparado de datos de salida interna
k integer

Constants

Name Type Value Description
BYTE_LANES KEEP_ENABLE ? KEEP_WIDTH : 1 Número de carriles de bytes activos
HDR_SIZE 60 Tamaño del encabezado en bytes
CYCLE_COUNT (HDR_SIZE+BYTE_LANES-1)/BYTE_LANES Número de ciclos necesarios para transmitir el encabezado
PTR_WIDTH $ Ancho del puntero necesario para contar los ciclos de transmisión
OFFSET HDR_SIZE % BYTE_LANES Desplazamiento necesario para alinear el encabezado con los límites de byte