合并bug56下的滤波特性
This commit is contained in:
@@ -26,9 +26,17 @@ abstract class CDRInBase extends Module{
|
||||
}
|
||||
|
||||
trait CDRInOverSample{ this: CDRInBase =>
|
||||
val sampleReg = withClockAndReset(io.overCLK.asClock, reset.asBool){ ShiftRegisters( RegNext(io.serDat), sampleRate ) }
|
||||
|
||||
val sampleReg = withClockAndReset(io.overCLK.asClock, reset.asBool){ ShiftRegisters( RegNext(io.serDat), sampleRate+3 ) }
|
||||
|
||||
val flitReg = for( i <- 0 until sampleRate ) yield {
|
||||
withClockAndReset(io.overCLK.asClock, reset.asBool){
|
||||
RegNext(
|
||||
(sampleReg(i) & sampleReg(i+1)) |
|
||||
(sampleReg(i) & sampleReg(i+2)) |
|
||||
(sampleReg(i+1) & sampleReg(i+2)), false.B
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// val arbShiftData = for( i <- 0 until sampleRate ) yield { RegInit(0.U(24.W)) }
|
||||
// val arbSel = Reg(UInt( log2Ceil(sampleRate).W ))
|
||||
@@ -51,9 +59,11 @@ trait CDRInOverSample{ this: CDRInBase =>
|
||||
|
||||
val arbCnt = withClockAndReset(io.overCLK.asClock, reset.asBool){ RegInit("b00000001".U(sampleRate.W)) }
|
||||
arbCnt := Cat( arbCnt(sampleRate-2,0), arbCnt.extract(sampleRate-1) )
|
||||
val arbLock = withClockAndReset(io.overCLK.asClock, reset.asBool){ Reg(UInt( sampleRate.W )) }
|
||||
when( sampleReg(0) ^ sampleReg(1) ){
|
||||
arbLock := arbCnt
|
||||
val arbLock = withClockAndReset(io.overCLK.asClock, reset.asBool){ RegInit("b00000001".U(sampleRate.W)) }
|
||||
withClockAndReset(io.overCLK.asClock, reset.asBool){
|
||||
when( flitReg(0) ^ flitReg(1) ){
|
||||
arbLock := arbCnt
|
||||
}
|
||||
}
|
||||
|
||||
val asyncSerDat = withClockAndReset(io.overCLK.asClock, reset.asBool){ RegNext(
|
||||
@@ -83,7 +93,7 @@ trait CDRInOverSample{ this: CDRInBase =>
|
||||
|
||||
(for { i <- 0 until sampleRate; j <- 0 until sampleRate } yield {
|
||||
//跳变沿到来锁定的位置 锁定拍当前所在的位置 选择锁定拍后一拍的值认为是正确值
|
||||
((arbLock === (1.U << i)) & (arbCnt === (1.U << j))) -> sampleReg((sampleRate - 1 - i + j) % sampleRate)
|
||||
((arbLock === (1.U << i)) & (arbCnt === (1.U << j))) -> flitReg((sampleRate + 2 - i + j) % sampleRate)
|
||||
})
|
||||
)
|
||||
)}
|
||||
|
||||
@@ -51,7 +51,9 @@ abstract class ShinTopBase extends Module{
|
||||
|
||||
interface.io.latchPin := io.latchPin
|
||||
|
||||
io.ledTest := RegNext( interface.io.cReg.hwVersion(7,0), "h55".U )
|
||||
interface.io.latchPin := io.latchPin
|
||||
|
||||
io.ledTest := RegNext( Cat(slaveParser.io.intHWTrig(0), slaveParser.io.intHWTrig(1)) )
|
||||
|
||||
io.isSoftReset := interface.io.isSoftReset
|
||||
io.interrupt := interface.io.interrupt
|
||||
|
||||
Reference in New Issue
Block a user