可调整数比例抽取滤波器设计实例

可调整数比例抽取滤波器设计实例演示了怎样使用Altera® 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。

关于在这一设计实例中所使用的相关特性的详细信息,请访问:

相关链接

设计实例免责声明

这些设计实例只限于用在Altera公司器件上,版权属于Altera。为方便使用,这些设计基于“as-is(原样提供)”的形式提供;因此,任何形式的授权、代理或者担保(无论是明确的,隐含的还是法定的),包括不受限制的使用、商业授权、无侵犯或者适用某一特殊用途等,Altera公司都不予以承诺。Altera公司明确表示不推荐,不建议以及不要求这些设计实例和其他任何非Altera产品一起使用。