Rewrite stall to be more modular.
This commit is contained in:
parent
97b13a813f
commit
800e7b6eb0
1 changed files with 12 additions and 3 deletions
|
@ -89,10 +89,19 @@ class InstructionDecode extends MultiIOModule {
|
||||||
io.branchType := decoder.branchType
|
io.branchType := decoder.branchType
|
||||||
io.writeAddrOut := decoder.instruction.registerRd
|
io.writeAddrOut := decoder.instruction.registerRd
|
||||||
|
|
||||||
val stallDelay = RegInit(Bool(), false.B)
|
val stallsRemaining = RegInit(UInt(4.W), 0.U)
|
||||||
val stall = Mux(stallDelay, false.B, decoder.controlSignals.memRead)
|
val stallDelay = stallsRemaining > 0.U
|
||||||
|
stallsRemaining := Mux(
|
||||||
|
stallDelay,
|
||||||
|
stallsRemaining - 1.U,
|
||||||
|
Mux(
|
||||||
|
decoder.controlSignals.memRead,
|
||||||
|
1.U,
|
||||||
|
0.U
|
||||||
|
))
|
||||||
|
|
||||||
|
val stall = stallsRemaining > 1.U || decoder.controlSignals.memRead && !stallDelay
|
||||||
io.stall := stall
|
io.stall := stall
|
||||||
stallDelay := stall
|
|
||||||
|
|
||||||
io.jump := Mux(stallDelay, false.B, decoder.controlSignals.jump)
|
io.jump := Mux(stallDelay, false.B, decoder.controlSignals.jump)
|
||||||
io.returnAddr := io.pc + 4.U
|
io.returnAddr := io.pc + 4.U
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue