このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,コード生成で使用する3バンドパラメトリクスイコライザーのアルゴリズム仕様をモデル化する方法を示します。
必要なMathWorks™製品:
MATLAB®
信号处理工具箱™
DSP系统工具箱™
金宝app仿真软件®
MATLAB®编码器™
金宝app仿真软件®编码器™
嵌入式编码器®
パラメトリクスイコライザーは,オーディオシステムの周波数応答の調整によく使用されます。たとえば,パラメトリクス イコライザーを使用すると、さまざまな周波数でピークとディップが生じる物理スピーカーを補正できます。
この例のパラメトリクスイコライザーアルゴリズムには,目的の周波数応答を実現するように係数を調整できる3つの2次型(双2次)フィルターが用意されています。シミュレーションではユーザーインターフェイスを使用して,フィルター係数を動的に調整し,動作を検証します。コード生成では、係数変数に名前を付けてファイルに配置するので、ターゲット プロセッサでの実行中に係数が動的に変化する他のソフトウェア コンポーネントからもアクセスできます。
以下の各節では,パラメトリクスイコライザーアルゴリズムの指定方法,シミュレーションによる動作の検証方法,さらにコードの生成およびカスタマイズ方法について説明します。
パラメトリクスイコライザーアルゴリズムの指定は,次の2つの部分で構成されます。モデル仕様およびパラメーター付きデータ仕様。モデル仕様は、アルゴリズムの信号フローを指定する Simulink サブシステムです。モデル仕様では、MATLAB ワークスペースに存在するパラメーター付きデータにもアクセスします。パラメーター付きデータ仕様は、Simulink モデルがアクセスするデータを作成する MATLAB スクリプトです。
この例では,モデル仕様は,金宝app仿真软件モデルdspparameqcodegenの均衡器サブシステムです。このサブシステムでは,入力は3つのカスケード等化帯域に通されます。各帯域内の係数の変化は,Biquad过滤器ブロックに渡される前に漏れの影響をもつ積分器によって平滑化されます。各Biquad过滤器ブロックは,異なるフィルター構造を使用するように設定されています。異なるフィルター構造を選択するのは,この例の後半でコード生成における違いを示すためです。
この例では,パラメーター付きデータ仕様はMATLABスクリプトdspparameq_data.mです。このMATLABスクリプトでは,初期フィルター係数に加えて,コード生成属性が指定されます。モデルdspparameqcodegenを開くと,モデルのPreLoadFcn
コールバックは,MATLABワークスペースにパラメーターデータを作成するdspparameq_data.mスクリプトを実行するように設定されます。
シミュレーションテストベンチを使用すると,アルゴリズムの動作を検証できます。この例のテストベンチは,シミュレーションモデルdspparameqcodegenおよびMATLABのカスタムユーザーインターフェイス(UI)で構成されています。
このUIは,“发射参数调优UI”リンクをクリックして起動できます。UIにより,シミュレーション中にMATLABワークスペース内の係数パラメーターデータを動的に調整できます。
目的のシミュレーション動作に達したら,アルゴリズム指定に基づき均衡器サブシステム用のCコードを生成できます。このモデルは、嵌入式编码器製品からアクセスできる一般的なコード生成のカスタマイズを示すように構成されています。これらのカスタマイズにより,コードの確認と積分プロセスが容易になります。以下の節では,このモデルのコードのカスタマイズをいくつか示し,それらのカスタマイズの詳細を説明するドキュメンテーションを紹介します。
Cコードを生成するには,均衡器サブシステムを右クリックし,[C / c++コード],[このサブシステムをビルド]を選択します。その後,調整可能なパラメーターの入力を促すプロンプトが表示されたら,[ビルド]ボタンをクリックします。次のハイパーリンクをクリックして,コードを生成することもできます。均衡器サブシステム用のCコードの生成。
モデルとのリンクによるコード生成レポート
モデルは,生成されたソースファイルとヘッダーファイルでの移動に使用できるHTMLレポートを生成するように設定されています。このレポートでは,生成コードとモデルの間で双方向のリンクも可能です。たとえば,各Biquad过滤器ブロックは,異なるフィルター構造を使用するように設定されています。任意のBiquad过滤器ブロックを右クリックして,[C / c++コード],[C / c++コードに移動]を選択すると,そのブロックから関連するコードまでトレースできます。
モデルとコード間のトレーサビリティの詳細については,跟踪生成代码金宝app中的Simulink模型元素(嵌入式编码)を参照してください。
生成コードの呼び出し
モデル初期化関数およびモデル一步関数を呼び出すと,生成コードをアプリケーションに組み込むことができます。生成コードを呼び出す方法を示すert_main.c
ファイルが例として生成されます。この例では,main ()
によってEqualizer_initialize ()
が呼び出され,状態が初期化されます。さらに例rt_OneStep ()
は,割り込みなどの周期的なメカニズムでEqualizer.c
ファイルからEqualizer_step ()
を呼び出す方法を示します。
生成コードを別のアプリケーションに組み込む方法の詳細については,将生成的独立可执行程序部署到目标硬件(嵌入式编码)を参照してください。
データインターフェイスの入出力
パラメーター付きデータ仕様ファイルdspparameq_data.mは,MATLABワークスペースに在
および出
信号データオブジェクトを作成します。これらのデータオブジェクトは,モデル内の信号線と関連付けられ,生成コード内の対応する変数の説明およびストレージクラスの指定に使用されます。たとえば,在
信号と出
信号は,Equalizer.c
でグローバル変数として宣言されます。モデルstep 関数を実行するため、アプリケーションは在
にデータを書き込み,関数Equalizer_step ()
を呼び出し,出
から結果を読み取ります。
データオブジェクトの詳細については,使用数据对象向导创建用于代码生成的数据对象(嵌入式编码)を参照してください。
コードコメントでのテキスト注釈
モデルにテキストとして入力された設計ドキュメンテーションを,生成コードのコメントに挿入できます。均衡器
サブシステムには,キーワードS:描述
を含む注釈テキストが含まれます。コードジェネレーターは,このキーワードで始まるテキストを識別し,生成コードにコメントとしてキーワードに続くテキストを挿入します。
コードコメントに注釈テキストを挿入する方法の詳細については,在生成的代码中添加全局注释(嵌入式编码)を参照してください。
関数の分割
生成コードのナビゲーションを容易にするために,イコライザー帯域の各サブシステムは,原子となるように設定され,独自の関数を作成します。呼び出し順序は関数Equalizer_step ()
で確認できます。
関数の名前付けと配置のカスタマイズの詳細については,非バーチャルサブシステムのコード生成について(嵌入式编码)を参照してください。
係数ファイルの配置
パラメーター付きデータ仕様ファイルdspparameq_data.mは,MATLABワークスペースに係数のパラメーターデータオブジェクトを作成します。これらのデータオブジェクトは,それぞれ別のファイルbiquad_coeffs.c
およびbiquad_coeffs.h
で係数変数を定義し,宣言するように設定されます。係数を別のファイルに分割することにより,他のソフトウェアコンポーネントがこのデータにアクセスできるようになります。たとえば,配布後のアプリケーションで,これらの変数がEqualizer_step ()
によって使用される前に,別のソフトウェアコンポーネントによって実行時にそれらが変更されるようにスケジュールできます。
データオブジェクトのファイルの配置の詳細については,在生成的文件中控制全局数据定义和声明的放置(嵌入式编码)を参照してください。
変数係数コメント内のフィルター設計パラメーター
パラメーター付きデータファイルで,またはグラフィカルユーザーインターフェイスを使用して係数が計算された場合,フィルター設計パラメーターは係数パラメーターデータオブジェクトの描述
フィールドに保存されます。モデルは、生成コードにコメントとして設計パラメーターを挿入するように設定されています。これにより、コードの検証者は、フィルターの設計に使用された設計パラメーターを簡単に識別できます。
生成コード内のデータオブジェクトのコメントをカスタマイズする方法の詳細については,在生成的代码中为变量添加自定义注释(嵌入式编码)を参照してください。
生成ファイルのパッケージ化
HTMLレポートによって参照される生成ファイルは,Equalizer_ert_rtw
ディレクトリ内にあります。プロジェクトに統合するため,このディレクトリ内のファイルのほか,MATLABアプリケーションのインストールディレクトリ内の他のファイルが必要になる場合があります。生成コードの他の環境への移植を容易にするため,このモデルはPackNGo機能を使用するように設定されています。PackNGo機能では,必要なファイルをすべてzipファイルEqualizer.zip
にパッケージ化します。このzipファイルには,必要なファイルがすべて含まれますが,必要ではない追加のファイルも含まれている場合があります。
他の環境への統合のためのファイルのパッケージ化の詳細については,別の開発環境にコードを移動する場合(嵌入式编码)を参照してください。