雷达 · 通信 · 电子战 / 基础精学 112
舍入处理被丢弃的低位,溢出处理超出高位范围的结果。两者需要分别定义。
有限位宽加法超过表示范围时,二进制自然回绕会产生跨越全量程的大误差;饱和算术把结果限制在最大最小码,误差较局部但引入非线性削顶。
W:有符号数据位宽(bit)
xmin:最小可表示码(整数)
xmax:最大可表示码(整数)
Qw(x):回绕结果(整数)
Qs(x):饱和结果(整数)
二补码 W 位回绕等价于模 2W 运算后重新解释符号。正溢出可能突然映射到大负数。
饱和器实现
保持误差方向但限制输出范围。
同号加数产生异号和时发生二补码加法溢出。也可用扩展一位结果与上下限比较。
回绕把数轴首尾连接成圆,越过最大正数立即跳到最大负数。饱和把数轴两端变成挡板,越界值停在边界。
MATLAB 穷举八位有符号加法器输入对,比较回绕与饱和误差分布、溢出比例,并展示边界向量。
| 量 | 数值 |
|---|---|
| 有符号位宽 | 8 |
| 最小码值 | -128 |
| 最大码值 | 127 |
| input pair count | 65536 |
| overflow pair fraction | 0.25 |
| maximum wrap error | 256 |
| maximum saturation error | 128 |
| positive boundary wrap result | -128 |
| positive boundary saturation result | 127 |
图 1 八位加法的回绕与饱和映射 误差分布和边界样本
数值结果由配套 MATLAB 脚本在固定参数和固定随机种子下实际执行。脚本包含针对闭式关系 边界条件或估计误差的断言,并把 MATLAB 版本与关键数值写入独立结果文件。
RTL 实现扩展一位加法、上下限比较和可选饱和或回绕输出,同时产生溢出标志。
配套 RTL 只实现本课中可明确量化的定点核函数或数据通路。浮点矩阵分解 概率统计和图形生成保留在 MATLAB 参考程序中。
饱和常用于音频 通信幅度和控制环,回绕适合明确的模运算如相位累加器。选择必须依据变量物理含义。
饱和仍会产生谐波和 EVM。
连续饱和表明前级尺度设计不足。
乘法累加需要更多保护位。
不同 HDL 表达式的隐式位宽可能改变溢出位置。
回绕适用于周期模变量,饱和适用于有界物理幅度。扩展位计算和显式边界比较可避免隐式位宽错误。
内容依据:每日精学第 112 课《定点饱和与回绕溢出》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。