Skip to content

Commit 1897b1b

Browse files
revert back to runnable project
1 parent c519353 commit 1897b1b

File tree

4 files changed

+2
-589
lines changed

4 files changed

+2
-589
lines changed

src/main/scala/RISCV/Main.scala

Lines changed: 1 addition & 178 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,6 @@ class Main() extends Module {
3030

3131
val memory = SRAM(1024, UInt(32.W), 2, 1, 0);
3232

33-
// Set up Program Counter
34-
35-
// Set up RAM
36-
/*
37-
* 32-bit width
38-
* 1024 entries
39-
*
40-
*/
41-
42-
val RAM = Module(new RAM())
43-
RAM.io.enable := false.B
44-
RAM.io.write := false.B
45-
RAM.io.addr := 0.U(10.W)
46-
RAM.io.data_in := 0.U(32.W)
47-
4833
// Set up register file
4934
val registers = Module(new Registers())
5035
// Default connections for register file inputs
@@ -303,168 +288,6 @@ class Main() extends Module {
303288
}
304289
}
305290
}
306-
is ("b0000000_100_01100_11".U) {
307-
// XOR instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#xor
308-
309-
// Get additional fields from decoder
310-
val rd = decoder.io.rd
311-
val rs1 = decoder.io.rs1
312-
val rs2 = decoder.io.rs2
313-
314-
// Execute XOR: x[rd] = x[rs1] ^ x[rs2]
315-
316-
// Read rs1 and rs2 values
317-
regFile.io.read_addr_A := rs1
318-
val rs1_value = regFile.io.out_A
319-
regFile.io.read_addr_B := rs2
320-
val rs2_value = regFile.io.out_B
321-
322-
// Set up ALU
323-
alu.io.operation := "b0101".U // XOR operation
324-
alu.io.signed := false.B
325-
alu.io.a := rs1_value
326-
alu.io.b := rs2_value
327-
val alu_result = alu.io.output
328-
329-
// Write result to rd
330-
regFile.io.write_addr := rd
331-
regFile.io.write_enable := true.B
332-
regFile.io.in := alu_result
333-
}
334-
is ("b00000_00_101_01100_11".U) {
335-
// SRL instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#srl
336-
337-
// Get additional fields from decoder
338-
val rd = decoder.io.rd
339-
val rs1 = decoder.io.rs1
340-
val rs2 = decoder.io.rs2
341-
342-
// Execute SRL: x[rd] = x[rs1] >>u x[rs2]
343-
344-
// Read rs1 and rs2 values
345-
regFile.io.read_addr_A := rs1
346-
val rs1_value = regFile.io.out_A
347-
regFile.io.read_addr_B := rs2
348-
val rs2_value = Cat(Fill(27,0.U), regFile.io.out_B(5,0))
349-
350-
// Set up ALU
351-
alu.io.operation := "b1000".U // Logical right shift operation
352-
alu.io.signed := false.B
353-
alu.io.a := rs1_value
354-
alu.io.b := rs2_value
355-
val alu_result = alu.io.output
356-
357-
regFile.io.write_addr := rd
358-
regFile.io.write_enable := true.B
359-
regFile.io.in := alu_result
360-
}
361-
is ("b01000_00_101_01100_11".U) {
362-
// SRA instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#sra
363-
364-
// Get additional fields from decoder
365-
val rd = decoder.io.rd
366-
val rs1 = decoder.io.rs1
367-
val rs2 = decoder.io.rs2
368-
369-
// Execute SRL: x[rd] = x[rs1] >>u x[rs2]
370-
371-
// Read rs1 and rs2 values
372-
regFile.io.read_addr_A := rs1
373-
val rs1_value = regFile.io.out_A
374-
regFile.io.read_addr_B := rs2
375-
val rs2_value = Cat(Fill(27,0.U), regFile.io.out_B(5,0))
376-
377-
// Set up ALU
378-
alu.io.operation := "b1001".U // Logical right shift operation
379-
alu.io.signed := false.B
380-
alu.io.a := rs1_value
381-
alu.io.b := rs2_value
382-
val alu_result = alu.io.output
383-
384-
regFile.io.write_addr := rd
385-
regFile.io.write_enable := true.B
386-
regFile.io.in := alu_result
387-
}
388-
is ("b00000_00_110_01100_11".U) {
389-
// OR instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#or
390-
391-
// Get additional fields from decoder
392-
val rd = decoder.io.rd
393-
val rs1 = decoder.io.rs1
394-
val rs2 = decoder.io.rs2
395-
396-
// Execute OR: x[rd] = x[rs1] | x[rs2]
397-
398-
// Read rs1 and rs2 values
399-
regFile.io.read_addr_A := rs1
400-
val rs1_value = regFile.io.out_A
401-
regFile.io.read_addr_B := rs2
402-
val rs2_value = regFile.io.out_B
403-
404-
// Set up ALU
405-
alu.io.operation := "b0100".U
406-
alu.io.signed := false.B
407-
alu.io.a := rs1_value
408-
alu.io.b := rs2_value
409-
val alu_result = alu.io.output
410-
411-
regFile.io.write_addr := rd
412-
regFile.io.write_enable := true.B
413-
regFile.io.in := alu_result
414-
}
415-
is ("b00000_00_111_01100_11".U) {
416-
// AND instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#and
417-
418-
// Get additional fields from decoder
419-
val rd = decoder.io.rd
420-
val rs1 = decoder.io.rs1
421-
val rs2 = decoder.io.rs2
422-
423-
// Execute AND: x[rd] = x[rs1] & x[rs2]
424-
425-
// Read rs1 and rs2 values
426-
regFile.io.read_addr_A := rs1
427-
val rs1_value = regFile.io.out_A
428-
regFile.io.read_addr_B := rs2
429-
val rs2_value = regFile.io.out_B
430-
431-
// Set up ALU
432-
alu.io.operation := "b0011".U
433-
alu.io.signed := false.B
434-
alu.io.a := rs1_value
435-
alu.io.b := rs2_value
436-
val alu_result = alu.io.output
437-
438-
regFile.io.write_addr := rd
439-
regFile.io.write_enable := true.B
440-
regFile.io.in := alu_result
441-
}
442-
is ("b000_00000_11".U) {
443-
// LB instruction https://msyksphinz-self.github.io/riscv-isadoc/html/rvi.html#lb
444-
445-
// Get additional fields from decoder
446-
val rd = decoder.io.rd
447-
val rs1 = decoder.io.rs1
448-
val immediate = decoder.io.immediate
449-
450-
// Execute LB: x[rd] = sext(M[x[rs1] + sext(offset)][7:0])
451-
452-
// Read rs1 and rs2 values
453-
regFile.io.read_addr_A := rs1
454-
val rs1_value = regFile.io.out_A
455-
456-
// Sign extend offset
457-
val sext_offset = Cat(Fill(20, immediate(11)), immediate) // sext(offset)
458-
459-
// Intermediate
460-
val _sum = rs1+sext_offset
461-
// Final Sign-extension
462-
val result = Cat(Fill(24, _sum(7)), _sum(7,0))
463-
464-
regFile.io.write_addr := rd
465-
regFile.io.write_enable := true.B
466-
regFile.io.in := result
467-
}
468291
}
469292
}
470293

@@ -478,4 +301,4 @@ object Main extends App {
478301
),
479302
args = Array("--target-dir", "generated")
480303
)
481-
}
304+
}

src/main/scala/RISCV/PC.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import scala.math._
77
class PC() extends Module {
88
val io = IO(new Bundle {
99
val pc_in = Input(UInt(32.W))
10-
val enable = Input(Bool())
1110
val pc_out = Output(UInt(32.W))
1211
})
1312
val pc_reg = RegInit(0.U(32.W))

src/main/scala/RISCV/RAM.scala

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)