blob: 6ab36c27c5422dbb0ea53e98a3e2991a0feb2fee [file] [log] [blame] [edit]
`default_nettype none
// Technically the value assignment could be anything, but most tools default to a 32-bit logic assigning MODE_A = 0 and MODE_B = 1
typedef enum {MODE_A, MODE_B} Mode_t;
typedef enum logic [1:0] {READ=2'd1, WRITE=2'd2, NONE=2'd0} Operation_t;
module Example(
input logic rawMode,
output logic [1:0] rawOperation
);
Mode_t mode;
Operation_t operation;
// cast into a strongly typed variant
assign mode = Mode_t'(rawMode);
assign rawOperation = operation;
always_comb begin
case(mode)
MODE_A: operation = READ;
MODE_B: operation = WRITE;
default: operation = NONE;
endcase
end
endmodule