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