DF07:系数与数据的 bit-accurate 实现

目标

为每个运算写清 signed 属性、总位数 W、小数位 F、舍入点与溢出策略,建立可用于 RTL 逐样本比对的参考。

四层模型

  1. 浮点、未量化系数:判断算法指标。
  2. 浮点、量化系数:隔离系数量化误差。
  3. 整数、规定模数/舍入/饱和:判断数据通路精度。
  4. RTL:与第 3 层逐样本完全相同,再测第 1–3 层的性能差异。

最终 SNR 或幅度接近不够证明 bit-accurate,一位差异也要解释。整数模型用任意精度或足够宽的容器显式模拟硬件规则,不能让宿主整数无意溢出代替规定行为。

起始格式

位置 W/F 策略
bit 映射 signed2/F0 −1、+1
CIC 状态/差分 signed14/F0 raw 全级同模数,正常绕回
CIC 输出解释 signed14/F12 数值=raw/4096,不裁位
FIR 系数 signed24/F22 先检查范围;保持对称/半带结构
第一级 FIR 乘积 signed38/F34 不先缩窄
第一级 FIR 累加 signed43/F34,L=31 的保守起点 最后一次舍入到输出
后两级 FIR 乘积 signed48/F42 输入 signed24/F20
第二级 FIR 累加 signed54/F42,L=47 按极值/系数 L1 复查
最终 FIR 累加 signed56/F42,L=161 按极值/系数 L1 复查
FIR 级输出与最终接口 signed24/F20 ties-to-even,越界饱和并置状态

这些是候选格式,不是精度已通过的结论。signed24/F20 容器约为 [−8,8),输入物理 FS 仍为峰值 1;不能把容器最大值当成 ADC 满量程。

W_in+W_coef+ceil(log2 L) 给保守累加位宽,实际可用 |x|max×sum|h| 的范围收紧。对称结构的 pre-add 需 W_in+1;重新计算乘积/累加位宽,而不是把预加结果截回输入宽度。

舍入与范围

第一 FIR 从 F34 到 F20,舍入右移 14 位;后两级从 F42 到 F20,舍入右移 22 位。正负 half-tie 均按 nearest/even 处理,负最小值取绝对值前扩宽。饱和比较在缩窄前完成。

CIC 允许的 modulo overflow 与 FIR 输出 saturation 是不同事件。不能把每个积分器绕回都标为数据故障,也不能用饱和替代 CIC 的模运算。

DC 常数 +1 经过已归一化的全链,应约为输出整数码 2^20=1048576。常数 −1 对应 −1048576;接口最高符号位仍为 bit23。

系数量化

量化保留 symmetry、halfband 中心 1/2 与零系数;需要 DC=1 时记录如何修正总和,以及对频响的影响。不能单独修一侧系数而破坏线性相位。

最近舍入的单系数误差≤2^(−F−1),粗界 |ΔH|≤L×2^(−F−1)。L=161、F22 时约 1.92×10^−5,该界已高于 100 dB 阻带对应的 10^−5 幅度,因此原浮点阻带通过不保证量化后通过。

实际误差往往低于粗界,但必须重新评估频响;必要时增系数位宽/设计裕量、重做 DC 修正并更新全部乘积格式。不同位置的裁位/舍入噪声经后级处理,不能一概按均匀白噪声预算。

实验与验收

覆盖正负极值、半单位、DC、交替码、长时间 CIC 绕回、系数 sum/L1、随机合法码流和 startup。比较四层模型的 sample、频响、噪声及 saturation 次数。验收要求每个裁位有理由、每个指标有证据。答案见 DF07 参考。

先写预测,再留下自己的解释

本讲包含 1 课。展开对应课程,保存个人状态和笔记。

DF07:系数与数据的 bit-accurate 实现记录
阅读本课 →

输入后自动保存在此浏览器。能独立解释并完成课程验收,再标记“已验收”。