Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Discrete FIR Filter

FIR フィルター モデル

  • Discrete FIR Filter block

ライブラリ:
Simulink / Discrete
HDL Coder / Discrete
HDL Coder / HDL Floating Point Operations

説明

Discrete FIR Filter ブロックは、指定したデジタル FIR フィルターで入力信号の各チャネルを個別にフィルター処理します。固定係数の静的フィルターや、時間的に変化する係数をもつ時変フィルターを実装でき、また静的フィルターの係数はシミュレーション中に調整することができます。

このブロックは、時間とともに入力信号の各チャネルに個々にフィルターをかけます。[入力処理] パラメーターでは、ブロックが、入力の各要素を独立したチャネル (サンプルベースの処理) として、または入力の各列を独立したチャネル (フレームベースの処理) として扱うかどうかを指定できます。フレームベースの処理を実行するには、DSP System Toolbox™ のライセンスがなければなりません。

[係数] パラメーターのフィルター タップの行列を指定した場合を除き、出力の次元は入力の次元と等しくなります。指定した場合は、その出力の次元は指定する別のフィルター タップのセット数に従います。

このブロックは、コードのカスタマイズおよび生成をより効率的に行うためにカスタム状態属性をサポートします。例については、Discrete FIR Filter ブロックのカスタム状態属性を参照してください。特定の条件下では、ブロックは SIMD コード生成もサポートします。詳細については、コード生成を参照してください。

出力は、DSP System Toolbox Digital Filter Design (DSP System Toolbox) ブロックの出力と数値的に一致します。

このブロックは Simulink® の状態のログ作成をサポートします。詳細については、ステートを参照してください。

フィルター構造サポート

[フィルター構造] パラメーターから以下のいずれかを選択することにより、Discrete FIR Filter ブロックによって実装されたフィルター構造を変更できます。

  • 直接型

  • 直接型対称

  • 直接型反対称

  • 直接型転置

  • ラティス MA

[直接型] を除き、これらのいずれかのフィルター構造でモデルを実行するためには、有効な DSP System Toolbox ライセンスをもっていなければなりません。

フィルター構造体の詳細については、アルゴリズムを参照してください。

初期状態の指定

Discrete FIR Filter ブロックの既定の設定では、内部フィルターの状態はゼロに初期化されます。これは過去の入出力をゼロにすることに相当します。オプションの 初期状態 パラメーターを選択すると、フィルター遅延の初期状態にゼロ以外を指定できます。

初期状態の数値や指定方法に関しては、「入力可能な初期状態」の表を参照してください。初期状態 パラメーターは次の表のいずれかになります。

入力可能な初期状態

初期条件説明

スカラー

フィルターのすべての遅延要素がスカラー値に初期化されます。

ベクトルまたは行列
(個々の遅延要素を各チャネルに適用)

ベクトルや行列の各要素は、対応するチャネルの対応する遅延要素に固有な初期状態を指定します。

  • ベクトルの長さは、フィルターの入力チャネル数と遅延要素数、すなわち #_of_filter_coeffs-1 ([ラティス MA] の場合は #_of_reflection_coeffs) の積に等しくします。

  • フィルターの遅延要素数、すなわちフィルター係数の数-1 ([ラティス MA] の場合はフィルターの反射係数の数) と同じ行数をもち、各列が入力信号の各チャネルに対応するように指定します。

端子

入力

すべて展開する

フィルター処理する入力信号。スカラー、ベクトルまたは行列として指定します。

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 のライセンスが必要になります。

    詳細については、サンプルベースおよびフレームベースの概念 (DSP System Toolbox)を参照してください。

プログラムでの使用

ブロック パラメーター: InputProcessing
型: 文字ベクトル
値: 'Columns as channels (frame based)' | 'Elements as channels (sample based)'
既定の設定: 'Elements as channels (sample based)'

フィルターの状態の初期条件を指定します。初期状態の指定方法については、初期状態の指定を参照してください。

プログラムでの使用

ブロック パラメーター: InitialStates
型: 文字ベクトル
値: スカラー | ベクトル | 行列
既定の設定: '0'

イネーブル端子でこのブロックの実行制御を選択します。ブロックはこの端子への入力が非ゼロのときに有効と見なされ、入力が 0 のときに無効になります。入力の値はブロックの実行と同じタイム ステップでチェックされます。

プログラムでの使用

ブロック パラメーター: ShowEnablePort
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

状態を初期条件にリセットするために使用するトリガー イベントを指定します。

リセット モード動作
なしリセットなし
立ち上がり立ち上がりエッジでリセットします
立ち下がり立ち下がりエッジでリセットします
両方立ち上がりエッジまたは立ち下がりエッジのいずれかでリセットします
レベル

次のいずれかの場合にリセットします。

  • リセット信号が現在のタイム ステップで非ゼロである場合

  • 以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 までリセット信号の値が変化する場合

レベル保持リセット信号が現在のタイム ステップで非ゼロであるときにリセットします。

プログラムでの使用

ブロック パラメーター: ExternalReset
: 文字ベクトル
: 'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold'
既定の設定: 'None'

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細については、サンプル時間の指定を参照してください。

依存関係

このパラメーターは、-1 以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string スカラーまたは文字ベクトル
既定の設定: "-1"

データ型

直接型の対称フィルターまたは直接型の反対称フィルターのタップの加算のデータ型を指定します。これは、係数による乗算の前に入力を加算するときにフィルターで使用するデータ型です。以下を指定可能です。

  • データ型継承ルール (例: 継承: 内部ルールによる継承])

  • 組み込み整数 (例: int8)

  • データ型オブジェクト (例: Simulink.NumericType オブジェクト)

  • データ型を評価する式 (例: fixdt(1,16,0))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

依存関係

このパラメーターは、[フィルター構造][直接型対称] または [直接型反対称] に設定した場合にのみ表示されます。

プログラムでの使用

ブロック パラメーター: 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))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーター: 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))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーター: 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))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーター: 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))

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

ブロックへの入力が浮動小数点の場合、出力データ型は入力データ型に一致します。これは、浮動小数点の継承が固定小数点の設定よりも優先されるからです。

プログラムでの使用

ブロック パラメーター: 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'

Simulink がチェックする出力範囲の下限値。

Simulink は、最小値を使って以下を行います。

メモ

[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMin
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする出力範囲の上限値。

Simulink は、最大値を使って以下を行います。

メモ

[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMax
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックのデータ型の設定をロックします。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: LockScale
値: 'off' | 'on'
既定の設定: 'off'

固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: RndMeth
型: 文字ベクトル
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

オーバーフローで飽和するかラップするかを指定します。

動作根拠オーバーフローの影響

このチェック ボックスをオンにする (on)。

モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。

オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。

このチェック ボックスをオンにしない (off)。

生成コードの効率を最適化することをお勧めします。

ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

オーバーフローは、データ型によって表現される適切な値にラップされます。

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスをオフにすると、オーバーフローを引き起こした値は int8 として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8 として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。

このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

ブロック パラメーター: SaturateOnIntegerOverflow
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

ブロックの特性

データ型

double | fixed point | integer | single

直達

いいえ

多次元信号

いいえ

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

詳細

すべて展開する

アルゴリズム

Discrete FIR Filter ブロック内で使用される構造のブロック線図を以下に示します。

直接型

直接型対称

フィルター係数は対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。

直接型反対称

フィルター係数は反対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。

直接型転置

入力または係数が複素数である場合は、状態も複素数になります。

ラティス MA

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2008a で導入

すべて展開する