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

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

19.4.2.2. 送信FIFOバッファーと受信FIFOバッファー

256の深さを備える16ビットまたは32ビットのFIFOバッファーが2つ (送信FIFOバッファーと受信FIFOバッファー) あります。16ビットまたは32ビット未満のサイズのデータフレームは、送信FIFOバッファーに書き込まれる際に右揃えにする必要があります。データフレームの長さは、最大転送サイズによって異なります。シフト制御ロジックは、受信FIFOバッファー内の受信データを自動的に右揃えにします。†

FIFOバッファーの各データエントリーには、単一のデータフレームが含まれます。複数のデータフレームを単一のFIFOバッファー位置に格納することはできません。例えば、8ビットのデータフレーム2つを単一のFIFOバッファー位置に格納することはできません。8ビットのデータフレームが必要な場合は、シリアルシフターがデータを送信する際に、FIFOバッファーエントリーの上位8ビットは無視される、すなわち使用されません。†

SPIコントローラーが無効 (SPIENR=0) になる、もしくはリセットされると、送信FIFOバッファーおよび受信FIFOバッファーはクリアされます。

送信FIFOバッファーは、SPIデータレジスター (DR) への書き込みコマンドによってロードされます。データは、シフト制御ロジックによって送信FIFOバッファーから送信シフトレジスターにポップ (取り出し) されます。FIFOバッファー内のエントリー数がFIFOバッファーのしきい値の値以下になると、送信FIFOバッファーはTransmit FIFO Empty Interrupt要求を生成します。レジスターTXFTLRを介して設定されるしきい値の値は、割り込みが生成されるFIFOバッファーのエントリーレベルを決定します。しきい値の値を使用すると、送信FIFOバッファーが空に近い状態であることを早期にプロセッサーに示すことが可能になります。すでにフルの状態の送信FIFOバッファーにデータの書き込みを試みると、Transmit FIFO Overflow Interruptが生成されます。†

データは、SPIデータレジスター (DR) への読み出しコマンドによって受信FIFOバッファーからポップされます。受信FIFOバッファーは、シフト制御ロジックによって受信シフトレジスターからロードされます。受信FIFOバッファーは、FIFOバッファーのエントリー数がFIFOバッファーのしきい値に1を加えた数以上になると、Receive FIFO Full Interrupt要求を生成します。レジスターRXFTLRを介して設定されるしきい値の値は、割り込みが生成されるFIFOバッファーのエントリーレベルを決定します。†

しきい値の値を使用すると、受信FIFOバッファーがフルに近い状態であることを早期にプロセッサーに示すことが可能になります。完全にフルの状態の受信FIFOバッファーに対して受信シフトロジックがデータのロードを試みると、Receive FIFO Overrun Interruptが生成されます。ただし、新しく受信したデータは損失します。空の受信FIFOバッファーからの読み出しを試みると、Receive FIFO Underflow Interruptが生成されます。これにより、読み出しデータが無効であることをプロセッサーに警告します。†