インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

16.4.2.7.1. FIFOバッファーのオーバーフローとアンダーフロー

通常のデータ転送条件下では、FIFOバッファーのオーバーフローとアンダーフローは発生しません。ただし、プログラミング・エラーがある場合は、FIFOバッファーのオーバーフローまたはアンダーフローが発生する可能性があります。次のシナリオを例に考えます。

送信の場合

  • PBL = 4
  • TXウォーターマーク = 1

このプログラミング値では、FIFOバッファーに空の位置が1つしかない場合に、DMAは利用可能なストレージが1ワードしかないにもかかわらず、メモリーから4ワードを読み出そうとします。これにより、FIFO Buffer Overflow割り込みが発生します。

受信の場合

  • PBL = 4
  • RXウォーターマーク = 1

このプログラミング値では、FIFOバッファーに満たされている位置が1つしかない場合に、DMAは1ワードしか利用できないにもかかわらず、4ワードを書き込もうとします。これにより、FIFO Buffer Underflow割り込みが発生します。

ドライバーでは、記述子に示される転送バイト数が4バイトの倍数であることを確認する必要があります。例えば、bytcntレジスターが13の場合、記述子に示されるバイト数は16に切り上げる必要があります。長さフィールドは常に4バイトの倍数にする必要があります。