修复主站CRC校验逻辑(欠一拍);增加22号寄存器,提示主站接收CRC错误
This commit is contained in:
@@ -114,6 +114,7 @@ class MasterRegisterBundle extends Bundle{
|
|||||||
val txSM = UInt(2.W)
|
val txSM = UInt(2.W)
|
||||||
val rxSM = UInt(2.W)
|
val rxSM = UInt(2.W)
|
||||||
|
|
||||||
|
val isRecCRCErr = UInt(4.W)
|
||||||
val rplTimeStampTx = UInt(16.W)
|
val rplTimeStampTx = UInt(16.W)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,6 +265,7 @@ abstract class InterfaceBase extends Module{
|
|||||||
|
|
||||||
Seq(
|
Seq(
|
||||||
(addr === "h20".U & isMstMode) -> Cat(mReg.rxSM, mReg.txSM, 0.U(1.W) ),
|
(addr === "h20".U & isMstMode) -> Cat(mReg.rxSM, mReg.txSM, 0.U(1.W) ),
|
||||||
|
(addr === "h22".U & isMstMode) -> mReg.isRecCRCErr,
|
||||||
//(addr === "h21".U & isMstMode) -> mReg.txLength,
|
//(addr === "h21".U & isMstMode) -> mReg.txLength,
|
||||||
|
|
||||||
(addr === "h24".U & isMstMode) -> mReg.rplTimeStampTx(7,0),
|
(addr === "h24".U & isMstMode) -> mReg.rplTimeStampTx(7,0),
|
||||||
@@ -635,6 +637,16 @@ 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))
|
||||||
|
mReg.isRecCRCErr := isMstRecCRCErr
|
||||||
|
when( isEnW & addrw === "h22".U(16.W) ){
|
||||||
|
isMstRecCRCErr := 0.U
|
||||||
|
} .elsewhen( io.upRecStat.isCRCError & isMstMode ){
|
||||||
|
isMstRecCRCErr := isMstRecCRCErr | (1.U << mReg.rxSM)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
( 0 until 128 ).map{ i =>
|
( 0 until 128 ).map{ i =>
|
||||||
cReg.custom(i) := RegEnable( dataw, 0.U(8.W), isEnW & (addrw === ("h180".U(16.W) + i.U)) )
|
cReg.custom(i) := RegEnable( dataw, 0.U(8.W), isEnW & (addrw === ("h180".U(16.W) + i.U)) )
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ abstract class MasterParserBase extends Module{
|
|||||||
|
|
||||||
|
|
||||||
io.rsp.valid := io.upIn.fire & io.upIn.bits.tlast
|
io.rsp.valid := io.upIn.fire & io.upIn.bits.tlast
|
||||||
io.rsp.bits.isError := io.upIn.fire & io.upIn.bits.tlast & recCrcCheck =/= rxcrc.io.crc
|
io.rsp.bits.isError := io.upIn.fire & io.upIn.bits.tlast & (Cat( recCrcCheck(31,8), io.upIn.bits.tdata ) =/= rxcrc.io.crc)
|
||||||
// io.rsp.bits.length := rxCnt + 1.U
|
// io.rsp.bits.length := rxCnt + 1.U
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user