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 マッピングのしきい値を参照してください。

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 ライブラリを参照してください。