From 833ad07525f1ac67c7bb6f0da585dd0c7f08c52f Mon Sep 17 00:00:00 2001 From: RuigeLee Date: Mon, 23 Sep 2024 17:23:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E6=A0=B7=E5=A4=B4=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=AF=B9=E9=BD=90=E5=93=AA=E4=B8=AA?= =?UTF-8?q?55=E5=92=8CD5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/ebus/CDRIn.scala | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/scala/backBoard/ebus/CDRIn.scala b/src/main/scala/backBoard/ebus/CDRIn.scala index fa31a35..0548824 100644 --- a/src/main/scala/backBoard/ebus/CDRIn.scala +++ b/src/main/scala/backBoard/ebus/CDRIn.scala @@ -98,7 +98,7 @@ trait CDRInAxis{ this: CDRInBase => stateNext := Mux1H(Seq( - (stateCurr === STATE_IDLE) -> ( Mux( /*(byteCnt === 7.U) &*/ (bitCnt === 7.U) & (shiftData === ETH_SFD), STATE_HEADER, STATE_IDLE )), //IDLE + (stateCurr === STATE_IDLE) -> ( Mux( isArbLock & (shiftData === ETH_SFD), STATE_HEADER, STATE_IDLE )), //IDLE (stateCurr === STATE_HEADER) -> ( Mux( (byteCnt === (HeaderByte-1).U) & (bitCnt === 7.U), STATE_PAYLOAD, STATE_HEADER ) ), (stateCurr === STATE_PAYLOAD) -> ( Mux( (byteCnt === (payloadLen-1.U) ) & (bitCnt === 7.U), STATE_CRC, STATE_PAYLOAD )), // PAYLOAD (stateCurr === STATE_CRC) -> ( Mux( (byteCnt === 3.U) & (bitCnt === 7.U), STATE_IDLE, STATE_CRC )), //CRC @@ -106,23 +106,18 @@ trait CDRInAxis{ this: CDRInBase => + val isArbLock: Bool - - when( byteCnt === 0.U & shiftData === ETH_PRE & stateCurr === STATE_IDLE ){ //first align + when( shiftData === ETH_SFD & stateCurr === STATE_IDLE & isArbLock ){ //first align bitCnt := 0.U } .otherwise{ bitCnt := bitCnt + 1.U } - - - when( byteCnt === 0.U & shiftData === ETH_PRE & stateCurr === STATE_IDLE ){ //first align - byteCnt := 1.U + when( shiftData === ETH_SFD & stateCurr === STATE_IDLE & isArbLock ){ //first align + byteCnt := 0.U } .elsewhen( bitCnt === 7.U ){ - when( stateCurr === STATE_IDLE ){ - byteCnt := Mux( /*byteCnt =/= 7.U &*/ shiftData === ETH_PRE, byteCnt + 1.U, 0.U)//keep align, align failed or SFD pass - /*assert( byteCnt <= 7.U )*/ - } .elsewhen( stateCurr === STATE_HEADER ){ + when( stateCurr === STATE_HEADER ){ byteCnt := Mux( byteCnt =/= (HeaderByte-1).U, byteCnt + 1.U, 0.U ) assert( byteCnt <= (HeaderByte-1).U ) } .elsewhen( stateCurr === STATE_PAYLOAD ){