HDL FIFO
入力サンプルのシーケンスを先入れ先出し (FIFO) レジスタに格納

ライブラリ:
HDL Coder /
HDL RAMs
説明
HDL FIFO ブロックは、入力サンプルのシーケンスを先入れ先出し (FIFO) レジスタに格納します。FIFO レジスタに最初に書き込まれたデータが最初に読み出されます。このブロック実装は、ハードウェア プラットフォームの FIFO ユニットに機能や動作が似ています。
HDL FIFO ブロックでは、内部で Simple Dual Port RAM System ブロックを使用しています。HDL FIFO ブロックを使用して、ほとんどの FPGA で RAM にマッピングされる HDL コードを生成できます。
制限
HDL FIFO ブロックの FPGA ビットストリームを作成した場合、ブロック内の FIFO レジスタはグローバルなリセット ロジックでリセットされません。FIFO レジスタをリセットするには、必ずリセット ロジックを実装してください。
HDL FIFO ブロックでは連続サンプル時間はサポートされません。HDL FIFO ブロックには離散サンプル時間タイプの入力を指定する必要があります。
端子
入力
FIFO ブロックへのデータ入力信号。FIFO にデータを書き込むと、最も新しいデータが FIFO レジスタの末尾にプッシュされます。ブロックは、このエントリの後に後続のデータ エントリをプッシュしていきます。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
複素数のサポート: あり
この端子が値 1
を受信すると、ブロックは In
端子の入力を FIFO レジスタの末尾にプッシュします。
データ型: Boolean
この端子が値 1
を受信すると、ブロックは FIFO レジスタから最初の要素をポップし、その値の Out
端子を保持します。
データ型: Boolean
メモ
2 つ以上の制御入力端子が同じタイム ステップでトリガーされた場合、ポップ操作が先に実行され、続いてプッシュ操作が実行されます。
リセット端子が値 1
を受信すると、HDL FIFO ブロックの Empty、Full、および Num の出力がリセットされます。
依存関係
この端子を有効にするには、ブロック パラメーター [ローカル リセット端子] を選択します。
データ型: Boolean
出力
FIFO ブロックからのデータ出力信号。FIFO からデータを読み取ると、FIFO レジスタに最初に書き込んだデータが FIFO から読み出され、そのデータが出力で保持されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
複素数のサポート: あり
FIFO からの制御信号出力。FIFO レジスタが空でデータ エントリが格納されていない場合に 1
になります。
依存関係
この端子を有効にするには、[空のレジスタのインジケーター端子 (Empty) を表示] を選択する必要があります。
データ型: Boolean
FIFO からの制御信号出力。FIFO レジスタがいっぱいで追加のデータ エントリを受け入れられない場合に 1
になります。
依存関係
この端子を有効にするには、[フル レジスタのインジケーター端子 (Full) を表示] を選択する必要があります。
データ型: Boolean
FIFO レジスタ内に現在格納されているデータ エントリの数。FIFO にデータを書き込むたびに [Num] が 1
ずつインクリメントされます。FIFO からデータを読み取るたびに [Num] が 1
ずつデクリメントされます。
依存関係
この端子を有効にするには、[レジスタ エントリ数の端子 (Num) を表示] を選択する必要があります。
データ型: uint8
| uint16
| uint32
| uint64
| fixed point
パラメーター
FIFO レジスタで保持できるエントリの数を指定します。[レジスタ サイズ] の既定値は 10
です。[レジスタ サイズ] の最小値は 4
です。
プログラムでの使用
ブロック パラメーター: fifo_size |
型: 文字ベクトル |
値: 4 以上の整数 |
既定の設定: '10' |
FIFOの演算モードを指定します。既定では、[モード] は Classic
に設定されています。この場合、ブロック アイコンに Classic FIFO
と表示されます。[モード] は FWFT
に変更できます。[モード] を変更すると、ブロック アイコンに FWFT FIFO
と表示されます。FWFT
モードを使用すると、FIFO レジスタに書き込まれた最初の語を読み取り要求なしで先読みして確認できます。FWFT モードは、AXI4-Stream インターフェイスでバックプレッシャーを適用する場合に特に便利です。
プログラムでの使用
ブロック パラメーター: mode |
型: 文字ベクトル |
値: 'Classic' | 'FWFT' | |
既定の設定: 'Classic' |
出力サンプル時間と入力サンプル時間の比率を指定します。既定の比率は 1
で、入力 In
および Push
と出力 Out
および Pop
が同じサンプル レートで実行されることを意味します。入力と出力を異なるサンプル時間で実行できます。正の整数、または N
を正の整数とする 1/N
を使用します。たとえば、「1/2
」と入力すると、出力サンプル時間が入力サンプル時間の半分になり、出力の方が実行が速くなります。Full
、Empty
、および Num
の信号が速いレートで実行されます。
プログラムでの使用
ブロック パラメーター: ratio |
型: 文字ベクトル |
値: 1 以上の整数 |
既定の設定: '1' |
いっぱいの状態の FIFO に書き込んだときのブロックの応答を指定します。既定の設定は Warning
です。
プログラムでの使用
ブロック パラメーター: push_msg |
型: 文字ベクトル |
値: 'Warning' | 'Ignore' | 'Error' |
既定の設定: 'Warning' |
空の状態の FIFO から読み取ったときのブロックの応答を指定します。既定の設定は Warning
です。
プログラムでの使用
ブロック パラメーター: 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
入力端子を挿入するかどうかを指定します。
プログラムでの使用
ブロック パラメーター: rst_port |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'off' |
アルゴリズム
次の図は、書き込み操作を示しています。書き込み操作では、[Push] 入力端子がイネーブル信号として機能します。図では、[write_en] がこの信号を示しています。
[write_en] 信号が 0
のときは、ブロックは FIFO にデータを書き込まず、[Empty] フラグをアサートします。
[write_en] が 1
になると、ブロックは次のタイム ステップで入力端子 [In] の [din] 信号を FIFO レジスタの末尾にプッシュします。[Num] 信号は、FIFO レジスタ内のデータ エントリの数を示します。FIFO にデータを書き込むたびに、[Num] 信号が 1
ずつインクリメントされます。タイム ステップ 6
で [write_en] が 1
になっています。次のタイム ステップ 7
でデータが FIFO に書き込まれます。[Num] 信号が 1
だけインクリメントされ、[Empty] フラグがデアサートされます。
この FIFO は、[レジスタ サイズ] パラメーターで指定されたレジスタ サイズを使用します。既定では、レジスタ サイズは 10
です。図では、[Num] 信号がタイム ステップ 34
で 10
になると、[Full] 信号がアサートされます。[Full] 信号が 1
になった後、FIFO にエントリをさらに書き込むと、ブロックから警告が生成されます。
次の図は、読み取り操作を示しています。読み取り操作では、[Pop] 入力端子がイネーブル信号として機能します。図では、[read_en] がこの信号を示しています。
図では、[read_en] 信号がタイム ステップ 34
で 1
になると、[dout] 信号は次のタイム ステップ 35
で FIFO の最も古いエントリを出力します。タイム ステップ 35
で FIFO からデータを読み取った時点で、[Full] フラグがデアサートされ、[Num] 信号が 1
だけデクリメントされます。
[Num] 信号が 0
になると、[Empty] 信号がアサートされます。[Empty] 信号が 0
になった後、FIFO からエントリをさらに読み取ると、ブロックから警告が生成されます。
次の図は、[モード] パラメーターを FWFT
に設定した場合の書き込み操作を示しています。書き込み操作では、[Push] 入力端子がイネーブル信号として機能します。図では、[write_en] がこの信号を示しています。
[write_en] 信号が 0
のときは、ブロックは FIFO にデータを書き込まず、[Empty] フラグをアサートします。
[write_en] が 1
になると、ブロックは次のタイム ステップで入力端子 [In] の [din] 信号を FIFO レジスタの末尾にプッシュします。[Num] 信号は、FIFO レジスタ内のデータ エントリの数を示します。FIFO にデータを書き込むたびに、[Num] 信号が 1
ずつインクリメントされます。タイム ステップ 6
で [write_en] が 1
になっています。次のタイム ステップ 7
でデータが FIFO に書き込まれます。[Num] 信号が 1
だけインクリメントされ、[Empty] フラグがデアサートされます。
FIFO は、[レジスタ サイズ] パラメーターで指定されたレジスタ サイズを使用します。既定では、レジスタ サイズは 10
です。図では、[Num] 信号がタイム ステップ 43
で 13
になると、[Full] 信号がアサートされます。FWFT モードでは、FIFO は指定されたサイズを超えてさらに 3
つの値を格納できます。[Full] 信号が 1
になった後、FIFO にエントリをさらに書き込むと、ブロックから警告が生成されます。
次の図は、[モード] パラメーターを FWFT
に設定した場合の読み取り操作を示しています。読み取り操作では、[Pop] 入力端子がイネーブル信号として機能します。図では、[read_en] がこの信号を示しています。
FWFT モードでは、FIFO に書き込んだ最初の語が出力信号 [Out] に送られます。
この図では、[read-en] はタイム ステップ 42
で 1
になり、FIFO はタイム ステップ 9
で最初の語の [dout] を読み取っています。この機能を使用すると、FIFO に書き込まれた最初の語を先読みして確認できます。
[Num] 信号が 0
になると、[Empty] 信号がアサートされます。[Empty] 信号が 0
になった後、FIFO からエントリをさらに読み取ると、ブロックから警告が生成されます。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加の構成オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
一般 | |
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
RAMDirective | 設計内の RAM ブロックをターゲット FPGA の分散 RAM、ブロック RAM、UltraRAM などのメモリ ブロックにマッピングするかどうかを指定します。既定値は |
バージョン履歴
R2014a で導入このブロックで、Half
型または Boolean
型の入力データによる HDL コード生成がサポートされるようになりました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)