Initial register bank, support LD RR, $nnnn instructions

This commit is contained in:
2021-02-17 22:40:24 +00:00
parent 237a5f1489
commit 2937ff492b
8 changed files with 163 additions and 36 deletions

View File

@@ -22,6 +22,13 @@ package cpu_pkg;
REG8_L = 3'h05
} reg8_t;
typedef enum logic [1:0] {
REG16_BC = 2'h00,
REG16_DE = 2'h01,
REG16_HL = 2'h02,
REG16_SP_AF = 2'h03
} reg16_t;
typedef enum logic [2:0] {
ALU_OP_ADD = 3'h00,
ALU_OP_ADC = 3'h01,
@@ -35,15 +42,31 @@ package cpu_pkg;
typedef enum {
OP_SRC_A,
OP_SRC_REG8
OP_SRC_REG8,
OP_SRC_OPERAND16
} op_src_t;
typedef enum {
OP_DEST_A
OP_DEST_A,
OP_DEST_R16
} op_dest_t;
typedef enum {
SP_SRC_OPERAND16
} sp_src_t;
typedef enum {
ADR_SRC_PC,
ADR_SRC_HL
} adr_src_t;
endpackage
`define DEF_FF(register, next, we, rst_value) \
always_ff @(posedge clk_i or negedge nreset_i) begin \
if (~nreset_i) begin \
register <= (rst_value); \
end else if ((we)) begin \
register <= (next); \
end \
end