Skip to content

Commit d0cfec2

Browse files
committed
Test 40/41 passing
1 parent a2ae4a5 commit d0cfec2

File tree

5 files changed

+24956
-628
lines changed

5 files changed

+24956
-628
lines changed

src/components/ControlUnit.sv

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module ControlUnit (
2121
opcode_t OPC;
2222
always_comb begin
2323
OPC = opcode_t'(instruction[6:0]);
24-
OPC = (OPC == `OPC_JALR) ? I_TYPE : OPC;
24+
OPC = (OPC == `OPC_JALR) ? I_TYPE : OPC; // TODO: BU BÖYLE OLMAZ!!!!!! instruction[6:0] ile kullanmayınca dev tuzak
2525
end
2626

2727
always_comb begin
@@ -49,14 +49,16 @@ module ControlUnit (
4949
`FN3_SLT: ALU_Operation = `ALU_SLT; // SLT, SLTI
5050
`FN3_SLTU: ALU_Operation = `ALU_SLTU; // SLTU, SLTIU
5151
`FN3_XOR: ALU_Operation = `ALU_XOR; // XOR, XORI
52-
`FN3_SRL: ALU_Operation = `ALU_SRL; // SRL, SRA
52+
`FN3_SRL: ALU_Operation = (fn7 == `FN7_SRL) ? `ALU_SRL : `ALU_SRA;
5353
`FN3_OR: ALU_Operation = `ALU_OR; // OR, ORI
5454
`FN3_AND: ALU_Operation = `ALU_AND; // AND, ANDI
5555
default: ALU_Operation = `ALU_ADD;
5656
endcase
5757
end else if (OPC == I_TYPE) begin
5858
unique case (fn3)
5959
`FN3_ADDI: ALU_Operation = `ALU_ADD;
60+
`FN3_SLLI: ALU_Operation = `ALU_SLL;
61+
`FN3_SRLI: ALU_Operation = (fn7 == `FN7_SRL) ? `ALU_SRL : `ALU_SRA;
6062
`FN3_SLTI: ALU_Operation = `ALU_SLT;
6163
`FN3_SLTIU: ALU_Operation = `ALU_SLTU;
6264
`FN3_XORI: ALU_Operation = `ALU_XOR;
@@ -107,9 +109,9 @@ module ControlUnit (
107109
end
108110

109111
always_comb begin
110-
casez (OPC)
112+
casez (instruction[6:0])
111113
J_TYPE: RF_wdata_sel = `RF_WDATA_SEL_PC;
112-
R_TYPE, I_TYPE, B_TYPE, U_TYPE: RF_wdata_sel = `RF_WDATA_SEL_ALU;
114+
R_TYPE, I_TYPE, B_TYPE, U_TYPE: RF_wdata_sel = (instruction[6:0] != `OPC_JALR) ? `RF_WDATA_SEL_ALU: `RF_WDATA_SEL_PC;
113115
S_TYPE: RF_wdata_sel = `RF_WDATA_SEL_DM;
114116
default: RF_wdata_sel = 2'b00;
115117
endcase

src/core/Core.sv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ module Core (
4242
assign RF_wdata = (RF_wdata_sel == `RF_WDATA_SEL_PC) ? program_counter + 4 :
4343
(RF_wdata_sel == `RF_WDATA_SEL_ALU) ? ALU_OUT :
4444
(RF_wdata_sel == `RF_WDATA_SEL_DM) ? DM_OUT : 32'h0;
45+
4546
logic [31:0] RF_rdata1;
4647
logic [31:0] RF_rdata2;
4748

0 commit comments

Comments
 (0)