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

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

B.5.3. SPIレガシーモード

SPIレガシーモードでは、ソフトウェアで内部のTX FIFOバッファーおよびRX FIFOバッファーに直接アクセスできるため、ダイレクトまたは間接コントローラー、およびSTIGコントローラーをバイパスすることができます。レガシーモードが有効になっている場合、ソフトウェアでは、データスレーブを介して任意の値を任意のアドレスに書き込むことにより、TX FIFOバッファーおよびRX FIFOバッファーにアクセスします。レガシーモードは、cfgレジスターのLegacy IP Mode Enable (enlegacyip) ビットで有効にすることができます。

レガシーモードでは、ユーザーは任意のフラッシュ命令をフラッシュデバイスに発行することができますが、FIFOバッファーのフィルレベルを効果的に管理するために、ソフトウェアのオーバーヘッドが大きくなります。レガシーSPIモードは本質的に双方向であり、チップセレクトが有効になっている際に、データは連続的に双方向に転送されます。ドライバーがフラッシュデバイスからのデータの読み出しのみを行う必要がある場合は、ダミーデータを書き込み、チップセレクトをアクティブに保つ必要があります。書き込みトランザクションの場合はその逆になります。

例えば、4バイトの基本的な読み出しをフラッシュデバイスに行う際に3つのアドレスバイトがある場合は、ソフトウェアで合計8バイトをTX FIFOバッファーに書き込む必要があります。最初のバイトは命令オペコード、次の3バイトはアドレス、そして最後の4バイトはダミーデータになります。それにより、読み出しデータが返されている際にチップセレクトがアクティブで維持されるようにします。同様に、8バイトがTX FIFOバッファーに書き込まれているため、ソフトウェアでは、8バイトがRX FIFOバッファーに返されることを想定します。この場合、最初の4バイトは破棄され、デバイスから読み出されたデータを保持する最後の4バイトが残されます。

TX FIFOバッファーとRX FIFOバッファーの深さはそれぞれ4バイトであるため、ソフトウェアでFIFOバッファーのレベルを維持管理し、TX FIFOバッファーがアンダーフローしないこと、およびRX FIFOバッファーがオーバーフローしないことを保証する必要があります。フィルレベルがウォーターマーク・レベルを超えると、それを示す割り込みが提供されます。このウォーターマーク・レベルは、TX Threshold (txtresh) レジスターおよびRX Threshold (rxtresh) レジスターを介してコンフィグレーション可能です。