このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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)
端子
入力
In — 入力信号
スカラー | ベクトル | 行列
フィルター処理する入力信号。スカラー、ベクトルまたは行列として指定します。
Discrete FIR Filter ブロックは、Simulink がサポートする任意の数値データ型の実信号と複素信号を受け入れます。
依存関係
[係数のソース] を [ダイアログ パラメーター]
に設定した場合、入力信号の端子にラベルは付けられません。[係数のソース] を [入力信号]
に設定した場合は、入力信号の端子に In というラベルが付けられます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
複素数のサポート: あり
Num — フィルター係数
スカラー | ベクトル
フィルター係数をスカラーまたはベクトルとして指定します。フィルター タップの行ベクトルを指定するときに、ブロックは単一のフィルターを入力に適用します。複数のフィルターを入力に適用するには、[係数] パラメーターを使用して行列形式で係数を指定します。
依存関係
この端子を有効にするには、[係数のソース] を [入力端子]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
External reset — 外部のリセット信号
スカラー
外部リセット信号。スカラーとして指定します。指定したトリガー イベントが発生すると、状態が初期条件にリセットされます。
ヒント
この端子のアイコンは [外部リセット] パラメーターの値に基づいて変化します。
依存関係
この端子を有効にするには、[外部リセット] を [立ち上がり]
、[立ち下がり]
、[両方]
、[レベル]
、[レベル保持]
のいずれかに設定します。
データ型: 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
出力
Port_1 — フィルター処理された出力信号
スカラー | ベクトル | 行列
フィルター処理された出力信号。スカラー、ベクトル、または行列として返されます。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'
|
フィルター構造 — フィルター構造
直接型
(既定値) | 直接型対称
| 直接型反対称
| 直接型転置
| ラティス MA
ブロックで実現するフィルター構造を選択します。詳細については、アルゴリズムを参照してください。
依存関係
[直接型]
を除き、いずれかのフィルター構造を実装する Discrete FIR Filter ブロックを含むモデルを実行するには、有効な DSP System Toolbox ライセンスをもっていなければなりません。
プログラムでの使用
ブロック パラメーター: FilterStructure |
型: 文字ベクトル |
値: 'Direct form' | 'Direct form symmetric' | 'Direct form antisymmetric' | 'Direct form transposed' | 'Lattice MA' |
既定の設定: 'Direct form'
|
係数 — フィルター係数
[0.5 0.5]
(既定値) | スカラー | ベクトル | 行列
フィルター係数をスカラー、ベクトル、または行列として指定します。
フィルター タップの行ベクトルを指定するときに、ブロックは単一のフィルターを入力に適用します。複数のフィルターを同一の入力に適用するには、係数の行列を指定します。このとき、それぞれの行はフィルター タップの別々のセットを表します。複数のフィルターを実装するには、[フィルター構造] を [直接型]
に設定し、入力はスカラーでなければなりません。
依存関係
このパラメーターを有効にするには、[係数のソース] を [ダイアログ パラメーター]
に設定します。
プログラムでの使用
ブロック パラメーター: 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)'
|
初期状態 — フィルター状態の初期条件
0
(既定値) | スカラー | ベクトル | 行列
フィルターの状態の初期条件を指定します。初期状態の指定方法については、初期状態の指定を参照してください。
プログラムでの使用
ブロック パラメーター: InitialStates
|
型: 文字ベクトル |
値: スカラー | ベクトル | 行列 |
既定の設定: '0' |
イネーブル端子の表示 — イネーブル端子を作成
off
(既定値) | on
イネーブル端子でこのブロックの実行制御を選択します。ブロックはこの端子への入力が非ゼロのときに有効と見なされ、入力が 0
のときに無効になります。入力の値はブロックの実行と同じタイム ステップでチェックされます。
プログラムでの使用
ブロック パラメーター: ShowEnablePort
|
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
外部リセット — 外部の状態リセット
なし
(既定値) | 立ち上がり
| 立ち下がり
| 両方
| レベル
| レベル保持
状態を初期条件にリセットするために使用するトリガー イベントを指定します。
リセット モード | 動作 |
---|---|
なし | リセットなし |
立ち上がり | 立ち上がりエッジでリセットします |
立ち下がり | 立ち下がりエッジでリセットします |
両方 | 立ち上がりエッジまたは立ち下がりエッジのいずれかでリセットします |
レベル | 次のいずれかの場合にリセットします。
|
レベル保持 | リセット信号が現在のタイム ステップで非ゼロであるときにリセットします。 |
プログラムでの使用
ブロック パラメーター: ExternalReset |
型: 文字ベクトル |
値: 'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold' |
既定の設定: 'None' |
サンプル時間 (継承は -1) — サンプルの間隔
-1
(既定値) | スカラー | ベクトル
サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1
に設定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、-1
以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーター: SampleTime |
型: string スカラーまたは文字ベクトル |
既定の設定: "-1" |
データ型
タップの加算 — タップの加算のデータ型
Inherit: Same as input
(既定値) | Inherit: Inherit via internal rule
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
直接型の対称フィルターまたは直接型の反対称フィルターのタップの加算のデータ型を指定します。これは、係数による乗算の前に入力を加算するときにフィルターで使用するデータ型です。以下を指定可能です。
データ型継承ルール (例:
[継承: 内部ルールによる継承]
)組み込み整数 (例:
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' |
係数 — 係数のデータ型
Inherit: Same wordlength as input
(既定値) | int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
係数のデータ型を指定します。以下を指定可能です。
データ型継承ルール (例:
継承: 入力と同じ語長
)組み込み整数 (例:
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 |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
乗算出力 — 乗算出力のデータ型
Inherit: Inherit via internal rule
(既定値) | 継承: 入力と同じ
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
乗算器の出力データ型を指定します。以下を指定可能です。
データ型継承ルール (例:
[継承: 内部ルールによる継承]
)組み込みデータ型 (例:
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' |
アキュムレータ — アキュムレータのデータ型
Inherit: Inherit via internal rule
(既定値) | 継承: 入力と同じ
| 継承: 乗算出力と同じ
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
アキュムレータ データ型を指定します。以下を指定可能です。
データ型継承ルール (例:
[継承: 内部ルールによる継承]
)組み込みデータ型 (例:
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' |
状態 — 状態のデータ型
Inherit: Same as accumulator
(既定値) | 継承: 入力と同じ
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
状態のデータ型を指定します。以下を指定可能です。
データ型継承ルール (例:
継承: アキュムレータと同じ
)組み込み整数 (例:
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' |
出力 — 出力データ型
Inherit: Same as accumulator
(既定値) | 継承: 入力と同じ
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| <data type expression>
出力データ型を指定します。以下を指定可能です。
データ型継承ルール (例:
継承: アキュムレータと同じ
)組み込みデータ型 (例:
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' |
出力の最小値 — 範囲チェックの最小出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の下限値。
Simulink は、最小値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMin |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
出力の最大値 — 範囲チェックの最大出力値
[]
(既定値) | スカラー
Simulink がチェックする出力範囲の上限値。
Simulink は、最大値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMax |
型: 文字ベクトル |
値: '[ ]' | スカラー |
既定の設定: '[ ]' |
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールがデータ型をオーバーライドするのを防止
off
(既定値) | on
固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックのデータ型の設定をロックします。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: LockScale |
値: 'off' | 'on' |
既定の設定: 'off' |
整数丸めモード — 固定小数点演算の丸めモード
負方向
(既定値) | 正方向
| 最も近い偶数方向
| 最も近い正の整数方向
| 最も近い整数方向
| 最も簡潔
| ゼロ方向
固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
既定の設定: 'Floor' |
整数オーバーフローで飽和 — オーバーフロー アクションの方法
off
(既定値) | on
オーバーフローで飽和するかラップするかを指定します。
動作 | 根拠 | オーバーフローの影響 | 例 |
---|---|---|---|
このチェック ボックスをオンにする ( | モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。 | オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。 |
|
このチェック ボックスをオンにしない ( | 生成コードの効率を最適化することをお勧めします。 ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。 | オーバーフローは、データ型によって表現される適切な値にラップされます。 |
|
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
詳細
固定小数点信号のフィルター構造のブロック線図
次の図は、固定小数点信号に対して Discrete FIR Filter ブロックを使用したフィルター構造とデータ型を示します。
直接型
入力状態が入力と同じデータ型であるため、このブロック マスクではこの状態データ型を指定できません。
直接型対称
入力状態が入力と同じデータ型であるため、このブロック マスクではこの状態データ型を指定できません。
直接型反対称
入力状態が入力と同じデータ型であるため、このブロック マスクではこの状態データ型を指定できません。
直接型転置
ラティス MA
アルゴリズム
Discrete FIR Filter ブロック内で使用される構造のブロック線図を以下に示します。
直接型
直接型対称
フィルター係数は対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。
直接型反対称
フィルター係数は反対称であると想定されます。ブロックは、係数の前半のみをフィルター処理に使用します。
直接型転置
入力または係数が複素数である場合は、状態も複素数になります。
ラティス MA
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
このブロックは、コードのカスタマイズおよび生成をより効率的に行うためにカスタム状態属性をサポートします。これらの属性にアクセスする、または属性を設定するには、モデル データ エディターを開きます。[モデル化] タブで [モデル データ エディター] をクリックします。例については、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 プロセッサで 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 コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
ハードウェア親和型の有効なリセット制御信号について、ハードウェア レイテンシの厳密な動作を Simulink でモデル化するには、代わりに Discrete FIR Filter (DSP HDL Toolbox) ブロックを使用します。
面積削減または速度向上のため、Discrete FIR Filter ブロックは、ブロックレベルの最適化とサブシステムレベルの最適化のいずれかをサポートします。利用可能なブロックレベル最適化パラメーターについては、ブロックの最適化を参照してください。ブロック最適化を有効にすると、そのブロックはサブシステム最適化の対象にすることができなくなります。ブロック最適化は、設計が単一の 1 チャネル フィルターであるときに使用します。サブシステム最適化は、複数のチャネル間または複数のフィルター間でリソースを共有するために使用します。ブロックをサブシステム最適化の対象にするには、[アーキテクチャ] を [Fully parallel]
に設定します。フィルターのサブシステム最適化 (HDL Coder)を参照してください。
HDL Coder では、ベクトルの各要素が別々のチャネルを表す、Discrete FIR Filter ブロックへのベクトル入力の使用をサポートしています。
ベクトル信号を Discrete FIR Filter ブロック入力端子に接続します。
[入力処理] を
[チャネルとしての要素 (サンプル ベース)]
に指定します。チャネル間でフィルター カーネルを共有して面積を削減するには、[ChannelSharing] プロパティをチャネル数に設定します。
HDL Coder は、Discrete FIR Filter ブロックでプログラム可能なフィルターをサポートしています。
フィルター ブロック マスクで、[係数のソース] を [入力端子] に設定します。
ベクトル信号を
Num
係数端子に接続します。
プログラム可能なフィルターは、以下の場合サポートされません。
分散計算 (DA)
[CoeffMultipliers] が
[csd]
または[factored-csd]
に設定されている場合
HDL Coder は、ベクトルの各要素が時系列のサンプルを表す、Discrete FIR Filter ブロックへのベクトル入力の使用をサポートしています。最大で 512 サンプルの入力ベクトルを使用できます。フレームベースの実装は、固定小数点の入出力データ型をサポートしており、完全精度の内部データ型を使用します。実係数をもつ実数入力信号、実係数をもつ複素数入力信号、または複素係数をもつ実数入力信号を使用できます。また、プログラム可能な係数をもつフレームベースの入力も使用できます。
ベクトル信号を Discrete FIR Filter ブロック入力端子に接続します。
[入力処理] を
[チャネルとしての列 (フレーム ベース)]
として指定し、[フィルター構造] を[直接型]
または[直接型転置]
に設定します。プログラム可能な係数をもつフレームベースの入力の場合は、[フィルター構造] を[直接型]
に設定します。ブロックを右クリックし、[HDL コード]、[HDL ブロック プロパティ] を開きます。[アーキテクチャ] を
[フレームベース]
に設定します。ブロックは、直接型のパラレル HDL アーキテクチャを実装します。完全なシリアル アーキテクチャや部分的なシリアル アーキテクチャなどのその他のアーキテクチャはサポートされていません。フレームベース アーキテクチャ (HDL Coder)を参照してください。
フレームベースの入力フィルターは、以下についてサポートされていません。
オプションのブロックレベル リセットおよびイネーブル制御信号
Resettable Subsystem および Enabled Subsystem
複素係数をもつ複素数入力信号。使用できるのは、実係数をもつ複素数入力信号か、複素係数をもつ実数入力信号のいずれかです。
マルチチャネル入力
共有およびストリーミングの最適化
分散計算 (DA)
オプションのイネーブル端子の有無、およびオプションのリセット端子の有無を問わず、フィルターの HDL コードを生成できます。
完全なパラレルのフィルター構造では、非フレームベースの入力データを使用するとき、複素数入力と複素係数の任意の組み合わせを使用できます。
複素係数は、シリアル フィルター アーキテクチャではサポートされていません。
フレームベースの入力データを使用するときは、複素数入力信号と実係数、または複素係数と実数入力信号のいずれかを使用できます。
複素係数を使用する場合、分散計算 (DA) を使用したり、[CoeffMultipliers] を [csd]
または [factored-csd]
に設定したりすることはできません。
面積と速度の最適化 | |
---|---|
シリアル アーキテクチャ | ハードウェア リソース節約のためにブロックレベルの最適化を使用するには、[アーキテクチャ] をシリアル オプションの 1 つに設定します。HDL フィルター アーキテクチャ (HDL Coder)を参照してください。 Discrete FIR Filter ブロックに [SerialPartition] と [ReuseAccum] を指定するときは、[フィルター構造] を |
分散計算 | 乗算器を LUT およびシフト レジスタに置き換え、乗算器を最小限にするには、分散計算 (DA) フィルターの実装を使用します。HDL フィルターでの分散計算 (HDL Coder)を参照してください。
|
マルチチャネルの面積削減 | チャネル間でフィルター ロジックを共有するには、[ChannelSharing] プロパティをチャネル数に設定します。[ChannelSharing] を使用すると、他の最適化からフィルターが除外されます。 [StreamingFactor] プロパティを使用すると、サブシステム内の対象となるすべてのロジックで同じロジック共有を実現できます。また、このオプションにより、他のサブシステム最適化にフィルターを含めることもできます。フィルターのサブシステム最適化 (HDL Coder)のストリーミングのセクションを参照してください。 |
パイプライン | クロック速度を向上するには、[AddPipelineRegisters] を使用して、既定の線形加算器の代わりにパイプライン化された加算器ツリーを使用します。また、乗算器の前と後の入力パイプライン ステージの数を指定することもできます。HDL フィルター アーキテクチャ (HDL Coder)を参照してください。 |
HDL フィルター プロパティ | |
---|---|
[AddPipelineRegisters] | フィルター内の計算ステージの間にパイプライン レジスタを挿入します。AddPipelineRegisters (HDL Coder) も参照してください。 |
ChannelSharing | マルチチャネル フィルターでは、1 つのフィルターの実装を生成し、チャネル間で共有します。ChannelSharing (HDL Coder) も参照してください。 |
CoeffMultipliers | CSD (正準符号付き桁数) 最適化を使用するよう指定し、係数乗算器をシフト演算および加算演算で置き換えることにより、フィルター面積を削減します。完全なパラレルのフィルター実装を選択すると、[CoeffMultipliers] を [ |
DALUTPartition | 分散計算の部分積 LUT パーティションを、各パーティションと同じサイズをもつベクトルとして指定します。ベクトルのすべての要素の合計が、フィルターの長さと同じでなければなりません。パーティションの最大サイズは 12 タップです。[DALUTPartition] をフィルターの長さに等しいスカラー値に設定し、LUT パーティションなしで DA コードを生成します。DALUTPartition (HDL Coder) も参照してください。 |
DARadix | 並列計算される分散計算ビット合計の数を指定します。DA 基数が 8 ( |
MultiplierInputPipeline | フィルターの乗算器入力に追加するパイプライン ステージの数を指定します。MultiplierInputPipeline (HDL Coder) も参照してください。 |
MultiplierOutputPipeline | フィルターの乗算器出力に追加するパイプライン ステージの数を指定します。MultiplierOutputPipeline (HDL Coder) も参照してください。 |
ReuseAccum | シリアル フィルター実装で、アキュムレータの再利用を有効または無効にします。[ReuseAccum] を [ |
SerialPartition | 部分的シリアルまたはカスケード シリアル フィルター実装のためのパーティションを、各パーティションの長さのベクトルとして指定します。完全シリアルの実装では、このパラメーターをフィルターの長さに設定します。SerialPartition (HDL Coder) を参照してください。 |
HDL ブロック プロパティ | |
---|---|
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
HDL コード生成は、以下ではサポートされていません。
符号なしの入力データ。
非ゼロの初期状態。[初期状態] を
0
に設定する必要があります。フィルター構造:
ラティス MA
。
[CoeffMultipliers] オプションは、完全なパラレル アーキテクチャでのみサポートされています。シリアル アーキテクチャを選択すると、[HDL ブロック プロパティ] ダイアログ ボックスで [CoeffMultipliers] が非表示になります。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2008a で導入R2023b: 複素信号の SIMD コードの生成
R2023b では、Embedded Coder がある場合、モデル コンフィギュレーション パラメーター [ターゲット ハードウェアの命令セット拡張を活用] を使用することで、入力信号が複素数値の場合に Discrete FIR Filter ブロック用の SIMD コードを生成できます。
R2023b: [サンプル時間] パラメーターの条件付き表示
既定では、Discrete FIR Filter ブロックで [ブロック パラメーター] ダイアログ ボックスに [サンプル時間] パラメーターが表示されなくなりました。このパラメーターは、コマンド ラインまたは既存のモデルでサンプル時間を既定値 (-1
) 以外の値に設定した場合にのみ表示されます。詳細については、サンプル時間が推奨されないブロックを参照してください。
参考
Discrete Filter | Digital Filter Design (DSP System Toolbox)
トピック
- サンプルベースおよびフレームベースの概念 (DSP System Toolbox)
- Discrete FIR Filter ブロックのカスタム状態属性
- 状態の取り扱い
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)