特性
自适应线路增强器(ALE)是一种能有效抑制高信噪比高斯噪声的学习滤波器。该滤波器通过动态调整权重系数,在保留有效信号的同时抑制噪声成分,且截止频率可接近奈奎斯特频率(Fs/2)而不产生滚降。自适应滤波器能实时改变自身频率响应特性以优化滤波性能。本设计涵盖以下主题:
• ALE滤波器架构设计基础原理
• 学习系数μ对滤波器稳定性的影响
• 提升实现效率的滤波器缩放技术
• 包含18位CODEC控制器与ALE滤波器的定制VHDL组件设计与实例化
• 滤波器特性分析与验证
简介
本参考设计采用赛灵思Spartan 6开发板和美国国家半导体(现属德州仪器)LM4550 ac97音频编解码器。设计基于Xilinx ISE ver13.1开发环境实现。虽然本设计采用音频编解码器,但该组件并非必需。Xilinx Spartan 6 FPGA因其集成的DSP48A1模块,非常适合数字信号处理逻辑电路设计。内置DSP模块支持并行数学运算电路,可实现超高速数据处理的滤波器。只要具备足够的硬件乘法器资源并考虑滤波器字长限制,ALE可应用于任何FPGA平台。本实现消耗了Spartan 6 xc6slx45芯片58个DSP48A1模块中的48个;采用更多DSP模块的FPGA可支持更多ALE抽头从而提升性能。
背景知识
用户无需完全掌握ALE滤波器设计原理即可使用本模块,但了解基础设计理论将有助于故障排查。背景章节将阐述ALE滤波器基本原理及VHDL模块设计要点。设计采用内置高斯噪声发生器,左声道传输滤波前叠加噪声的信号,右声道输出经滤波降噪后的信号。图1与图2分别展示了滤波器对"噪声+信号"和"降噪后信号"的处理效果。
图 1 - " 噪声 + 信号 "( 蓝色 ) 与 " 降噪后信号 "( 黄色 )
图 2 - " 增强噪声 + 信号 "( 蓝色 ) 与 " 降噪后信号 "( 黄色 )
ALE还通过了外接任意波形发生器作为噪声源的测试验证。如图3所示。
图 3 – “ 外部噪声 + 信号 ” (黄色)与 “ 降噪后信号 ” (蓝色)对比
自适应滤波器擅长处理条件变化、宽带噪声与窄带信号频谱重叠的场景,或在噪声源未知或持续变化的场景中表现优异。滤波器通过调整权重来抑制噪声并最大化相关信号输出。图4展示了ALE(自适应线谱增强器)的频率响应曲线。注意直到24KHz奈奎斯特频率范围内都未出现明显衰减。
图 4 – ALE 频率响应(至奈奎斯特频率)
输入信号(B(k)+N(k))经过单样本延迟处理,使宽带噪声信号自身去相关,得到(Bu(k)+Nc(k))。这是因为噪声具有随机性,微小相位变化即可实现信号去相关。值得注意的是窄带信号Nc(k)仍与N(k)保持相关性,因其非随机而具有显著周期性和连续性。信号流程图如图5所示。
图 5 – ALE 信号流程图
ALE滤波器工作原理:初始化任意权重值后,每个采样周期动态调整权重。通过公式1计算滤波器输出N-hat-k实现权重调整。该窄带信号(N-hat-k)用于计算误差估计(ek),见公式2。ALE采用最小二乘误差代价函数来寻找最优滤波器权重以估计信号输出。不同于抛物线均方误差代价函数中使用梯度向量期望值,这里将当前输入FIFO值(瞬时梯度)乘以学习系数(mu)。通过最小均方近似调整权重:利用公式3沿最速下降方向迭代。该下降过程沿着n维抛物线结构进行,维度由滤波器阶数决定。当梯度为零时,最小均方误差已实现最大程度降低。为避免步长过大,采用学习系数mu控制迭代步长。mu值通过公式4确定。该mu值决定单个采样周期内滤波器参数的调整幅度。选择mu值时需兼顾两方面:既要便于对误差估计与FIFO值的乘积进行桶形移位运算,又要足够小以避免偏离n维抛物线的误差曲面。图6展示了两权重情况下均方误差曲面的简化示意图。
图 6 – 均方误差曲面的简化表示
应用场景
电路构建
ALE滤波模块采用以下处理流程:
• 16级深度×18位移位寄存器用于采样输入
• 时序与标志控制的状态更新
• 16位线性反馈移位寄存器用于截断时的抖动处理
• 基于定时器的数据路径标志控制流程
• 16项并行乘法器流程
• 输出项截断与抖动处理流程
• 作为卷积运算组成部分的大型加法器树
• 反馈减法流程
• 误差估计模块
• 反馈截断与抖动处理流程
• 滤波器抽头调整流程
• 32位至18位截断模块(用于DAC输出)
ALE架构如图7所示。
图 7 – 自适应线路增强滤波器架构
ALE 滤波模块的实例化
通过将ALE.vhd文件加入项目,并在Xilinx ISE中进行顶层端口映射或使用原理图文件连接端口,即可轻松实例化ALE滤波器。在进程选项卡中创建原理图符号后,可通过在原理图编辑器中添加连线来连接端口。顶层原理图如图8所示。硬件验证时需手动重置板载noise_gen.vhd模块,以初始化伪随机数生成器。
图 8 – Xilinx ISE 顶层原理图
本应用以100MHz频率运行,留有充足裕量可支持更高速度。
硬件测试与验证
通过Xilinx仿真软件ISim对模块进行了全面测试。基础定时驱动状态机控制使能标志,用于同步数学运算、截断与抖动中间运算,并在每个采样周期锁存输出。每个采样周期推进延迟线并启动标志状态机。模块硬件验证结果见图1至图3。
设计软件
本参考设计采用赛灵思Spartan 6开发板和美国国家半导体(现属德州仪器)LM4550 ac97音频编解码器。设计基于Xilinx ISE ver13.1开发环境实现。本设计无需音频编解码器。该设计可扩展至多种非音频应用,不受48KHz采样率限制。
结论
自适应滤波器擅长处理信号条件变化、宽带噪声与窄带信号频谱重叠的场景,或在噪声源未知或持续变化的应用中表现优异。该设计针对音频应用进行了专项测试,但也可通过缩减规模实现速度更快、分辨率稍低的滤波器。本文亦阐述了ALE VHDL模块滤波器设计的基本原理。
附加信息
AC97编解码器驱动、NbitSatAdder及noise_gen模块的详细信息可参阅eeWiki逻辑页面。更多DSP专题与滤波器设计资料可参考书籍:《数字信号处理实践教程》,作者Emmanuel C. Ifeachor与Barrie W. Jervis。
附录:下载资源
完整版Lattice Diamond项目文件可在此处下载。
ALE.vhd (24.6 KB)
noise_gen.vhd (11.3 KB)
NbitSatAdder.vhd (3.0 KB)
ac97.vhd (7.6 KB)
ac97cmd.vhd (4.3 KB)








