处理断言及状态机卡住问题,从这个版本开始,所有断言错误都应该处理;recParser的错误状态会触发5、6号不可屏蔽中断,软件需要清中断然后recParser恢复状态,cdrout溢出问题不再触发中断,该次传输将会发生至少两次错误
This commit is contained in:
@@ -172,6 +172,8 @@ class InterfaceIO extends Bundle{
|
||||
|
||||
val isSoftReset = Output(Bool())
|
||||
val intMstTrig = Input(Vec(2, Bool()))
|
||||
val intHWTrig = Input(Vec(2, Bool()))
|
||||
val intHWClr = Output(Vec(2, Bool()))
|
||||
val intSlvTrig = Input(Vec(8, Bool()))
|
||||
|
||||
val interrupt = Output(Bool())
|
||||
@@ -746,16 +748,15 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
val intStatus = for( _ <- 0 until 16 ) yield { RegInit(false.B) }
|
||||
cReg.intStatus := Cat( intStatus.reverse )
|
||||
|
||||
val intMstTrig = Input(Vec(2, Bool()))
|
||||
val intSlvTrig = Input(Vec(8, Bool()))
|
||||
|
||||
|
||||
//主站发送完成
|
||||
when( io.intMstTrig(0) ){
|
||||
when( io.intMstTrig(0) & cReg.intEnable(0) ){
|
||||
intStatus(0) := true.B
|
||||
}
|
||||
|
||||
//主站接收完成
|
||||
when( io.intMstTrig(1) ){
|
||||
when( io.intMstTrig(1) & cReg.intEnable(1) ){
|
||||
intStatus(1) := true.B
|
||||
}
|
||||
|
||||
@@ -764,16 +765,26 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
|
||||
//主站接收看门狗溢出
|
||||
|
||||
//下行接收硬件错误
|
||||
when( io.intHWTrig(0) ){
|
||||
intStatus(5) := true.B
|
||||
}
|
||||
|
||||
when( io.intHWTrig(1) ){
|
||||
intStatus(6) := true.B
|
||||
}
|
||||
//上行接收硬件错误
|
||||
|
||||
|
||||
//从站SM请求
|
||||
for( i <- 0 until 8 ){
|
||||
when( io.intSlvTrig(i) ){
|
||||
when( io.intSlvTrig(i) & cReg.intEnable(8+i)){
|
||||
intStatus(8+i) := true.B
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//写清中断
|
||||
for( i <- 0 until 8 ){
|
||||
when( dataw.extract(i) & isEnW & addrw === "h74".U ){
|
||||
intStatus(i) := false.B
|
||||
@@ -783,6 +794,9 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
||||
}
|
||||
}
|
||||
|
||||
io.intHWClr(0) := dataw.extract(5) & isEnW & addrw === "h74".U
|
||||
io.intHWClr(1) := dataw.extract(6) & isEnW & addrw === "h74".U
|
||||
|
||||
io.interrupt := intStatus.reduce(_|_)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user