Main Content

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

パラメトリクス オーディオ イコライザー用のコード生成

この例では、コード生成で使用する 3 バンド パラメトリック イコライザーのアルゴリズム仕様をモデル化する方法を示します。

必要な MathWorks™ 製品:

  • MATLAB®

  • DSP System Toolbox™

  • Simulink®

  • MATLAB® Coder™

  • Simulink® Coder™

  • Embedded Coder™

はじめに

パラメトリック イコライザーは、オーディオ システムの周波数応答の調整によく使用されます。たとえば、パラメトリック イコライザーを使用すると、さまざまな周波数でピークとディップが生じる物理スピーカーを補正できます。

この例のパラメトリック イコライザー アルゴリズムには、目的の周波数応答を実現するように係数を調整できる 3 つの 2 次型 (双 2 次) フィルターが用意されています。シミュレーションではユーザー インターフェイスを使用して、フィルター係数を動的に調整し、動作を検証します。コード生成では、係数変数に名前を付けてファイルに配置するので、ターゲット プロセッサでの実行中に係数が動的に変化する他のソフトウェア コンポーネントからもアクセスできます。

以下の各節では、パラメトリック イコライザー アルゴリズムの指定方法、シミュレーションによる動作の検証方法、さらにコードの生成およびカスタマイズ方法について説明します。

アルゴリズムの指定

パラメトリック イコライザー アルゴリズムの指定は、次の 2 つの部分で構成されます。モデル仕様およびパラメーター付きデータ仕様。モデル仕様は、アルゴリズムの信号フローを指定する Simulink サブシステムです。モデル仕様では、MATLAB ワークスペースに存在するパラメーター付きデータにもアクセスします。パラメーター付きデータ仕様は、Simulink モデルがアクセスするデータを作成する MATLAB スクリプトです。

この例では、モデル仕様は、Simulink モデル dspparameqcodegen の Equalizer サブシステムです。このサブシステムでは、入力は 3 つのカスケード等化帯域に通されます。各帯域内の係数の変化は、Biquad Filter ブロックに渡される前に漏れの影響をもつ積分器によって平滑化されます。各 Biquad Filter ブロックは、異なるフィルター構造を使用するように設定されています。異なるフィルター構造を選択するのは、この例の後半でコード生成における違いを示すためです。

この例では、パラメーター付きデータ仕様は MATLAB スクリプト dspparameq_data.m です。この MATLAB スクリプトでは、初期フィルター係数に加えて、コード生成属性が指定されます。モデル dspparameqcodegen を開くと、モデルの PreLoadFcn コールバックは、MATLAB ワークスペースにパラメーター データを作成する dspparameq_data.m スクリプトを実行するように設定されます。

シミュレーションによる動作の検証

シミュレーション テスト ベンチを使用すると、アルゴリズムの動作を検証できます。この例のテスト ベンチは、シミュレーション モデル dspparameqcodegen および MATLAB のカスタム ユーザー インターフェイス (UI) で構成されています。

この UI は、"Launch Parameter Tuning UI" リンクをクリックして起動できます。UI により、シミュレーション中に MATLAB ワークスペース内の係数パラメーター データを動的に調整できます。

Equalizer サブシステム用の C コードの生成

目的のシミュレーション動作に達したら、アルゴリズム指定に基づき Equalizer サブシステム用の C コードを生成できます。このモデルは、Embedded Coder 製品からアクセスできる一般的なコード生成のカスタマイズを示すように構成されています。これらのカスタマイズにより、コードの確認と積分プロセスが容易になります。以下の節では、このモデルのコードのカスタマイズをいくつか示し、それらのカスタマイズの詳細を説明するドキュメンテーションを紹介します。

C コードを生成するには、Equalizer サブシステムを右クリックし、[コード生成]、[サブシステムのビルド] を選択します。その後、調整可能なパラメーターの入力を促すプロンプトが表示されたら、[ビルド] ボタンをクリックします。次のハイパーリンクをクリックして、コードを生成することもできます。Equalizer サブシステム用の C コードの生成

モデルとのリンクによるコード生成レポート

モデルは、生成されたソース ファイルとヘッダー ファイルでの移動に使用できる HTML レポートを生成するように設定されています。このレポートでは、生成コードとモデルの間で双方向のリンクも可能です。たとえば、各 Biquad Filter ブロックは、異なるフィルター構造を使用するように設定されています。任意の Biquad Filter ブロックを右クリックして、[コード生成]、[コードに移動] を選択すると、そのブロックから関連するコードまでトレースできます。

モデルとコード間のトレーサビリティの詳細については、Trace Simulink Model Elements in Generated Code (Embedded Coder)を参照してください。

生成コードの呼び出し

モデル初期化関数およびモデル step 関数を呼び出すと、生成コードをアプリケーションに組み込むことができます。生成コードを呼び出す方法を示す ert_main.c ファイルが例として生成されます。この例では、main() によって Equalizer_initialize() が呼び出され、状態が初期化されます。さらに例 rt_OneStep() は、割り込みなどの周期的なメカニズムで Equalizer.c ファイルから Equalizer_step() を呼び出す方法を示します。

生成コードを別のアプリケーションに組み込む方法の詳細については、Deploy Applications to Target Hardware (Embedded Coder)を参照してください。

データ インターフェイスの入出力

パラメーター付きデータ仕様ファイル dspparameq_data.m は、MATLAB ワークスペースに in および out 信号データ オブジェクトを作成します。これらのデータ オブジェクトは、モデル内の信号線と関連付けられ、生成コード内の対応する変数の説明およびストレージ クラスの指定に使用されます。たとえば、in 信号と out 信号は、Equalizer.c でグローバル変数として宣言されます。モデル step 関数を実行するため、アプリケーションは in にデータを書き込み、関数 Equalizer_step() を呼び出し、out から結果を読み取ります。

データ オブジェクトの詳細については、Create Data Objects for Code Generation with Data Object Wizard (Embedded Coder)を参照してください。

コード コメントでのテキスト注釈

モデルにテキストとして入力された設計ドキュメンテーションを、生成コードのコメントに挿入できます。Equalizer サブシステムには、キーワード S:Description を含む注釈テキストが含まれます。コード ジェネレーターは、このキーワードで始まるテキストを識別し、生成コードにコメントとしてキーワードに続くテキストを挿入します。

コード コメントに注釈テキストを挿入する方法の詳細については、Add Global Comments in the Generated Code (Embedded Coder)を参照してください。

関数の分割

生成コードのナビゲーションを容易にするために、イコライザー帯域の各サブシステムは、atomic となるように設定され、独自の関数を作成します。呼び出し順序は関数 Equalizer_step() で確認できます。

関数の名前付けと配置のカスタマイズの詳細については、非バーチャル サブシステムのコード生成について (Embedded Coder)を参照してください。

係数ファイルの配置

パラメーター付きデータ仕様ファイル dspparameq_data.m は、MATLAB ワークスペースに係数のパラメーター データ オブジェクトを作成します。これらのデータ オブジェクトは、それぞれ別のファイル biquad_coeffs.c および biquad_coeffs.h で係数変数を定義し、宣言するように設定されます。係数を別のファイルに分割することにより、他のソフトウェア コンポーネントがこのデータにアクセスできるようになります。たとえば、展開済みアプリケーションで、これらの変数が Equalizer_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 レポートによって参照される生成ファイルは、Equalizer_ert_rtw ディレクトリ内にあります。プロジェクトに統合するため、このディレクトリ内のファイルのほか、MATLAB アプリケーションのインストール ディレクトリ内の他のファイルが必要になる場合があります。生成コードの他の環境への移植を容易にするため、このモデルは PackNGo 機能を使用するように設定されています。PackNGo 機能では、必要なファイルをすべて zip ファイル Equalizer.zip にパッケージ化します。この zip ファイルには、必要なファイルがすべて含まれますが、必要ではない追加のファイルも含まれている場合があります。

他の環境への統合のためのファイルのパッケージ化の詳細については、生成コードの移動または共有 (Simulink Coder)を参照してください。

関連するトピック