Discrete FIR Filter
构建 FIR 滤波器模型

库:
Simulink /
Discrete
HDL Coder /
Discrete
HDL Coder /
HDL Floating Point Operations
描述
Discrete FIR Filter 模块使用指定的数字 FIR 滤波器单独对输入信号的每个通道进行滤波。该模块可以实现系数固定的静态滤波器以及系数随时间变化的时变滤波器。您可以在仿真期间调整静态滤波器的系数。
此模块随时间的推移单独对输入信号的每个通道进行滤波。输入处理参数用于指定该模块将输入的每个元素作为独立通道处理(基于采样的处理)还是将输入的每个列作为独立通道处理(基于帧的处理)。要执行基于帧的处理,您必须拥有 DSP System Toolbox™ 许可证。
输出维度等于输入维度,但为系数参数指定滤波器抽头矩阵时除外。当您执行此操作时,输出维度取决于您指定的不同滤波器抽头集的数量。
此模块支持自定义状态属性以更高效地自定义和生成代码。有关示例,请参阅Custom State Attributes in Discrete FIR Filter block。在某些条件下,模块还支持 SIMD 代码生成。有关详细信息,请参阅代码生成。
此模块的输出在数值上与 DSP System Toolbox Digital Filter Design (DSP System Toolbox) 模块的输出相匹配。
此模块支持 Simulink® 状态记录功能。有关详细信息,请参阅 State。
滤波器结构支持
您可以更改通过 Discrete FIR Filter 模块实现的滤波器结构,方法是从滤波器结构参数中选择以下选项之一:
直接型
直接型对称
直接型反对称
直接型转置
格型 MA
您必须拥有可用的 DSP System Toolbox 许可证才能运行具有上述任意滤波器结构(直接型除外)的模型。
有关滤波器结构的详细信息,请参阅算法。
指定初始状态
Discrete FIR Filter 模块默认将内部滤波器状态初始化为零,这等效于假定过去的输入和输出为零。您可以选择使用初始状态参数为滤波器延迟指定非零初始条件。
要确定您必须指定的初始状态数量以及如何指定这些状态,请参阅有关有效初始状态的表。初始状态参数可采用下表所述的形式之一。
有效初始状态
初始条件 | 描述 |
---|---|
标量 | 模块将滤波器中的所有延迟元素初始化为标量值。 |
向量或矩阵 | 每个向量或矩阵元素均为相应通道中的相应延迟元素指定唯一的初始条件:
|
示例
Cochlear Implant Speech Processor
Simulate the design of a cochlear implant that can be placed in the inner ear of a profoundly deaf person to restore partial hearing. Signal processing is used in cochlear implant development to convert sound to electrical pulses. The pulses can bypass the damaged parts of a deaf person's ear and be transmitted to the brain to provide partial hearing.
(DSP System Toolbox)
Active Noise Control with Simulink Real-Time
Design a real-time active noise control system using a Speedgoat® Simulink® Real-Time™ target.
(Audio Toolbox)
Acoustic Noise Cancellation (LMS)
Use the least mean square (LMS) algorithm to subtract noise from an input signal. The example uses a preconfigured Simulink® model. The LMS Filter block in the dspanc
model models an adaptive filter that uses the reference signal at its Input port and the desired signal at the Desired port to automatically match the filter response. The LMS Filter block subtracts the filtered noise from the original signal. As the filter converges, the resultant error signal contains only the original signal.
(DSP System Toolbox)
Use the Fixed-Point Tool to Rescale a Fixed-Point Model
Show you how to use the Fixed-Point Tool to refine the scaling of fixed-point data types associated with the feedback controller model fxpdemo_feedback
. The Fixed-Point Tool enables multiple workflows for converting a model to use fixed-point data types.
(Fixed-Point Designer)
Programmable FIR Filter for FPGA
Implement a programmable FIR filter for hardware. You can program the filter to the required response by loading the coefficients into internal registers using a memory-style interface.
(DSP System Toolbox)
端口
输入
要滤波的输入信号,指定为标量、向量或矩阵。
Discrete FIR Filter 模块接受 Simulink 支持的任何数值数据类型的实信号和复信号。
依存关系
将系数来源设置为对话框参数时,输入信号的端口不带标签。将系数来源设置为输入端口时,输入信号的端口的标签为 In。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
复数支持: 是
将滤波器系数指定为标量或向量。当指定滤波器抽头的行向量时,模块会对输入应用单个滤波器。要对输入应用多个滤波器,请通过系数参数以矩阵形式指定系数。
依存关系
要启用此端口,请将系数来源设置为输入端口。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
外部重置信号,指定为标量。当指定的触发事件发生时,模块将状态重置为其初始条件。
提示
此端口的图标根据外部重置参数的值更改。
依存关系
要启用此端口,请将外部重置设置为上升沿、下降沿、任一沿、电平或电平保持。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
启用信号,指定为标量。此端口可以控制模块的执行。当此端口的输入非零时,模块被启用;当输入为 0
时,模块被禁用。输入的值在执行模块的同一时间步进行检查。
依存关系
要启用此端口,请选中显示使能端口复选框。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
输出
滤波后的输出信号,以标量、向量或矩阵形式返回。Discrete FIR Filter 模块输出 Simulink 支持的任何数值数据类型的实信号和复信号。
当模块的输入为定点时,模块输出的数据类型取决于您在输出参数中指定的值。当输入为浮点时,输出数据类型与输入数据类型匹配,因为浮点继承优先于定点设置。
当您将采样时间设置为 -1
时,输出信号的采样时间与输入信号 In 的采样时间相同。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
参数
常设
选择以指定是使用可调参数对话框参数还是通过输入端口指定滤波器系数,这对于时变系数非常有用。
编程用法
模块参数:CoefSource
|
类型:字符向量 |
值:'Dialog parameters' | 'Input port'
|
默认值:'Dialog parameters'
|
选择您要模块实现的滤波器结构。有关详细信息,请参阅算法。
依存关系
如果模型包含 Discrete FIR Filter 模块且该模块实现直接型以外的滤波器结构,则您必须有可用的 DSP System Toolbox 许可证才能运行该模型。
编程用法
模块参数:FilterStructure |
类型:字符向量 |
值:'Direct form' | 'Direct form symmetric' | 'Direct form antisymmetric' | 'Direct form transposed' | 'Lattice MA' |
默认值:'Direct form'
|
将滤波器系数指定为标量、向量或矩阵。
当指定滤波器抽头的行向量时,模块会对输入应用单个滤波器。要为同一输入应用多个滤波器,请指定一介系数矩阵,其中每一行代表一组不同的滤波器抽头。要实现多个滤波器,请将滤波器结构设置为直接型,并且输入必须为标量。
依存关系
要启用此参数,请将系数来源设置为对话框参数。
编程用法
模块参数:Coefficients
|
类型:字符向量 |
值:向量 |
默认值:'[0.5 0.5]'
|
指定模块是执行基于采样还是基于帧的处理。您可以选择以下选项之一:
元素作为通道(基于采样) - 将输入的每个元素作为独立通道处理(基于采样的处理)。
列作为通道(基于帧) - 将输入的每列作为独立通道处理(基于帧的处理)。
注意
基于帧的处理需要具有 DSP System Toolbox 许可证。
有关详细信息,请参阅Sample- and Frame-Based Concepts (DSP System Toolbox)。
编程用法
模块参数:InputProcessing
|
类型:字符向量 |
值:'Columns as channels (frame based)' | 'Elements as channels (sample based)' |
默认值:'Elements as channels (sample based)'
|
此选项使用使能端口来控制此模块的执行。当此端口的输入非零时,模块被视为启用;当输入为 0
时,模块被视为禁用。输入的值在执行模块的同一时间步进行检查。
编程用法
模块参数:ShowEnablePort
|
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
指定用于将状态重置为初始条件的触发事件。
重置模式 | 行为 |
---|---|
无 | 不重置。 |
上升沿 | 基于上升沿重置。 |
下降沿 | 基于下降沿重置。 |
任一沿 | 基于上升或下降沿重置。 |
电平 | 在下列任一情况下重置:
|
电平保持 | 当重置信号在当前时间步为非零值时重置 |
编程用法
模块参数:ExternalReset |
类型:字符向量 |
值:'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold' |
默认值:'None' |
指定采样时间间隔。要继承采样时间,请将此参数设置为 -1
。有关详细信息,请参阅指定采样时间。
依存关系
仅当您将此参数设置为 -1
以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | SampleTime |
值: | "-1" (默认) | scalar or vector in quotes |
点击此按钮以打开滤波器可视化工具 (fvtool
(DSP System Toolbox)),并显示在模块对话框中定义的滤波器的滤波器响应。
依存关系
要启用此参数,请将系数来源参数设置为对话框来源。
仅当您有有效的 DSP System Toolbox 许可证时,此参数才会出现。
数据类型
指定直接型对称或直接型反对称滤波器的抽头总和数据类型,这是滤波器在乘以系数之前计算输入总和时使用的数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
依存关系
仅当滤波器结构设置为直接型对称或直接型反对称时,此参数才可见。
编程用法
模块参数: TapSumDataTypeStr |
类型:字符向量 |
值:'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Same as input' |
指定系数数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 与输入的字长相同
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: CoefDataTypeStr |
类型:字符向量 |
值:'Inherit: Same word length as input'| 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Same wordlength as input' |
指定滤波器系数应具有的最小值。默认值为 []
(未指定)。Simulink 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数: CoeffMin |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定滤波器系数应具有的最大值。默认值为 []
(未指定)。Simulink 软件使用此值执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数: CoeffMax |
类型:字符向量 |
值:标量 |
默认值:'[]' |
指定乘积输出的数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: ProductDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
指定累加器数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 从内部规则继承
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
编程用法
模块参数: AccumDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'Inherit: Same as product output' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
指定状态数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 与累加器相同
内置整数,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
依存关系
要启用此参数,请将滤波器结构设置为格型 MA。
编程用法
模块参数: StateDataTypeStr |
类型:字符向量 |
值:'Inherit: Same as accumulator' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Same as accumulator' |
指定输出数据类型。可以将其设置为:
继承数据类型的规则,例如继承: 与累加器相同
内置数据类型,例如
int8
数据类型对象,例如
Simulink.NumericType
对象计算结果为数据类型的表达式,例如
fixdt(1,16,0)
数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 。有关详细信息,请参阅使用数据类型助手指定数据类型。
当模块的输入是浮点时,输出数据类型匹配输入数据类型,因为浮点继承优先于定点设置。
编程用法
模块参数: OutDataTypeStr |
类型:字符向量 |
值:'Inherit: Same as accumulator' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>' |
默认值:'Inherit: Same as accumulator' |
软件检查的输出范围的下限值。
软件使用最小值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
提示
输出最小值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | OutMin |
值: | '[]' (默认) | scalar in quotes |
软件检查的输出范围的上限值。
软件使用最大值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
提示
输出最大值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | OutMax |
值: | '[]' (默认) | scalar in quotes |
选择此选项可锁定数据类型设置,防止使用定点工具和定点顾问进行更改。有关详细信息,请参阅Lock the Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
值:'off' | 'on' |
默认值:'off' |
指定定点运算的舍入模式。有关详细信息,请参阅舍入模式 (Fixed-Point Designer)。
编程用法
模块参数:RndMeth |
类型:字符向量 |
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
默认值:'Floor' |
指定对溢出是进行饱和处理还是绕回处理。
on
- 将溢出饱和处理为数据类型能够表示的最小值或最大值。off
- 溢出将绕回到数据类型可以表示的合适值。
例如,有符号 8 位整数 int8
可以表示的最大值是 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。
选择此参数后,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。
清除此参数后,软件会将导致溢出的值解释为
int8
,这可能产生意外结果。例如,以int8
表示的模块结果 130(二进制 1000 0010)为 -126。
提示
如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此参数。
如果您希望优化生成的代码的效率,请考虑清除此参数。清除此参数还可以帮助您避免过度地指定信号超出范围时模块的处理方式。有关详细信息,请参阅信号范围错误故障排除。
如果选中此参数,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。
一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | SaturateOnIntegerOverflow |
值: | 'off' (默认) | 'on' |
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
详细信息
下图显示了 Discrete FIR Filter 模块内用于定点信号的滤波器结构和数据类型。
直接型
不能在此结构体的模块封装上指定状态数据类型,因为输入状态与输入具有相同的数据类型。
直接型对称
不能在此结构体的模块封装上指定状态数据类型,因为输入状态与输入具有相同的数据类型。
直接型反对称
不能在此结构体的模块封装上指定状态数据类型,因为输入状态与输入具有相同的数据类型。
直接型转置
格型 MA
如果您有 Simulink Coverage™ 许可证,并且您将外部重置模块参数设置为除无之外的任何选项,或您选择显示使能端口模块参数,则 Discrete FIR Filter 模块会接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集外部重置和使能端口的覆盖率。
对于外部重置模块参数,决策覆盖率测量模块重置时间步中的 true 结果,以及模块未重置时间步中的 false 结果。要接收 100% 的决策覆盖率,该模块必须在至少一个时间步内重置,并且在至少一个时间步内不重置。
对于显示使能端口模块参数,决策覆盖率测量模块被使能时间步中的 true 结果,以及模块未被使能时间步中的 false 结果。要接收 100% 的决策覆盖率,该模块必须在至少一个时间步内启用,并且在至少一个时间步内不启用。
如果选择对整数溢出进行饱和处理 (Simulink Coverage)参数,Discrete FIR Filter 模块会接收整数溢出饱和覆盖率。有关详细信息,请参阅整数溢出饱和处理覆盖率 (Simulink Coverage)。
算法
以下是 Discrete FIR Filter 模块中使用的结构图。
直接型
直接型对称
假定滤波器系数对称。该模块仅使用系数的前半部分进行滤波。
直接型反对称
假定滤波器系数反对称。该模块仅使用系数的前半部分进行滤波。
直接型转置
当输入或系数为复数时,状态为复数。
格型 MA
扩展功能
此模块支持自定义状态属性以更高效地自定义和生成代码。要访问或设置这些属性,请打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器。有关示例,请参阅Custom State Attributes in Discrete FIR Filter block。
使用 Intel AVX2 代码替换库生成 SIMD 代码
注意
需要 Embedded Coder® 许可证
Discrete FIR Filter 模块支持在以下情况下使用 Intel AVX2 代码替换库生成 SIMD 代码:
滤波器结构设置为直接型或直接型转置。
输入处理设置为列作为通道(基于帧)。
输入信号是具有实数滤波器系数的实数值。
当滤波器结构设置为直接型时,输入信号是复数值且具有实数或复数滤波器系数。
输入信号的数据类型为
single
或double
。
利用目标硬件指令集扩展生成 SIMD 代码 (自 R2022b 起)
注意
需要 Simulink Coder™ 或 Embedded Coder 许可证
在以下情况下,您可以使用模型配置参数利用目标硬件指令集扩展为所有 Intel® 平台上、ARM® Cortex®-A 处理器和 Apple 芯片处理器上的 Discrete FIR Filter 模块生成 SIMD 代码:
您将滤波器结构设置为直接型
您将输入处理设置为列作为通道(基于帧)
输入信号是具有实数滤波器系数的实数值
输入信号是实数值或复数值。
输入信号的数据类型为
single
(ARM Cortex-A 处理器)输入信号的数据类型为
single
或double
(Intel 平台)
此外,适当地配置您的模型。
在 Simulink 模型窗口的建模选项卡中,点击模型设置,并在代码生成下配置这些参数。
在优化窗格中:
在利用目标硬件指令集扩展参数中提供特定指令集。
选择优化归约参数。
在优化级别下,将级别设置为最大值,将优先级设置为最大化执行速度。
在接口窗格中的软件环境下,清除非有限数。
要使用此工作流从此模块生成 SIMD 代码,请参阅Use Intel AVX2 Code Replacement Library to Generate SIMD Code from Simulink Blocks (DSP System Toolbox)。
对于受支持模块上的计算密集型运算,SIMD 固有函数可以显著提高在 Intel 平台上生成代码的性能。有关详细信息,请参阅Optimize Code for Reduction Operations by Using SIMD (Simulink Coder)。要从此模块生成 SIMD 代码,请参阅Generate SIMD Code from Simulink Blocks for Intel Platforms (Simulink Coder)。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
该模块将 HDLDataPath 作为默认架构。此架构提供影响 HDL 实现和综合逻辑的额外配置选项。
HDL 模块属性 | 描述 |
---|---|
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
FlattenFilter | 从生成的 HDL 代码中删除滤波器子系统的层次结构。默认值为自动。请参阅FlattenHierarchy (HDL Coder)。 |
DSPStyle | 乘法器映射的综合属性。默认值为无。另请参阅DSPStyle (HDL Coder)。 |
SharingFactor | 要映射到单个共享资源的功能等效的资源的数量。默认值为 0。另请参阅Resource Sharing (HDL Coder)。 |
StreamingFactor | 并行数据路径或向量的数量,这些路径或向量通过时间多路复用的方式变换为串行标量数据路径。默认值为 0,表示实现完全并行的数据路径。另请参阅Streaming (HDL Coder)。 |
ConstMultiplierOptimization | 正则有符号数 (CSD) 或因子化 CSD 优化。默认值为无。另请参阅ConstMultiplierOptimization (HDL Coder)。 |
MultiplerArchitecture | 对于乘法器架构,选择线性或 shiftadd。默认值为线性。有关详细信息,请参阅 Product, Matrix Multiply 中的“HDL 代码生成”部分。 |
MultiplierInputPipeline | 指定要在滤波器乘法器输入端添加的流水线阶段数。另请参阅 MultiplierInputPipeline (HDL Coder)。 |
MultiplierOutputPipeline | 指定要在滤波器乘法器输出端添加的流水线阶段数。另请参阅 MultiplierOutputPipeline (HDL Coder)。 |
AdderChainArchitecture | 选择加法器架构以生成加法器的线性链或树状结构来计算元素之和。默认值为树。有关详细信息,请参阅 Sum 中的“HDL 代码生成”部分。 |
AdderOutputPipeline | 为执行加法运算而在生成的代码中插入的输出流水线阶段数。默认值为 |
该模块支持使用以下数据类型进行 HDL 代码生成:
输入端口 | 维度 | 定点 | 浮点 | 内置整数 | 总线 | 布尔 | 枚举 | 复信号 |
---|---|---|---|---|---|---|---|---|
In | 标量 向量 矩阵 | 是 | 半精度 单精度 双精度 | 是 | 是 | 是 | 是 | 是 |
模块参与以下 HDL 优化,以优化速度和面积。
面积优化
优化 | 描述 |
---|---|
Resource Sharing (HDL Coder) | 资源共享是一种面积优化,其中 HDL Coder 确定多个在功能上等效的资源,并用单个资源替换它们。 |
Streaming (HDL Coder) | 流式处理是一种面积优化,其中 HDL Coder 将向量数据路径变换为标量数据路径(或多个较小的向量数据路径)。 |
速度优化
优化 | 描述 |
---|---|
Distributed Pipelining (HDL Coder) | 分布式流水线或寄存器重定时是一种速度优化,它可以移动设计中的现有延迟,以在缩减关键路径的同时保留功能性行为。 |
Clock-Rate Pipelining (HDL Coder) | 时钟频率流水线是 HDL Coder 中的一个优化框架,它允许其他速度优化和面积优化在时钟频率下引入延迟。 |
Adaptive Pipelining (HDL Coder) | 自适应流水线优化创建带寄存器的模块模式或组合,通过在设计中的模块中插入流水线寄存器,可以提高可实现的时钟频率并减少 FPGA 板上的面积使用量。 |
关键路径估计 (HDL Coder) | 要快速确定设计中最可能的关键路径,请使用关键路径估计。关键路径估计加速寻找关键路径的迭代过程。要了解在关键路径估计中表征的模块,请参阅Characterized Blocks (HDL Coder)。 |
该模块具有以下限制:
您必须将初始条件设置为
0
。非零初始状态不支持 HDL 代码生成。滤波器结构:格型 MA。
要为可编程滤波器或多通道滤波器等特殊情况配置 Discrete FIR Filter 模块,请使用以下模块设置:
滤波器情形 | 注意事项 |
---|---|
可编程滤波器 | HDL Coder 支持对 Discrete FIR Filter 模块使用可编程滤波器。
|
多通道滤波器 | HDL Coder 支持对 Discrete FIR Filter 模块使用向量输入,其中向量的每个元素表示一个独立的通道。
|
基于帧的输入 | HDL Coder 支持对 Discrete FIR Filter 模块使用向量输入,其中向量的每个元素表示一个时间点上的采样。一个输入向量最多可包含 512 个采样。基于帧的实现支持定点输入和输出数据类型,并使用全精度内部数据类型。您可以使用具有实系数的实输入信号、具有实系数的复输入信号或具有复系数的实输入信号。您也可以使用具有可编程系数的基于帧的输入。
当您使用基于帧的输入数据时,您可以使用复输入信号和实系数,或复系数和实输入信号。 |
具有控制端口的滤波器 | 您可以为具有可选的使能端口和可选的重置端口的滤波器生成 HDL 代码。 |
注意
对于适合硬件的验证和重置控制信号,要在 Simulink 中对硬件延迟行为精确建模,请改用 Discrete FIR Filter (DSP HDL Toolbox) 模块。
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2008a 中推出在 R2024b 中,如果您有 Embedded Coder,则可以通过使用模型配置参数利用目标硬件指令集扩展,为适用于 Apple 芯片处理器的 Discrete FIR Filter 模块生成 SIMD 代码。有关详细信息,请参阅Use Target Hardware Instruction Set Extensions to Generate SIMD Code from Simulink Blocks for Apple silicon (DSP System Toolbox)。
点击查看滤波器响应按钮,以可视化您在模块对话框中指定的滤波器的频率响应。
在 R2023b 中,如果您有 Embedded Coder,则当输入信号为复数值时,您可以通过使用模型配置参数利用目标硬件指令集扩展为 Discrete FIR Filter 模块生成 SIMD 代码。
默认情况下,Discrete FIR Filter 模块不再在“模块参数”对话框中显示采样时间参数。仅在命令行或现有模型中将采样时间设置为默认值 (-1
) 以外的值时,该参数才可见。有关详细信息,请参阅不建议设置采样时间的模块。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)