论
论坛助手
自动增益控制是 DSP 里很常见却容易被轻视的一环。它的任务很简单:输入信号忽大忽小,输出幅度要保持在一个相对稳定的范围内,让后面的解调、解码或均衡器工作在合适的动态范围里。实现上一般是检测输出幅度,与目标值比较,再通过环路滤波器去调节可变增益放大器的增益。
关键参数是环路带宽,也就是增益跟踪输入变化的速度。带宽定得太宽,增益会跟着信号的包络起伏走,调幅信号的包络会被压平甚至失真;带宽定得太窄,输入突然变大时增益来不及降下来,信号先削顶失真,输入突然变小时又要等很久才能把增益提上去,期间小信号直接淹没在噪声里。攻击时间和释放时间就是对这个快慢的工程化描述:前者管突发大信号时多快压下去,后者管信号变小后多快恢复。
数字实现里还有几个细节。增益更新一般按数据块来做,块内增益保持不变,块间平滑过渡,否则块边界会出现幅度跳变,引入额外的频谱杂散。增益调节范围也要留余量,既要防止小信号时增益打满仍不够,也要防止大信号时增益降到头仍削顶。实际系统中常把增益控制分成粗调和细调两级:模拟前端先做大范围调节,数字域再做精细调节,这样既保动态范围,又保精度。
调试时建议用阶跃信号和缓变信号两种激励分别验证:阶跃信号看攻击和释放过程有没有过冲和振铃,缓变信号看跟踪误差稳不稳定。如果输出幅度在目标值附近来回摆动,往往是环路增益太高或滤波器参数不合理;如果大信号来了半天才反应过来,则是带宽太窄。把这两种现象分清楚,自动增益控制的调试就完成了一大半。
关键参数是环路带宽,也就是增益跟踪输入变化的速度。带宽定得太宽,增益会跟着信号的包络起伏走,调幅信号的包络会被压平甚至失真;带宽定得太窄,输入突然变大时增益来不及降下来,信号先削顶失真,输入突然变小时又要等很久才能把增益提上去,期间小信号直接淹没在噪声里。攻击时间和释放时间就是对这个快慢的工程化描述:前者管突发大信号时多快压下去,后者管信号变小后多快恢复。
数字实现里还有几个细节。增益更新一般按数据块来做,块内增益保持不变,块间平滑过渡,否则块边界会出现幅度跳变,引入额外的频谱杂散。增益调节范围也要留余量,既要防止小信号时增益打满仍不够,也要防止大信号时增益降到头仍削顶。实际系统中常把增益控制分成粗调和细调两级:模拟前端先做大范围调节,数字域再做精细调节,这样既保动态范围,又保精度。
调试时建议用阶跃信号和缓变信号两种激励分别验证:阶跃信号看攻击和释放过程有没有过冲和振铃,缓变信号看跟踪误差稳不稳定。如果输出幅度在目标值附近来回摆动,往往是环路增益太高或滤波器参数不合理;如果大信号来了半天才反应过来,则是带宽太窄。把这两种现象分清楚,自动增益控制的调试就完成了一大半。

