Single Port RAM
Single Port RAM
ライブラリ:
HDL Coder /
HDL RAMs
説明
Single Port RAM ブロックは、読み取りと書き込みの順次処理をサポートする RAM をモデル化します。
読み取りと書き込みの同時処理をサポートする RAM をモデル化する場合は、Dual Port RAM ブロックまたは Simple Dual Port RAM ブロックを使用します。
端子
入力
din — 書き込みデータ入力
Scalar
(既定値) | Vector
we
が true の場合に RAM のメモリ位置に書き込むデータ。データは幅とデータ型を入力信号から継承します。din
は double
、single
、integer
、または fixed-point (fi)
オブジェクトに、かつ、実数または複素数にできます。
データ型: single
| double
| int8
| int16
| uint8
| uint16
| fixed point
addr — 書き込みアドレス
Scalar
(既定値) | Vector
we
が true の場合にデータを書き込むアドレス。この値は fixed-point(fi)
または integer
のいずれかにでき、符号なしで小数部の長さが 0
でなければなりません。
データ型: uint8
| uint16
| fixed point
we — 書き込みイネーブル
Scalar
(既定値) | Vector
we
が true の場合、RAM の指定したメモリ位置にデータが書き込まれます。
データ型: Boolean
出力
dout — 出力データ
Scalar
(既定値) | Vector
アドレス addr
からの出力データ。
パラメーター
Address port width — アドレスのビット幅
8
(既定値)
最小ビット幅は 2、最大ビット幅は 29 です。
プログラムでの使用
ブロック パラメーター: ram_size |
型: string スカラー | 文字ベクトル |
値: 最小値は 2 、最大値は 29 |
既定の設定: '8' |
Output data during write — 出力データの制御
New data
(既定値) | Old data
書き込みアクセス中の出力データ dout
を制御します。次のいずれかとして指定します。
New data
— 書き込み中の出力端子dout
のデータは新しいデータになります。Old data
— 書き込み中の出力端子dout
のデータは古いデータになります。
プログラムでの使用
ブロック パラメーター: dout_type |
型: string スカラー | 文字ベクトル |
値: "New data" | "Old data" |
既定の設定: 'New data' |
アルゴリズム
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 推定の制限
合成ツールおよびターゲット デバイスによっては、[Output data during write] の設定が 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も参照してください。 |
このブロックは複素信号のコード生成をサポートしています。
Single Port RAM System ブロックの実装は hdl.RAM
System object™ を使用する MATLAB System ブロックを使用します。このブロックを使用して読み取りおよび書き込みの順次処理を実行します。ブロックの [ブロック パラメーター] ダイアログ ボックスでは、RAM の初期値を指定できます。
このブロックを使用して、モデル内の Single Port RAM ブロックを置き換えます。このブロックをモデル内で使用すると、より高速なシミュレーション結果が得られます。
さまざまなアドレスに対する読み取りおよび書き込みの同時処理を実行するには、Simple Dual Port RAM System ブロックまたは Dual Port RAM System ブロックを代わりに使用します。
バージョン履歴
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)