summaryrefslogtreecommitdiff
path: root/eater_cpu/eater_decoder.sv
diff options
context:
space:
mode:
Diffstat (limited to 'eater_cpu/eater_decoder.sv')
-rw-r--r--eater_cpu/eater_decoder.sv12
1 files changed, 12 insertions, 0 deletions
diff --git a/eater_cpu/eater_decoder.sv b/eater_cpu/eater_decoder.sv
index 20e3e0b..f6a73e6 100644
--- a/eater_cpu/eater_decoder.sv
+++ b/eater_cpu/eater_decoder.sv
@@ -31,6 +31,7 @@ function CpuState insdep_state;
SUB: insdep_state = SUB_INS_to_MAR;
STA: insdep_state = STA_INS_to_MAR;
LDI: insdep_state = LDI_INS_to_A;
+ JMP: insdep_state = JMP_INS_to_PC;
OUT: insdep_state = OUT_A_to_OUT;
HALT_op: insdep_state = HALT_st;
@@ -68,6 +69,9 @@ always @(posedge clk_i) begin
LDI_INS_to_A: next_state = PC_to_MAR;
+ JMP_INS_to_PC: next_state = JMP_NOP;
+ JMP_NOP: next_state = PC_to_MAR;
+
OUT_A_to_OUT: next_state = PC_to_MAR;
HALT_st: next_state = HALT_st;
@@ -161,6 +165,14 @@ always_comb begin
internal_flags.A_in = 1;
end
+ JMP_INS_to_PC: begin
+ internal_flags.INS_out = 1;
+ internal_flags.PC_in = 1;
+ end
+
+ JMP_NOP: begin
+ end
+
OUT_A_to_OUT: begin
internal_flags.A_out = 1;
internal_flags.OUT_in = 1;