尝试速率配平,回环改到phy上
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user