From eca0931fa36b290196bc7262815c060112bd14f4 Mon Sep 17 00:00:00 2001 From: RuigeLee Date: Wed, 26 Jun 2024 12:31:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=80=BB=E8=BE=91=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/backBoard/Qei.scala | 89 +++++++----------------------- 1 file changed, 20 insertions(+), 69 deletions(-) diff --git a/src/main/scala/backBoard/Qei.scala b/src/main/scala/backBoard/Qei.scala index f9e0892..faae8b3 100644 --- a/src/main/scala/backBoard/Qei.scala +++ b/src/main/scala/backBoard/Qei.scala @@ -43,7 +43,7 @@ trait BackBoardSlvQei{ this: BackBoardSlvLocal => val isOverflow = for( i <- 0 until 2 ) yield { Wire(Bool()) } val isCounter32Flip = for( i <- 0 until 2 ) yield { RegNext( counter(i).extract(32)) =/= counter(i).extract(32) } - val isCounter31Flip = for( i <- 0 until 2 ) yield { RegNext( counter(i).extract(31)) =/= counter(i).extract(31) } + val isCounter31Flip = for( i <- 0 until 2 ) yield { (RegNext( counter(i).extract(31)) =/= counter(i).extract(31)) & (RegNext( counter(i).extract(32)) === counter(i).extract(32)) } for( i <- 0 until 2 ){ @@ -61,78 +61,29 @@ trait BackBoardSlvQei{ this: BackBoardSlvLocal => when(isEnable(i)){ when(~is2Phase(i)){ //A Phase only when( RegNext( phaseA(i) ) & ~phaseA(i) ){ - when( isSetVal(i) & isCounter32Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ + counter(i) := counter(i) + 1.U + } + + isOverflow(i) := isSetVal(i) & isCounter32Flip(i) + + } .otherwise{ //AB Phase + + when( invDirect(i) ) { + when(isAdvA(i)){ + counter(i) := counter(i) - 1.U + } .elsewhen(isAdvB(i)){ counter(i) := counter(i) + 1.U } - } - } .otherwise{ //AB Phase - when( isMiss(i) ){ - printf("Warning! QEI Miss one pulse!\n") - } .elsewhen( isAdvA(i) ){ - when( isSign(i) ) { - when( invDirect(i) ){ - when( isSetVal(i) & isCounter31Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) - 1.U - } - } .otherwise{ - when( isSetVal(i) & isCounter31Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) + 1.U - } - } - } .otherwise{ - when( invDirect(i) ){ - when( isSetVal(i) & isCounter32Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) - 1.U - } - } .otherwise{ - when( isSetVal(i) & isCounter32Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) + 1.U - } - } + } .otherwise{ //~invDirect(i) + when(isAdvA(i)){ + counter(i) := counter(i) + 1.U + } .elsewhen(isAdvB(i)){ + counter(i) := counter(i) - 1.U } - } .elsewhen( isAdvB(i) ){ - when( isSign(i) ) { - when( invDirect(i) ){ - when( isSetVal(i) & isCounter31Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) + 1.U - } - } .otherwise{ - when( isSetVal(i) & isCounter31Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) - 1.U - } - } - } .otherwise{ - when( invDirect(i) ){ - when( isSetVal(i) & isCounter32Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) + 1.U - } - } .otherwise{ - when( isSetVal(i) & isCounter32Flip(i) ){ - isOverflow(i) := true.B - } .otherwise{ - counter(i) := counter(i) - 1.U - } - } - } - } .otherwise{ - // assert( isKeep(i) ) } + + isOverflow(i) := + Mux( isSign(i), isSetVal(i) & isCounter31Flip(i), isSetVal(i) & isCounter32Flip(i) ) } } .otherwise{ //~isEnable