FIFOバッファは、リングのようになった、ファストイン、ファストアウトのバッファエリアです。データは、最初のデータの格納からスタートし、バッファに書き込んだ順番に格納され、格納された順番に読み出されます。物の順序を記憶させておくバッファとして便利です。
FP_FIFO_DEFINE命令を使って、FIFOバッファとして使用するエリアを定義します。(読み出し/書き込みを行う前に1回のみ行ってください)
データのバッファへの書き込みはFP_FIFO_WRITE、データのバッファからの読み出しはFP_FIFO_READを使って行います。
データを書き込むと、データの格納エリアの1番目から順に格納されます。書き込みポインタが、次に書き込むエリアを指示しています。格納ワード数は、1ずつ増加します。
データ格納エリアが一杯になると、つまり、格納ワード数が"n-1"になると、書き込みできなくなります。
読み出しを実行すると、1番目に格納されているデータから順に転送していきます。読み出しポインタが、次に読み出されるエリアを示しています。格納ワード数は、1ずつ減少します。
データ領域にデータが書き込まれていない場合、つまり、格納ワード数が"0"の場合、エラーが発生します。
FIFOバッファが以下に示す状態にあるとき、データを書き込んだ場合、データは3で示すエリアに格納されます。書き込みポインタは4に移動します。すなわち次のデータは4に書き込まれることになります。データを読み出す場合、0で示すエリアから読み出されます。読み出しポインタは1に移動します。すなわち次のデータは1から読み出されることになります。