定向数据流已清
This commit is contained in:
@@ -82,7 +82,7 @@ trait DMAMstTileLink{ this: DMAMstBase =>
|
|||||||
val mInfoValid = stateCur === stateTx
|
val mInfoValid = stateCur === stateTx
|
||||||
|
|
||||||
when( rxBuff.mInfo.source.valid & stateCur === stateIdle & stateNxt === stateRx ){
|
when( rxBuff.mInfo.source.valid & stateCur === stateIdle & stateNxt === stateRx ){
|
||||||
assert( rxBuff.mInfo.source.bits(48) === 1.U )
|
// assert( rxBuff.mInfo.source.bits(48) === 1.U )
|
||||||
trigRxNum := rxBuff.mInfo.source.bits
|
trigRxNum := rxBuff.mInfo.source.bits
|
||||||
dmaAddress := io.sel(rxBuff.mInfo.source.bits( log2Ceil(chn)-1, 0 )).r_RxPtr
|
dmaAddress := io.sel(rxBuff.mInfo.source.bits( log2Ceil(chn)-1, 0 )).r_RxPtr
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,8 +54,10 @@ class PiPoBuffBase[T<:Data]( dp: Int, val threshold: Int = 32) extends Module{
|
|||||||
|
|
||||||
|
|
||||||
when( io.enq.fire ){
|
when( io.enq.fire ){
|
||||||
when( io.enq.bits.isStart ){
|
when( io.enq.bits.isLast ){
|
||||||
cnt := 0.U
|
cnt := 0.U
|
||||||
|
} .elsewhen( io.enq.bits.isStart ){
|
||||||
|
cnt := 1.U
|
||||||
} .otherwise{
|
} .otherwise{
|
||||||
cnt := cnt + 1.U
|
cnt := cnt + 1.U
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,14 +29,16 @@ class Robin(implicit p: Parameters) extends SwitchModule{
|
|||||||
|
|
||||||
|
|
||||||
val isLock = RegInit(false.B)
|
val isLock = RegInit(false.B)
|
||||||
|
val lockChn = Reg(UInt((log2Ceil(chn+1)).W))
|
||||||
|
|
||||||
val lfsr = LFSR(chn+1, ~isLock)
|
val lfsr = ~LFSR( log2Ceil(chn+1), ~isLock)
|
||||||
|
|
||||||
for( i <- 0 until chn+1 ) {
|
for( i <- 0 until chn+1 ) {
|
||||||
when( i.U === lfsr ){
|
when( i.U === lfsr ){
|
||||||
when( io.enq(i).mInfo.dest.valid ){
|
when( io.enq(i).mInfo.dest.valid ){
|
||||||
assert( ~isLock )
|
assert( ~isLock )
|
||||||
isLock := true.B
|
isLock := true.B
|
||||||
|
lockChn := lfsr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,7 +60,7 @@ class Robin(implicit p: Parameters) extends SwitchModule{
|
|||||||
io.deq.mInfo.source.valid := false.B
|
io.deq.mInfo.source.valid := false.B
|
||||||
io.deq.mInfo.source.bits := 0.U
|
io.deq.mInfo.source.bits := 0.U
|
||||||
} .otherwise{
|
} .otherwise{
|
||||||
io.deq <> io.enq(lfsr)
|
io.deq <> io.enq(lockChn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -105,8 +105,8 @@ class SwitchImp(outer: Switch)(implicit p: Parameters) extends LazyModuleImp(out
|
|||||||
when( robin.io.deq.rx.fire & robin.io.deq.rx.bits.isLast ){
|
when( robin.io.deq.rx.fire & robin.io.deq.rx.bits.isLast ){
|
||||||
assert( isMuxBusy )
|
assert( isMuxBusy )
|
||||||
isMuxBusy := false.B
|
isMuxBusy := false.B
|
||||||
} .elsewhen( robin.io.deq.mInfo.dest.valid ){
|
} .elsewhen( robin.io.deq.mInfo.dest.valid & ~isMuxBusy ){
|
||||||
assert( ~isMuxBusy )
|
|
||||||
isMuxBusy := true.B
|
isMuxBusy := true.B
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ trait MacTxFSM { this: MacTxBase =>
|
|||||||
StatePreamble := true.B
|
StatePreamble := true.B
|
||||||
}
|
}
|
||||||
|
|
||||||
when(StartFCS | StartJam){
|
when(StartFCS | StartJam | StartDefer){
|
||||||
StatePAD := false.B
|
StatePAD := false.B
|
||||||
}.elsewhen(StartPAD){
|
}.elsewhen(StartPAD){
|
||||||
StatePAD := true.B
|
StatePAD := true.B
|
||||||
@@ -287,7 +287,13 @@ class MacTx extends MacTxBase with MacTxFSM with MacTxCounter with MacTxCRC {
|
|||||||
|
|
||||||
io.ResetCollision := ~(StatePreamble | (StateData(0) | StateData(1)) | StatePAD | StateFCS)
|
io.ResetCollision := ~(StatePreamble | (StateData(0) | StateData(1)) | StatePAD | StateFCS)
|
||||||
val ExcessiveDeferOccured = io.TxStartFrm & StateDefer & ExcessiveDefer & ~StopExcessiveDeferOccured
|
val ExcessiveDeferOccured = io.TxStartFrm & StateDefer & ExcessiveDefer & ~StopExcessiveDeferOccured
|
||||||
io.StartTxDone := ~io.Collision & (StateFCS & NibCntEq7 | StateData(1) & io.TxEndFrm & NibbleMinFl & ~io.CrcEn)
|
|
||||||
|
io.StartTxDone :=
|
||||||
|
~io.Collision &
|
||||||
|
( (StateFCS & NibCntEq7) |
|
||||||
|
(StateData(1) & io.TxEndFrm & NibbleMinFl & ~io.CrcEn) |
|
||||||
|
(StatePAD & NibbleMinFl & ~io.CrcEn) )
|
||||||
|
|
||||||
io.LateCollision := StartJam & ~ColWindow
|
io.LateCollision := StartJam & ~ColWindow
|
||||||
io.MaxCollisionOccured := StartJam & ColWindow;
|
io.MaxCollisionOccured := StartJam & ColWindow;
|
||||||
StateSFD := StatePreamble & NibCntEq15;
|
StateSFD := StatePreamble & NibCntEq15;
|
||||||
|
|||||||
Reference in New Issue
Block a user