看门狗挪到特质里
This commit is contained in:
@@ -670,45 +670,7 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val wdtStatus = for( i <- 0 until 18 ) yield { RegInit(false.B) } //1+16+1
|
|
||||||
cReg.wdtStatus := Cat( wdtStatus.reverse )
|
|
||||||
|
|
||||||
for( i <- 0 until 8 ){
|
|
||||||
when( isEnW & addrw === "h400".U & dataw.extract(i) ){
|
|
||||||
wdtStatus(i) := false.B
|
|
||||||
} .elsewhen(io.wdtTrigger(i) & cReg.wdtEnable.extract(i)){
|
|
||||||
wdtStatus(i) := true.B
|
|
||||||
}
|
|
||||||
when( isEnW & addrw === "h401".U & dataw.extract(i) ){
|
|
||||||
wdtStatus(8+i) := false.B
|
|
||||||
} .elsewhen(io.wdtTrigger(8+i) & cReg.wdtEnable.extract(8+i)){
|
|
||||||
wdtStatus(8+i) := true.B
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for( i <- 0 until 2 ){
|
|
||||||
when( isEnW & addrw === "h402".U & dataw.extract(i) ){
|
|
||||||
wdtStatus(16+i) := false.B
|
|
||||||
} .elsewhen(io.wdtTrigger(16+i) & cReg.wdtEnable.extract(16+i)){
|
|
||||||
wdtStatus(16+i) := true.B
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cReg.wdtEnable :=
|
|
||||||
Cat(
|
|
||||||
RegEnable( dataw(1,0), 0.U, isEnW & addrw === "h406".U ),
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === "h405".U ),
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === "h404".U ),
|
|
||||||
)
|
|
||||||
|
|
||||||
for( i <- 0 until 18 ){
|
|
||||||
cReg.wdtTarCnt(i) :=
|
|
||||||
Cat(
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ),
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ),
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ),
|
|
||||||
RegEnable( dataw, 0.U, isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -934,9 +896,47 @@ trait InterfaceSync{ this: InterfaceBase =>
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// trait InterfaceWdt{ this: InterfaceBase =>
|
trait InterfaceWdt{ this: InterfaceBase =>
|
||||||
|
val wdtStatus = for( i <- 0 until 18 ) yield { RegInit(false.B) } //1+16+1
|
||||||
|
cReg.wdtStatus := Cat( wdtStatus.reverse )
|
||||||
|
|
||||||
// }
|
for( i <- 0 until 8 ){
|
||||||
|
when( isEnW & addrw === "h400".U & dataw.extract(i) ){
|
||||||
|
wdtStatus(i) := false.B
|
||||||
|
} .elsewhen(io.wdtTrigger(i) & cReg.wdtEnable.extract(i)){
|
||||||
|
wdtStatus(i) := true.B
|
||||||
|
}
|
||||||
|
when( isEnW & addrw === "h401".U & dataw.extract(i) ){
|
||||||
|
wdtStatus(8+i) := false.B
|
||||||
|
} .elsewhen(io.wdtTrigger(8+i) & cReg.wdtEnable.extract(8+i)){
|
||||||
|
wdtStatus(8+i) := true.B
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for( i <- 0 until 2 ){
|
||||||
|
when( isEnW & addrw === "h402".U & dataw.extract(i) ){
|
||||||
|
wdtStatus(16+i) := false.B
|
||||||
|
} .elsewhen(io.wdtTrigger(16+i) & cReg.wdtEnable.extract(16+i)){
|
||||||
|
wdtStatus(16+i) := true.B
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cReg.wdtEnable :=
|
||||||
|
Cat(
|
||||||
|
RegEnable( dataw(1,0), 0.U, isEnW & addrw === "h406".U ),
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === "h405".U ),
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === "h404".U ),
|
||||||
|
)
|
||||||
|
|
||||||
|
for( i <- 0 until 18 ){
|
||||||
|
cReg.wdtTarCnt(i) :=
|
||||||
|
Cat(
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40b".U (16.W) + (4*i).U ) ),
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === ( "h40a".U (16.W) + (4*i).U ) ),
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === ( "h409".U (16.W) + (4*i).U ) ),
|
||||||
|
RegEnable( dataw, 0.U, isEnW & addrw === ( "h408".U (16.W) + (4*i).U ) ),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
trait InterfaceSystem{ this: InterfaceBase =>
|
trait InterfaceSystem{ this: InterfaceBase =>
|
||||||
io.isSoftReset :=
|
io.isSoftReset :=
|
||||||
@@ -1277,7 +1277,7 @@ with InterfaceCheckSM
|
|||||||
with InterfaceLVDSop
|
with InterfaceLVDSop
|
||||||
with InterfaceSync
|
with InterfaceSync
|
||||||
with InterfaceStat
|
with InterfaceStat
|
||||||
// with InterfaceWdt
|
with InterfaceWdt
|
||||||
with InterfaceSystem
|
with InterfaceSystem
|
||||||
with InterfaceEvent
|
with InterfaceEvent
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user