Made the decode unit able to continuously decode (simple) instructions if BIU allows it
This commit is contained in:
parent
30c3deca37
commit
90f63b525d
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user