Engee 文档

FIR Rate Conversion

基于 FIR 滤波器的多相采样率转换器

类型: SubSystem

图书馆中的路径:

/Signal Operations/Filters/MultirateFilters/FIR Rate Conversion

说明

该模块 FIR Rate Conversion 使用沿第一维度的有理 系数执行高效的多相采样率转换。该程序块将输入信号的每一列视为一个单独的通道,并对其中的数据进行独立的重新采样。

从概念上讲,频率转换器结合了 FIR 内插器和 FIR 去矩器。下图所示电路包含一个升压元件,该元件结合了重构和抗混叠滤波器以及一个降采样元件。

频率转换器执行以下操作:

  • 通过在输入采样之间添加 0,将输入数据的采样频率提升至更高频率。

  • 将采样数据通过 FIR 滤波器。

  • 通过丢弃块存储的每个采样之后的 连续采样,将滤波数据的采样率降低到较低的采样率。

fir rate conversion 1 cn

需要注意的是,实际的分块算法是通过多相分解来实现的,与上述概念相比效率更高。更多详情见第…​节。 算法.

端口

输入

输入 - 输入信号
标量 | 向量 | 矩阵

输入信号可以指定为标量、矢量或矩阵,其大小为 by 。在后一种情况下,输入信号的列代表 独立通道。

详情请参阅基于帧的处理

数据类型: Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

输出

输出 - 转换后的信号
标量 | 向量 | 矩阵

频率转换后的输出数据可以用标量、矢量或矩阵表示。

块的行为取决于 Rate options 参数的值:

  • 强制单速率处理"--程序块保持输入信号的采样频率,但对维度进行转换,使输出信号的通道大小与输入信号相差 倍。 对于大小为 的输入信号,输出信号的上限为

  • 允许多信道处理"- 该模块对信号进行抽取,使输出信号的采样率是输入信号采样率的 倍。输出帧大小与输入帧大小相同,但采样率为

所有连接到输出端的块都以 的采样频率工作,所有连接到输入端的块都以 的采样频率工作。

数据类型: Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

参数

系数源 - 设置滤波器系数的方法
对话框参数(默认值

如果参数具有 "对话框参数 "值,则滤波系数将在参数设置窗口中设置。

插值系数 - 插值系数
3(默认值) | `正标量

指定一个整数系数 。在滤波之前,程序块会根据该系数提高输入序列的采样率。

依赖关系

要使用此参数,请将*系数源*参数设置为 "对话框参数"。

数据类型: Int8, Int16, Int32, Int64

FIR 滤波器系数 - 低通 FIR 滤波器系数
[0 -0.000129061486199961 -0.000228040316280948 0 0.000554613738572437 0.000802607430267054 0 -0.00152912350278902 -0.00203638780675590 0 0.00342230705979440 0.00433928347039265 0 -0.00673109372352446 -0.00825637814441869 0 0.0121125402586868 0.0145130044012328 0 -0.0204721583515830 -0.0241392529239787 0 0.0332125142618354 0.0388230898504630 0 -0.0529640018790903 -0.0619837024555044 0 0.0860610417481775 0.102712774109103 0 -0.154048515452570 -0.197567026018057 0 0.408837525145054 0.824655115145336 1 0.824655115145336 0.408837525145054 0 -0.197567026018057 -0.154048515452570 0 0.102712774109103 0.0860610417481775 0 -0.0619837024555044 -0.0529640018790903 0 0.0388230898504630 0.0332125142618354 0 -0.0241392529239787 -0.0204721583515830 0 0.0145130044012328 0.0121125402586868 0 -0.00825637814441869 -0.00673109372352446 0 0.00433928347039265 0.00342230705979440 0 -0.00203638780675590 -0.00152912350278902 0 0.000802607430267054 0.000554613738572437 0 -0.000228040316280948 -0.000129061486199961] (default) | vector

开始按降序指定 FIR 滤波器系数。

依赖关系

要使用此参数,请将*系数源*参数设置为 "对话框参数"。

数据类型: Int8, Int16, Int32, Int64

*支持复数:是

抽取因子 - 抽取因子
2(默认)` | `正标量'。

指定一个整数系数 。在滤波后,程序块将根据该系数降低输入序列的采样率。

依赖关系

要使用此参数,请将*系数源*参数设置为 "对话框参数"。

数据类型: Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

速率选项 - 执行单速率处理或允许多速率处理
强制执行单速率处理(默认)` | 允许多速率处理

指定使用哪种处理方式。可选择的选项:

  • 强制单速率处理"--输出帧大小 等于输入帧大小 乘以 ,其中 是插值因子, 是抽取因子。

.

输出信号的采样频率等于输入信号的采样频率:

.

  • 允许多信道处理"- 输出帧大小等于输入帧大小:

.

输出采样率等于输入采样率乘以

.

所有连接到输出端的模块都以 的采样频率工作,所有连接到输入端的模块都以 的采样频率工作。

允许固定大小输入信号的任意帧长度 - 允许固定大小输入信号的任意帧长度
已禁用(默认) | 已启用

指定是否可以将固定大小的输入信号(其大小在仿真过程中不会改变)转换为任意帧长的输入信号,在这种情况下,输入帧长不必是抽取因子的倍数。

适用于固定大小的输入信号:

  • 如果输入信号的帧长不必是抽取因子的倍数,请选择 允许固定尺寸输入信号的任意帧长 复选框。如果输入信号的第一个维度不是抽取因子的倍数,输出通常是可变大小的信号。因此,要支持任意尺寸的输入信号,程序块还必须支持可变尺寸信号操作,这可以通过选择 允许固定尺寸输入信号的任意帧长度 复选框来实现。

  • 如果输入帧长必须是抽取因子的倍数,则取消选中 允许固定大小输入信号的任意帧长

依赖关系

要使用此选项,请将*速率选项*设为 "强制单速率处理"。

更多信息

设置 FIR 滤波器系数

FIR 滤波器系数 参数中,需要将 FIR 滤波器分子系数设置为矢量。

FIR 滤波器的传递函数 设置为

系数向量的长度必须大于插值系数 ( ) 。FIR 滤波器必须是归一化截止频率不超过 的低通滤波器。程序块内部将所有滤波器状态初始化为零。

设置采样频率

本节仅适用于*速率选项*设置为 "强制单速率处理 "时的单速率处理模式。

块的采样率 FIR Rate Conversion 的采样率是通过*衰减系数*和*插值系数*参数设置的。对于 的输入矩阵,渐减因子 和*内插因子* 参数必须满足以下要求:

  • 必须是互质数。也就是说, 的关系不能简化为较小整数的关系。

  • , 其中 分别是输入帧和输出帧的整数大小。我们可以通过设置 * 递减因子* 等于输入帧大小 来满足第二个要求。在这种情况下,输出帧大小 将等于*插值因子*

通过这种方式改变帧大小,程序块能够保持帧周期不变 ( ) 并实现所需的采样周期转换,即

其中 为输出采样周期。

下图显示了该程序块如何 FIR Rate Conversion 如何将采样周期为 3/4`的 4乘 1 维输入信号转换为采样周期为 `1`的 3乘 1 维输出信号。帧周期 ( ) `3 保持不变。本例的参数值为

  • *插值因子*的值为 3

  • *消减因子*的值为 4

  • *速率选项*设置为 "强制单速率处理"。

fir rate conversion 2 cn

基于帧的处理

FIR Rate Conversion 对输入信号的每一列按时间进行重复采样。在此模式下,程序块可执行单速或多速处理。您可以使用*速率选项*参数来指定程序块对输入数据的重新采样方式:

  • 如果*速率选项*参数设置为 "强制单速率处理",则程序块的输入和输出数据具有相同的采样速率。为了在保持输入采样率的同时对输出进行重新采样,程序块会对每一列输入数据进行转换,使输出帧长度的上限值为 ,其中 是*插值因子*参数中指定的插值因子, 是输入帧长度, 是*抽取因子*参数中指定的抽取因子。

在此模式下,如果输入的是固定大小的信号(帧长在仿真过程中不会改变),且*允许固定大小输入信号的任意帧长*复选框被选中,则输入帧长可以是任意的,不必是去微系数的倍数。如果未选中 允许固定大小输入信号的任意帧长度 复选框,则输入帧长度必须是抽取因子的倍数。

  • 如果*速率选项*设置为 "允许多速率处理",则输入和输出数据大小相同,但输出信号的采样率比输入信号高 倍。在此模式下,程序块将输入矩阵 作为 独立通道进行处理。程序块对输入信号的每一列进行时间上的去角化处理,保持帧大小不变,并使输出帧 ( ) 的周期为输入帧 ( ) 的周期的 倍。

算法

FIR 滤波器的频率转换可通过多相表示法有效实现。

要实现多相表示,我们首先要定义 FIR 滤波器的传递函数,它是重建滤波器和平滑滤波器的组合:

其中 是 FIR 滤波器的长度。

我们可以将这个等式重新排列如下

其中 是多相分量的个数,该值等于参数设置窗口中设置的插值系数。

我们可以将该等式写成

其中 , , …​, 是 FIR 滤波器 的多相分量。

从概念上讲,FIR 滤波器频率转换器包含一个上采样元件,然后是一个组合 FIR 滤波器 ,接着是一个下采样元件。

fir rate conversion 1 cn

让我们用它的多相表示法替换

fir rate conversion 3

这里给出了多元插值的特性。

fir rate conversion 4 cn

应用内插法的特性可将零采样加法运算(上采样运算)移至滤波运算之后。这样可以降低信号的滤波速度。

fir rate conversion 5

您可以用一个开关来取代上采样元件、延迟单元和加法器。为适应后续的降采样元件,开关以 为增量移动。开关从 0 号分支接收第一个采样,然后逆时针移动,每次都跳过 分支。

例如,将 设置为 5,将 设置为 3 的速率转换器。多相分量为 , , , , 和 。开关从第一个分支 0 开始,跳过分支 1 和 2,从分支 3 获得下一个采样,然后跳过分支 4 和 0,从分支 2 获得下一个采样,依此类推。交换机获取数据样本的分支序列为 [0、3、1、4、2、0、3、1、…​.]。

因此, 频率转换过程首先对输入数据应用插值因子 ,然后利用开关从 M 个数据样本中只提取 1 个样本,这就有效地考虑了抽取因子 。转换器输出端的最终采样频率为

fir rate conversion 6 cn

参考文献

  1. Orfanidis, Sophocles J.信号处理入门_Upper Saddle River, NJ: Prentice-Hall, 1996.