尝试速率配平,回环改到phy上

This commit is contained in:
Ruige Lee
2025-05-07 18:12:01 +08:00
parent 19f4140dec
commit b55deb239f
6 changed files with 63 additions and 58 deletions

View File

@@ -47,6 +47,7 @@ class SlaveParserIO extends Bundle{
val trigAddr = Input( Vec(8, UInt(15.W)) )
val timeStamp = Input(UInt(64.W))
val isLoop = Output(Bool())
}
abstract class SlaveParserBase extends Module{
@@ -169,8 +170,8 @@ abstract class SlaveParserBase extends Module{
val downRecFifo = for( _ <- 0 until 2 ) yield { Module(new Queue(UInt(8.W), 16)) } //子报文负载
val upRecFifo = for( _ <- 0 until 2 ) yield { Module(new Queue(UInt(8.W), 16)) }
val downRecFifo = for( _ <- 0 until 2 ) yield { Module(new Queue(UInt(8.W), 20)) } //子报文负载
val upRecFifo = for( _ <- 0 until 2 ) yield { Module(new Queue(UInt(8.W), 20)) }
val isDownRecPing = RegInit(false.B)
val isUpRecPing = RegInit(false.B)
@@ -620,9 +621,9 @@ trait SlaveParserSync{ this: SlaveParserBase =>
trait SlaveParserProbe{ this: SlaveParserBase =>
val ProbeRecAim = 31.U
val probeRecCnt = RegInit(0.U(5.W))
val isWatchDogOverflow = probeRecCnt === ProbeRecAim
// val ProbeRecAim = 511.U
val probeRecCnt = RegInit(0.U(9.W))
val isWatchDogOverflow = probeRecCnt.andR
@@ -679,30 +680,20 @@ trait SlaveParserProbe{ this: SlaveParserBase =>
io.upOut <> Queue( upSendGen.io.send, 16, true, false )
io.upOut <> Queue( upSendGen.io.send, 4, true, false )
io.downIn <> downRecParser.io.rec
val tmpFifo = Queue( downSendGen.io.send, 16, true, false )
when( isLastDevice & ~isReadyToProbe ){ //最后一个设备且不是探测模式
upRecParser.io.rec <> tmpFifo //axis短接
io.downOut <> Queue( downSendGen.io.send, 4, true, false )
io.upIn <> upRecParser.io.rec
io.downOut.valid := false.B //对外下级io开路
io.downOut.bits := 0.U.asTypeOf(new AXIS_Bundle(8))
io.upIn.ready := false.B
io.isLoop := isLastDevice & ~isReadyToProbe
} .otherwise{
io.downOut <> tmpFifo
io.upIn <> upRecParser.io.rec
}
when( isLastDevice =/= isLastDevice_Pending & ~downSendGen.io.send.valid & ~tmpFifo.valid & ~io.upIn.valid ){
when( isLastDevice =/= isLastDevice_Pending & ~downSendGen.io.send.valid & ~io.downOut.valid & ~io.upIn.valid ){
isLastDevice := isLastDevice_Pending
}
when( isReadyToProbe =/= isReadyToProbe_Pending & ~downSendGen.io.send.valid & ~tmpFifo.valid & ~io.upIn.valid ){
when( isReadyToProbe =/= isReadyToProbe_Pending & ~downSendGen.io.send.valid & ~io.downOut.valid & ~io.upIn.valid ){
isReadyToProbe := isReadyToProbe_Pending
}
}