Selaa lähdekoodia

Implement memory write

sindre-ex1
Sindre Stephansen 6 vuotta sitten
vanhempi
commit
5a510d0f3f
2 muutettua tiedostoa jossa 6 lisäystä ja 1 poistoa
  1. +1
    -1
      src/main/scala/CPU.scala
  2. +5
    -0
      src/main/scala/ID.scala

+ 1
- 1
src/main/scala/CPU.scala Näytä tiedosto

@@ -66,7 +66,7 @@ class CPU extends MultiIOModule {
//printf(p"S3: ALUop=${ID.io.ALUop}, data1=${ID.io.data1.asSInt}, data2=${ID.io.data2.asSInt} || ") //printf(p"S3: ALUop=${ID.io.ALUop}, data1=${ID.io.data1.asSInt}, data2=${ID.io.data2.asSInt} || ")


// Stage 4 // Stage 4
MEM.io.dataIn := 0.U
MEM.io.dataIn := ShiftRegister(ID.io.data3, 1)
MEM.io.dataAddress := EX.io.result MEM.io.dataAddress := EX.io.result
MEM.io.writeEnable := ShiftRegister(ID.io.controlSignals.memWrite, 1) MEM.io.writeEnable := ShiftRegister(ID.io.controlSignals.memWrite, 1)
//printf(p"S4: res=${EX.io.result} || ") //printf(p"S4: res=${EX.io.result} || ")


+ 5
- 0
src/main/scala/ID.scala Näytä tiedosto

@@ -30,6 +30,7 @@ class InstructionDecode extends MultiIOModule {
val controlSignals = Output(new ControlSignals) val controlSignals = Output(new ControlSignals)
val data1 = Output(UInt(32.W)) val data1 = Output(UInt(32.W))
val data2 = Output(UInt(32.W)) val data2 = Output(UInt(32.W))
val data3 = Output(UInt(32.W))
val ALUop = Output(UInt(4.W)) val ALUop = Output(UInt(4.W))
} }
) )
@@ -39,6 +40,7 @@ class InstructionDecode extends MultiIOModule {


val data1 = RegInit(UInt(32.W), 0.U) val data1 = RegInit(UInt(32.W), 0.U)
val data2 = RegInit(UInt(32.W), 0.U) val data2 = RegInit(UInt(32.W), 0.U)
val data3 = RegInit(UInt(32.W), 0.U)
val ALUop = RegInit(UInt(4.W), 0.U) val ALUop = RegInit(UInt(4.W), 0.U)
val controlSignals = Reg(new ControlSignals) val controlSignals = Reg(new ControlSignals)


@@ -69,6 +71,9 @@ class InstructionDecode extends MultiIOModule {


io.data1 := data1 io.data1 := data1
io.data2 := data2 io.data2 := data2
io.data3 := data3

data3 := registers.io.readData2


switch (decoder.op1Select) { switch (decoder.op1Select) {
is (Op1Select.rs1) { is (Op1Select.rs1) {


Loading…
Peruuta
Tallenna