Implement discrete dynamic NEAR ladder strategy
This commit is contained in:
@@ -230,14 +230,26 @@ SOF 协议:
|
||||
- `ratio=0` 或非法 ratio 时,整帧 `NEAR` 固定为 0,不进行动态调整。
|
||||
- `ratio=1/2/3` 时,每个条带 frame 结束后比较累计实际输出 bit 数与累计目标
|
||||
bit 数,并调整下一条带 frame 的 `NEAR`。
|
||||
- 第一版调节策略:
|
||||
- 若累计实际输出 bit 数大于累计目标 bit 数,`NEAR = NEAR + 1`。
|
||||
- 若累计实际输出 bit 数小于累计目标 bit 数且 `NEAR > 0`,
|
||||
`NEAR = NEAR - 1`。
|
||||
- 若二者相等,`NEAR` 保持不变。
|
||||
- `NEAR` 钳位到 `0..31`。
|
||||
- 如果第一版效果不理想,再参考 CN102088602A 所述方法优化调节步长和累计偏差
|
||||
控制策略。
|
||||
- 当前实现采用离散 `NEAR` 档位集合
|
||||
`{0, 1, 2, 4, 8, 16, 31}`,而不是逐条带线性 `+1/-1`。
|
||||
- 第一条带结束后,控制器根据首条带 `actual_bits / target_bits` 的粗分档直接跳到
|
||||
一个离散 `NEAR` 档位;当前 RTL 为便于时序收敛,采用移位加法近似阈值:
|
||||
- `<= 1.125x target` -> `NEAR=0`
|
||||
- `<= 1.25x target` -> `NEAR=1`
|
||||
- `<= 1.5x target` -> `NEAR=2`
|
||||
- `<= 2x target` -> `NEAR=4`
|
||||
- `<= 3x target` -> `NEAR=8`
|
||||
- `<= 5x target` -> `NEAR=16`
|
||||
- `> 5x target` -> `NEAR=31`
|
||||
- 第二条带及后续条带使用累计 bit 偏差做离散档位微调,而不是重新全量估计:
|
||||
- 若累计实际 bit 数 `> target + target/4`,档位 `+2`
|
||||
- 若累计实际 bit 数 `> target + target/16`,档位 `+1`
|
||||
- 若累计实际 bit 数 `< target - target/4`,档位 `-2`
|
||||
- 若累计实际 bit 数 `< target - target/16`,档位 `-1`
|
||||
- 否则保持当前档位不变
|
||||
- 档位更新后仍按集合 `{0,1,2,4,8,16,31}` 钳位,不输出非整数 `NEAR`。
|
||||
- 若 `NEAR` 已处于 `31` 且累计实际 bit 数仍高于累计目标 bit 数,置
|
||||
`target_miss_at_max_near` 粘滞标志,供验证报告使用。
|
||||
|
||||
### 4.3 误差验收
|
||||
|
||||
|
||||
Reference in New Issue
Block a user