メインコンテンツ

Dual Port RAM System

読み取りと書き込みの同時処理をサポートするデュアルポート RAM

  • Dual Port RAM System block

ライブラリ:
HDL Coder / HDL RAMs

説明

Dual Port RAM System ブロックは、読み取りデータ用と書き込みデータ用の出力端子を通じて読み取りと書き込みの同時処理をサポートするデュアルポート RAM をモデル化します。このブロックを構成するには、ブロックを開き、[Type of RAM] パラメーターを [dual port] に設定します。このブロックを使用して次のことが可能です。

  • din 端子、addr 端子、we 端子のベクトル データを使用して並列 RAM バンクを作成する。

  • [Initial output of RAM] パラメーターを使用して RAM の初期値を指定する。

  • [Use asynchronous read feature in target hardware] パラメーターを選択して、ターゲット ハードウェアで非同期読み取りを実行する。

  • [Model RAM with one cycle of delay] パラメーターを選択して、サイクル アキュレートな読み取り操作を実行する。

  • 列書き込みメソッドを使用して、アドレス指定されたメモリ位置の指定したビットへの書き込みを行う。

メモ

書き込み中は、Dual Port RAM System ブロックの書き込み端子 wr_dout の出力に新しいデータが現れます。書き込み操作と同時に同じアドレスで読み取り操作が発生すると、古いデータが読み取り出力端子 rd_dout に現れます。

制限

  • RAM の FPGA ビットストリームを作成する場合、RAM の内容はグローバルなリセット ロジックでリセットされません。RAM をリセットするには、リセット ロジックを実装してください。

  • RAM アドレスは fixed-point (fi) または integer のいずれかで、符号なしの 231 ビット長でなければなりません。

端子

入力

すべて展開する

書き込むデータ。スカラーまたはベクトルとして指定します。端子 we の書き込みイネーブル信号が true の場合、このデータを RAM のメモリ位置に書き込むことができます。この値は、整数か、doublesingle、または half のいずれかの型になります。この値は fi オブジェクトにすることもでき、実数または複素数のいずれかになります。

バスのサポート:

HDL コード生成用に非バーチャル バスおよびバス配列を使用できます。

データ型: single | double | half | int8 | int16 | uint8 | uint16 | Boolean | fixed point

書き込みアドレス。スカラーまたはベクトルとして指定します。このアドレスは、端子 we の信号が true の場合の RAM への書き込みに使用します。この値は fixed-point (fi) または符号なし integer のいずれかで、231 ビット長でなければなりません。

データ型: uint8 | uint16 | fixed point

書き込みイネーブル。スカラーまたはベクトルとして指定します。端子 we の信号が true の場合、ブロックは指定されたメモリ位置にデータを書き込みます。端子 we の信号が false の場合、ブロックは端子 we の信号が false のときに rd_addr 端子で指定されたメモリ位置から値を読み取ります。

メモ

列書き込みメソッドを使用するには、データ型が integer または fixed-point でなければなりません。

データ型: uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

読み取りアドレス。スカラーまたはベクトルとして指定します。このアドレスは、RAM からのデータの読み取りに使用します。この値は fixed-point (fi) または符号なし integer のいずれかで、231 ビット長でなければなりません。

データ型: uint8 | uint16 | fixed point

出力

すべて展開する

読み取り出力データ。スカラーまたはベクトルとして返されます。ブロックは rd_addr 端子で指定されたメモリ位置から古いデータを読み取ります。

書き込み出力データ。スカラーまたはベクトルとして返されます。ブロックは wr_addr 端子で指定されたメモリ位置から新しいデータまたは古いデータを読み取ります。

パラメーター

すべて展開する

Main

RAM のタイプ。次のいずれかとして指定します。

  • Single port — Single Port RAM を作成します。入力は書き込みデータ、アドレス、および書き込みイネーブルのデータ、出力は読み取りデータです。

  • Simple dual port — Simple Dual Port RAM を作成します。入力は書き込みデータ、書き込みアドレス、書き込みイネーブル、および読み取りアドレス、出力は読み取りアドレスからのデータです。

  • Dual port — Dual Port RAM を作成します。入力は書き込みデータ、書き込みアドレス、書き込みイネーブル、および読み取りアドレス、出力は読み取りアドレスと書き込みアドレスからのデータです。

  • True dual port — True Dual Port RAM を作成します。入力は書き込みデータ abab の書き込みアドレスと読み取りアドレス、および書き込みイネーブル ab、出力は書き込みアドレス ab からのデータです。

  • Simple tri port — Simple Tri Port RAM を作成します。入力は書き込みデータ、書き込みアドレス、書き込みイネーブル、および読み取りアドレス ab、出力は読み取りアドレス ab からのデータです。

指定した RAM タイプに基づいて、ブロックの入力端子と出力端子がコード ジェネレーターによって動的に構成されます。

プログラムでの使用

ブロック パラメーター: RAMType
型: 文字ベクトル、string
値: Dual port | Simple dual port | Single port | True dual port | Simple tri port
既定の設定: Dual port

このオプションを有効にすると、ハードウェアで 1 サイクル待機せずに即時に読み取り命令を実行できます。

プログラムでの使用

ブロック パラメーター: AsyncRead
型: 文字ベクトル、string
値: 'on' | 'off'
既定の設定: 'off'

書き込み出力の動作を New data または Old data として選択します。

  • New data — アドレスの新しいデータを出力に送ります。

  • Old data — アドレスの古いデータを出力に送ります。

依存関係

このパラメーターを有効にするには、[Use asynchronous read feature in target hardware] パラメーターをオフにします。

プログラムでの使用

ブロック パラメーター: WriteOutputValue
型: 文字ベクトル、string
値: New data | Old data
既定の設定: New data

次のいずれかのオプションを使用して RAM の最初のシミュレーション出力を指定します。

  • スカラー値。

  • 初期値と RAM ワードが 1 対 1 でマッピングされたベクトル。

  • RAM バンクにおける初期値と RAM ワードが 1 対 1 でマッピングされた nm 列の行列。ここで、n は RAM バンクの数を表し、m は RAM ブロック内のアドレス位置の数を表します (またはその逆になります)。

プログラムでの使用

ブロック パラメーター: RAMInitialValue
型: 整数、浮動小数点
値: 0.0 | Scalar | Vector
既定の設定: 0.0

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

詳細設定

R2024b 以降

  • このパラメーターをオンにすると、出力の読み取り前に RAM で入力データが 1 サイクル遅延します。生成された HDL コードとこのブロックを確実にサイクル アキュレートにするには、このオプションを使用します。

  • このパラメーターをオフにすると、RAM の入力データの読み取りと出力はすぐに行われますが、HDL コード生成時に 1 サイクルのレイテンシが追加されます。オーバーサンプリング値を指定する場合やマルチレート モデルを処理する場合にクロックレート パイプラインを利用するには、このオプションを使用します。

依存関係

このパラメーターを有効にするには、[Use asynchronous read feature in target hardware] パラメーターをオフにします。

プログラムでの使用

ブロック パラメーター: ModelRAMDelay
型: 文字ベクトル、string
値: 'on' | 'off'
既定の設定: 'on'

R2025a 以降

  • このパラメーターを serial に設定すると、コード ジェネレーターは RAM System ブロックへのベクトル入力から RAM の並列バンクを推定します。

  • このパラメーターを parallel に設定すると、次のようになります。

    • HDL コードを生成するときに、コード ジェネレーターは RAM の消費量をベクトル入力のサイズに応じてスケールアップしません。代わりに、入力信号の各演算を最初のインデックスから順番に一度に 1 つずつ適用します。順次アクセスを有効にすると、ベクトル入力を使用してデータ レートでモデル化しながら、より高速なクロック レートでマルチサイクルの RAM アクセスを利用できます。

    • RAM System ブロックがクロックレート パイプライン領域に存在する場合、ローカル マルチレート実装の代わりにクロックレートの実装がシリアル化に使用されます。

依存関係

このパラメーターを有効にするには、[Model RAM with one cycle of delay] パラメーターをオフにするか、[Use asynchronous read feature in target hardware] パラメーターを有効にします。

プログラムでの使用

ブロック パラメーター: VectorAccess
型: 文字ベクトル、string
値: 'serial' | 'parallel'
既定の設定: 'serial'

詳細

すべて展開する

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2017b で導入

すべて展開する