主站增加19号中断用于提示上行CRC错误
This commit is contained in:
@@ -637,12 +637,12 @@ trait InterfaceMCUop{ this: InterfaceBase =>
|
|||||||
mReg.rxSM := RegEnable( dataw(4,3), 0.U(2.W), isEnW & addrw === "h20".U )
|
mReg.rxSM := RegEnable( dataw(4,3), 0.U(2.W), isEnW & addrw === "h20".U )
|
||||||
// mReg.txLength := Cat( RegEnable( dataw, 0.U, isEnW & addrw === "h22".U ), RegEnable( dataw, 0.U, isEnW & addrw === "h21".U ) )
|
// mReg.txLength := Cat( RegEnable( dataw, 0.U, isEnW & addrw === "h22".U ), RegEnable( dataw, 0.U, isEnW & addrw === "h21".U ) )
|
||||||
|
|
||||||
val isMstRecCRCErr = RegInit(0.U(4.W))
|
val mReg_isRecCRCErr = RegInit(0.U(4.W))
|
||||||
mReg.isRecCRCErr := isMstRecCRCErr
|
mReg.isRecCRCErr := mReg_isRecCRCErr
|
||||||
when( isEnW & addrw === "h22".U(16.W) ){
|
when( isEnW & addrw === "h22".U(16.W) ){
|
||||||
isMstRecCRCErr := 0.U
|
mReg_isRecCRCErr := 0.U
|
||||||
} .elsewhen( io.upRecStat.isCRCError & isMstMode ){
|
} .elsewhen( io.upRecStat.isCRCError & isMstMode ){
|
||||||
isMstRecCRCErr := isMstRecCRCErr | (1.U << mReg.rxSM)
|
mReg_isRecCRCErr := mReg_isRecCRCErr | (1.U << mReg.rxSM)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1149,12 +1149,20 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
//传输完成请求 16,17,18,19
|
//传输完成请求 16,17,18,19
|
||||||
|
//主站状态下19为上行crc接收错误
|
||||||
for( i <- 0 until 4 ){
|
for( i <- 0 until 4 ){
|
||||||
when( io.intTransEnd(i) ){
|
when( io.intTransEnd(i) ){
|
||||||
intStatus(16+i) := true.B
|
intStatus(16+i) := true.B
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//override
|
||||||
|
//主站状态下19为上行crc接收错误
|
||||||
|
val isMstRecCRCErr = io.upRecStat.isCRCError & isMstMode
|
||||||
|
when( isMstRecCRCErr ){
|
||||||
|
intStatus(19) := true.B
|
||||||
|
}
|
||||||
|
|
||||||
//下行接收硬件错误
|
//下行接收硬件错误
|
||||||
when( io.intHWTrig(0) ){
|
when( io.intHWTrig(0) ){
|
||||||
intStatus(29) := true.B
|
intStatus(29) := true.B
|
||||||
@@ -1195,6 +1203,7 @@ trait InterfaceSystem{ this: InterfaceBase =>
|
|||||||
(~RegNext(isWdtTrigAndEnable, false.B) & isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出
|
(~RegNext(isWdtTrigAndEnable, false.B) & isWdtTrigAndEnable & cReg.intEnable(4)) | //主站接收看门狗溢出
|
||||||
(0 until 8).map{ i => io.intSlvTrig(i) & cReg.intEnable(8+i)}.reduce(_|_) | //从站SM请求
|
(0 until 8).map{ i => io.intSlvTrig(i) & cReg.intEnable(8+i)}.reduce(_|_) | //从站SM请求
|
||||||
(0 until 4).map{ i => io.intTransEnd(i) & cReg.intEnable(16+i)}.reduce(_|_) | //传输完成请求 16,17,18,19
|
(0 until 4).map{ i => io.intTransEnd(i) & cReg.intEnable(16+i)}.reduce(_|_) | //传输完成请求 16,17,18,19
|
||||||
|
isMstRecCRCErr | //override //主站状态下19为上行crc接收错误 //不会同时发生
|
||||||
io.intHWTrig(0) | //下行接收硬件错误
|
io.intHWTrig(0) | //下行接收硬件错误
|
||||||
io.intHWTrig(1) //上行接收硬件错误
|
io.intHWTrig(1) //上行接收硬件错误
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user