> configure(npc)
ysyx_22040000 李心杨 Linux calcite 6.6.19 #1-NixOS SMP PREEMPT_DYNAMIC Fri Mar 1 12:35:11 UTC 2024 x86_64 GNU/Linux 11:46:30 up 1:22, 2 users, load average: 1.63, 1.23, 0.98
This commit is contained in:
parent
b0793d3253
commit
efcfef915a
2 changed files with 5 additions and 5 deletions
|
@ -9,7 +9,7 @@ class ALUControlInterface extends Bundle {
|
||||||
val aOpAdd, aOpSub, aOpNot, aOpAnd, aOpOr, aOpXor, aOpSlt, aOpEq, aOpNop = Value
|
val aOpAdd, aOpSub, aOpNot, aOpAnd, aOpOr, aOpXor, aOpSlt, aOpEq, aOpNop = Value
|
||||||
}
|
}
|
||||||
object SrcSelect extends ChiselEnum {
|
object SrcSelect extends ChiselEnum {
|
||||||
val aSrcRs2, aSrcImm = Value
|
val aSrcRs1, aSrcImm = Value
|
||||||
}
|
}
|
||||||
val op = Input(OpSelect())
|
val op = Input(OpSelect())
|
||||||
val src = Input(SrcSelect())
|
val src = Input(SrcSelect())
|
||||||
|
@ -23,7 +23,7 @@ class ALUControlInterface extends Bundle {
|
||||||
class ALU[T <: UInt](tpe: T) extends Module {
|
class ALU[T <: UInt](tpe: T) extends Module {
|
||||||
val control = IO(new ALUControlInterface)
|
val control = IO(new ALUControlInterface)
|
||||||
val in = IO(new Bundle {
|
val in = IO(new Bundle {
|
||||||
val a = Input(Vec(control.SrcSelect.getWidth, tpe))
|
val a = Input(Vec(control.SrcSelect.all.length, tpe))
|
||||||
val b = Input(tpe)
|
val b = Input(tpe)
|
||||||
})
|
})
|
||||||
val out = IO(new Bundle {
|
val out = IO(new Bundle {
|
||||||
|
|
|
@ -71,8 +71,6 @@ class Control(width: Int) extends Module {
|
||||||
val reversePrefixSum = dstList.scanLeft(0)(_ + _.getWidth).reverse
|
val reversePrefixSum = dstList.scanLeft(0)(_ + _.getWidth).reverse
|
||||||
val slices = reversePrefixSum.zip(reversePrefixSum.tail)
|
val slices = reversePrefixSum.zip(reversePrefixSum.tail)
|
||||||
val srcList = slices.map(s => out(s._1 - 1, s._2))
|
val srcList = slices.map(s => out(s._1 - 1, s._2))
|
||||||
// println(dstList)
|
|
||||||
// println(srcList)
|
|
||||||
|
|
||||||
srcList
|
srcList
|
||||||
.zip(dstList.reverse)
|
.zip(dstList.reverse)
|
||||||
|
@ -128,7 +126,9 @@ class Flow extends Module {
|
||||||
ram.writePorts(0).data := 1.U
|
ram.writePorts(0).data := 1.U
|
||||||
ram.writePorts(0).enable := false.B
|
ram.writePorts(0).enable := false.B
|
||||||
|
|
||||||
alu.in.a := reg.out.src(0)
|
import control.alu.SrcSelect._
|
||||||
|
alu.in.a(aSrcRs1.litValue.toInt) := reg.out.src(0)
|
||||||
|
alu.in.a(aSrcImm.litValue.toInt) := inst(31, 20)
|
||||||
alu.in.b := reg.out.src(1)
|
alu.in.b := reg.out.src(1)
|
||||||
dontTouch(control.out)
|
dontTouch(control.out)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue