メインコンテンツ

HDL FIFO

入力サンプルのシーケンスを先入れ先出しレジスタに格納する

  • HDL FIFO block

ライブラリ:
HDL Coder / HDL RAMs

説明

HDL FIFO ブロックは、入力サンプルのシーケンスを先入れ先出し (FIFO) レジスタに格納します。ブロックは書き込まれた順序と同じ順序でデータを出力します。[Push] および [Pop] 入力端子を使用して、FIFO 操作を制御できます。両方の制御信号が同じタイム ステップでアサートされると、ブロックはプッシュ操作の前にポップ操作を実行します。

HDL FIFO ブロックは、機能的にも動作的にもハードウェア プラットフォーム上の FIFO ユニットに似ています。内部的には、このブロックは Simple Dual Port RAM System ブロックを使用します。このブロックを使用して、ほとんどの FPGA デバイス上の RAM リソースにマッピングする HDL コードを生成できます。

制限

  • HDL FIFO ブロックの FPGA ビットストリームを作成した場合、ブロック内の FIFO レジスタはグローバルなリセット ロジックでリセットされません。FIFO レジスタをリセットするには、リセット ロジックを実装する必要があります。

  • HDL FIFO ブロックでは連続サンプル時間はサポートされません。HDL FIFO ブロックへの入力には離散サンプル時間を指定する必要があります。

端子

入力

すべて展開する

データ入力信号。スカラーまたはベクトルとして指定します。FIFO にデータを書き込むと、ブロックは最新のデータを FIFO レジスタの末尾にプッシュします。ブロックは、このエントリの後に後続のデータ エントリを配置します。

メモ

[In] 端子に接続した信号がベクトルの場合、データ型は [データ入力の次元] パラメーターで指定された値と一致する必要があります。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
複素数のサポート: あり

書き込み制御信号。Boolean 型のスカラーとして指定します。この端子が値 1 を受信すると、ブロックは [In] 端子の現在の入力を FIFO レジスタの末尾にプッシュします。

データ型: Boolean

読み取り制御信号。Boolean 型のスカラーとして指定します。この端子が値 1 を受信すると、ブロックは FIFO レジスタから最初の要素をポップし、その値を [Out] 端子で出力します。

データ型: Boolean

リセット制御信号。Boolean 型のスカラーとして指定します。この端子が値 1 を受信すると、ブロックは [Empty][Full]、および [Num] 出力端子を初期状態にリセットします。

依存関係

この端子を有効にするには、[ローカル リセット端子] ブロック パラメーターを選択します。

データ型: Boolean

出力

すべて展開する

データ出力信号。スカラーまたはベクトルとして返されます。この端子は、FIFO レジスタから先に書き込まれたデータを出力し、次の有効な読み取り操作までその値を保持します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
複素数のサポート: あり

空ステータス信号。スカラーとして返されます。FIFO レジスタが空でデータ エントリが含まれていない場合、ブロックはこの信号を 1 に設定します。

依存関係

この端子を有効にするには、[空のレジスタのインジケーター端子 (Empty) を表示] ブロック パラメーターを選択します。

データ型: Boolean

フル ステータス信号。スカラーとして返されます。FIFO レジスタがフルで追加のデータ エントリを受け入れることができない場合、ブロックはこの信号を 1 に設定します。

依存関係

この端子を有効にするには、[フル レジスタのインジケーター端子 (Full) を表示] ブロック パラメーターを選択します。

データ型: Boolean

データ エントリ数。スカラーとして返されます。この信号は、FIFO レジスタに現在格納されているデータ エントリの数を示します。ブロックは、FIFO にデータを書き込むたびにこの値を 1 ずつインクリメントし、FIFO から読み取るたびにこの値を 1 ずつデクリメントします。

依存関係

この端子を有効にするには、[レジスタ エントリ数の端子 (Num) を表示] ブロック パラメーターを選択します。

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

パラメーター

すべて展開する

FIFO レジスタで保持できるエントリの数を指定します。最小値は 4 です。

プログラムでの使用

ブロック パラメーター: fifo_size
型: 文字ベクトル
値: 4 以上の整数
既定の設定: 10

ブロックの演算モードを指定します。既定では、[モード] パラメーターは [クラシック] に設定されており、ブロック アイコンで Classic FIFO と表示されます。このパラメーターを [FWFT] に設定すると、ブロック アイコンで FWFT FIFO と表示されます。[FWFT] モードでは、読み取り要求を行わずに、FIFO レジスタに書き込まれた最初の語を先読みして表示できます。[FWFT] モードは、AXI4-Stream インターフェイスを使用してバックプレッシャーを適用する場合に役立ちます。

プログラムでの使用

ブロック パラメーター: mode
型: 文字ベクトル
値: 'Classic' | 'FWFT'
既定の設定: 'Classic'

出力サンプル時間と入力サンプル時間の比率を指定します。既定の比率値は 1 です。これは、[In] および [Push] 入力端子と [Out] および [Pop] 出力端子が同じサンプル レートで実行されることを意味します。正の整数または 1/N 形式の値 (N は正の整数) を入力することにより、入力と出力が異なるサンプル時間で実行されるように構成できます。たとえば、「1/2」と入力すると、出力サンプル時間が入力サンプル時間の半分になるため、出力の方が実行が速くなります。[Full][Empty]、および [Num] 出力端子はより速いレートで実行されます。

プログラムでの使用

ブロック パラメーター: ratio
型: 文字ベクトル
値: 1 以上の整数
既定の設定: 1

R2026a 以降

入力データの次元を指定します。

メモ

[データ入力の次元] パラメーターは、[In] 端子の入力信号のベクトル長と一致する必要があります。

プログラムでの使用

ブロック パラメーター: dataDim
型: 文字ベクトル
値: 1 以上の整数
既定の設定: 1

フルの FIFO に書き込もうとしたときにブロックがどのように応答するかを指定します。

プログラムでの使用

ブロック パラメーター: push_msg
型: 文字ベクトル
値: 'Warning' | 'Ignore' | 'Error'
既定の設定: 'Warning'

空の FIFO から読み取ろうとしたときにブロックがどのように応答するかを指定します。

プログラムでの使用

ブロック パラメーター: pop_msg
型: 文字ベクトル
値: 'Warning' | 'Ignore' | 'Error'
既定の設定: 'Warning'

[Empty] 出力端子を有効にするかどうかを指定します。この端子は、FIFO レジスタが空である場合に 1 を出力し、FIFO に 1 つ以上のデータ エントリが格納されていれば 0 を出力します。

プログラムでの使用

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

[Full] 出力端子を有効にするかどうかを指定します。この端子は、FIFO レジスタがフルの場合に 1 を出力します。

プログラムでの使用

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

[Num] 出力端子を有効にするかどうかを指定します。この端子は、FIFO キューに現在格納されている使用可能なデータ エントリの数を出力します。

プログラムでの使用

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

[rst] 入力端子を有効にするかどうかを指定します。この端子が値 1 を受信すると、ブロックは [Empty][Full]、および [Num] 出力端子を初期状態にリセットします。

プログラムでの使用

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

アルゴリズム

すべて展開する

拡張機能

すべて展開する

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

バージョン履歴

R2014a で導入

すべて展開する