クリティカルな問題
ビット 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) については上記の手順を繰り返します。