Simple Dual Port RAM
単一の出力端子をもつ Dual Port RAM
ライブラリ:
HDL Coder /
HDL RAMs
説明
Simple Dual Port RAM ブロックは、読み取りと書き込みの同時処理をサポートし、読み取りデータ用の単一の出力端子をもつ RAM をモデル化します。このブロックを使用して、ほとんどの FPGA で RAM にマッピングされる HDL コードを生成できます。
Simple Dual Port RAM は Dual Port RAM に似ていますが、Dual Port RAM には書き込みデータ出力端子と読み取りデータ出力端子の両方があります。
書き込み中の読み取り動作
書き込み操作中に同じアドレスで読み取り操作が発生すると、出力のデータは古いデータになります。
端子
入力
wr_din — 書き込みデータ入力
Scalar
(既定値)
wr_en
が true の場合に RAM のメモリ位置に書き込むデータ。データは幅とデータ型を入力信号から継承します。wr_din
は double
、single
、integer
、または fixed-point (fi)
オブジェクトに、および実数または複素数にできます。
データ型: スカラーの固定小数点、整数、または複素数
データ型: int8
| int16
| int32
| int64
| fixed point
wr_addr — 書き込みアドレス
Scalar
(既定値)
書き込みアドレス。
wr_en
が true の場合にデータを書き込むアドレス。この値は fixed-point(fi)
または integer
のいずれかにでき、符号なしで小数部の長さが 0
でなければなりません。
データ型: uint8
| uint16
| uint32
| uint64
| fixed point
wr_en — 書き込みイネーブル
Scalar
(既定値)
wr_en
が true の場合、RAM の指定したメモリ位置にデータが書き込まれます。
データ型: Boolean
rd_addr — 読み取りアドレス
Scalar
(既定値)
データを読み取るアドレス。この値は fixed-point(fi)
または integer
のいずれかにでき、符号なしで小数部の長さが 0
でなければなりません。
データ型: uint8
| uint16
| uint32
| uint64
| fixed point
出力
rd_dout — 読み取りアドレスからの出力データ
Scalar
(既定値)
読み取りアドレス rd_addr
からの出力データ。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
パラメーター
Address port width — アドレスのビット幅
8 (既定値)
最小ビット幅は 2、最大ビット幅は 29 です。
プログラムでの使用
ブロック パラメーター: ram_size |
型: string スカラー | 文字ベクトル |
値: 最小値は 2 、最大値は 29 |
既定の設定: '8' |
アルゴリズム
RAM ブロックに対して生成された HDL コードには以下が含まれます。
読み取りデータ出力に対する 1 クロック サイクルのレイテンシ。
リセット信号はなし。HDL コードにリセットが含まれていると、一部の合成ツールで RAM が推定されないためです。
RAM ブロックのコード生成では、blockname.ext
という個別のファイルが作成されます。blockname
は、RAM ブロックの名前から派生します。ext
は、ターゲット言語のファイル名拡張子です。
RAM の初期化
RAM を初期化するために生成されるコードはシミュレーションのみを目的としています。このコードは合成ツールでは無視してかまいません。
クロック イネーブルを搭載または搭載しない RAM の実装
HDL ブロック プロパティ RAMArchitecture
を使用すると、サブシステム内のすべての RAM ブロックでクロック イネーブル ロジックの生成が有効化または抑制されます。RAMArchitecture
は次の値に設定できます。
WithClockEnable
(既定の設定): クロック イネーブル信号を含む HDL テンプレートを使用した RAM と空の RAM ラッパーが生成されます。WithoutClockEnable
:クロック イネーブルを搭載しない RAM とクロック イネーブル ロジックを実装する RAM ラッパーが生成されます。
一部の合成ツールでは、クロック イネーブルを含む RAM は推定されません。合成ツールでクロック イネーブルを含む RAM 構造がサポートされず、生成された HDL コードを FPGA RAM リソースにマッピングできない場合は、RAMArchitecture
を WithoutClockEnable
に設定します。
設計に応じてクロック イネーブルを搭載しない RAM を生成する方法の詳細については、「RAM および ROM 入門」の例を参照してください。例を開くには、コマンド プロンプトで次のように入力します。
openExample('hdlcoder/GettingStartedWithRAMAndROMInSimulinkExample');
RAM 推定の制限
RAM ブロックを使用して読み取りと書き込みの同時処理を実行する場合、ハードウェアにおける書き込み中の読み取り動作を確認してください。Simulink® における RAM ブロックの書き込み中の読み取り動作は、生成された HDL コードの動作と一致します。ただし、合成ツールが RAM 推定時に同じ動作に従わない場合、ハードウェアにおける書き込み中の読み取り動作が Simulink モデルまたは生成された HDL コードと異なる動作になります。
合成ツールでは、次の理由で、生成されたコードが RAM にマッピングされないことがあります。
RAM のサイズが小さい。合成ツールでは、パフォーマンスを高めるために、小さい RAM はレジスタを使用して実装されます。
クロック イネーブル信号がある。RAM ブロックでは、クロック イネーブルを搭載または搭載しない RAM の実装に示すように、クロック イネーブル信号の生成を抑制できます。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加の構成オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
一般 | |
---|---|
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
RAMDirective | 設計内の RAM ブロックをターゲット FPGA の分散 RAM、ブロック RAM、または UltraRAM メモリにマッピングするかどうかを指定します。RAMDirectiveも参照してください。 |
このブロックは複素信号のコード生成をサポートしています。
Simple Dual Port RAM System ブロックの実装は hdl.RAM
System object™ を使用する MATLAB System ブロックを使用します。このブロックを使用して読み取りおよび書き込みの同時処理を実行します。これには、データを読み取る 1 つの出力端子があります。ブロックの [ブロック パラメーター] ダイアログ ボックスでは、RAM の初期値を指定できます。
このブロックを使用して、モデル内の Simple Dual Port RAM ブロックを置き換えます。このブロックをモデル内で使用すると、より高速なシミュレーション結果が得られます。
バージョン履歴
R2014a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)