4. 浮点参考模型搭建与验证
定点化设计的第一条铁律是:先有一个可信的浮点参考模型,再谈定点化。浮点模型不是"随便搭一个能跑的模型",而是后续所有定点版本、误差评估、位宽取舍的黄金基准(Golden Reference)。如果浮点模型本身有错,定点化再精细也只是在错误的基础上做优化。本节以一个真实可用的对象——一阶数字低通滤波器(IIR)为例,完整走一遍浮点参考模型的搭建、激励定义、观测点设置与基准用例验证流程。
一、选定算法对象与浮点参考结构
选择一阶 IIR 低通滤波器作为示例对象,原因是它足够简单、便于手算核对,又同时包含乘法、加法、状态反馈和系数,是定点化中最典型的"误差敏感结构"。其差分方程为:
y[n] = b0 * x[n] + b1 * x[n-1] - a1 * y[n-1]
其中 x 为输入,y 为输出,b0、b1、a1 为滤波器系数。在 Simulink 中,浮点参考模型应使用 double 数据类型搭建,推荐用 Discrete Transfer Fcn 模块或 Unit Delay + Gain + Sum 显式搭建。前者简洁,后者更贴近定点实现结构,便于后续逐节点定点化。本节采用显式结构,因为它能暴露每一个中间变量,方便定点化时逐点替换数据类型。
示例参数(合理假设,非实测):采样率 Fs = 1000 Hz,截止频率 fc = 50 Hz,则归一化角频率 ω = 2π·fc/Fs ≈ 0.3142 rad。采用双线性变换得到系数:b0 ≈ 0.1367,b1 ≈ 0.1367,a1 ≈ -0.7265。这些系数在浮点模型中直接以 double 常量写入 Gain 模块。
二、定义输入激励
浮点参考模型的激励必须覆盖算法在实际使用中会遇到的典型工况,而不是只喂一个正弦波。针对低通滤波器,建议至少定义三类激励:
- 单频正弦:用于验证通带增益和相位是否符合理论。例如 20 Hz 正弦,理论通带增益应接近 1。
- 阶跃信号:用于观察瞬态响应和建立时间,检验滤波器对突变的抑制能力。
- 宽带噪声或扫频:用于覆盖全频段,暴露截止频率附近的幅频特性。
在 Simulink 中,激励源可用 Sine Wave、Step、Band-Limited White Noise 模块,或统一用 From Workspace 加载预先构造的输入向量。推荐后者,因为输入数据可复现、可版本管理,且能直接与 MATLAB 脚本联动。例如构造一个 1 秒、1000 点的输入向量:
t = (0:999)'/1000;
x = sin(2*pi*20*t) + 0.5*sin(2*pi*200*t);
% 20Hz 通带分量 + 200Hz 阻带分量
这样一次仿真就能同时观察通带保持和阻带衰减,比单一频率更高效。
三、设置输出观测点
浮点参考模型的观测点不能只看最终输出 y[n]。定点化误差往往在中间变量上先暴露,因此建议在以下位置设置观测:
- 输入 x[n]:确认激励正确进入。
- 乘积项 b0·x[n]、b1·x[n-1]、a1·y[n-1]:这三个乘积是定点化中舍入误差的主要来源。
- 状态 y[n-1]:反馈状态,误差会在此累积。
- 输出 y[n]:最终结果,用于与定点版本对比。
在 Simulink 中,用 To Workspace 模块将这些信号记录为 logsout 或独立变量,并统一设置采样时间与仿真步长一致(本例为 0.001 s)。观测数据是后续误差评估的原始素材,必须完整保存。
四、浮点基准测试用例
基准测试用例是浮点模型的"验收标准"。每个用例应包含:激励类型、持续时间、期望输出特征、容差范围。下表给出三个可直接使用的基准用例:
| 用例编号 | 激励 | 持续时间 | 期望特征 | 容差 |
|---|---|---|---|---|
| TC-01 | 20 Hz 正弦,幅值 1.0 | 1 s | 稳态输出幅值 ≈ 1.0,相位滞后约 18° | 幅值 ±1% |
| TC-02 | 单位阶跃,幅值 1.0 | 0.5 s | 稳态输出 ≈ 1.0,建立时间 < 50 ms | 稳态 ±0.5% |
| TC-03 | 20 Hz + 200 Hz 混合 | 1 s | 200 Hz 分量衰减至 < 0.1 | 阻带幅值 < 0.1 |
这些用例的期望值来自滤波器理论计算,属于合理推导结果,不是实测数据。实际执行仿真后,应将仿真输出与理论值对比,确认浮点模型本身正确,再将其固化为基准。
五、验证流程与判断依据
浮点参考模型的验证不是"跑一次看波形差不多就行",而应有明确的判断依据。推荐按以下顺序执行:
- 用 TC-01 运行仿真,将输出与理论稳态幅值、相位对比,确认通带特性正确。
- 用 TC-02 检查阶跃响应,确认无异常振荡、无发散,建立时间符合一阶系统理论值。
- 用 TC-03 检查阻带衰减,确认高频分量被有效抑制。
- 将三个用例的输出保存为基准数据文件(如
golden_ref.mat),供后续定点版本逐点对比。
判断依据应量化:幅值误差超过 1%、相位偏差超过 5°、或出现发散,都说明浮点模型有问题,必须先修正再进入定点化。只有浮点模型在全部基准用例上通过,它才具备作为黄金参考的资格。
当浮点模型在 TC-01 至 TC-03 上全部通过,将其输出保存为 golden_ref.mat,并冻结模型文件与输入数据。这个冻结版本就是后续所有定点化工作的唯一对比基准。定点化过程中,任何位宽调整、舍入模式改变、溢出保护策略,都必须以该基准的逐点误差作为判断依据,而不是凭波形"看起来差不多"下结论。
至此,浮点参考模型已具备"可复现、可对比、可验收"三个属性。下一步的定点化,本质上就是在这个基准上逐节点替换数据类型,并用同一组激励和同一套判断依据,量化每一个替换带来的误差。