このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
個別アドレスオプション付きの自動生成メモリマップ
この例では、Simulink Coder または Embedded Coder ™ のいずれかの tlmgenerator ターゲットを使用して Simulink® モデルから SystemC™/TLM コンポーネントを生成するときに、個別のアドレス オプションを使用して自動生成されたメモリ マップを使用する方法を説明します。
Simulink では、各コンポーネントの入力または出力は、別のコンポーネントにポイントツーポイントでバインドされます。SystemC/TLM では、各コンポーネントは TLM ソケットを介して通信します。このソケットは、TLM トランザクション内でフォーマットされたすべての受信および送信通信を処理します。各システムは通信を異なる方法で処理するため、Simulink モデルから SystemC/TLM コンポーネントを生成するときに、SystemC/TLM コンポーネントの通信インターフェイスを定義する必要があります。この SystemC/TLM コンポーネントの使用目的に応じて、この通信インターフェイスでは、コンポーネント内の各入力/出力に対してメモリ マップ (またはアドレス) を構築することが必要になる場合があります。このメモリ マップは単純なものでも詳細なものでもかまいません。
個別アドレス オプションによる自動生成メモリ マップは、モデル出力ごとに 1 つの読み取りレジスタと、個別のアドレスを持つモデル入力ごとに 1 つの書き込みレジスタを持つ TLM コンポーネントを生成します。各 Simulink モデル入力は対応する書き込みレジスタにバインドされ、各出力は対応する読み取りレジスタにバインドされます。このオプションを使用して作成された TLM コンポーネントは、仮想プラットフォーム (VP) でテストベンチ内のスタンドアロン コンポーネントとして使用したり、通信チャネルに接続したりすることができます。
この例では、SystemC/TLM 生成の基礎として FIR フィルターの Simulink モデルを使用します。
この例を実行するための要件:
SystemC 2.3.1 (TLM ライブラリを含む)
メモ: 例には、コード生成ビルド手順が含まれています。Simulink では、MATLAB インストール領域にプログラムをビルドすることはできません。必要に応じて、ビルドを開始する前に、MATLAB インストール領域以外の作業ディレクトリに変更します。
1. 事前設定されたモデルを開く
個別のアドレスを持つ自動生成されたメモリ マップを含む FIR フィルター モデル を開くには、[モデルを開く] ボタンをクリックします。
次のモデルは Simulink で開きます。
2. 個別アドレスでメモリマップを自動生成するオプションを設定する
構成パラメータ ダイアログ ボックスで、左側のペインから TLM 生成 ビューを選択します。TLM マッピング タブの ソケット マッピング で、入力データ、出力データ、および制御用の 1 つの結合 TLM ソケット を選択します。次の図に示すように、結合された TLM ソケット の下で、自動生成されたメモリ マップ と 個別の入力および出力アドレス オフセット を選択します。
3. その他のオプションを設定する
残りの TLM 生成 オプションを好みに応じて設定し (またはデフォルト値のままにして)、OK をクリックしてこれらの設定を適用し、構成パラメータ ダイアログ ボックスを終了します。
4. モデルの作成
モデル ウィンドウで、DualFilter ブロックを右クリックし、コンテキスト メニューで C/C++ コード > このサブシステムのコード生成 を選択して、TLM コンポーネント生成 を開始します。または、MATLAB コマンド ウィンドウで次のコマンドを実行することもできます。
>> slbuild('tlmgdemo_aimem/DualFilter');
MATLAB コマンド ウィンドウに次のメッセージが表示されたら、生成は完了です。
### Starting Simulink Coder build procedure for model: DualFilter ### Successful completion of Simulink Coder build procedure for model: DualFilter Build Summary Top model targets built: Model Action Rebuild Reason =============================================================================== DualFilter Code generated. Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 21.726s
5. 生成されたファイルを開く
MATLAB エディターで次のファイルを開きます。
6. 生成されたコードを観察する
次のコード行を見つけます。これらの行は、個別のアドレス メモリ マップを持つ TLM コンポーネントとして生成された場合の FIR フィルタの入力および出力定義を表します。
生成された TLM コンポーネントに入力セットを提供するには、TLM イニシエーターは 2 つの書き込み TLM トランザクションを送信する必要があります。
アドレス DualFilter_combined_IN_BANK_ADDR + input_1_REG_ADDR にタイプ input_1_REG_T のデータを含むペイロードを持つもの。
アドレス DualFilter_combined_IN_BANK_ADDR + input_2_REG_ADDR にタイプ input_2_REG_T のデータを含むペイロードを持つもの。
生成された TLM コンポーネントから出力セットを取得するには、TLM イニシエーターは 3 つの読み取り TLM トランザクションを送信する必要があります。
アドレス DualFilter_combined_OUT_BANK_ADDR + output_1_REG_ADDR にタイプ output_1_REG_T のデータを含むペイロードを持つもの。
アドレス DualFilter_combined_OUT_BANK_ADDR + output_2_REG_ADDR にタイプ output_2_REG_T のデータを含むペイロードを持つもの。