Discrete FIR Filter
FIR フィルター モデル

ライブラリ:
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 ブロックの既定の設定では、内部フィルターの状態はゼロに初期化されます。これは過去の入出力をゼロにすることに相当します。オプションの 初期状態 パラメーターを選択すると、フィルター遅延の初期状態にゼロ以外を指定できます。
初期状態の数値や指定方法に関しては、「入力可能な初期状態」の表を参照してください。初期状態 パラメーターは次の表のいずれかになります。
入力可能な初期状態
初期条件 | 説明 |
---|---|
スカラー | フィルターのすべての遅延要素がスカラー値に初期化されます。 |
ベクトルまたは行列 | ベクトルや行列の各要素は、対応するチャネルの対応する遅延要素に固有な初期状態を指定します。
|
例
人工内耳用音声処理装置
この例では、聴力を部分的に回復するために重度聴覚障害者の内耳に装着する人工内耳の設計をシミュレーションする方法を示します。人工内耳の開発では信号処理を使用して、音声を電子パルスに変換します。パルスは聴覚障害者の耳の損失部位を通過し、脳に伝達され聴力を部分的に補います。
(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)
音響ノイズ キャンセリング (LMS)
この例では、最小平均二乗 (LMS) アルゴリズムを使用して入力信号からノイズを除去する方法を示します。この例では事前学習済みの Simulink® モデルを使用しています。dspanc
モデルの LMS Filter ブロックは、"Input" 端子の基準信号と "Desired" 端子の目的の信号を使用してフィルター応答を自動的に一致させる適応フィルターをモデル化します。LMS Filter ブロックは、フィルター処理されたノイズを元の信号から除去します。フィルターが収束すると、結果の誤差信号には元の信号のみが含まれます。
(DSP System Toolbox)
固定小数点ツールを使用した固定小数点モデルの再スケーリング
以下の例では、固定小数点ツールを使用してフィードバック コントローラー モデル fxpdemo_feedback
に関連する固定小数点データ型のスケーリングを絞り込む方法を示します。固定小数点ツールでは、固定小数点データ型を使用するためにモデルを変換する複数のワークフローを使用できます。
(Fixed-Point Designer)
プログラミング可能な FPGA 用 FIR フィルター
この例では、プログラミング可能なハードウェア用 FIR フィルターの実装方法を示します。メモリ形式のインターフェイスを使用して係数を内部レジスタに読み込むことで、必要とされる応答に対してフィルターをプログラムすることができます。
(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 のライセンスが必要になります。
詳細については、サンプルベースおよびフレームベースの概念 (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' |
状態を初期条件にリセットするために使用するトリガー イベントを指定します。
リセット モード | 動作 |
---|---|
なし | リセットなし |
立ち上がり | 立ち上がりエッジでリセットします |
立ち下がり | 立ち下がりエッジでリセットします |
両方 | 立ち上がりエッジまたは立ち下がりエッジのいずれかでリセットします |
レベル | 次のいずれかの場合にリセットします。
|
レベル保持 | リセット信号が現在のタイム ステップで非ゼロであるときにリセットします。 |
プログラムでの使用
ブロック パラメーター: 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 |
固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックのデータ型の設定をロックします。詳細については、出力データ型設定のロック (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) ブロックを使用している場合、[状態制御] パラメーターが [同期]
のときは外部リセット端子とイネーブル端子のカバレッジを収集できません。
[外部リセット] ブロック パラメーターの判定カバレッジでは、ブロックがリセットされるタイム ステップの真の結果と、ブロックがリセットされないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでリセットされ、かつ少なくとも 1 つのタイム ステップでリセットされない必要があります。
[イネーブル端子を表示する] ブロック パラメーターの判定カバレッジでは、ブロックがイネーブルであるタイム ステップの真の結果と、ブロックがイネーブルでないタイム ステップの偽の結果が測定されます。100% の判定カバレッジとなるには、ブロックは少なくとも 1 つのタイム ステップでイネーブルであり、かつ少なくとも 1 つのタイム ステップでイネーブルでない必要があります。
[整数オーバーフローで飽和] (Simulink Coverage) パラメーターを選択すると、Discrete FIR Filter ブロックは整数オーバーフローで飽和カバレッジの対象になります。詳細については、整数オーバーフローで飽和カバレッジ (Simulink Coverage)を参照してください。
アルゴリズム
Discrete FIR Filter ブロック内で使用される構造のブロック線図を以下に示します。
直接型
直接型対称
フィルター係数は対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。
直接型反対称
フィルター係数は反対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。
直接型転置
入力または係数が複素数である場合は、状態も複素数になります。
ラティス MA
拡張機能
このブロックは、コードのカスタマイズおよび生成をより効率的に行うためにカスタム状態属性をサポートします。これらの属性にアクセスする、または属性を設定するには、モデル データ エディターを開きます。[モデル化] タブで [モデル データ エディター] をクリックします。例については、Discrete FIR Filter ブロックのカスタム状態属性を参照してください。
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 コードを生成するには、Intel プラットフォームの Simulink ブロックからの SIMD コードの生成 (Simulink Coder)を参照してください。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
メモ
ハードウェア親和型の有効なリセット制御信号について、ハードウェア レイテンシの厳密な動作を Simulink でモデル化するには、代わりに Discrete FIR Filter (DSP HDL Toolbox) ブロックを使用します。
このブロックには、既定のアーキテクチャとして [HDLDataPath]
があります。このアーキテクチャには、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
HDL ブロック プロパティ | 説明 |
---|---|
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
FlattenFilter | 生成された HDL コードから Filter サブシステムの階層を削除します。既定の設定は |
DSPStyle | 乗算器のマッピングの合成属性。既定の設定は |
SharingFactor | 単一の共有リソースにマッピングされる、機能的に等価なリソースの数。既定の設定は 0 です。リソース共有 (HDL Coder)も参照してください。 |
StreamingFactor | 時間多重化されてシリアルのスカラー データ パスに変換される、パラレル データ パスの数、またはベクトルの数。既定値は 0 であり、パラレル データ パスがそのまま実装されます。ストリーミング (HDL Coder)も参照してください。 |
ConstMultiplierOptimization | 正準符号付き桁数 (CSD) または因数分解された CSD による最適化。既定の設定は |
MultiplerArchitecture | 乗算器アーキテクチャとして [linear] または [shiftadd] を選択します。既定の設定は [linear] です。詳細については、Product, Matrix Multiply の [HDL コード生成] セクションを参照してください。 |
MultiplierInputPipeline | フィルターの乗算器入力に追加するパイプライン ステージの数を指定します。MultiplierInputPipeline (HDL Coder) も参照してください。 |
MultiplierOutputPipeline | フィルターの乗算器出力に追加するパイプライン ステージの数を指定します。MultiplierOutputPipeline (HDL Coder) も参照してください。 |
AdderChainArchitecture | 要素の和を計算する加算器の線形チェーンまたはツリー構造を生成する加算器アーキテクチャを選択します。既定の設定は [tree] です。詳細については、Sum の [HDL コード生成] セクションを参照してください。 |
AdderOutputPipeline | 加算演算に対して生成されたコードに挿入する出力パイプライン ステージ数。既定の設定は |
ブロックは、HDL コード生成で次のデータ型をサポートします。
入力端子 | 次元 | 固定小数点 | 浮動小数点 | 組み込み整数 | バス | boolean | 列挙型 | 複素信号 |
---|---|---|---|---|---|---|---|---|
In | スカラー ベクトル 行列 | あり | half single double | あり | あり | あり | あり | あり |
このブロックは、速度と面積を最適化するために次の HDL 最適化に使用されます。
面積の最適化
速度の最適化
最適化 | 説明 |
---|---|
分散型パイプライン方式 (HDL Coder) | "分散型パイプライン方式"、つまりレジスタのリタイミングとは、設計の既存の遅延を移動して、機能的動作を維持しながらクリティカル パスを低減する速度の最適化です。 |
クロックレート パイプライン (HDL Coder) | "クロックレート パイプライン" は、他の速度と面積の最適化でクロック レートでのレイテンシを導入できるようにする HDL Coder の最適化フレームワークです。 |
適応パイプライン (HDL Coder) | "適応パイプライン" 最適化では、設計内のブロックにパイプライン レジスタを挿入して、ブロックとレジスタのパターンまたは組み合わせを作成することにより、達成可能なクロック周波数を高め、FPGA ボード上の使用面積を削減できます。 |
クリティカル パスの推定 (HDL Coder) | クリティカル パスの可能性が最も高いパスを設計内で簡単に特定するには、"クリティカル パスの推定" を使用します。クリティカル パスの推定は、クリティカル パスを検出する反復的プロセスを高速化します。クリティカル パスの推定で特徴付けられるブロックについては、特徴付けられるブロック (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 コードを生成できます。 |
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
) 以外の値に設定した場合にのみ表示されます。詳細については、サンプル時間が推奨されないブロックを参照してください。
参考
Discrete Filter | Digital Filter Design (DSP System Toolbox)
トピック
- サンプルベースおよびフレームベースの概念 (DSP System Toolbox)
- Discrete FIR Filter ブロックのカスタム状態属性
- 状態の取り扱い
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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)