Main Content

Simulink の RAM および ROM 入門

この例では、HDL Coder™ を使用して FPGA 設計で RAM リソースを利用する方法を示します。

はじめに

FPGA の専用 RAM ブロックは、デジタル設計においては貴重なリソースです。Simulink® では RAM と ROM を使用した設計が容易であり、HDL Coder を使用して FPGA で利用可能な専用 RAM ブロックを簡単に利用できます。

HDL サンプル ライブラリの RAM ブロック

HDL Coder の HDL RAMs ブロック ライブラリには、次の種類の RAM ブロックが備わっています。hdllib を使用して HDL Coder™ と互換性のあるブロックを表示してから、HDL Coder から HDL RAMs ライブラリを選択します。

  • Single Port RAM

  • Single Port RAM System

  • Simple Dual Port RAM

  • Simple Dual Port RAM System

  • Dual Port RAM

  • Dual Port RAM System

  • Dual Rate Dual Port RAM

HDL ライブラリの RAM ブロックに移動するには、次のコマンドを実行します。

hdllib

RAM ブロックは、動作のシミュレーションのために Simulink ブロックを使用して作成されたマスク サブシステムです。コード生成では、HDL Coder は HDL 内の RAM 構造を記述する、事前定義されたテンプレートを生成します。大部分の合成ツールは、テンプレートの RAM 構造を認識し、それらを FPGA 上の RAM リソースにマッピングします。

RAM ブロックの一般的な RAM コーディング スタイルの使用

既定では、HDL Coder は RAM 構造にクロック イネーブルを使用する RAM テンプレートを提供しています。あるいは、HDL Coder はクロック イネーブルを使用しない汎用テンプレートのスタイルも提供しています。汎用 RAM スタイル テンプレートは、RAM のラッパーにロジックをもつクロック イネーブルを実装します。これを制御するには、HDL Coder の [グローバル設定] パネルにある [RAM アーキテクチャ] オプションを使用できます。

合成ツールがクロック イネーブルを含む RAM 構造をサポートしていない場合、汎用 RAM スタイルを使用する場合があり、結果として FPGA RAM リソースに HDL をマッピングできません。

hdlcoderfirram の例は、設計で汎用 RAM スタイルを使用する方法の例です。

open_system('hdlcoderfirram');
open_system('hdlcoderfirram/FIR_RAM');

RAM コーディング スタイルの選択

RAM コーディング スタイルを選択するには、HDL コード生成の [グローバル設定] コンフィギュレーション ページの [コーディング スタイル] タブで、必要な RAM アーキテクチャを選択します。

Simulink ブロックを使用した ROM の作成

HDL Coder は ROM ブロックを提供しませんが、次の例に示すように、Simulink の Lookup Table ブロックと Unit Delay ブロックを使用してブロックを容易に作成できます。

open_system('hdlcoderrom');
open_system('hdlcoderrom/ROM');

Simulink から ROM を作成する時には次のモデリングのガイドラインに準拠してください。

  • n ビット アドレスについては、ルックアップ テーブル データの $2^n$ のエントリすべてを指定します。そうでない場合、合成ツールは生成されたコードの RAM へのマッピングを行わない可能性があり、コードは Simulink モデルと一致しない可能性があります。

  • Lookup Table ブロックと Unit Delay ブロックは、同じモデルの階層構造に配置します。

  • RAM リセット ロジックのサポートは FPGA デバイスと合成ツールによって異なります。最良な合成結果を得るには、[HDL ブロック プロパティ] ダイアログ ボックスで "ResetType" プロパティを none に設定して、Unit Delay ブロックでのリセット ロジックの生成を抑制します。さらに、[HDL テスト ベンチ] コンフィギュレーション パラメーターの "IgnoreDataChecking" プロパティを 1 に設定して、リセット ロジックの抑制によって生じる最初のシミュレーションの不一致を無視します。

前述のガイドラインに従う場合、大部分の合成ツールは、FPGA の専用 RAM ブロックを使用して ROM を実装します。

RAM の最小サイズ要件

設計内の RAM または ROM のサイズが小さい場合、合成ツールは最良な速度パフォーマンスを得るために、生成されたコードを専用 RAM ブロックではなくレジスタにマッピングする場合があります。合成ツールの RAM の最小サイズ要件と、必要に応じて、その要件をオーバーライドする方法を確認します。