Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

個別アドレスオプションを備えた自動生成メモリマップ

この例では、 Simulink Coderまたは Embedded Coder ™ の tlmgenerator ターゲットを使用してSimulink®モデルから SystemC™/TLM コンポーネントを生成するときに、個別のアドレス オプションを使用して自動生成されたメモリ マップを使用する方法をEmbedded Coder。

Simulinkでは、各コンポーネントの入力または出力は別のコンポーネントにポイントツーポイントでバインドされます。SystemC/TLM では、各コンポーネントは TLM ソケットを通じて通信します。このソケットは、TLM トランザクション内でフォーマットされたすべての受信および送信通信を処理します。システムごとに通信の処理方法が異なるため、 Simulinkモデルから生成される SystemC/TLM コンポーネントの通信インターフェイスを定義する必要があります。この SystemC/TLM コンポーネントの使用目的によっては、この通信インターフェイスでは、コンポーネント内の各入力/出力のメモリ マップ (またはアドレス) を構築する必要がある場合があります。このメモリ マップは単純な場合もあれば、詳細な場合もあります。

個別アドレス オプションを使用した自動生成メモリ マップは、モデル出力ごとに 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 component generationを開始します。または、 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 19.694s

5.生成されたファイルを開く

MATLABエディターで次のファイルを開きます。

6.生成されたコードを観察する

次のコード行を見つけます。これらの行は、個別のアドレス メモリ マップを持つ TLM コンポーネントとして生成された場合の FIR フィルターの入力定義と出力定義を表します。

生成された TLM コンポーネントに一連の入力を提供するには、TLM イニシエーターは 2 つの書き込み TLM トランザクションを送信する必要があります。

  • 1 つは、アドレス D​​ualFilter_combined_IN_BANK_ADDR + input_1_REG_ADDR にタイプ input_1_REG_T のデータを含むペイロードです。

  • 1 つは、アドレス D​​ualFilter_combined_IN_BANK_ADDR + input_2_REG_ADDR にタイプ input_2_REG_T のデータを含むペイロードです。

生成された TLM コンポーネントから一連の出力を取得するには、TLM イニシエーターは 3 つの読み取り TLM トランザクションを送信する必要があります。

  • 1 つは、アドレス D​​ualFilter_combined_OUT_BANK_ADDR + output_1_REG_ADDR にタイプ output_1_REG_T のデータを含むペイロードです。

  • 1 つは、アドレス D​​ualFilter_combined_OUT_BANK_ADDR + output_2_REG_ADDR にタイプ output_2_REG_T のデータを含むペイロードです。