定点实现:量化、溢出与位精确验证
约 14 分钟
算法在双精度浮点中表现良好,不代表能在DSP或FPGA有限字长上工作。系数、状态、乘加和舍入都产生量化;溢出策略和缩放决定系统是否稳定、有噪声或突然失真。
Q格式
明确符号位、整数位和小数位。乘法位宽相加,累加器还需保护位;每次截断位置影响噪声与偏置。不要依赖语言隐式转换。
舍入与截断
截断简单但产生有偏误差,四舍五入降低偏差却增加逻辑。饱和避免回绕的大灾难,但连续饱和仍是设计失败,应计数告警。
IIR敏感性
极点系数量化可能移动到单位圆外,内部状态还会出现零输入极限环。二阶节、状态缩放和更高精度能改善,每种字长重新验证。
动态范围
用最坏输入、内部峰值和统计分布分配位宽。简单按输出幅度选位宽会漏滤波器内部放大;重排二阶节可降低峰值。
位精确模型
建立与RTL/C实现同舍入、饱和和延迟的参考模型,随机向量逐样本比较。浮点容差测试无法发现一位差异。
编译器优化、SIMD和硬件乘法器对溢出规则可能不同,接口处显式转换并保留黄金测试向量。定点改版后重新跑全量回归,不能只比较平均频响。
任务:把一个浮点IIR转定点,扫描位宽并比较频响、噪声、极点、溢出和资源。
小纸条
定点 IIR 滤波器为什么必须在系数量化后重新检查极点?