文章 ID: 000082815 內容類型: 疑難排解 最近查看日期: 2018 年 04 月 10 日

為什麼在執行 JESD204B IP RTL 狀態機器控制設計範例的多個重設時,會觀察間歇性錯誤擷取?

環境

  • Intel® Quartus® II 訂閱版
  • Intel® Quartus® Prime Standard Edition 軟體
  • JESD204B Intel® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    重大問題

    描述

    執行在 Intel® Arria® 10 中實作之 JESD204B IP RTL 狀態機器控制設計範例的多個重設時, Stratix® V、Arria® V 或 Cyclone® V 裝置中,您可能會看到由於錯誤而堅持告斷針腳 (jesd204_tx_int和/或 jesd204_rx_int),可以從 tx_err (0x60)rx_err0 (0x60) 讀取 rx_err1 (0x64) 註冊。

    解決方法

    對於Intel Arria 10 個裝置,請改為使用Nios® II處理器設計範例。

    對於Stratix V、Arria V 或Cyclone V 裝置,請對 RTL 執行下列修改:

    1. 修改 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(「deassert」),

    .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上,以位方式執行

    //

     

    重設同步器以進行傳輸層重設(幀頻率領域)

    //

    altera_reset_controller #(

    .NUM_RESET_INPUTS (1),

    .OUTPUT_RESET_SYNC_EDGES(「deassert」),

    .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(「deassert」),

    .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(「deassert」),

    .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(「deassert」),

    .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的重設值。

    //

    基本核心收發器重設的輸出註冊器

    //

    永遠 @ (請參閱 clk 或 negedge rst_n)

    開始

    如果 (~rst_n) 開始

    frame_rst

    link_rst

    avs_rst

    xcvr_rst

    結束其他開始

     

    此問題沒有計劃修復。

    相關產品

    本文章適用於 7 產品

    Intel® Arria® 10 FPGA 與 SoC FPGA
    Stratix® V FPGA
    Arria® V FPGA 與 SoC FPGA
    Cyclone® V GX FPGA
    Cyclone® V GT FPGA
    Cyclone® V SX SoC FPGA
    Cyclone® V ST SoC FPGA

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。