ルックアップ テーブルから FPGA ブロック RAM を生成する
Lookup Table ブロックをランダムアクセス メモリ (RAM) にマッピングしてターゲット Field Programmable Gate Array (FPGA) デバイスの面積を節約するには、以下のガイドラインに従ってください。
各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。
ガイドライン ID
2.3.1
重大度
強く推奨
説明
ルックアップ テーブルをブロック RAM にマッピングするには、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] タブ、[最適化]、[パイプライン] タブにある [ルックアップ テーブルを RAM にマッピングする] パラメーターを使用します。このパラメーターは既定でオンになっています。最適化により、[遅延の長さ] が 1
で [ResetType] が none
に設定された Delay ブロックが Lookup Table ブロックの直後に挿入されます。このモデル化パターンは設計を FPGA のブロック RAM に効率的にマッピングします。[ルックアップ テーブルを RAM にマッピングする] オプションを使用するには、次を行う必要があります。
Map lookup tables to RAMオプションがモデルでオンになっていることを確認する。
合成ツールを指定する。
あるいは、MapToRAM
HDL ブロック プロパティを使用してモデルで [ルックアップ テーブルを RAM にマッピングする] オプションを無効にすることで、この最適化を設計内の特定のサブシステムに対して選択的に有効にすることも、最適化で生成されるパターンと同じモデル化パターンを設計内で作成することもできます。
たとえば、モデル hdlcoder_LUT_BRAM_mapping.slx
を開きます。
open_system('hdlcoder_LUT_BRAM_mapping') set_param('hdlcoder_LUT_BRAM_mapping','SimulationCommand','Update')
[ルックアップ テーブルを RAM にマッピングする] オプションはこのモデルで有効になっています。
hdlget_param('hdlcoder_LUT_BRAM_mapping','LUTMapToRAM')
ans = 'on'
LUT_BRAM
サブシステムには 1-D Lookup Table ブロックが含まれ、その後に [遅延の長さ] が 1
で [ResetType] が none
に設定された Delay ブロックが続きます。
open_system('hdlcoder_LUT_BRAM_mapping/LUT_BRAM')
HDL コードを生成し、FPGA で設計を合成すると、このモデル化パターンによって効率的にブロック RAM にマッピングされます。次の図は LUT_BRAM
サブシステムの合成結果を示します。
このモデルの LUT
サブシステムはこのモデル化パターンを使用しません。
open_system('hdlcoder_LUT_BRAM_mapping/LUT')
[ルックアップ テーブルを RAM にマッピングする] オプションがこのモデルで有効になっているため、このサブシステムはロジックをブロック RAM にマッピングします。MATLAB® コマンド ウィンドウ内でリンクされている MATLAB スクリプトをクリックして、モデル内で RAM にマッピングされているルックアップ テーブルを強調表示します。
ルックアップ テーブルをブロック RAM にマッピングするために、LUT
サブシステムに対して生成されたモデルにより、[遅延の長さ] が 1
で [ResetType] が none
に設定された Delay ブロックが Lookup Table ブロックの直後に挿入されます。