summaryrefslogtreecommitdiff
path: root/eater_cpu/eater_decoder.sv
diff options
context:
space:
mode:
authoruvok2026-01-22 19:43:31 +0100
committeruvok2026-01-22 19:43:31 +0100
commit63ca6b95b1f06f18ade4e58ba7ba42b09eeeb5d5 (patch)
treea830cf00225de858a08ae0e43a9a97605517e39b /eater_cpu/eater_decoder.sv
parent48d11484cc6e0b26627af6259e238fe29421962c (diff)
Implement LDI
Diffstat (limited to 'eater_cpu/eater_decoder.sv')
-rw-r--r--eater_cpu/eater_decoder.sv8
1 files changed, 8 insertions, 0 deletions
diff --git a/eater_cpu/eater_decoder.sv b/eater_cpu/eater_decoder.sv
index fea00e0..20e3e0b 100644
--- a/eater_cpu/eater_decoder.sv
+++ b/eater_cpu/eater_decoder.sv
@@ -30,6 +30,7 @@ function CpuState insdep_state;
ADD: insdep_state = ADD_INS_to_MAR;
SUB: insdep_state = SUB_INS_to_MAR;
STA: insdep_state = STA_INS_to_MAR;
+ LDI: insdep_state = LDI_INS_to_A;
OUT: insdep_state = OUT_A_to_OUT;
HALT_op: insdep_state = HALT_st;
@@ -65,6 +66,8 @@ always @(posedge clk_i) begin
STA_INS_to_MAR: next_state = STA_A_to_MEM;
STA_A_to_MEM: next_state = PC_to_MAR;
+ LDI_INS_to_A: next_state = PC_to_MAR;
+
OUT_A_to_OUT: next_state = PC_to_MAR;
HALT_st: next_state = HALT_st;
@@ -153,6 +156,11 @@ always_comb begin
internal_flags.A_out = 1;
end
+ LDI_INS_to_A: begin
+ internal_flags.INS_out = 1;
+ internal_flags.A_in = 1;
+ end
+
OUT_A_to_OUT: begin
internal_flags.A_out = 1;
internal_flags.OUT_in = 1;