bug:滤波需要顺序打拍,防止边界上跳变

This commit is contained in:
Ruige Lee
2025-08-14 19:15:09 +08:00
committed by GitHub
parent 46f0ba9e19
commit 573a1ad45f

View File

@@ -83,24 +83,28 @@ trait CDRInMultiSample{ this: CDRInBase =>
for( i <- 0 until 16 ) yield { for( i <- 0 until 16 ) yield {
sampleReg(i) sampleReg(i)
} }
} else if (true){ //5选3 多数投票 滤波 } else if (false){ //5选3 多数投票 滤波
for( i <- 0 until 16 ) yield { for( i <- 0 until 16 ) yield {
(sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+0)%16)) | withClockAndReset(multiCLK((i+3)%16).asClock, reset.asBool){ RegNext(
(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+0)%16)) |
(sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+2)%16)) | (sampleReg((i-2+16)%16) & sampleReg((i-1+16)%16) & sampleReg((i+1)%16)) |
(sampleReg((i-2+16)%16) & sampleReg((i+0)%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+2)%16)) | (sampleReg((i-2+16)%16) & sampleReg((i+0)%16) & sampleReg((i+1)%16)) |
(sampleReg((i-2+16)%16) & sampleReg((i+1)%16) & sampleReg((i+2)%16)) | (sampleReg((i-2+16)%16) & sampleReg((i+0)%16) & sampleReg((i+2)%16)) |
(sampleReg((i-1+16)%16) & sampleReg((i+0)%16) & sampleReg((i+1)%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+2)%16)) | (sampleReg((i-1+16)%16) & sampleReg((i+0)%16) & sampleReg((i+1)%16)) |
(sampleReg((i-1+16)%16) & sampleReg((i+1)%16) & sampleReg((i+2)%16)) | (sampleReg((i-1+16)%16) & sampleReg((i+0)%16) & sampleReg((i+2)%16)) |
(sampleReg((i-0)%16) & sampleReg((i+1)%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 多数投票 滤波 } else { //3选2 多数投票 滤波
for( i <- 0 until 16 ) yield { for( i <- 0 until 16 ) yield {
(sampleReg((i-1+16)%16) & sampleReg((i+0)%16)) | withClockAndReset(multiCLK((i+2)%16).asClock, reset.asBool){ RegNext(
(sampleReg((i-1+16)%16) & sampleReg((i+1)%16)) | (sampleReg((i-1+16)%16) & sampleReg((i+0)%16)) |
(sampleReg((i+0)%16) & sampleReg((i+1)%16)) (sampleReg((i-1+16)%16) & sampleReg((i+1)%16)) |
(sampleReg((i+0)%16) & sampleReg((i+1)%16))
)}
} }
} }
@@ -246,3 +250,4 @@ with CDRInOverSample
class MPCDRIn extends CDRInBase class MPCDRIn extends CDRInBase
with CDRInAxis with CDRInAxis
with CDRInMultiSample with CDRInMultiSample