Made the decode unit able to continuously decode (simple) instructions if BIU allows it

This commit is contained in:
(Tim) Efthimis Kritikos 2023-05-17 20:07:45 +01:00
parent 30c3deca37
commit 90f63b525d

View File

@ -206,10 +206,32 @@ reg [23:0] INSTRUCTION_BUFFER;
reg owe_set_init; reg owe_set_init;
//TODO: Why do we need to make a local copy on a register for the code inside the always @(next_state) to read it?
// For some reason the raw VALID_INSTRUCTION signal reads always 1 and it has something to do with the block
// being triggered by next_exec
reg VALID_INSTRUCTION_lc;
always @(VALID_INSTRUCTION)begin VALID_INSTRUCTION_lc<=VALID_INSTRUCTION; end
always @(next_exec) begin always @(next_exec) begin
valid_exec_data<=0;
proc_state<=`PROC_DE_STATE_ENTRY; proc_state<=`PROC_DE_STATE_ENTRY;
if ( VALID_INSTRUCTION_lc == 1 && SIMPLE_MICRO == 0 && DE_DEPENDS_ON_PREVIOUS == 0 && ucode_seq_addr_entry==`UCODE_NO_INSTRUCTION) begin
`ifdef DEBUG_PC_ADDRESS
$display("Running command at %04x (%08x)",INSTRUCTION_LOCATION,INSTRUCTION);
`endif
`ifdef CALCULATE_IPC
new_instruction <= !new_instruction;
`endif
DE_OUTPUT_sampled <= DE_OUTPUT;
set_initial_values<= !set_initial_values;
valid_instruction_ack <= !valid_instruction_ack;
ProgCount <= INSTRUCTION_LOCATION+{12'b0,instr_end};
INSTRUCTION_BUFFER<=INSTRUCTION[23:0];
wait_exec<=1;
valid_exec_data<=1;
end else begin
wait_exec<=0; wait_exec<=0;
valid_exec_data<=0;
end
end end
reg wait_exec; reg wait_exec;