主要内容

离散FIR滤波器

模型FIR滤波器

  • 库:
  • 金宝appSimulink / Discrete

    HDL编码器/离散

    HDL编码器/ HDL浮点运算

  • 离散FIR滤波器块

描述

离散FIR滤波器块用指定的数字FIR滤波器独立地滤波输入信号的每个通道。该块可以实现具有固定系数的静态滤波器,以及具有随时间变化系数的时变滤波器。您可以在模拟过程中调整静态滤波器的系数。

这个块在一段时间内独立地过滤输入信号的每个通道。的输入处理参数允许您指定块是将输入的每个元素作为独立通道(基于样本的处理),还是将输入的每个列作为独立通道(基于帧的处理)。要执行基于帧的处理,您必须拥有DSP系统工具箱许可证。

类的过滤抽头矩阵除外,输出尺寸与输入尺寸相等系数参数。这样做时,输出维度取决于您指定的不同过滤器抽头集的数量。

此块支持自定义状态属性金宝app,以更有效地自定义和生成代码。有关示例,请参见自定义状态属性在离散FIR滤波器块.在一定条件下,该块还支持SIMD代码生成。金宝app详细信息请参见代码生成

此块的输出在数字上与DSP系统工具箱的输出相匹配数字滤波器设计(DSP系统工具箱)块。

此块支持Simulin金宝appk金宝app®状态日志功能。有关更多信息,请参见状态

过滤器结构支持金宝app

方法实现的筛选器结构可以更改离散FIR滤波器控件中选择以下之一来阻止滤波器结构参数:

  • 直接的形式

  • 直接对称

  • 直接形式反对称

  • 直接形式转置

  • 格马

您必须拥有可用的DSP系统工具箱许可证,才能使用这些过滤器结构中的任何一个运行模型直接的形式

指定初始状态

离散FIR滤波器Block默认将内部过滤器状态初始化为零,这与假设过去的输入和输出为零具有相同的效果。可以选择使用初始状态参数为筛选器延迟指定非零初始条件。

要确定必须指定的初始状态的数量以及如何指定它们,请参阅有关有效初始状态的表。的初始状态参数可以采用下表中描述的形式之一。

有效初始状态

初始条件 描述

标量

该块将筛选器中的所有延迟元素初始化为标量值。

向量或矩阵
(用于在每个通道上应用不同的延迟元素)

每个向量或矩阵元素都为相应通道中的相应延迟元素指定了唯一的初始条件:

  • 矢量长度等于输入通道数和滤波器中延迟元素数的乘积,# _of_filter_coeffs-1(或# _of_reflection_coeffs格马).

  • 矩阵的行数必须与过滤器中延迟元素的行数相同,# _of_filter_coeffs-1# _of_reflection_coeffs格马),并且输入信号的每个通道必须有一列。

港口

输入

全部展开

要滤波的输入信号,指定为标量、向量或矩阵。

依赖关系

当你设置系数来源对话框参数时,输入信号的端口未标记。当你设置系数来源输入端口时,输入信号所在端口被标记

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

将过滤器系数指定为标量、向量或矩阵。当指定筛选器抽头的行向量时,块将对输入应用单个筛选器。要对同一个输入应用多个过滤器,请指定系数矩阵,其中每一行表示一组不同的过滤器水龙头。

依赖关系

若要启用此端口,请设置系数来源输入端口

要实现多个过滤器,滤波器结构必须直接的形式,输入必须是标量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

外部复位信号,指定为标量。当指定的触发事件发生时,块将状态重置为初始条件。

提示

属性的值会改变该端口的图标外部复位参数。

依赖关系

若要启用此端口,请设置外部复位不断上升的下降要么水平,或保持水平

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

启用信号,指定为标量。该端口可以控制块的执行。当该端口的输入为非零时,该阻塞使能;当输入为非零时,该阻塞被禁用0.在执行块的同时检查输入的值。

依赖关系

要启用此端口,请选择显示启用端口复选框。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

输出

全部展开

滤波输出信号。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

参数

全部展开

主要

选择使用可调对话框参数或通过输入端口指定过滤器系数,这对于时变系数很有用。

编程使用

块参数:CoefSource
类型:特征向量
价值观:对话框参数|输入端口
默认值:“对话框参数”

选择希望该块实现的筛选器结构。

依赖关系

您必须具有可用的DSP系统工具箱许可证才能使用离散FIR滤波器块,该块实现了除直接的形式

编程使用

块参数:FilterStructure
类型:特征向量
价值观:'直接形式' | '直接形式对称' | '直接形式反对称' | '直接形式转置' | '晶格MA'
默认值:直接形成的

指定传递函数的系数向量。过滤器系数必须指定为行向量。当指定筛选器抽头的行向量时,块将对输入应用单个筛选器。要对同一个输入应用多个过滤器,请指定系数矩阵,其中每一行表示一组不同的过滤器水龙头。

依赖关系

若要启用该参数,请设置系数来源对话框参数

要实现多个过滤器,滤波器结构必须直接的形式,输入必须是标量。

编程使用

块参数:系数
类型:特征向量
价值观:向量
默认值:“[0.5 - 0.5]”

指定块执行基于样本的处理还是基于帧的处理。您可以选择以下选项之一:

  • 作为通道的元素(基于示例)-将输入的每个元素视为一个独立的通道(基于样本的处理)。

  • 列作为通道(基于帧)-将输入的每一列作为一个独立的通道(基于帧的处理)。

    请注意

    基于帧的处理需要DSP系统工具箱许可证。

    有关更多信息,请参见基于样本和框架的概念(DSP系统工具箱)

编程使用

块参数:InputProcessing
类型:特征向量
价值观:'作为通道的列(基于帧)' | '作为通道的元素(基于示例)'
默认值:“元素作为通道(基于样本)”

指定筛选器状态的初始条件。要了解如何指定初始状态,请参见指定初始状态

编程使用

块参数:InitialStates
类型:特征向量
价值观:标量|向量|矩阵
默认值:' 0 '

选择以启用端口控制此块的执行。当该端口的输入是非零时,该块被认为是启用的,当输入是非零时,该块被认为是禁用的0.在执行块的同时检查输入的值。

编程使用

块参数:ShowEnablePort
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

指定用于将状态重置为初始条件的触发器事件。

复位模式 行为
没有一个 没有复位
不断上升的 重置在上升边缘
下降 重置在下降的边缘
要么 在上升或下降边缘重置
水平

在以下任何一种情况下重置:

  • 当复位信号在当前时间步长非零时

  • 复位信号值由上一时间步的非零变为当前时间步的零

保持水平 复位时,复位信号在当前时间步长非零

编程使用

块参数ExternalReset
类型:字符向量
“没有”|“上升”|“下降”|“不是”|“水平”|“持有水平”
默认的“没有”

指定采样时间间隔。如果要继承采样时间,则设置为-1.有关更多信息,请参见指定采样时间

编程使用

块参数:SampleTime
类型:特征向量
价值观:标量|向量
默认值:' 1 '

数据类型

指定直接形式对称或直接形式反对称过滤器的tap和数据类型,这是过滤器在系数相乘之前对输入进行总和时使用的数据类型。你可以设置为:

  • 继承数据类型的规则,例如,继承:通过内部规则继承

  • 例如,一个内置整数,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

依赖关系

属性时,此参数才可见滤波器结构直接对称直接形式反对称

编程使用

块参数:TapSumDataTypeStr
类型:特征向量
价值观:'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:与输入相同”

指定系数数据类型。你可以设置为:

  • 继承数据类型的规则,例如,继承:与输入字长相同

  • 例如,一个内置整数,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

编程使用

块参数:CoeffDataTypeStr
类型:特征向量
价值观:'继承:与输入字长相同'| 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:与输入相同的字长”

指定过滤器系数应具有的最小值。默认值为[](不明)。金宝appSimulink软件使用这个值执行:

编程使用

块参数:CoeffMin
类型:特征向量
价值观:标量
默认值:“[]”

指定过滤器系数应该具有的最大值。默认值为[](不明)。金宝appSimulink软件使用这个值执行:

编程使用

块参数:CoeffMax
类型:特征向量
价值观:标量
默认值:“[]”

指定产品输出数据类型。你可以设置为:

  • 继承数据类型的规则,例如,继承:通过内部规则继承

  • 内置数据类型,例如,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

编程使用

块参数:ProductDataTypeStr
类型:特征向量
价值观:'继承:通过内部规则' | '继承:与输入' | '相同int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:通过内部规则继承”

指定累加器数据类型。你可以设置为:

  • 继承数据类型的规则,例如,继承:通过内部规则继承

  • 内置数据类型,例如,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

编程使用

块参数:AccumDataTypeStr
类型:特征向量
价值观:继承:通过内部规则继承' | '继承:与输入' | '继承:与产品输出' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:通过内部规则继承”

指定状态数据类型。你可以设置为:

  • 继承数据类型的规则,例如,Inherit:与累加器相同

  • 例如,一个内置整数,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

依赖关系

若要启用此参数,请设置滤波器结构格马

编程使用

块参数:StateDataTypeStr
类型:特征向量
价值观:'继承:同累加器' | '继承:同输入' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:与累加器相同”

指定输出数据类型。你可以设置为:

  • 继承数据类型的规则,例如,Inherit:与累加器相同

  • 内置数据类型,例如,int8

  • 数据类型对象,例如A金宝app仿真软件。全国矿工工会ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

编程使用

块参数:OutDataTypeStr
类型:特征向量
价值观:'继承:同accumulator' | '继承:同input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<数据类型表达式>'
默认值:“继承:与累加器相同”

Simulink检查的输出范围的较低值。金宝app

金宝appSimulink使用最小值来执行:

请注意

输出最小不饱和或剪辑实际输出信号。使用饱和块来代替。

编程使用

块参数OutMin
类型:字符向量
“[]”|标量
默认的“[]”

Simulink检查的输出范围的最大值。金宝app

金宝appSimulink使用最大值执行:

请注意

输出最大不饱和或剪辑实际输出信号。使用饱和块来代替。

编程使用

块参数OutMax
类型:字符向量
“[]”|标量
默认的“[]”

选择此选项可锁定此块的数据类型设置,防止由定点工具和定点顾问进行更改。有关更多信息,请参见锁定输出数据类型设置(定点设计师)

编程使用

块参数:LockScale
价值观:'off' | 'on'
默认值:“关闭”

为定点操作指定舍入模式。有关更多信息,请参见舍入(定点设计师)

编程使用

块参数:RndMeth
类型:特征向量
价值观:“天花板”|“收敛”|“地板”|“最近”|“圆”|“最简单”|“零”
默认值:“地板”

指定溢出是饱和还是包裹。

行动 基本原理 对溢出的影响 例子

选中此复选框().

您的模型可能有溢出,并且您希望在生成的代码中显式地进行饱和保护。

溢出饱和到数据类型可以表示的最小值或最大值。

的最大值int8(有符号,8位整数)的数据类型可以表示为127。任何大于该最大值的块操作结果都会导致8位整数溢出。选中复选框后,块输出的饱和值为127。类似地,块输出在最小输出值-128处饱和。

不要选中此复选框().

您希望优化生成代码的效率。

您希望避免过度指定块如何处理超出范围的信号。有关更多信息,请参见排除信号范围错误

溢出包装为由数据类型表示的适当值。

的最大值int8(有符号,8位整数)的数据类型可以表示为127。任何大于该最大值的块操作结果都会导致8位整数溢出。清除复选框后,软件将导致溢出的值解释为int8,这可能会产生意想不到的结果。例如,130(二进制1000 0010)的块结果表示为int8,为-126。

选中此复选框后,饱和将应用于块上的每个内部操作,而不仅仅是输出或结果。通常,代码生成过程可以检测何时不可能出现溢出。在这种情况下,代码生成器不会产生饱和代码。

编程使用

块参数:SaturateOnIntegerOverflow
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

模型的例子

块特征

数据类型

|不动点|整数|

直接引线

没有

多维信号

没有

适应信号

是的

讨论二阶导数过零检测

没有

扩展功能

PLC代码生成
使用Simulink®PLC Coder™生成结构化文本代码。金宝app

在R2008a中引入