2023-07-25 21:05:43 +08:00
|
|
|
package BACK
|
2023-07-24 19:31:32 +08:00
|
|
|
|
|
|
|
|
import chisel3._
|
|
|
|
|
import chisel3.util._
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-25 21:05:43 +08:00
|
|
|
trait LocalRegisters { this: BackBoardSlvBase =>
|
2023-07-24 19:31:32 +08:00
|
|
|
|
2023-07-25 21:05:43 +08:00
|
|
|
val digitalDir = RegInit(0.U(32.W))
|
|
|
|
|
val digitalOut = RegInit(0.U(32.W))
|
|
|
|
|
val digitalIn = WireDefault(0.U(32.W))
|
2023-07-24 19:31:32 +08:00
|
|
|
|
2023-07-25 21:05:43 +08:00
|
|
|
registersRD := Mux1H(Seq(
|
|
|
|
|
(upStreamReq.io.latDat.bits.register === 0.U) -> digitalDir,
|
|
|
|
|
(upStreamReq.io.latDat.bits.register === 1.U) -> digitalIn,
|
|
|
|
|
))
|
2023-07-24 19:31:32 +08:00
|
|
|
|
2023-07-25 21:05:43 +08:00
|
|
|
when( upStreamReq.io.latDat.fire & upStreamReq.io.latDat.bits.address(5,1) === io.localHost & upStreamReq.io.latDat.bits.address.extract(0) === 1.U ){
|
|
|
|
|
when(upStreamReq.io.latDat.bits.register === 0.U){
|
|
|
|
|
digitalDir := upStreamReq.io.latDat.bits.data
|
|
|
|
|
}
|
|
|
|
|
when(upStreamReq.io.latDat.bits.register === 1.U){
|
|
|
|
|
digitalOut := upStreamReq.io.latDat.bits.data
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-07-24 19:31:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|