# 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 参考](10_answers.md)。
