完成探针和索引
This commit is contained in:
@@ -76,7 +76,8 @@ abstract class SlaveParserBase extends Module{
|
||||
val downSendGen = Module(new SlaveSendGen)
|
||||
val upSendGen = Module(new SlaveSendGen)
|
||||
|
||||
val isReadyToProbe = RegInit(false.B)
|
||||
val isReadyToProbe = RegInit(false.B)
|
||||
val isAckProbe = RegInit(false.B)
|
||||
val isLastDevice: Bool = RegInit(true.B)
|
||||
val isDeviceModified: Bool = RegInit(true.B)
|
||||
|
||||
@@ -107,6 +108,9 @@ abstract class SlaveParserBase extends Module{
|
||||
} .elsewhen( downRecParser.io.frameReq.fire & downRecParser.io.frameReq.bits.frameStyle === FRAME_STYLE_COMMON ){//下行来了一个普通包
|
||||
isDownSendPend := true.B
|
||||
downFrameInfo := downRecParser.io.frameReq.bits
|
||||
} .elsewhen( downRecParser.io.frameReq.fire & downRecParser.io.frameReq.bits.frameStyle === FRAME_STYLE_PROBE ){//下行来了一个嗅探包
|
||||
isDownSendPend := true.B
|
||||
downFrameInfo := downRecParser.io.frameReq.bits
|
||||
}
|
||||
|
||||
when( upSendGen.io.frameReq.fire ){
|
||||
@@ -118,8 +122,8 @@ abstract class SlaveParserBase extends Module{
|
||||
|
||||
|
||||
downSendGen.io.frameReq.valid :=
|
||||
isDownSendPend & downRecParser.io.subMsgReq.fire //| 下行转发
|
||||
//isDownSendProbe //下行探针
|
||||
isDownSendPend & downFrameInfo.frameStyle === FRAME_STYLE_COMMON & downRecParser.io.subMsgReq.fire | //下行转发
|
||||
isDownSendPend & downFrameInfo.frameStyle === FRAME_STYLE_PROBE //下行探针
|
||||
|
||||
// assert( OneHot(isDownSendPend, isDownSendProbe) )
|
||||
|
||||
@@ -136,13 +140,13 @@ abstract class SlaveParserBase extends Module{
|
||||
|
||||
upSendGen.io.frameReq.valid :=
|
||||
isUpSendPend & upRecParser.io.subMsgReq.fire | //上行转发
|
||||
isReadyToProbe // 上行探针
|
||||
isAckProbe // 上行探针
|
||||
|
||||
assert( ~(isUpSendPend & isReadyToProbe), "Assert Failed, Check Softwave, Probe is Sent while transfering!\n" )
|
||||
assert( ~(isUpSendPend & isAckProbe), "Assert Failed, Check Softwave, Probe is Sent while transfering!\n" )
|
||||
|
||||
upSendGen.io.frameReq.bits := Mux1H(Seq(
|
||||
isUpSendPend -> upFrameInfo, //上行转发
|
||||
isReadyToProbe -> upFrameProbeInfo, //上行探针
|
||||
isAckProbe -> upFrameProbeInfo, //上行探针
|
||||
))
|
||||
|
||||
|
||||
@@ -616,8 +620,8 @@ trait SlaveParserSync{ this: SlaveParserBase =>
|
||||
trait SlaveParserProbe{ this: SlaveParserBase =>
|
||||
|
||||
|
||||
val ProbeRecAim = 20000.U
|
||||
val probeRecCnt = RegInit(0.U(32.W))
|
||||
val ProbeRecAim = 31.U
|
||||
val probeRecCnt = RegInit(0.U(5.W))
|
||||
val isWatchDogOverflow = probeRecCnt === ProbeRecAim
|
||||
|
||||
|
||||
@@ -634,7 +638,11 @@ trait SlaveParserProbe{ this: SlaveParserBase =>
|
||||
isReadyToProbe := false.B
|
||||
}
|
||||
|
||||
|
||||
when( downRecParser.io.frameReq.fire & downRecParser.io.frameReq.bits.frameStyle === FRAME_STYLE_PROBE ){ //下行来了一个嗅探包
|
||||
isAckProbe := true.B
|
||||
} .elsewhen( upSendGen.io.frameReq.fire & upSendGen.io.frameReq.bits.frameStyle === FRAME_STYLE_PROBE ){ //上行发送回复嗅探包
|
||||
isAckProbe := false.B
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user