このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
内挿 FIR フィルターのコード生成
マルチレート多段フィルターのカスケードを使用して、高次 FIR フィルターを効率的に設計および実装します。フィルターから生成された C コードを生成し、カスタマイズします。
必要な MathWorks™ 製品:
MATLAB®
DSP System Toolbox™
Simulink®
MATLAB® Coder™
Simulink® Coder™
Embedded Coder™
はじめに
マルチレート多段アプローチを使用すると、高次 FIR フィルターを効率的に実装できます。実装コストを削減するために、単一ステージの高次フィルターを低次マルチレート フィルターのカスケードに分割できます。
この例の内挿 FIR (ifir) は、目的の周波数応答を実現するように係数を調整できる FIR 間引き、FIR フィルター、および FIR 内挿器のカスケードを使用します。コード生成では、係数変数に名前を付けてファイルに配置するので、ターゲット プロセッサでの実行中に係数が動的に変化する他のソフトウェア コンポーネントからもアクセスできます。
次のセクションでは、内挿された FIR 設計を指定する方法、シミュレーションを通じて動作を調査する方法、生成されたコードを生成およびカスタマイズする方法について説明します。
設計の指定
内挿 FIR の設計と実装アルゴリズムは、モデル仕様とパラメーター付きデータ仕様の 2 つの部分で指定します。モデル仕様は、アルゴリズムの信号フローを指定する Simulink サブシステムです。モデル仕様では、MATLAB ワークスペースに存在するパラメーター付きデータにもアクセスします。パラメーター付きデータ仕様は、Simulink モデルがアクセスするデータを作成する MATLAB スクリプトです。
この例では、モデル仕様は Simulink モデル dspifircodegen の InterpolatedFIR サブシステムです。このサブシステムでは、入力は FIR 間引き、FIR フィルター処理、および FIR 内挿のカスケードに通されます。
この例では、パラメーター付きデータ仕様は MATLAB スクリプト dapifirdata.m です。この MATLAB スクリプトでは、初期フィルター係数に加えて、コード生成属性が指定されます。モデル dspifircodegen を開くと、モデルの PreLoadFcn
コールバックは、MATLAB ワークスペースにパラメーター データを作成する dspifirdata.m スクリプトを実行するように構成されます。
シミュレーションによる動作の調査
モデルをシミュレートして、内挿された FIR の設計と実装の動作を調査できます。このモデルでは、Spectrum Analyzer ブロックを使用して振幅応答を表示します。モデルを実行するには、[シミュレーション] タブの [実行] をクリックします。シミュレーション時間は 1000 秒に設定されています。
内挿 FIR サブシステム用の C コードの生成
目的のシミュレーション動作に達したら、設計仕様に基づいて InterpolatedFIR
サブシステム用の C コードを生成できます。この例で使用するモデルは、Embedded Coder 製品からアクセスできる一般的なコード生成のカスタマイズを示すように構成されています。これらのカスタマイズにより、コードの確認や統合プロセスが簡略化されます。次のセクションでは、このモデルにいくつかのコード カスタマイズを適用する方法を示し、これらのカスタマイズを詳しく説明するドキュメンテーションへのリンクを紹介します。
C コードを生成するには、InterpolatedFIR
サブシステムを右クリックし、[C/C++ コード]、[このサブシステムをビルド] を選択します。次のハイパーリンクをクリックして、コードを生成することもできます。InterpolatedIFIR サブシステム用にコードを生成する。
双方向リンクを使用したコード生成レポート
モデルは、生成されたソース ファイルとヘッダー ファイルでの移動に使用できる HTML レポートを生成するように構成されています。このレポートでは、生成コードとモデルの間で双方向のリンクも可能です。
モデルとコードの間のトレーサビリティの詳細については、Trace Simulink Model Elements in Generated Code (Embedded Coder)を参照してください。
生成されたコードの呼び出し
モデル初期化関数およびモデル ステップ関数を呼び出すと、生成コードをアプリケーションに組み込むことができます。例として生成された ert_main.c
ファイルを見ると、生成コードを呼び出す方法がわかります。[ert_main.c] の例 main()
では、InterpolatedFIR_initialize()
を呼び出して状態を初期化しています。ert_main.c
のコード例 rt_OneStep()
では、割り込みなどの周期的なメカニズムによってファイル InterpolatedFIR.c
から InterpolatedFIR_step()
を呼び出す方法を示しています。
生成コードを別のアプリケーションに組み込む方法の詳細については、Deploy Applications to Target Hardware (Embedded Coder)を参照してください。
データ インターフェイスの入出力
パラメーター付きデータ仕様ファイル dspifirdata.m は、MATLAB ワークスペースに信号データ オブジェクト in
および out
を作成します。これらのデータ オブジェクトは、モデル内の信号線と関連付けられ、生成コード内の対応する変数の説明およびストレージ クラスの指定に使用されます。たとえば、信号 in
と信号 out
は InterpolatedFIR.c
でグローバル変数として宣言されます。モデル ステップ関数を実行するため、アプリケーションは in
にデータを書き込み、InterpolatedFIR_step()
関数を呼び出し、out
から結果を読み取ります。
データ オブジェクトの詳細については、Create Data Objects for Code Generation with Data Object Wizard (Embedded Coder)を参照してください。
コード コメントでのテキスト注釈
モデルにテキストとして入力された設計ドキュメンテーションを、生成コード内にコメントとして挿入できます。InterpolatedFIR
サブシステムには、キーワード S:Description
を含む注釈テキストが含まれます。コード ジェネレーターは、このキーワードで始まるテキストを識別し、生成コードにコメントとしてキーワードに続くテキストを挿入します。
コード コメントに注釈テキストを挿入する方法の詳細については、Add Global Comments in the Generated Code (Embedded Coder)を参照してください。
係数ファイルの配置
パラメーター付きデータ仕様ファイル dspifirdata.m は、MATLAB ワークスペースに係数のパラメーター データ オブジェクトを作成します。これらのデータ オブジェクトは、それぞれ別のファイル ifir_coeffs.c
と ifir_coeffs.h
で係数変数を定義し、宣言するように構成されています。係数を別のファイルに分割することにより、他のソフトウェア コンポーネントがこのデータにアクセスできるようになります。たとえば、展開済みアプリケーションで、これらの変数が InterpolatedFIR_step()
によって使用される前に、別のソフトウェア コンポーネントによって実行時にそれらが変更されるようにスケジュールできます。
データ オブジェクトのファイルの配置の詳細については、Control Placement of Global Data Definitions and Declarations in Generated Files (Embedded Coder)を参照してください。
変数係数コメント内のフィルター設計パラメーター
係数が (パラメーター付きデータ ファイルで) 計算された場合、フィルター設計パラメーターは係数パラメーター データ オブジェクトの Description
フィールドに保存されます。モデルは、生成コードにコメントとして設計パラメーターを挿入するように設定されています。これにより、コードの検証者は、フィルターの設計に使用された設計パラメーターを簡単に識別できます。
生成コード内のデータ オブジェクトのコメントをカスタマイズする方法の詳細については、Add Custom Comments for Variables in the Generated Code (Embedded Coder)を参照してください。
生成ファイルのパッケージ化
HTML レポートによって参照される生成ファイルは、InterpolatedFIR_ert_rtw
ディレクトリ内にあります。プロジェクトに統合するため、このディレクトリ内のファイルのほか、MATLAB アプリケーションのインストール ディレクトリ内の他のファイルが必要になる場合があります。生成コードの他の環境への移植を容易にするため、このモデルは PackNGo 機能を使用するように設定されています。PackNGo 機能では、必要なファイルをすべて zip ファイル InterpolatedFIR.zip
にパッケージ化します。この zip ファイルには、必要なファイルがすべて含まれますが、必要ではない追加のファイルも含まれている場合があります。
他の環境への統合のためのファイルのパッケージ化の詳細については、生成コードの移動または共有 (Simulink Coder)を参照してください。
参考
Random Source | FIR Decimation | Discrete FIR Filter (Simulink) | FIR Interpolation | Spectrum Analyzer
トピック
- Generate and Deploy SIMD Optimized Code for Interpolated FIR Filter on Intel Desktops
- スタンドアロン実行可能ファイルの生成と UDP を使用した通信
- Trace Simulink Model Elements in Generated Code (Embedded Coder)
- Create Data Objects for Code Generation with Data Object Wizard (Embedded Coder)
- Add Global Comments in the Generated Code (Embedded Coder)
- Control Placement of Global Data Definitions and Declarations in Generated Files (Embedded Coder)
- Add Custom Comments for Variables in the Generated Code (Embedded Coder)
- 生成コードの移動または共有 (Simulink Coder)