eth: Use SV enums in MAC logic

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-02-27 15:04:08 -08:00
parent 8d7cdaa689
commit 5df2aa3cfd
12 changed files with 266 additions and 179 deletions

View File

@@ -67,7 +67,7 @@ if (CTRL_W * 8 != DATA_W)
if (HDR_W != 2)
$fatal(0, "Error: HDR_W must be 2");
localparam [7:0]
typedef enum logic [7:0] {
XGMII_IDLE = 8'h07,
XGMII_LPI = 8'h06,
XGMII_START = 8'hfb,
@@ -80,9 +80,10 @@ localparam [7:0]
XGMII_RES_3 = 8'hbc,
XGMII_RES_4 = 8'hdc,
XGMII_RES_5 = 8'hf7,
XGMII_SIG_OS = 8'h5c;
XGMII_SIG_OS = 8'h5c
} xgmii_ctrl_t;
localparam [6:0]
typedef enum logic [6:0] {
CTRL_IDLE = 7'h00,
CTRL_LPI = 7'h06,
CTRL_ERROR = 7'h1e,
@@ -91,17 +92,20 @@ localparam [6:0]
CTRL_RES_2 = 7'h4b,
CTRL_RES_3 = 7'h55,
CTRL_RES_4 = 7'h66,
CTRL_RES_5 = 7'h78;
CTRL_RES_5 = 7'h78
} baser_ctrl_t;
localparam [3:0]
typedef enum logic [3:0] {
O_SEQ_OS = 4'h0,
O_SIG_OS = 4'hf;
O_SIG_OS = 4'hf
} baser_o_t;
localparam [1:0]
typedef enum logic [1:0] {
SYNC_DATA = 2'b10,
SYNC_CTRL = 2'b01;
SYNC_CTRL = 2'b01
} baser_sync_t;
localparam [7:0]
typedef enum logic [7:0] {
BLOCK_TYPE_CTRL = 8'h1e, // C7 C6 C5 C4 C3 C2 C1 C0 BT
BLOCK_TYPE_OS_4 = 8'h2d, // D7 D6 D5 O4 C3 C2 C1 C0 BT
BLOCK_TYPE_START_4 = 8'h33, // D7 D6 D5 C3 C2 C1 C0 BT
@@ -116,7 +120,8 @@ localparam [7:0]
BLOCK_TYPE_TERM_4 = 8'hcc, // C7 C6 C5 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_5 = 8'hd2, // C7 C6 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_6 = 8'he1, // C7 D5 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_7 = 8'hff; // D6 D5 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_7 = 8'hff // D6 D5 D4 D3 D2 D1 D0 BT
} baser_block_type_t;
wire [DATA_W_INT-1:0] xgmii_txd_int;
wire [CTRL_W_INT-1:0] xgmii_txc_int;