Mailbox Client Intel® FPGA IPユーザーガイド

ID 683290
日付 4/01/2024
Public
ドキュメント目次

1.9. Mailbox Client Intel® FPGA IPの使用

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

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

書き込みコマンドの説明

コマンドをSDMに送信する場合は、コマンドワードをコマンドレジスター (ベースアドレス) に書き込みます。ハードウェアとの同期を保つため、コマンド長 (t) が0より大きい場合は、ヘッダーと引数を Command レジスター (ベースアドレス + 0) に書き込みます。FIFOにコマンドで利用できる空き領域がある (n > t) 間は、Command レジスター (ベースアドレス + 0) にヘッダーまたは引数の書き込みを1ワードずつ続けます。最後のワードを Command last word レジスター (ベースアドレス + 1) に書き込みます。引数のないコマンドの場合は、ヘッダーを Command last word レジスター (ベースアドレス + 1) に書き込みます。

ベースアドレス + 2から読み出しを行うと、コマンドで利用可能なFIFOの残りの空き領域が表示されます。SDMがビジー状態の場合、コマンドFIFOがフルの状態になることがあります。IPでは、Command FIFO empty space の値の更新に3クロックサイクルが必要です。Command FIFO empty space の値の読み出しは、コマンドをIPに書き込み、3クロックサイクルが経過してから開始することができます。

Command FIFO empty space レジスター (ベースアドレス + 2) を確認してから、Command または Command last word レジスターに書き込みを行います。FIFOがフルの状態で「ベースアドレス + 0」および「ベースアドレス + 1」に書き込みを行う場合のIPの動作は未定義です。書き込みデータは破棄されます。

必要以上のコマンドを送信すると、予期しない動作や未定義の動作が発生する可能性があります。例えば、Chip IDの値の読み出しに次のコマンドを送信する場合などです。
  • コマンドヘッダーを「ベースアドレス + 0」に書き込む
  • 再度コマンドヘッダーを「ベースアドレス + 1」に書き込む

上のシナリオでは、IPコアは3ワードの応答 (コマンドヘッダーと2つのデータワード) を想定します。ただし、SDMはエラー応答コードである1ワードの応答のみを返します。

コマンドは正しい順序で Command または Command last word レジスターに送信する必要があります。詳細は、コマンドパケットの書き込みで説明されています。正しい順序でコマンドを送信しないと、次のようなスタンドアロンIPコアを含むすべてのメールボックス・クライアントのサービスを失う可能性があります。

  • Temperature Sensor Intel® FPGA IP
  • Voltage Sensor Intel® FPGA IP
  • Chip ID Intel® FPGA IP
  • Advanced SEU Detection Intel IP
  • Partial Reconfiguration Controller Intel IP
  • Partial Reconfiguration External Configuration Controller Intel® FPGA IP

応答パケットの読み出し

図 7. 応答パケット読み出しフローチャート

読み出しコマンドの説明

  1. 「ベースアドレス + 8」を読み出し、Interrupt status レジスターのビット0が1になっているかを確認します。これは、マスターで読み出すことができるデータがあることを示します。Interrupt status レジスターは、ビット0が1になるまで継続してポーリングすることができます。
  2. 「ベースアドレス + 6」を読み出し、SOP (start of packet)、EOP (end of packet)、および Response FIFO fill level (n) を確認します。

    複数のワードを読み出すには、次の手順を実行します。

    1. SOP = 1 で、EOP = 0 の場合、応答には複数のワードが含まれます。
    2. Response FIFO fill level (n) が0以外の場合、FIFOには有効なデータがあります。
    3. 例えば、QSPI_READ 操作を行いクアッドSPIフラッシュから10ワードを読み出す場合、戻り値は 0x0000002d で、SDMが応答FIFOに11ワードの書き込みを行ったことを示します。11ワードは、応答ヘッダーワードと10のデータワードで構成されます。
    単一ワードを読み出すには、次の手順を実行します。
    1. SOP = 1 で、EOP = 1 の場合、応答は単一ワードになります。
    2. Response FIFO fill level が0以外の場合、FIFOには有効なデータがあります。
    3. 戻り値の 0x00000007 はSDMが応答FIFOに1ワードの書き込みを行ったことを示します。この1ワードは、シングルサイクル・パケットの開始であり、終了になります。
  3. 「ベースアドレス + 5」の応答ヘッダーを読み出します。LENGTH の値は応答のワード数を指定します。応答エラーコードが0の場合は、ステップ4に進みます。応答エラーコードが0以外の場合は、失敗したコマンドを意味します。詳細は、エラーコードを参照してください。
  4. 応答ヘッダーの長さ (t) が0より大きい場合 (LENGTH > 1) は、「ベースアドレス + 5」を読み出し応答データを取得します。応答データを継続的に読み出すと同時に「ベースアドレス + 6」も継続的にポーリングし、Response FIFO fill level (n) を確認します。パケットの最後のワードでは、Response FIFO fill level (n) と EOP の値が同時に1になると想定されます。応答データの最後のワードを読み出す前に、EOP = 1であることを確認する必要があります。
    注:

    応答FIFOが空の場合、返されるデータは未定義です。Interrupt status レジスターを確認し、有効なデータが利用可能なことを確認する必要があります。Response FIFO fill level (n) が0以外になっていることを確認してから、応答データを読み出します。

    新しいコマンドをMailboxに発行する前に、応答FIFOの内容を読み出す、もしくは消去するようにします。応答FIFOから有効なデータを読み出さずにコマンドを継続的に送信すると、応答FIFOが徐々に埋まっていきます。応答FIFOがオーバーフローすると、SDMがフリーズします。

    SDMがフリーズした場合は、デバイスをリコンフィグレーションする必要があります。 Quartus® Prime開発ソフトウェアでは、バージョン19.1からデバイスのリコンフィグレーションをサポートしています。それ以前の Quartus® Prime開発ソフトウェアのバージョンでは、デバイスの電源を再投入して回復させます。

制約

  1. 1つの要求を発行して応答を読み戻した後にのみ、新しい要求をMailbox Client IPに発行することができます。
  2. Agilex™ 5デバイスでは、Mailbox Client IPのインスタンス化は1つのみサポートされています。
  3. デザインでは6つを超えるメールボックス・クライアントをインスタンス化しないでください。6つを超えるメールボックス・クライアントが必要なデザインでは、Mailbox Client IPを使用して、次のスタンドアロンIPコアを置き換えます。
    • Voltage Sensor Intel® FPGA IP
    • Chip ID Intel® FPGA IP
    • Serial Flash Mailbox Client Intel® FPGA IP
    • Temperature Sensor Intel® FPGA IP
重要:

Quartus® Prime開発ソフトウェアのバージョン19.2以降では、 Avalon® メモリーマップド・インターフェイス経由でSDMにアクセスする次のMailbox Client IPに制約が適用されます。

  • Temperature Sensor
  • Voltage Sensor
  • Chip ID
  • Serial Flash Mailbox Client
  • Mailbox Client IP
  • Advanced SEU Detection IP
  • Partial Reconfiguration IP

Quartus® Primeプロ・エディションのバージョン19.2以降でコンパイルされたデザインでMailbox IPを使用する場合は、バージョン19.2以降のSDMファームウェアのみを使用してFPGAをコンフィグレーションする必要があります。