axis_xgmii_tx_64

Diagram

DATA_WIDTH KEEP_WIDTH CTRL_WIDTH ENABLE_PADDING ENABLE_DIC MIN_FRAME_LENGTH PTP_TS_ENABLE PTP_TS_FMT_TOD PTP_TS_WIDTH PTP_TS_CTRL_IN_TUSER PTP_TAG_ENABLE PTP_TAG_WIDTH USER_WIDTH 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 [USER_WIDTH-1:0] s_axis_tuser wire [PTP_TS_WIDTH-1:0] ptp_ts wire [7:0] cfg_ifg wire cfg_tx_enable wire s_axis_tready wire [DATA_WIDTH-1:0] xgmii_txd wire [CTRL_WIDTH-1:0] xgmii_txc wire [PTP_TS_WIDTH-1:0] m_axis_ptp_ts wire [PTP_TAG_WIDTH-1:0] m_axis_ptp_ts_tag wire m_axis_ptp_ts_valid wire [1:0] start_packet wire error_underflow

Hierarchical structure

axis_xgmii_tx_compuesto.png

Description

Modulo que convierte interfaz AXI a XGMII

Generics

Generic name Type Value Description
DATA_WIDTH 64 Parametro que define el tamaño de los datos
KEEP_WIDTH (DATA_WIDTH/8) Cantidad de bytes de datos que deben ser válidos
CTRL_WIDTH (DATA_WIDTH/8) Cantidad de bits de control
ENABLE_PADDING 1 Flag para habilitar el relleno de tramas
ENABLE_DIC 1 Flag para habilitar DIC
MIN_FRAME_LENGTH 64 Longitud mínima de la trama
PTP_TS_ENABLE 0 Flag para habilitar protocolo PTP
PTP_TS_FMT_TOD 1 Flag para cambiar el formato de la marca de tiempo según "Time of day"
PTP_TS_WIDTH PTP_TS_FMT_TOD ? 96 : 64 Parametro del ancho de la marca del tiempo
PTP_TS_CTRL_IN_TUSER 0 Flag para habilitar control PTP en tuser
PTP_TAG_ENABLE PTP_TS_ENABLE Flag para habilitar etiqueta PTP
PTP_TAG_WIDTH 16 Ancho de la etiqueta PTP
USER_WIDTH (PTP_TS_ENABLE ? Parametro que define el ancho de los datos de usuario

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] Entrada de datos de la interfaz AXI
s_axis_tkeep input wire [KEEP_WIDTH-1:0] Entrada de bits válidos de la interfaz AXI
s_axis_tvalid input wire Señal de datos válidos de la interfaz AXI
s_axis_tready output wire Señal de que la interfaz AXI está lista para recibir datos
s_axis_tlast input wire Señal de fin de trama de la interfaz AXI
s_axis_tuser input wire [USER_WIDTH-1:0] Entrada de datos de usuario de la interfaz AXI
xgmii_txd output wire [DATA_WIDTH-1:0] Salida de datos de la interfaz XGMII
xgmii_txc output wire [CTRL_WIDTH-1:0] Salida de control de la interfaz XGMII
ptp_ts input wire [PTP_TS_WIDTH-1:0] Entrada de marca de tiempo PTP
m_axis_ptp_ts output wire [PTP_TS_WIDTH-1:0] Salida de marca de tiempo PTP
m_axis_ptp_ts_tag output wire [PTP_TAG_WIDTH-1:0] Salida de etiqueta de marca de tiempo PTP
m_axis_ptp_ts_valid output wire Señal de validez de marca de tiempo PTP
cfg_ifg input wire [7:0] Señal de configuración de espacio interframe
cfg_tx_enable input wire Señal de configuración para habilitar transmisión
start_packet output wire [1:0] Estado indicando inicio de paquete
error_underflow output wire Señal de error por desbordamiento

Signals

Name Type Description
state_reg = STATE_IDLE reg [2:0] Registro y próximo estado del FSM
state_next reg [2:0] Registro y próximo estado del FSM
reset_crc reg Señal para resetear el CRC
update_crc reg Señal para actualizar el CRC
swap_lanes_reg = 1'b0 reg Registro y próximo valor de swap de lanes
swap_lanes_next reg Registro y próximo valor de swap de lanes
swap_txd = 32'd0 reg [31:0] Datos para swap de lanes
swap_txc = 4'd0 reg [3:0] Datos de control para swap de lanes
s_axis_tdata_masked reg [DATA_WIDTH-1:0] Datos de la entrada AXI con máscara aplicada
s_tdata_reg = 0 reg [DATA_WIDTH-1:0] Registro y próximo valor de datos de entrada AXI
s_tdata_next reg [DATA_WIDTH-1:0] Registro y próximo valor de datos de entrada AXI
s_empty_reg = 0 reg [EMPTY_WIDTH-1:0] Registro y próximo valor de datos vacíos
s_empty_next reg [EMPTY_WIDTH-1:0] Registro y próximo valor de datos vacíos
fcs_output_txd_0 reg [DATA_WIDTH-1:0] Datos de salida del primer FCS
fcs_output_txd_1 reg [DATA_WIDTH-1:0] Datos de salida del segundo FCS
fcs_output_txc_0 reg [CTRL_WIDTH-1:0] Control de salida del primer FCS
fcs_output_txc_1 reg [CTRL_WIDTH-1:0] Control de salida del segundo FCS
ifg_offset reg [7:0] Desplazamiento para el intervalo entre tramas
frame_start_reg = 1'b0 reg Registro y próximo valor de inicio de trama
frame_start_next reg Registro y próximo valor de inicio de trama
frame_reg = 1'b0 reg Registro y próximo valor de trama
frame_next reg Registro y próximo valor de trama
frame_error_reg = 1'b0 reg Registro y próximo valor de error de trama
frame_error_next reg Registro y próximo valor de error de trama
frame_min_count_reg = 0 reg [MIN_LEN_WIDTH-1:0] Registro y próximo valor de contador de longitud mínima de trama
frame_min_count_next reg [MIN_LEN_WIDTH-1:0] Registro y próximo valor de contador de longitud mínima de trama
ifg_count_reg = 8'd0 reg [7:0] Registro y próximo valor de contador de intervalo entre tramas
ifg_count_next reg [7:0] Registro y próximo valor de contador de intervalo entre tramas
deficit_idle_count_reg = 2'd0 reg [1:0] Registro y próximo valor de contador de déficit de inactividad
deficit_idle_count_next reg [1:0] Registro y próximo valor de contador de déficit de inactividad
s_axis_tready_reg = 1'b0 reg Registro y próximo valor de disponibilidad de AXI
s_axis_tready_next reg Registro y próximo valor de disponibilidad de AXI
m_axis_ptp_ts_reg = 0 reg [PTP_TS_WIDTH-1:0] Registro de marca de tiempo PTP
m_axis_ptp_ts_adj_reg = 0 reg [PTP_TS_WIDTH-1:0] Registro de ajuste de marca de tiempo PTP
m_axis_ptp_ts_tag_reg = 0 reg [PTP_TAG_WIDTH-1:0] Registro de etiqueta de marca de tiempo PTP
m_axis_ptp_ts_valid_reg = 1'b0 reg Registro de validez de marca de tiempo PTP
m_axis_ptp_ts_valid_int_reg = 1'b0 reg Registro interno de validez de marca de tiempo PTP
m_axis_ptp_ts_borrow_reg = 1'b0 reg Registro de ajuste de marca de tiempo PTP
crc_state_reg[7:0] reg [31:0] Registro de estado de CRC
crc_state_next[7:0] wire [31:0] Próximo valor del estado de CRC
last_ts_reg = 0 reg [4+16-1:0] Registro del último timestamp
ts_inc_reg = 0 reg [4+16-1:0] Registro de incremento del timestamp
xgmii_txd_reg = {CTRL_WIDTH{XGMII_IDLE}} reg [DATA_WIDTH-1:0] Registro y próximo valor de datos XGMII
xgmii_txd_next reg [DATA_WIDTH-1:0] Registro y próximo valor de datos XGMII
xgmii_txc_reg = {CTRL_WIDTH{1'b1}} reg [CTRL_WIDTH-1:0] Registro y próximo valor de control XGMII
xgmii_txc_next reg [CTRL_WIDTH-1:0] Registro y próximo valor de control XGMII
start_packet_reg = 2'b00 reg Registro de inicio de paquete
error_underflow_reg = 1'b0 reg Registro y próximo valor de error por desbordamiento
error_underflow_next reg Registro y próximo valor de error por desbordamiento
j integer

Constants

Name Type Value Description
EMPTY_WIDTH $ Parametro del ancho de vacío
MIN_LEN_WIDTH $ Parametro del ancho mínimo de la longitud
ETH_PRE 8'h55 Preambulo de Ethernet
ETH_SFD 8'hD5 Delimitador de inicio de trama de Ethernet
XGMII_IDLE 8'h07 Código de control de XGMII para estado IDLE
XGMII_START 8'hfb Código de control de XGMII para inicio de paquete
XGMII_TERM 8'hfd Código de control de XGMII para terminación de paquete
XGMII_ERROR 8'hfe Código de control de XGMII para error
STATE_IDLE 3'd0 Estado IDLE
STATE_PAYLOAD 3'd1 Estado PAYLOAD
STATE_PAD 3'd2 Estado PAD
STATE_FCS_1 3'd3 Estado FCS__1
STATE_FCS_2 3'd4 Estado FCS__2
STATE_ERR 3'd5 Estado ERR
STATE_IFG 3'd6 Estado IFG

Functions

Processes

Instantiations

State machines