記事 ID: 000076355 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

リンクの再初期化後に RapidIO がステータス信号をport_okしないのはなぜですか?

環境

  • インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
  • RapidIO (IDLE1 最大 5.0Gbaud) インテル® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    クリティカルな問題

    詳細

    ビット 0 のステータスport_ok、ポート 0 エラーおよびステータス CSR (0x158) は、リンクの再初期化が発生した後も LOW を維持する場合があります。リンクの再初期化は、ポート 0 Control CSR (0x15C) のビット 23 PORT_DISのトリガーによって、またはリンクパートナーがリセットを実行しているときに実行されます。通常の動作中に致命的なエラーが発生する可能性があります。

    この問題は、次の理由により発生します。

    • RapidIO コアは、トランシーバーがリセットから外れる前にリセットから外れる場合があります。これにより、トランシーバーがリセットされている間に RapidIO コアが動作を開始します。
    • リアライメント・プロセスはレーン 0 に限定され、リンクの再初期化中に 1 回のみトリガーされます。

    この問題は、以下の RapidIO I バリアントに影響を与えています。

    • v / Cyclone® V x2 モードArria®。
    • Arria V/Cyclone V (ボーレート 5000 Mbaud)
    • Arria V (ボーレート 3125 Mbaud x4 モード)。
    解決方法

    トランシーバーがリセットから外れ、RapidIO コアの前に動作を開始できるように、モジュール_riophy_resetのトランシーバー対応ステータス信号で RapidIO コアのリセットを確認します。

    TX_SIDE

     

    常に @(posedge tx_clk または negedge reset_n)

    開始

    (!reset_n) が始まる場合

    tx_ready_s0 < = 1'b0;

    tx_ready_s1 < = 1'b0;

     

    その他の開始

    tx_ready_s0 < = tx_ready。

    tx_ready_s1 <= tx_ready_s0。

     

    終わり

     

    終わり

     

    常に @ (tx_clkまたはネゲジ・reset_n) が始まる

    if (!reset_n)が始まる

    txreset_n_p2 < = 1'b0;

    txreset_n_p1 < = 1'b0;

    txreset_n < = 1'b0;

    その他の開始

    if (!gxbpll_locked_tx_clk_d2 || !tx_ready_s1)が始まる

    txreset_n_p2 < = 1'b0;

    txreset_n_p1 <= 1'b0;

    txreset_n < = 1'b0;

    その他の開始

    txreset_n_p2 <= 1'b1;

    txreset_n_p1 < = txreset_n_p2。

    txreset_n < = txreset_n_p1。

    終わり

    終わり

    終わり

     

    RX_SIDE

     

    常に @(posedge rx_clk または negedge reset_n)

    開始

    (!reset_n) が始まる場合

    rx_ready_s0 < = 1'b0;

    rx_ready_s1 < = 1'b0;

     

    その他の開始

    rx_ready_s0 < = rx_ready。

    rx_ready_s1 < = rx_ready_s0。

     

    終わり

    終わり

     

    常に @ (rx_clkまたはネゲジreset_n) が始まる

    if (!reset_n)が始まる

    rxreset_n_p2 < = 1'b0;

    rxreset_n_p1 < = 1'b0;

    rxreset_n <= 1'b0;

    その他の開始

    (!rx_ready_s1) が始まる場合

    rxreset_n_p2<=1'b0;

    rxreset_n_p1<=1'b0;

    rxreset_n<=1'b0;

     

    その他の開始

    rxreset_n_p2 < = 1'b1;

    rxreset_n_p1 < = rxreset_n_p2。

    rxreset_n < = rxreset_n_p1。

     

    終わり

    終わり

    終わり

     

    ワードの再整列処理を手動でトリガーするには、Avalon-MM phy_mgmt・トランシーバー・インターフェイスで次の手順を実行します。

    (1) Assert phy_mgmt_write=1'b1 は書き込み演算を指定します。

    (2) レーン 0 を対象とするアドレス phy_mgmt_address=9'h80 にデータphy_mgmt_writedata=32'b0 を書き込みます。

    (3) アドレス phy_mgmt_address=9'h85 にデータphy_mgmt_writedata=32'b1 を書き込み、rx_enapatternalignを表明してレーン 0 のワードアラインメント演算をトリガーします。

    (4) アドレス phy_mgmt_address=9'h85 にデータphy_mgmt_writedata=32'b0 を書き込み、rx_enapatternalignを deassert します。

    レーン 1 (0x80=32'b1)、レーン 2 (0x80=32'b2)、レーン 3 (0x80=32'b3) については上記の手順を繰り返します。

    関連製品

    本記事の適用対象: 2 製品

    Arria® V FPGA & SoC FPGA
    Cyclone® V FPGA & SoC FPGA

    このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。