クリティカルな問題
インテル® Arria® 10、Stratix® V、Arria® V、または Cyclone® V デバイスに実装された JESD204B IP RTL ステート・マシン・コントロール・デザイン例の複数リセットを実行すると、tx_err (0x60)、rx_err0 (0x60) から読み取ることができるエラーが原因で、割り込みピン (jesd204_tx_int、またはjesd204_rx_int) がアサートされます。 およびrx_err1 (0x64) レジスター
インテル Arria 10 デバイスについては、代わりに Nios® II プロセッサーのデザイン例 を使用してください。
Stratix V、Arria V、または Cyclone V デバイスの場合、RTL に対して以下の変更を行います。
- jesd204b_ed.sv ファイルでトップレベル・モジュール・jesd204b_edを変更します。
アクティブなハイリセット・ワイヤーを定義します。
ワイヤー tx_link_rst_sync;
ワイヤー tx_frame_rst_sync;
ワイヤー rx_link_rst_sync;
ワイヤー rx_frame_rst_sync;
ワイヤー global_rst_sync;
以下のワイヤ割り当てでリセットの極性を変更します。
トランシーバーの準備が整うまで、コアをリセットモードに保持する
global_rst_n_sync = ~global_rst_syncを割り当てます。global_rst_n_sync割り当ての追加
tx_avs_rst_nを割り当てる = avs_rst_n;
rx_avs_rst_nを割り当てる = avs_rst_n;
tx_frame_rst_n= ~tx_frame_rst_syncを割り当てます。
rx_frame_rst_n = ~rx_frame_rst_syncを割り当てます。
tx_link_rst_n = ~tx_link_rst_syncを割り当てます。
rx_link_rst_n = ~rx_link_rst_syncを割り当てます。
altera_reset_controllerは、アクティブな高リセット・シンクロナイザーです。正しい極性を反映して、リセット・シンクロナイザーのインスタンス化の入力と出力を変更します。
//
グローバル・リセット用リセット・シンクロナイザー (mgmt クロックドメイン)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1)
.OUTPUT_RESET_SYNC_EDGES (「デアサート」)
.SYNC_DEPTH (2)
) u_avs_rst_sync (
.reset_in0 (~global_rst_n)
.clk (mgmt_clk)
.reset_out (global_rst_sync)
);
バス信号であるwire_tx_readyおよびwire_rx_readyでビットごとの AND を実行します。
//
トランスポート・レイヤーのリセット用リセット・シンクロナイザー (フレーム・クロック・ドメイン)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1)
.OUTPUT_RESET_SYNC_EDGES (「デアサート」)
.SYNC_DEPTH (2)
) u_tx_frame_rst_sync (
.reset_in0 (~(wire_frame_rst_n & wire_tx_ready))
.clk (frame_clk)
.reset_out (tx_frame_rst_n_sync)
);
altera_reset_controller #(
.NUM_RESET_INPUTS (1)
.OUTPUT_RESET_SYNC_EDGES (「デアサート」)
.SYNC_DEPTH (2)
) u_rx_frame_rst_sync (
.reset_in0 (~(wire_frame_rst_n & wire_rx_ready))
.clk (frame_clk)
.reset_out (rx_frame_rst_n_sync)
);
//
ベースコアリセット用リセット・シンクロナイザー (リンク・クロック・ドメイン)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1)
.OUTPUT_RESET_SYNC_EDGES (「デアサート」)
.SYNC_DEPTH (2)
) u_tx_link_rst_sync (
.reset_in0 (~(wire_link_rst_n & wire_tx_ready)) )
.clk (link_clk)
.reset_out (tx_link_rst_n_sync)
);
altera_reset_controller #(
.NUM_RESET_INPUTS (1)
.OUTPUT_RESET_SYNC_EDGES (「デアサート」)
.SYNC_DEPTH (2)
) u_rx_link_rst_sync (
.reset_in0 (~(wire_link_rst_n & wire_rx_ready))
.clk (link_clk)
.reset_out (rx_link_rst_n_sync)
);
----------------------------------------
2. モジュールcontrol_unit (control_unit.sv) で、frame_rst、link_rst、avs_rst &xcvr_rstのリセット値を 変更 します。
//
ベースコア・トランシーバー・リセット用出力レジスター
//
always @ (clk またはネゲッジrst_n)
開始
(~rst_n) 始まる場合
frame_rst
link_rst
avs_rst
xcvr_rst
end else begin
この問題に対する計画的な修正はありません。