diff --git a/src/main/scala/backBoard/shin/ShinSlv.scala b/src/main/scala/backBoard/shin/ShinSlv.scala index fa9f8c7..e79d3ad 100644 --- a/src/main/scala/backBoard/shin/ShinSlv.scala +++ b/src/main/scala/backBoard/shin/ShinSlv.scala @@ -97,14 +97,14 @@ trait ShinSlvPhyDownStreamRecv{ this: ShinSlvPhyBase => downRecvStateNext := Mux1H(Seq( (downRecvStateCurr === DownRecvStateIdle ) -> Mux( downPendBuf.io.deq.valid, DownRecvStateOHead, DownRecvStateIdle ), - (downRecvStateCurr === DownRecvStateOHead) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === ((headByte)-1).U, DownRecvStateSData, DownRecvStateOHead), DownRecvStateIdle ), DownRecvStateOHead), - (downRecvStateCurr === DownRecvStateSData) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === (downLocalDataByte -1.U), Mux( downRecvCnt === (downOldHead.length - 1.U), DownRecvStateCRC, DownRecvStateFData ), DownRecvStateSData), DownRecvStateIdle ), DownRecvStateSData), - (downRecvStateCurr === DownRecvStateFData) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === (downForwardDataByte -1.U) , DownRecvStateCRC, DownRecvStateFData), DownRecvStateIdle ), DownRecvStateFData), + (downRecvStateCurr === DownRecvStateOHead) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === ((headByte)).U, DownRecvStateSData, DownRecvStateOHead), DownRecvStateIdle ), DownRecvStateOHead), + (downRecvStateCurr === DownRecvStateSData) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === (downLocalDataByte ), Mux( downRecvCnt === (downOldHead.length - 1.U), DownRecvStateCRC, DownRecvStateFData ), DownRecvStateSData), DownRecvStateIdle ), DownRecvStateSData), + (downRecvStateCurr === DownRecvStateFData) -> Mux( downPendBuf.io.deq.fire, Mux( ~downPendBuf.io.deq.bits.tlast, Mux(downRecvCnt === (downForwardDataByte ) , DownRecvStateCRC, DownRecvStateFData), DownRecvStateIdle ), DownRecvStateFData), (downRecvStateCurr === DownRecvStateCRC ) -> Mux( downPendBuf.io.deq.fire & downPendBuf.io.deq.bits.tlast, DownRecvStateIdle, DownRecvStateCRC ), )) when( downRecvStateCurr =/= downRecvStateNext ){ - downRecvCnt := 0.U + downRecvCnt := 1.U } .elsewhen( downPendBuf.io.deq.fire ){ downRecvCnt := downRecvCnt + 1.U } @@ -126,7 +126,7 @@ trait ShinSlvPhyDownStreamRecv{ this: ShinSlvPhyBase => when( downRecvStateCurr === DownRecvStateSData & downPendBuf.io.deq.fire ){ - downRegTemp(downRecvCnt) := downPendBuf.io.deq.bits.tdata + downRegTemp(downRecvCnt-1.U) := downPendBuf.io.deq.bits.tdata } //--------------- @@ -134,7 +134,7 @@ trait ShinSlvPhyDownStreamRecv{ this: ShinSlvPhyBase => downRecvStateCurr === DownRecvStateFData & downPendBuf.io.deq.fire & ~isLastDevice downStreamFifo.io.enq.bits.tdata := downPendBuf.io.deq.bits.tdata downStreamFifo.io.enq.bits.tuser := downPendBuf.io.deq.bits.tuser - downStreamFifo.io.enq.bits.tlast := downRecvCnt === (downForwardDataByte -1.U) | downPendBuf.io.deq.bits.tlast + downStreamFifo.io.enq.bits.tlast := downRecvCnt === (downForwardDataByte) | downPendBuf.io.deq.bits.tlast downPendBuf.io.deq.ready := (downRecvStateCurr === DownRecvStateOHead) | @@ -156,7 +156,7 @@ trait ShinSlvPhyDownStreamRecv{ this: ShinSlvPhyBase => } .elsewhen( downRecvStateCurr === DownRecvStateFData & downRecvStateNext === DownRecvStateIdle ){ isDownStreamError := true.B printf("Warning, Wrong Package Received in DownStream, That could not happened!\n") - } .elsewhen( downRecvStateCurr === DownRecvStateCRC & (downRecvCnt > 3.U | (downPendBuf.io.deq.fire & downPendBuf.io.deq.bits.tlast & downRecvCnt < 3.U)) ){ + } .elsewhen( downRecvStateCurr === DownRecvStateCRC & downPendBuf.io.deq.fire & downPendBuf.io.deq.bits.tlast & downRecvCnt =/= 4.U ){ isDownStreamError := true.B printf("Warning, Wrong Package Received in DownStream, That could not happened!\n") } .elsewhen( isDownNewHeadCreated & downOldHead.length < downLocalDataByte ){ //本包的负载不能满足本级数据需求,传输错误