可变整数速率抽取滤波器

建议用于:

  • 设备:不详

  • Quartus®:v9.1

author-image

作者

可变整数速率抽取滤波器设计示例展示了如何使用英特尔® DSP Builder 高级模块集 (DSPB-AB) 来实现能够改变运行时抽取率的抽取滤波器。它还支持多信道,利用 DSPB-AB 的自动折叠功能,生成寄存器传输级 (RTL) 代码,增强了硬件重用,从而节省了资源。当前设计支持 1、2、4、8 和 16 抽取率。不过,您可以轻松修改设计,以支持其他整数抽取率。

您可以通过采用输入转换器和 M 并行通路的多相分解,高效地实现传统的 M 滤波器抽取。每条通路是最初原型滤波器的多相位。如果输入转换器每隔一个相位处理一次,而不是处理所有的 M 通路,那么抽取率将变为 M/2 等等。

在现实设计中,并没有采用转换器和有限脉冲响应 (FIR) 滤波器通路并行库,我们只实现了一个多相 FIR 滤波器,对应于多相的系数在输入采样率每一周期变化一次。这与多相并行库之后提供输入样本的效果一样。我们将多相系数存放在内存中,使用类似数控振荡器 (NCO) 中采用的输入累加器来控制当前读取的相位,并将其发送至 FIR 滤波器通路。相位累加器的步长会控制系统周期通过多相的速度,从而决定了抽取率。累加器的过流信号表示相位已循环一次。置位后,它将以较低的采样率生成有效输出样本。

算法架构如图 1 所示。

图 1.Vardecimator 结构图。

FIR 滤波器通路是经修改的直接形式 FIR 滤波器。滤波器系数来自系数查找表 (LUT),不同的多相位会有不同变化。一个累加器会连接到每一个乘法器输出上。它将抽头上的所有多相输出进行累加,直至滚动信号指示已经访问了所有信号,且有输出到期。此时,多端口加法器将所有累加器输出相加,并生成最终抽取样本。同时,累加器会清除内容,并准备好进入下一累加周期。

通过调整运行时累加器相位递增或步长,对抽取率变化进行重新配置。您可以通过 Avalon® 内存映射 (Avalon-MM) 接口,采用处理器实时更新相位递增。当抽取率变化时,FIR 滤波器通路中累加的多相位数量也在变化。为经理扩大动态范围,我们可为乘法累加单元以及最终的加法器输出提供可重新配置比例因数。您也可以通过 Avalon-MM 接口,借助处理器对此控制寄存器进行重新配置。

此示例还展示了如何利用 DSPB-AB 的折叠特性。折叠,即时分多路复用,会根据用户特定的系统参数,自动实现资源共享和硬件重用。这在多信道设计中非常有用。

有关在 DSPB-AB 中设计重新采样滤波器的详细信息,请参考 AN 623:使用 DSP Builder 高级模块集实现重新采样滤波器 (PDF)

下载本示例中使用的文件:

zip 下载中的文件包括:

  • vardecimator_rt.mdl—DSPB-AB 设计文件,用于可变速率抽取滤波器
  • setup_vardecimator_rt.m—MATLAB 脚本,用于配置 vardecimator_rt.mdl 的初始化和参数
  • stop_vardecimator_rt.m—MATLAB 脚本,用于绘制可变速率抽取滤波器输出,并与输入波形进行对比
  • vardecimator_rt_bare.mdl—基于 vardecimator_rt.mdl 的设计文件。已移除部分不可合成的测试平台模块,以便生成 RTL