Main Content

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

メモリマップ付き IP-XACT をインポート

この例では、tlmgenerator ターゲットを使用して Simulink® モデルから SystemC™ またはトランザクション レベル モデリング (TLM) コンポーネントを生成するときに、インポートされた IP-XACT 仕様をメモリ マップとともに使用する方法を示します。tlmgenerator ターゲットは、Simulink Coder ™ または Embedded Coder ™ のいずれかに使用できます。

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

インポート IP-XACT オプションは、IP-XACT 仕様ファイルに従って、Simulink モデルから TLM コンポーネントを生成します。この例では、IP-XACT ファイルは、調整可能なパラメータのメモリ マップを持つ 1 つの tlm ソケットを指定します。各パラメータは、この tlm ソケット内の対応する読み取りまたは書き込みレジスタにバインドされます。生成された TLM コンポーネントを仮想プラットフォーム (VP) でテストベンチのスタンドアロン コンポーネントとして使用するか、通信チャネルに接続します。

この例では、SystemC または TLM 生成の基礎として FIR フィルターの Simulink モデルを使用します。

この例を実行するための要件:

  • SystemC 2.3.1 (TLM ライブラリを含む)

メモ: この例には、コード生成ビルド手順が含まれています。Simulink では、MATLAB® インストール領域にプログラムをビルドすることはできません。必要に応じて、ビルドを開始する前に、MATLAB インストール領域以外の作業ディレクトリに変更します。

1. 事前設定モデルを開く

IPXact をインポートした FIR フィルター モデル (メモリ マップ付き) を開くには、[モデルを開く] ボタンをクリックします。

次のモデルは Simulink で開きます。

2. IP-XACT ファイルを開く

この例で使用される IP-XACT ファイル を MATLAB エディターで開きます。または、MATLAB コマンド ウィンドウで次のコマンドを実行します。

  >> open('tlmgdemo_ipxactmem.xml');

IP-XACT ファイルが MATLAB エディターで開きます。

3. IP-XACTファイルを調べる

この IP-XACT ファイルのアーキテクチャ ビューと対応する Simulink モデルを以下に示します。この IP-XACT には、2 つの入力ポート (LPF_inputLPHPF_input)、2 つの出力ポート (LPF_outputLPHPF_output)、および 1 つのバス インターフェイス (PROCESSOR_BUS) を持つ DualFilter コンポーネントが含まれています。これらの入力ポートと出力ポートは、それぞれ DualFilter モデルの入力と出力にマッピングされます。バス インターフェイス (PROCESSOR_BUS) には、メモリ マップ (DualFilter_MEM_MAP) が含まれています。メモリ マップ内には、3 つのアドレス ブロック (LP_FILTER_BANKLPHP_FILTER_BANK、および EXCLUDED_BANK) があります。LP_FILTER_BANK には、Simulink モデルの LP フィルタ係数パラメータにマップされるレジスタが含まれています。LPHP_FILTER_BANK には、Simulink モデルの LPHP フィルタ係数入力にマップされるレジスタが含まれています。EXCLUDED_BANK は、Simulink モデル内に対応する表現がない追加のレジスタ バンクです。

このセクション (MWMapInput) は、Simulink モデル入力 LPF_input がポート LPF_input の TLM コンポーネントにマップされていることを示します。

同様に、このセクション (MWMapOutput) は、Simulink モデル出力 LPF_output が TLM コンポーネント出力ポート LPF_output にマップされていることを示します。

このセクション (MWMap) は、バス インターフェイス PROCESSOR_BUS が TLM ソケットにマップされていることを示します。このバス インターフェイスには、DualFilter_MEM_MAP という名前のメモリ マップが含まれています。

このセクション (MWMapParam) は、LP フィルタ パラメータ LPF_coef_1 からレジスタ LPF_COEF_1 へのマッピングを表します。

このセクション (MWMapInput) は、レジスタ LPHPF_COEF_1 への LPHP フィルター入力 coef_1 マッピングを表します。

メモリ マップから特定のアドレス ブロックまたはレジスタのコードを生成しない場合は、そのアドレス ブロックまたはレジスタの MWMap を false に設定します。このセクション(MWMap)では、EXCLUDED_BANKという名前のアドレスブロックをTLMコード生成から除外する方法を示します。

同様に、このセクション(MWMap)では、EXCLUDED_REG_1という名前のレジスタをTLMコード生成から除外する方法を示します。

4. 構成パラメータオプションの設定

このモデルを TLM 生成用に構成するには、構成パラメータで次のオプションを設定します。

a.構成パラメータ ダイアログ ボックスで、左側のペインから TLM ジェネレーター ビューを選択します。

b.TLM マッピング タブの ソケット マッピング で、インポートされた IP-XACT ファイルによって定義 を選択します。

c. IP-XACT ファイルのインポート で、次の画像に示すように、IP-XACT ファイルの場所を参照します。

d. (オプション) Simulink モデル内に対応する表現がないレジスタ/ビットフィールドのコードを生成する場合は、[IP-XACT ファイルのインポート] で、[マップされていない IP-XACT レジスタ/ビットフィールドのコードを生成する] を選択します。

5. モデルの作成

モデル ウィンドウで、DualFilter ブロックを右クリックし、[C/C++ コード] > [このサブシステムをビルド] を選択します。ポップアップ ウィンドウで ビルド をクリックします。このオプションは、TLM コンポーネントの生成を開始します。あるいは、MATLAB コマンド ウィンドウで次のコマンドを実行することもできます。

  >> slbuild('tlmgdemo_ipxactmem/DualFilter');

MATLAB コマンド ウィンドウに次のメッセージが表示されると、TLM 生成が完了します。

### 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.836s

生成された TLM コンポーネントのアーキテクチャ ビューを以下に示します。

6. 生成されたコードを調べる

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

DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm.h

このセクションでは、FIR フィルターの入力と出力を、生成された TLM コンポーネントの入力ポートと出力ポートにそれぞれマッピングします。

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

DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm_def.h

このセクションでは、IP-XACT ファイルで指定されている LP フィルタおよび LPHP フィルタ係数レジスタのアドレス マップを示します。

生成された TLM レジスタ LPF_COEF_1 を変更するには、TLM イニシエーターはアドレス LP_FILTER_BANK_ADDR + LPF_COEF_1_ADDR で TLM トランザクションを送信する必要があります。

7. まとめ

この例では、インポートされた IP-XACT 仕様に基づいて Simulink モデルから TLM コンポーネントを生成する方法を示します。この IP-XACT には、Simulink ポートを TLM ポートにマッピングすること、Simulink パラメータを TLM レジスタにマッピングすること、および Simulink 入力を TLM レジスタにマッピングすることが含まれます。この例では、メモリ マップからアドレス ブロック (またはレジスタ) を除外する方法も示します。