Mailbox Client インテル® Stratix® 10 FPGA IP コア・ユーザーガイド

ID 683290
日付 4/19/2019
Public

1.5. Mailbox Client インテル® Stratix® 10 FPGA IP コアの使用

コマンドパケットの書き込み

図 3. コマンドパケットの書き込みフローチャート

SDMにデータを送信する際は、コマンドワードをコマンドレジスターに書き込みます。最後のワードはcommand_last_wordレジスターに書き込み、ハードウェアとの同期を維持する必要があります。コマンドが0の引数を持つ場合、ヘッダーをcommand_last_wordレジスターに書き込む必要があります。

1ワードのコマンド (ヘッダーのみ) の場合は、base + 1へ書き込みます。

複数ワードのコマンド (ヘッダーと引数) の場合

  1. ヘッダーと引数をbase + 0へ書き込みます (最後の引数を除く)。
  2. 最後の引数をbase + 1へ書き込みます。

コマンドがFIFOで利用できる未使用のスペースを示すbase + 2から読み込むことができます。SDMがビジーの場合、FIFOはフルになります。コマンドFIFOの空きスペースの値を更新するために、IPは3クロックサイクル必要です。値の読み取りは、コマンドをIPに書き込み後、3クロックサイクル後にのみ開始できます。

FIFOがフルの状態でbase + 0およびbase + 1に書き込んだ場合のIPの動作は定義されていません。書き込みデータは破棄されます。

必要以上のコマンドを送信した場合、IPの予期しない動作や未定義の動作が発生する可能性があります。チップIDの値を読み取るために送信される次のコマンドを例にします。
  • コマンドヘッダーをbase + 0へ書き込む
  • コマンドヘッダーをbase + 1に再度書き込む

上記シナリオにおいて、IPコアは3つの応答を予期しますが、SDMは1つの応答しか返しません。これはエラー応答コードです。

コマンドパケットの書き込み で説明されているように、コマンドはコマンドレジスターまたはコマンド最終ワードのレジスターに正確な順序で送信されなければなりません。これにより、温度センサー インテル® Stratix® 10 FPGA IP、電圧センサー インテル® Stratix® 10 FPGA IP、チップID インテル® Stratix® 10 FPGA IPなどのスタンドアロンIPコアを含む、すべてのメールボックス・クライアントへのサービス損失を防ぎます。

応答パケットの読み込み

図 4. 応答パケットの読み取りフローチャート
  1. base + 8を読み取り、ISRのビット0が1であるかを確認します。

    コマンドパケットの書き込み完了後、ISRのビット0が1になるまでISRを連続してポーリングすることができます。

  2. base + 6を読み込み、SOP、EOPおよび応答FIFOのフィルレベルを確認します

    複数ワードを読み取る場合

    • SOP = 1およびEOP = 0であるかを確認します。これは、応答に複数ワードがあることを示します。
    • 応答FIFOのフィルレベルを確認し、0ではないことを確認します。
    • 例えば、QSPI_READ操作を実行し10ワードをQSPIフラッシュから読み取る場合、戻り値の0x0000002dは、応答FIFOを満たすために11ワードがSDMより返されたことを示します。この11ワードは、応答ヘッダーワードと10ワードのデータで構成されています。
    単一ワードを読み取る場合
    • SOP = 1およびEOP = 1であるかを確認します。
    • 応答FIFOのフィルレベルを確認し、0ではないことを確認します。
    • 例えば、戻り値の0x00000007は、応答FIFOを満たすためにワードがSDMより返されたことを示します。このワードはパケットの開始を表し、また、終了でもあります。
  3. 応答ヘッダーを読み取るためにbase + 5を読み取ります。lengthの値は、応答が有する引数の数 (例: n) を含みます。応答したエラーコードが0であれば、手順4へ進んでください。0以外のエラーコードの応答は、メールボックスへのコマンドの書き込みが正常に完了しなかったことを示しています。詳細は、表 3 を確認ください。
  4. 応答データをすべて取得するために、base + 5をn回読み込みます。応答データを連続してリードバックする際はbase + 6のポーリングも連続して行い、応答データを読み取る前に応答FIFOのフィルレベルが0ではないこと確認する必要があります。EOP = 1は、それが応答パケットの最後の応答データであることを示します。
    注:

    応答FIFOが空の場合は未定義の値が返されます。有効なデータが利用可能であることと、応答FIFOのフィルレベルをISRが確認するまで、応答データの読み取りは待機する必要があります。

    新しいコマンドをメールボックスに発行する前に、応答FIFOのコンテンツの読み出しまたはフラッシュを行ってください。応答FIFOから有効なデータをリードバックすることなくコマンドを連続して送信すると、応答FIFOの容量は増加し続けフルになっていきます。その結果、応答のオーバーフローによりSDMがフリーズします。

    SDMをフリーズから回復するには、デバイスの再コンフィグレーションが必要です。デバイスの再コンフィグレーションは、 インテル® Quartus® Prime開発ソフトウェアの19.1以降のバージョンでのみサポートされています。 インテル® Quartus® Prime開発ソフトウェアの19.1よりも前のバージョンでは、デバイスの電源を再投入しSDMをフリーズから回復してください。

制約

  1. メールボックス・クライアントIPに新しい要求を発行する前に、リクエストは1つのみ発行し応答をリードバックすることが可能です。SDMメールボックスに連続的にコマンドを送信する場合は、10 ms間隔待機する必要があります。
  2. デザインには6つ以上のメールボックス・クライアントをインスタンス化しないでください。メールボックス・クライアントを6つ以上使用する場合は、メールボックス・クライアントIPを使用し、メールボックス・クライアントとみなされている次のスタンドアロンIPコアの機能を置き換えることが可能です。
    • 電圧センサー インテル® Stratix® 10 FPGA IP
    • チップID インテル® Stratix® 10 FPGA IP
    • Stratix® 10 Serial Flash Mailbox Client インテル® FPGA IP
    • Advanced SEU Detection インテル® Stratix® 10 FPGA IP
    • Partial Reconfiguration Controller Stratix® 10 インテル® FPGA IP
    • Partial Reconfiguration External Configuration Controller Stratix® 10 インテル® FPGA IP