Skip to content

Commit 824b87a

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/main'
2 parents 9db53e2 + 73e70cb commit 824b87a

File tree

4 files changed

+8
-17
lines changed

4 files changed

+8
-17
lines changed

pipelined/modules/register_file.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module register_file(
1313
assign read_data1 = (rs1 == 0) ? 64'b0 : registers[rs1];
1414
assign read_data2 = (rs2 == 0) ? 64'b0 : registers[rs2];
1515

16-
always @(posedge clk) begin
16+
always @(*) begin
1717
if (reg_write && rd != 0)
1818
registers[rd] <= write_data;
1919
end

pipelined/testcases/1.s

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
begin:
22
addi x1, x0, 1
33
addi x2, x0, 2
4-
addi x3, x0, 3
5-
addi x4, x0, 4
6-
addi x5, x0, 5
7-
84
exit:
95
nop

pipelined/verilog/cpu_pipelined.v

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,16 @@ module cpu_pipelined(
8282
// Register File ke inputs set karo
8383
assign rs1 = if_id_instruction[19:15]; // source register 1 ka number
8484
assign rs2 = if_id_instruction[24:20]; // source register 2 ka number
85-
assign rd = if_id_instruction[11:7]; // destination register ka number
85+
// assign rd = if_id_instruction[11:7]; // destination register ka number
8686

8787
// Register File - CPU ke registers ko handle karta hai
8888
register_file reg_file(
8989
.clk(clk),
9090
.rs1(rs1), // pehla source register
9191
.rs2(rs2), // dusra source register
92-
.rd(rd), // destination register
92+
.rd(reg_rd), // destination register
9393
.write_data(reg_write_data), // jo value likhni hai
94-
.reg_write(reg_write), // write enable signal
94+
.reg_write(mem_wb_reg_write), // write enable signal
9595
.read_data1(reg_read_data1), // pehle register ki value
9696
.read_data2(reg_read_data2) // dusre register ki value
9797
);
@@ -178,10 +178,11 @@ module cpu_pipelined(
178178
.q({mem_wb_mem_read_data, mem_wb_alu_result, mem_wb_instruction, mem_wb_mem_to_reg, mem_wb_reg_write, mem_wb_nop_instruction})
179179
);
180180

181+
wire [4:0] reg_rd;
181182

182183
// register me value write back karo
183184
assign reg_write_data = mem_wb_mem_to_reg ? mem_wb_mem_read_data : mem_wb_alu_result; // memory se ya ALU se value select karo
184-
assign rd = mem_wb_instruction[11:7]; // destination register ka number
185+
assign reg_rd = mem_wb_instruction[11:7]; // destination register ka number
185186

186187
// end_program signal
187188
assign end_program = mem_wb_nop_instruction;

pipelined/verilog/testbench_pipelined.v

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,8 @@ module testbench_pipelined();
1818
// Initialize instruction memory first
1919
cpu.imem.memory[0] = 32'b00000000000100000000000010010011;
2020
cpu.imem.memory[1] = 32'b00000000001000000000000100010011;
21-
cpu.imem.memory[2] = 32'b00000000001100000000000110010011;
22-
cpu.imem.memory[3] = 32'b00000000010000000000001000010011;
23-
cpu.imem.memory[4] = 32'b00000000010100000000001010010011;
24-
cpu.imem.memory[5] = 32'b00000000000000000000000000000000;
25-
26-
// promper initialization
27-
#10 reset = 0;
28-
21+
cpu.imem.memory[2] = 32'b00000000000000000000000000000000;
22+
2923
forever #5 clk = ~clk;
3024
end
3125

0 commit comments

Comments
 (0)