重构逻辑关系
This commit is contained in:
@@ -43,7 +43,7 @@ trait BackBoardSlvQei{ this: BackBoardSlvLocal =>
|
|||||||
val isOverflow = for( i <- 0 until 2 ) yield { Wire(Bool()) }
|
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 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 ){
|
for( i <- 0 until 2 ){
|
||||||
@@ -61,78 +61,29 @@ trait BackBoardSlvQei{ this: BackBoardSlvLocal =>
|
|||||||
when(isEnable(i)){
|
when(isEnable(i)){
|
||||||
when(~is2Phase(i)){ //A Phase only
|
when(~is2Phase(i)){ //A Phase only
|
||||||
when( RegNext( phaseA(i) ) & ~phaseA(i) ){
|
when( RegNext( phaseA(i) ) & ~phaseA(i) ){
|
||||||
when( isSetVal(i) & isCounter32Flip(i) ){
|
counter(i) := counter(i) + 1.U
|
||||||
isOverflow(i) := true.B
|
}
|
||||||
} .otherwise{
|
|
||||||
|
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
|
counter(i) := counter(i) + 1.U
|
||||||
}
|
}
|
||||||
}
|
} .otherwise{ //~invDirect(i)
|
||||||
} .otherwise{ //AB Phase
|
when(isAdvA(i)){
|
||||||
when( isMiss(i) ){
|
counter(i) := counter(i) + 1.U
|
||||||
printf("Warning! QEI Miss one pulse!\n")
|
} .elsewhen(isAdvB(i)){
|
||||||
} .elsewhen( isAdvA(i) ){
|
counter(i) := counter(i) - 1.U
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} .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
|
} .otherwise{ //~isEnable
|
||||||
|
|||||||
Reference in New Issue
Block a user