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

建议用于:

  • 设备:不详

  • Quartus®:v9.1

author-image

作者

此示例展示了如何在英特尔®DSP Builder 高级模块集中执行多信道可变速率抽取滤波器。针对超声和磁共振成像 (MRI) 等各种医学影像系统,需要一个可重新配置抽取滤波器来降低回波数据采样率。输入数据具有固定的采样率;而整数抽取率需要进行实时更改。此外,滤波器的总长度会随着抽取率的增加而线性增长。无线通信应用程序和其他系统中可适用类似的要求。多相结构针对这类应用程序进行了高度优化,因为乘法器计数在编译时是固定的,并且不会随着速率的增加而增长。此设计的主要功能是可变长度延迟抽头和高效的滤波器系数存储。

特性

此设计示例具备以下主要功能:

  • 支持任意整数抽取率,包括无采样率变更的情况
  • 支持任意信道数量、任意时钟速率和采样率,只要时钟速率足够高,能够在单个数据路径中处理所有信道,或者说没有硬件重复
  • 支持抽取率的运行时重新配置
  • 将两个内存插槽用于滤波器系数存储,而不是用于内存中所有速率的预存系数。此功能支持在设计从一个内存插槽中读取系数的同时去更新令一个内存插槽
  • 有限脉冲响应 (FIR) 数据路径的实时扩展控制

功能说明

此设计采用直接形式的多相抽取滤波器结构,如图 1 所示。地址控制器可生成系数存储器的读取地址、插槽选择器和可变延迟抽头的写入地址。系数存储在片上 RAM 模块中。可变延迟抽头也会在双端口存储器中实现,其指针受当前抽取率的控制。使用了固定量的乘法器。

图 1.可变速率抽取器的结构图。

此示例中的可变抽头延迟模块具有运行时可重新配置深度。因此,它们会使用片上 RAM 模块来作为弹性内存实现。每个延迟抽头都会根据最坏情况进行分配。通过延迟抽头模块的实际延迟数会基于当前的抽取率。单个指针或地址信号会用于对延迟抽头的读取和写入操作。因此,您将可以读取和写入到同一内存位置。双端口 RAM 已配置为读取旧的存储器内容,从而实现一定周期数的延迟。

此设计仅使用两个内存插槽,一个在更新时另一个可以用于读取内容。需要处理器接口来实现运行时系数重载。

在此设计的设置脚本中,我们定义了时钟速率、抽取率、滤波器长度、乘法器引擎等。此外,也编写了位宽管理脚本以实现参数化。主要参数及其定义已列在下表中。

所有参数可针对不同设计进行修改。新的 HDL 代码将根据已更新参数生成。

有关在 DSP Builder 高级模块集中设计重采样滤波器的更多信息,请参阅 AN 623:使用 DSP Builder 高级模块集实现重采样滤波器 (PDF)

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

此 zip 下载中的文件包括:

  • vardownsampler.mdl – DSP Builder 高级模块集顶层测试平台和设计文件,适用于可重新配置抽取滤波器
  • setup_vardownsampler.m – MATLAB* 脚本,用于配置 vardownsampler.mdl 的初始化和参数
  • vardownsampler_bare.mdl – 基于 vardownsampler.mdl 的设计文件。为了生成寄存器传输级 (RTL),已将部分不可合成的测试平台模块移除

有关您项目中此设计示例中使用的相关功能的更多信息,请访问: