可重新配置抽取滤波器设计实例

 

这一实例介绍了怎样在Altera® DSP Builder高级模块库中实现一个多通道比率可变抽取滤波器。对于包括超声和核磁共振成像(MRI)在内的很多医疗影像系统,需要可重新配置的抽取滤波器来降低回声数据采样率。输入数据有固定采样率;但是,需要实时修改整数抽取率。而且,滤波器总长度随抽取率线性增长。无线通信应用和其他系统也有类似的需求。多相结构非常适合这类应用,这是因为乘法器计数在编译时是固定的,不会随着比率的增长而增长。这一设计的关键特性是长度可变延时抽头,以及高效的滤波器系数存储。

特性

这一设计实例具有以下关键特性:

  • 支持任意整数抽取率,包括采样率不变的情况。
  • 只要时钟速率足够高,能够处理一个数据通路中的所有通道,支持任意数量的通道,任意时钟速率,输入采样率,或者换言之,不需要硬件复制。
  • 支持抽取率的运行时重新配置
  • 为滤波器系数存储提供两个存储器块,而不是将所有比率的系数预存储在存储器中。这一特性支持设计从其他块读取系数时,更新一个存储器块。
  • 在有限冲击响应(FIR)数据通路上实时控制缩放

功能说明

设计使用了直接型多相抽取滤波器结构,如图1所示。地址控制器生成系数存储器、块选择器的读地址,以及可变延时抽头的写地址。系数存储在片内RAM模块中。可变延时抽头也是在双端口存储器中实现,其指针受当前抽取率的控制。使用了固定数量的乘法器。

图1. 可变比率抽取滤波器结构图

这一实例中的可调抽头延时模块有运行时可重新配置深度。因此,以使用了片内RAM模块的弹性存储器的方式来实现它们。根据最差情况来分配每一延时抽头。通过延时抽头模块的实际延时数基于当前的抽取率。延时抽头的读操作和写操作均使用了一个指针和地址信号。因此,您会读写相同的存储器位置。配置了双端口RAM来读取老的存储器内容,所以,实现了一定数量的周期延时。

这一设计只使用了两个存储器块,一个被读取时,另一个被更新。需要一个处理器接口来实现运行时重新装入系数。

在这一设计的设置脚本中,我们定义了时钟速率、抽取率、滤波器长度、乘法器引擎等。脚本还包括位宽管理,以便进行参数赋值。下表列出了关键参数及其定义。

所有参数都可以修改以适应不同的设计。基于更新后的参数来生成新的HDL代码。

表1. 可变比率抽取滤波滤波器参数实例

参数

定义

ClockRate

应用于fMAX的FPGA时钟速率

SampleRate

输入数据采样率

Period

某些输入采样之间的可用周期数。等于ClockRate/SampleRate,是一个编译时间参数。

ChanCount

输入通道数,不应超过Period。

Rmax

设计支持的最大抽取率

R

当前抽取率,不应超过Rmax。

L

FIR内核长度,或者乘法器引擎长度。它表示了多相FIR滤波器长度。

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

下载这一实例中所使用的文件:

这一zip下载中的文件包括:

  • vardownsampler.mdl——DSP Builder高级模块库顶层测试台文件和设计文件,用于重新配置抽取滤波器。
  • setup_vardownsampler.m——MATLAB脚本,用于配置vardownsampler.mdl初始化和参数。
  • vardownsampler_bare.mdl——基于vardownsampler.mdl的设计文件。去掉了某些不能综合的测试台模块,以便生成寄存器传送级(RTL)。

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

相关链接

设计实例免责声明

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