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

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

19.4.6.3. National Semiconductor Microwire Protocol

マスターSPIでは、データ送信は出力イネーブル信号がデアサートされるとすぐに開始します。1/2シリアルクロック (sclk_out) 周期後に、制御の最初のビットがtxdラインで送信されます。制御ワードの長さは1から16ビットの範囲にすることができ、CTRLR0のビット・フィールドCFS (ビット15:12) に書き込むことで設定します。制御ワードの残りの部分は、SPIシリアルマスターによって送信 (sclk_ou tの立ち下がりエッジで伝播) されます。この送信中は、シリアルマスターのrxdラインにデータは存在しません (ハイ・インピーダンス)。†

データワードの方向は、Microwire Control Register (MWCR) のMDDビット・フィールド (ビット1) で制御されます。MDD=0の場合は、SPIシリアルマスターが外部シリアルスレーブからデータを受信することを示します。制御ワードのLSBが送信された1クロックサイクル後に、スレーブ・ペリフェラルがダミー0ビットで応答し、その後データフレームが続きます。データフレームの長さは、4ビットから16または32ビットにすることが可能です。データフレームの長さは、最大転送サイズによって異なります。データはシリアルクロックの立ち下がりエッジで伝播され、立ち上がりエッジでキャプチャーされます。†

Microwireプロトコルの連続転送は、シーケンシャルまたは非シーケンシャルにすることができます。これは、MWCRMWMODビット・フィールド (ビット0) で制御されます。†

非シーケンシャルな連続転送は、現在のデータワードのLSBの直後に次の転送の制御ワードが続いて発生します。†

非シーケンシャルな連続転送を行う際の唯一の違いは、送信FIFOバッファーにより多くの制御ワードを書き込む必要があることです。†

シーケンシャルな連続転送では、1つの制御ワードのみがSPIマスターから送信されます。転送は、非シーケンシャルな読み出し動作と同様に開始しますが、サイクルは継続し、データがさらに読み出されます。スレーブデバイスは自動的にアドレスポインターを次の位置にインクリメントし、その位置からデータを続けて提供します。この方法では、任意の数の位置を読み出すことが可能です。SPIマスターは、受信したワード数がCTRLR1レジスターの値に1を加えた数に等しくなると転送を終了します。†

MDD = 1の場合は、SPIシリアルマスターが外部シリアルスレーブにデータを送信することを示しています。制御ワードのLSBが送信された直後に、SPIマスターはスレーブ・ペリフェラルへのデータフレームの送信を開始します。†

注: SPIコントローラーは、Microwireのシーケンシャルな連続書き込み (MDD = 1、MWMOD = 1) をサポートしません。†

連続転送は、現在のデータワードのLSBの直後に次の転送の制御ワードが続いて発生します。

Microwireハンドシェイク・インターフェイスは、外部シリアルスレーブ・デバイスへのSPIマスター書き込み動作に対しても有効にすることができます。ハンドシェイク・インターフェイスを有効にするには、MWCRレジスターのMHSビット・フィールド (ビット2) に1を書き込む必要があります。MHSが1に設定されている場合、SPIシリアルマスターは、転送を完了する前、または連続転送に向けて次の制御ワードを送信する前に、スレーブデバイスからのReadyステータスを確認します。†

最初のデータワードがシリアルスレーブ・デバイスに送信されると、SPIマスターはrxd入力をポーリングし、スレーブデバイスからのReadyステータスを待機します。Readyステータスを受信すると、SPIマスターは次の制御ワードの送信を開始します。最後のデータフレームの送信が完了すると、SPIマスターはスタートビットを送信し、転送を完了する前にスレーブデバイスのReadyステータスをクリアします。†

SPIスレーブでは、データ送信はスレーブ選択信号 (ss_in_0) の立ち下がりエッジで開始します。1/2シリアルクロック (sclk_in) 周期後に、制御の最初のビットがrxdラインに提供されます。制御ワードの長さは1から16ビットの範囲にすることが可能です。これは、CTRLR0レジスターのビット・フィールドCFSに書き込むことで設定します。CFSビット・フィールドは、シリアルマスターから想定されている制御ワードのサイズに設定する必要があります。制御ワードの残りの部分は、SPIシリアルスレーブで受信 (sclk_inの立ち上がりエッジでキャプチャー) されます。この受信中に、シリアルスレーブのtxdラインでデータは駆動されません (ハイ・インピーダンス)。†

データワードの方向は、MWCRレジスターのMDDビット・フィールド (ビット1) で制御されます。MDD=0の場合は、SPIシリアルスレーブが外部シリアルマスターからデータを受信することを示します。制御ワードが送信された直後に、シリアルマスターはSPIスレーブのrxdラインにデータフレームの駆動を開始します。データはシリアルクロックの立ち下がりエッジで伝播され、立ち上がりエッジでキャプチャーされます。スレーブ選択信号は、転送中にアクティブLowに維持され、データが転送された1/2クロックサイクル後にデアサートされます。SPIスレーブ出力イネーブル信号は、転送の間非アクティブに維持されます。†

MDD=1の場合は、SPIシリアルスレーブが外部シリアルマスターにデータを送信することを示します。制御ワードのLSBが送信された直後に、SPIスレーブはダミー0ビットを送信し、それに4ビットから16または32ビットのデータフレームがtxdラインで続きます。†

SPIスレーブの連続転送は、SPIマスターに示されている内容と同様に行われます。Busy期間がないため、SPIスレーブはハンドシェイク・インターフェイスをサポートしません。†

図 91. SPIシリアルマスターにおける単一のMicrowireシリアル転送 (MDD=0)
図 92. SPIスレーブにおける単一のMicrowireシリアル転送 (MDD=1)