Main Content

MATLAB Function ブロックを使用した RAM マッピング

この例では、MapPersistentVarsToRAM ブロックレベル パラメーターを使用して永続配列を RAM にマッピングする方法を示します。RAM サイズは RAMMappingThreshold 以上でなければなりません。リソース レポートには、RAM マッピングによる面積改善の差が表示されます。

ライン バッファー モデル

モデル hdlcoder_ram_mapping_matlab_function を開きます。

open_system('hdlcoder_ram_mapping_matlab_function')
set_param('hdlcoder_ram_mapping_matlab_function', 'SimulationCommand', 'Update')

モデル内の DUT サブシステムが Line Buffer MATLAB Function ブロックを駆動します。

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

ライン バッファーの MATLAB® コード実装を確認するには、MATLAB Function ブロックを開きます。

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT/Line Buffer')

HDL コードの生成

1. リソース利用レポートの生成を有効にします。レポートには、設計で使用される加算器、減算器、乗算器、レジスタ、および RAM の数が表示されます。

hdlset_param('hdlcoder_ram_mapping_matlab_function', 'resourcereport', 'on')

2.HDL_DUT サブシステムの HDL コードを生成します。

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

HDL Coder™ にコード生成レポートが表示されます。レポートで、[高水準リソース レポート] セクションを選択します。この設計では、81 個のレジスタおよび 648 個の 1 ビット レジスタが使用されます。既定では、MapPersistentVarsToRAM プロパティは無効化されていて、コード ジェネレーターは RAM リソースを推定または消費しません。

RAM マッピングの有効化と HDL コードの生成

1. MATLAB Function ブロックで MapPersistentVarsToRAM HDL パラメーターを有効にします。

ml_subsys = 'hdlcoder_ram_mapping_matlab_function/HDL_DUT/Line Buffer';
hdlset_param(ml_subsys, 'MapPersistentVarsToRAM', 'on')

2.HDL_DUT サブシステムの HDL コードを生成します。

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

コード生成レポートで、[高水準リソース レポート] セクションを選択します。この設計では、1 つのレジスタ、8 つの 1 ビット レジスタ、および 1 つの RAM が使用されます。推定される RAM の数は、指定する RAMMappingThreshold によって決まります。RAM mapping thresholdを参照してください。

MATLAB Datapath アーキテクチャを使用した RAM マッピング

MATLAB Datapath アーキテクチャでは、MATLAB Function ブロックが通常のサブシステムと同様に扱われます。このアーキテクチャは、記述した MATLAB コードを Simulink® でデータフロー表現に変換します。これにより、HDL Coder は、MATLAB Function ブロックを越えたモデル内の他の Simulink ブロックとの間でさらに広く最適化を使用できます。

1. MATLAB Datapath HDL アーキテクチャを有効にして、MATLAB Function ブロックで MapPersistentVarsToRAM パラメーターを設定します。

hdlset_param(ml_subsys, 'Architecture', 'MATLAB Datapath')
hdlset_param(ml_subsys, 'MapPersistentVarsToRAM', 'on')

2.HDL_DUT サブシステムの HDL コードを生成します。

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

[高水準リソース レポート] は、MATLAB Function ブロックの既定のアーキテクチャを使用した設計と同じ数のリソースがこの設計で消費されることを示しています。MATLAB Datapath アーキテクチャが MATLAB コードを Simulink データフロー表現に変更する方法を確認するには、生成されたモデル gm_hdlcoder_ram_mapping_matlab_function を開いて、HDL_DUT サブシステムに移動します。MATLAB Function ブロックの代わりに Line Buffer サブシステムがあります。Subsystem ブロック内には、推定される RAM ブロックを表示したデータフロー表現があります。

MATLAB Function ブロック内の永続配列の効率的な RAM マッピングを可能にする設計パターンの詳細については、eml_hdl_design_patterns/RAMs ライブラリを参照してください。

参考

モデル設定

関連するトピック