diff options
| author | uvok | 2026-01-22 20:46:11 +0100 |
|---|---|---|
| committer | uvok | 2026-01-22 20:46:11 +0100 |
| commit | e99939491820df300a6179719d807f810e7f1680 (patch) | |
| tree | 1712d3bd2e92de92a76e7575417aeb600b1871d7 /eater_cpu/eater_decoder.sv | |
| parent | 53a87c78df525068ea0d850676bea2a41fcd7bc5 (diff) | |
eater: PC inc included, decode on negedgemain
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.
Diffstat (limited to 'eater_cpu/eater_decoder.sv')
| -rw-r--r-- | eater_cpu/eater_decoder.sv | 21 |
1 files changed, 14 insertions, 7 deletions
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 |
