HDL FIFO
入力サンプルのシーケンスを先入れ先出し (FIFO) レジスタに格納
ライブラリ:
HDL Coder /
HDL RAMs
説明
HDL FIFO ブロックは、入力サンプルのシーケンスを先入れ先出し (FIFO) レジスタに格納します。FIFO レジスタに最初に書き込まれたデータが最初に読み出されます。このブロック実装は、ハードウェア プラットフォームの FIFO ユニットに機能や動作が似ています。
HDL FIFO ブロックでは、内部で Simple Dual Port RAM ブロックを使用しています。HDL FIFO ブロックを使用して、ほとんどの FPGA で RAM にマッピングされる HDL コードを生成できます。
端子
入力
In — データ入力信号
scalar
FIFO ブロックへのデータ入力信号。FIFO にデータを書き込むと、最も新しいデータが FIFO レジスタの末尾にプッシュされます。ブロックは、このエントリの後に後続のデータ エントリをプッシュしていきます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
複素数のサポート: あり
Push — 書き込み制御信号
scalar
この端子が値 1
を受信すると、ブロックは In
端子の入力を FIFO レジスタの末尾にプッシュします。
データ型: Boolean
Pop — 読み取り制御信号
scalar
この端子が値 1
を受信すると、ブロックは FIFO レジスタから最初の要素をポップし、その値の Out
端子を保持します。
データ型: Boolean
メモ
2 つ以上の制御入力端子が同じタイム ステップでトリガーされた場合、ポップ操作が先に実行され、続いてプッシュ操作が実行されます。
rst — リセット制御信号
scalar
リセット端子が値 1
を受信すると、HDL FIFO ブロックの Empty、Full、および Num の出力がリセットされます。
依存関係
この端子を有効にするには、ブロック パラメーター [ローカル リセット端子] を選択します。
データ型: Boolean
出力
Out — データ出力信号
scalar
FIFO ブロックからのデータ出力信号。FIFO からデータを読み取ると、FIFO レジスタに最初に書き込んだデータが FIFO から読み出され、そのデータが出力で保持されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
複素数のサポート: あり
Empty — データ出力信号
scalar
FIFO からの制御信号出力。FIFO レジスタが空でデータ エントリが格納されていない場合に 1
になります。
依存関係
この端子を有効にするには、[空のレジスタのインジケーター端子 (Empty) を表示] を選択する必要があります。
データ型: Boolean
Full — データ出力信号
scalar
FIFO からの制御信号出力。FIFO レジスタがいっぱいで追加のデータ エントリを受け入れられない場合に 1
になります。
依存関係
この端子を有効にするには、[フル レジスタのインジケーター端子 (Full) を表示] を選択する必要があります。
データ型: Boolean
Num — エントリ数
scalar
FIFO レジスタ内に現在格納されているデータ エントリの数。FIFO にデータを書き込むたびに [Num] が 1
ずつインクリメントされます。FIFO からデータを読み取るたびに [Num] が 1
ずつデクリメントされます。
依存関係
この端子を有効にするには、[レジスタ エントリ数の端子 (Num) を表示] を選択する必要があります。
データ型: double
パラメーター
レジスタ サイズ — エントリ数
10
(既定値)
FIFO レジスタで保持できるエントリの数を指定します。[レジスタ サイズ] の既定値は 10
です。[レジスタ サイズ] の最小値は 4
です。
プログラムでの使用
ブロック パラメーター: fifo_size |
型: 文字ベクトル |
値: 4 以上の整数 |
既定の設定: '10' |
モード — 操作モード
'Classic'
(既定値) | 'FWFT'
FIFOの操作モードを指定します。既定では、[モード] は Classic
に設定されています。この場合、ブロック アイコンに Classic FIFO
と表示されます。[モード] は FWFT
に変更できます。[モード] を変更すると、ブロック アイコンに FWFT FIFO
と表示されます。FWFT
モードを使用すると、FIFO レジスタに書き込まれた最初の語を読み取り要求なしで先読みして確認できます。FWFT モードは、AXI4-Stream インターフェイスでバックプレッシャーを適用する場合に特に便利です。
プログラムでの使用
ブロック パラメーター: mode |
型: 文字ベクトル |
値: 'Classic' | 'FWFT' | |
既定の設定: 'Classic' |
入力サンプル時間に対する出力サンプル時間の比 — サンプル レート比
1
(既定値)
出力サンプル時間と入力サンプル時間の比率を指定します。既定の比率は 1
で、入力 In
および Push
と出力 Out
および Pop
が同じサンプル レートで実行されることを意味します。入力と出力を異なるサンプル時間で実行できます。正の整数、または N
を正の整数とする 1/N
を使用します。たとえば、「1/2
」と入力すると、出力サンプル時間が入力サンプル時間の半分になり、出力の方が実行が速くなります。Full
、Empty
、および Num
の信号が速いレートで実行されます。
プログラムでの使用
ブロック パラメーター: ratio |
型: 文字ベクトル |
値: 1 以上の整数 |
既定の設定: '1' |
フル レジスタにプッシュ — オーバーフロー条件
'Warning'
(既定値) | 'Ignore'
| 'Error'
いっぱいの状態の FIFO に書き込んだときのブロックの応答を指定します。既定の設定は Warning
です。
プログラムでの使用
ブロック パラメーター: push_msg |
型: 文字ベクトル |
値: 'Warning' | 'Ignore' | 'Error' |
既定の設定: 'Warning' |
空のレジスタをポップ — アンダーフロー条件
'Warning'
(既定値) | 'Ignore'
| 'Error'
空の状態の FIFO から読み取ったときのブロックの応答を指定します。既定の設定は Warning
です。
プログラムでの使用
ブロック パラメーター: pop_msg |
型: 文字ベクトル |
値: 'Warning' | 'Ignore' | 'Error' |
既定の設定: 'Warning' |
空のレジスタのインジケーター端子 (Empty) を表示 — オプションの empty 端子
オン (既定値) | オフ
Empty
出力端子を有効にするかどうかを指定します。この端子は、FIFO レジスタが空である場合に 1
を出力し、FIFO に 1 つ以上のデータ エントリが格納されていれば 0
を出力します。
プログラムでの使用
ブロック パラメーター: show_empty |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'on' |
フル レジスタのインジケーター端子 (Full) を表示 — オプションの full 端子
オン (既定値) | オフ
Full
出力端子を有効にするかどうかを指定します。この端子は、FIFO レジスタがいっぱいである場合に 1
を出力します。
プログラムでの使用
ブロック パラメーター: show_full |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'on' |
レジスタ エントリ数の端子 (Num) を表示 — オプションの num 端子
オン (既定値) | オフ
Num
出力端子を有効にするかどうかを指定します。この端子は、FIFO キューに現在格納されている使用可能なデータ エントリの数を出力します。
プログラムでの使用
ブロック パラメーター: show_num |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'on' |
ローカル リセット端子 — オプションのリセット端子
オフ (既定値) | オン
追加の rst
入力端子を挿入するかどうかを指定します。
プログラムでの使用
ブロック パラメーター: rst_port |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'off' |
アルゴリズム
FIFO 書き込み操作
次の図は FIFO 書き込み操作を示しています。書き込み操作では、[Push] 入力端子がイネーブル信号として機能します。図では、この信号が [write_en] 信号で示されています。
[write_en] 信号が 0
のときは、ブロックは FIFO にデータを書き込まず、[empty] フラグがアサートされます。
[write_en] が 1
になると、ブロックは次のタイム ステップで入力端子 [In] の [din] 信号を FIFO レジスタの末尾にプッシュします。[Num] 信号は、FIFO レジスタ内のデータ エントリの数を示します。FIFO にデータを書き込むたびに、[Num] 信号が 1
ずつインクリメントされます。タイム ステップ 12
で [write_en] が 1
になっています。次のタイム ステップ 13
でデータが FIFO に書き込まれます。[Num] 信号が 1
だけインクリメントされ、[empty] フラグがデアサートされます。
この FIFO では、レジスタ サイズに既定の 10
を使用しています。[Num] 信号がタイム ステップ 49
で [レジスタ サイズ] と等しくなると、[Full] 信号がアサートされます。[Full] 信号が 1
になった後、FIFO にエントリをさらに書き込もうとすると、ブロックから警告が生成されます。
従来の FIFO 読み取り操作
次の図は FIFO 読み取り操作を示しています。読み取り操作では、[Pop] 入力端子がイネーブル信号として機能します。図では、この信号が [read_en] 信号で示されています。
[read_en] 信号が 0
のときは、ブロックの出力 [dout] は 0
になります。[read_en] 信号がタイム ステップ 50
で 1
になると、[dout] 信号は次のタイム ステップ 51
で FIFO の最も古いエントリを出力します。タイム ステップ 51
で FIFO からデータを読み取った時点で、[Full] フラグがデアサートされ、[Num] 信号が 1
だけデクリメントされます。
[Num] 信号が 0
と等しくなると、[Empty] 信号がアサートされます。[Empty] 信号が 0
になった後、FIFO からエントリをさらに読み取ろうとすると、ブロックから警告が生成されます。
FWFT の FIFO 読み取り操作
次の図は FIFO 読み取り操作を示しています。読み取り操作では、[Pop] 入力端子がイネーブル信号として機能します。図では、この信号が [read_en] 信号で示されています。
既定では、HDL FIFO は Classic
モードで動作します。FIFO では、このほかに First-Word-Fall-Through (FWFT) モードも使用できます。[ブロック パラメーター] ダイアログ ボックスで、[モード] を FWFT
として指定します。
FWFT
モードの動作は、書き込み操作については Classic
モードと同じです。FWFT
モードが Classic
モードと異なるのは、読み取り操作を実行するときです。Classic
モードでは、[Pop] 端子に読み取り要求が発行されるか 1
が入力された後、次のクロック サイクルの FIFO 出力でデータを使用できるようになります。FWFT
モードでは、FIFO に書き込んだ最初の語が出力に直接送られ、出力信号 [Out] で使用可能になります。
この図では、[read-en] がタイム ステップ 50
で 1
になっていますが、FIFO はタイム ステップ 15
で最初の語の [dout] を読み取っています。この機能を使用すると、FIFO に書き込まれた最初の語を先読みして確認できます。
拡張機能
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 などのメモリ ブロックにマッピングするかどうかを指定します。既定値は |
バージョン履歴
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)