Main Content

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

単一アドレスオプションによる自動生成メモリマップ

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

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

単一アドレス オプションによる自動生成メモリ マップは、それぞれ 1 つのアドレスを持つ 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_asmem/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 12.71s

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

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

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

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

生成された TLM コンポーネントに入力セットを提供するには、TLM イニシエーターは、アドレス DualFilter_combined_IN_BANK_ADDR にタイプ DualFilter_combined_IN_BANK_T のデータを含むペイロードを持つ書き込み TLM トランザクションを送信する必要があります。

生成された TLM コンポーネントから出力セットを取得するには、TLM イニシエーターは、アドレス DualFilter_combined_OUT_BANK_ADDR にタイプ DualFilter_combined_OUT_BANK_T のデータを含むペイロードを持つ読み取り TLM トランザクションを送信する必要があります。