From e99939491820df300a6179719d807f810e7f1680 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 22 Jan 2026 20:46:11 +0100 Subject: eater: PC inc included, decode on negedge Some cycles can be saved. As previously (wrongly) committed, the PC can be incremented early, but the decoder needs to do this "early", so as now implemented, on the falling clock adge already. --- eater_cpu/eater_decoder.sv | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'eater_cpu/eater_decoder.sv') diff --git a/eater_cpu/eater_decoder.sv b/eater_cpu/eater_decoder.sv index 634102a..e18d20d 100644 --- a/eater_cpu/eater_decoder.sv +++ b/eater_cpu/eater_decoder.sv @@ -47,11 +47,12 @@ always @(posedge clk_i) begin INIT: next_state = PC_to_MAR; - PC_to_MAR: next_state = MEM_to_INS; + // PC_to_MAR: next_state = MEM_to_INS; + // MEM_to_INS: next_state = PC_inc; + // PC_inc: next_state = insdep_state(); - MEM_to_INS: next_state = PC_inc; - - PC_inc: next_state = insdep_state(); + PC_to_MAR: next_state = MEM_to_INS_PC_inc; + MEM_to_INS_PC_inc: next_state = insdep_state(); LDA_INS_to_MAR: next_state = LDA_MEM_to_A; LDA_MEM_to_A: next_state = PC_to_MAR; @@ -101,11 +102,17 @@ always_comb begin internal_flags.PC_out = 1; internal_flags.MAR_in = 1; end - MEM_to_INS: begin + // MEM_to_INS: begin + // internal_flags.RAM_out = 1; + // internal_flags.INS_in = 1; + // end + // PC_inc: begin + // internal_flags.PC_count = 1; + // end + + MEM_to_INS_PC_inc: begin internal_flags.RAM_out = 1; internal_flags.INS_in = 1; - end - PC_inc: begin internal_flags.PC_count = 1; end -- cgit v1.2.3