bug fixed

This commit is contained in:
ClF3 2024-07-01 00:24:09 +08:00
parent 6db5db52e4
commit a58a38c291
4 changed files with 46 additions and 36 deletions

View File

@ -69,9 +69,16 @@ module CPU(
wire [32 -1:0] Databus3; wire [32 -1:0] Databus3;
wire [32 -1:0] Databus4; wire [32 -1:0] Databus4;
wire [5 -1:0] Write_register; wire [5 -1:0] Write_register;
wire [5 -1:0] Write_register2;
wire [5 -1:0] Read_register1;
wire [5 -1:0] Read_register2; wire [5 -1:0] Read_register2;
assign Write_register = (RegDst == 2'b00)? Instruction[20:16]: (RegDst == 2'b01)? Instruction[15:11]:(RegDst == 2'b11)?Instruction[25:21]:5'b11111; assign Write_register = (RegDst == 2'b00)? Instruction[20:16]:
(RegDst == 2'b01)? Instruction[15:11]:
(RegDst == 2'b11)? Instruction[25:21]:
5'b11111;
assign Write_register2 = Instruction[15:11];
assign Read_register1 = Instruction[25:21];
assign Read_register2 = (ReadFrom == 1'b1)? Instruction[15:11]: Instruction[20:16]; assign Read_register2 = (ReadFrom == 1'b1)? Instruction[15:11]: Instruction[20:16];
RegisterFile register_file1( RegisterFile register_file1(
@ -79,10 +86,10 @@ module CPU(
.clk (clk ), .clk (clk ),
.RegWrite (RegWrite ), .RegWrite (RegWrite ),
.Regwrite2 (RegWrite2 ), .Regwrite2 (RegWrite2 ),
.Read_register1 (Instruction[25:21] ), .Read_register1 (Read_register1 ),
.Read_register2 (Read_register2 ), .Read_register2 (Read_register2 ),
.Write_register (Write_register ), .Write_register (Write_register ),
.Write_register2(Instruction[15:11] ), .Write_register2(Write_register2 ),
.Write_data (Databus3 ), .Write_data (Databus3 ),
.Write_data2 (Databus4 ), .Write_data2 (Databus4 ),
.Read_data1 (Databus1 ), .Read_data1 (Databus1 ),

View File

@ -33,13 +33,13 @@ module Control(
(OpCode == 6'h00 && Funct == 6'h2e)? 1'b1: (OpCode == 6'h00 && Funct == 6'h2e)? 1'b1:
1'b0; 1'b0;
assign ReadFrom = assign ReadFrom =
(OpCode == 6'h00 || OpCode == 6'h2e)? 1'b1: (OpCode == 6'h00 && Funct == 6'h2e)? 1'b1:
1'b0; 1'b0;
assign RegDst = assign RegDst =
(OpCode[5:3] == 3'b001)? 2'b00: (OpCode[5:3] == 3'b001)? 2'b00:
(OpCode == 6'h23)? 2'b00: (OpCode == 6'h23)? 2'b00:
(OpCode == 6'h03)? 2'b10: (OpCode == 6'h03)? 2'b10:
(OpCode == 6'h2e)? 2'b11: (OpCode == 6'h00 && Funct == 6'h2e)? 2'b11:
2'b01; 2'b01;
assign MemRead = (OpCode == 6'h23)? 1'b1: 1'b0; assign MemRead = (OpCode == 6'h23)? 1'b1: 1'b0;
assign MemWrite = (OpCode == 6'h2b)? 1'b1: 1'b0; assign MemWrite = (OpCode == 6'h2b)? 1'b1: 1'b0;

View File

@ -35,6 +35,7 @@ module InstructionMemory(
8'd25: Instruction <= 32'hac13002c; 8'd25: Instruction <= 32'hac13002c;
8'd26: Instruction <= 32'h0810001a; 8'd26: Instruction <= 32'h0810001a;
// -------- Paste Binary Instruction Above // -------- Paste Binary Instruction Above
default: Instruction <= 32'h00000000; default: Instruction <= 32'h00000000;
endcase endcase

View File

@ -28,10 +28,12 @@ module RegisterFile(
if (reset) if (reset)
for (i = 1; i < 32; i = i + 1) for (i = 1; i < 32; i = i + 1)
RF_data[i] <= 32'h00000000; RF_data[i] <= 32'h00000000;
else if (RegWrite && (Write_register != 5'b00000)) else
begin
if (RegWrite && (Write_register != 5'b00000))
RF_data[Write_register] <= Write_data; RF_data[Write_register] <= Write_data;
else if (Regwrite2 && (Write_register2 != 5'b00000)) if (Regwrite2 && (Write_register2 != 5'b00000))
RF_data[Write_register2] <= Write_data2; RF_data[Write_register2] <= Write_data2;
end
endmodule endmodule