文章 ID: 000082815 内容类型: 故障排除 上次审核日期: 2018 年 04 月 10 日

为什么在执行 JESD204B IP RTL 状态机器控制设计的多个重置时,要观察间歇性错误误码?

环境

  • 英特尔® Quartus® II 订阅版
  • 英特尔® Quartus® Prime 标准版
  • JESD204B 英特尔® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    关键问题

    说明

    执行 英特尔® 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) 寄存器。

    解决方法

    英特尔 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 产品

    英特尔® 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

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。