可配置的采样点数,64已经耗尽资源
This commit is contained in:
@@ -81,7 +81,7 @@ abstract class BackBoardSlvLocal extends BackBoardSlvBase with BackBoardSlvDown
|
||||
|
||||
|
||||
|
||||
val (us10Counter, us10Trigger) = Counter(Range(0, 100))
|
||||
val (usCounter, usTrigger) = Counter(Range(0, 10))
|
||||
|
||||
|
||||
}
|
||||
@@ -91,13 +91,13 @@ abstract class BackBoardSlvLocal extends BackBoardSlvBase with BackBoardSlvDown
|
||||
|
||||
|
||||
trait BackBoardSlvStatusPR { this: BackBoardSlvLocal =>
|
||||
val flashCounter = RegInit( 0.U( 16.W ) )
|
||||
val flashCounter = RegInit( 0.U( 19.W ) )
|
||||
val flash2HZ = Reg(Bool())
|
||||
val flash1HZ = Reg(Bool())
|
||||
|
||||
|
||||
when( us10Trigger ){
|
||||
when( flashCounter >= 50000.U ){
|
||||
when( usTrigger ){
|
||||
when( flashCounter >= 500000.U ){
|
||||
flashCounter := 0.U
|
||||
flash2HZ := ~flash2HZ
|
||||
when( flash2HZ ){
|
||||
@@ -126,26 +126,27 @@ trait BackBoardSlvIn { this: BackBoardSlvLocal =>
|
||||
|
||||
def gp: Int
|
||||
|
||||
// val flitCfg = Seq(
|
||||
// // ( 0.U -> 0.S ),
|
||||
// ( 1.U -> (1/2).U), // -> 25.S
|
||||
// ( 2.U -> (2/2).U), // -> 50.S
|
||||
// ( 3.U -> (4/2).U), // -> 100.S
|
||||
// ( 4.U -> (8/2).U), // -> 200.S
|
||||
// ( 5.U -> (16/2).U), // -> 400.S
|
||||
// ( 6.U -> (32/2).U), // -> 800.S
|
||||
// ( 7.U -> (64/2).U), // -> 1600.S
|
||||
// ( 8.U -> (128/2).U), // -> 3200.S
|
||||
// )
|
||||
val flitNum = 64
|
||||
require(flitNum <= 128)
|
||||
|
||||
val in = IO(Input(UInt((8*gp).W)))
|
||||
|
||||
val flitCnt = RegInit(MixedVecInit(Seq( 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W)) ))
|
||||
val flitCnt = RegInit(MixedVecInit(Seq( 0.U(1.W), 0.U((log2Ceil(256/flitNum)).W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W), 0.U(1.W)) ))
|
||||
val flitTrigger = Wire(Vec(9, Bool()))
|
||||
|
||||
flitTrigger(0) := true.B
|
||||
|
||||
flitTrigger(1) := us10Trigger
|
||||
// flitTrigger(1) := usTrigger
|
||||
|
||||
flitTrigger(1) := flitCnt(1) >= (256/flitNum-1).U
|
||||
when( ~RegNext(usTrigger) & usTrigger ){
|
||||
when( flitTrigger(1) ){
|
||||
flitCnt(1) := 0.U
|
||||
} .otherwise{
|
||||
flitCnt(1) := flitCnt(1) + 1.U
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
flitTrigger(2) := flitCnt(2) === 1.U
|
||||
when( ~RegNext(flitTrigger(1)) & flitTrigger(1) ){
|
||||
@@ -196,32 +197,32 @@ trait BackBoardSlvIn { this: BackBoardSlvLocal =>
|
||||
|
||||
for( i <- 0 until 8 ) {
|
||||
|
||||
val flitter = RegInit(VecInit( Seq.fill(25){false.B}))
|
||||
val flitHi = RegInit(0.U(5.W))
|
||||
val flitter = RegInit(VecInit( Seq.fill(flitNum){false.B}))
|
||||
val flitHi = RegInit(0.U((log2Ceil(flitNum+1)).W))
|
||||
|
||||
( 0 until 9 ).map{ k =>
|
||||
when( digitalFilter === k.U ){
|
||||
when( flitTrigger(k) ){
|
||||
flitter(0) := in(i+8*j)
|
||||
(1 until 25).map{ k =>
|
||||
(1 until flitNum).map{ k =>
|
||||
flitter(k) := flitter(k-1)
|
||||
}
|
||||
|
||||
when( (~flitter(24) & ~in(i+8*j)) | (flitter(24) & in(i+8*j)) ){
|
||||
when( (~flitter(flitNum-1) & ~in(i+8*j)) | (flitter(flitNum-1) & in(i+8*j)) ){
|
||||
flitHi := flitHi
|
||||
} .elsewhen( ~flitter(24) & in(i+8*j) ){
|
||||
} .elsewhen( ~flitter(flitNum-1) & in(i+8*j) ){
|
||||
flitHi := flitHi + 1.U
|
||||
} .elsewhen( flitter(24) & ~in(i+8*j) ){
|
||||
} .elsewhen( flitter(flitNum-1) & ~in(i+8*j) ){
|
||||
flitHi := flitHi - 1.U
|
||||
}
|
||||
|
||||
when( flitHi >= 20.U ){
|
||||
when( flitHi >= (flitNum*4/5).U ){
|
||||
digitalIn(i) := true.B
|
||||
} .elsewhen( flitHi <= 5.U ){
|
||||
} .elsewhen( flitHi <= (flitNum/5).U ){
|
||||
digitalIn(i) := false.B
|
||||
}
|
||||
|
||||
assert( flitHi <= 25.U )
|
||||
assert( flitHi <= flitNum.U )
|
||||
assert( flitter.count( (k:Bool) => k === true.B ) === flitHi )
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user