diff --git a/src/main/scala/backBoard/ebus/CDRIn.scala b/src/main/scala/backBoard/ebus/CDRIn.scala index 398cb18..49c0602 100644 --- a/src/main/scala/backBoard/ebus/CDRIn.scala +++ b/src/main/scala/backBoard/ebus/CDRIn.scala @@ -78,21 +78,33 @@ trait CDRInMultiSample{ this: CDRInBase => } - val flitReg = for( i <- 0 until 16 ) yield { - if( i == 0 ) { - (sampleReg(15) & sampleReg(0)) | - (sampleReg(15) & sampleReg(1)) | - (sampleReg(0) & sampleReg(1)) - } else if ( i > 0 && i < 15 ){ - (sampleReg(i-1) & sampleReg(i)) | - (sampleReg(i-1) & sampleReg(i+1)) | - (sampleReg(i) & sampleReg(i+1)) - } else// ( i == 15 ) - (sampleReg(14) & sampleReg(15)) | - (sampleReg(14) & sampleReg(0)) | - (sampleReg(15) & sampleReg(0)) + val flitReg = + if(false){ + for( i <- 0 until 16 ) yield { + sampleReg(i) + } + } else if (true){ //5选3 多数投票 滤波 + for( i <- 0 until 16 ) yield { + (sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+0)%16)) | + (sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+1)%16)) | + (sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+2)%16)) | + (sampleReg((i-2+16)%16) & sampleReg((i+0)%16) & sampleReg((i+1)%16)) | + (sampleReg((i-2+16)%16) & sampleReg((i+0)%16) & sampleReg((i+2)%16)) | + (sampleReg((i-2+16)%16) & sampleReg((i+1)%16) & sampleReg((i+2)%16)) | + (sampleReg((i-1+16)%16) & sampleReg((i+0)%16) & sampleReg((i+1)%16)) | + (sampleReg((i-1+16)%16) & sampleReg((i+0)%16) & sampleReg((i+2)%16)) | + (sampleReg((i-1+16)%16) & sampleReg((i+1)%16) & sampleReg((i+2)%16)) | + (sampleReg((i-0)%16) & sampleReg((i+1)%16) & sampleReg((i+2)%16)) + } + } else { //3选2 多数投票 滤波 + for( i <- 0 until 16 ) yield { + (sampleReg((i-1+16)%16) & sampleReg((i+0)%16)) | + (sampleReg((i-1+16)%16) & sampleReg((i+1)%16)) | + (sampleReg((i+0)%16) & sampleReg((i+1)%16)) + } } + val arbLock = Reg(UInt( 16.W )) //优先级电路,优先选择跳变的后一相进行操作,电路上需要做成可调的