文章 ID: 000076355 内容类型: 故障排除 上次审核日期: 2021 年 08 月 27 日

为什么 RapidIO I 在链接重新初始化后可能port_ok状态信号不表明这一点?

环境

  • 英特尔® Quartus® Prime Pro Edition
  • RapidIO(IDLE1 高达 5.0 Gbaud)英特尔® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    关键问题

    说明

    port_ok位 0 的状态,在链接重新初始化后,端口 0 错误和状态 CSR (0x158) 可能保持在低水平。链接的重新初始化要么通过在端口 0 控制 CSR (0x15C) 中触发 bit-23 PORT_DIS,要么在链接伙伴执行重置时完成。这可能会在正常操作期间导致严重错误,

    出现此种问题的原因如下:

    • 在收发器发出复位之前,RapidIO 内核可能已过重置。这使得 RapidIO 内核在收发器仍处于重置阶段时开始工作。
    • 词重新校准过程限于通道 0,并且在链接重新初始化过程中仅触发一次。

    此问题影响以下 RapidIO I 变体:

    • Arria® V/Cyclone® V,采用 x2 模式。
    • Arria V/Cyclone V,速度为 5000 Mbaud。
    • Arria V,采用 x4 模式,速度为 3125 Mbaud。
    解决方法

    为了确保收发器已过重置,并准备好在 RapidIO 内核之前启动任何操作,请使用模块中的收发器就绪状态信号符合 RapidIO 内核重置条件_riophy_reset:

    TX_SIDE

     

    始终 @(tx_clk或 negedge reset_n)

    开始

    如果 (!reset_n) 开始

    tx_ready_s0

    tx_ready_s1

     

    结束其他开始

    tx_ready_s0

    tx_ready_s1

     

    结束

     

    结束

     

    始终 @ (tx_clk或 negedge reset_n) 开始

    如果(!reset_n)开始

    txreset_n_p2

    txreset_n_p1

    txreset_n

    结束其他开始

    如果 (!gxbpll_locked_tx_clk_d2|| !tx_ready_s1)开始

    txreset_n_p2

    txreset_n_p1

    txreset_n

    结束其他开始

    txreset_n_p2

    txreset_n_p1

    txreset_n

    结束

    结束

    结束

     

    RX_SIDE

     

    始终 @(rx_clk或 nege reset_n)

    开始

    如果 (!reset_n) 开始

    rx_ready_s0

    rx_ready_s1

     

    结束其他开始

    rx_ready_s0

    rx_ready_s1

     

    结束

    结束

     

    始终 @ (rx_clk或 negedge reset_n) 开始

    如果(!reset_n)开始

    rxreset_n_p2

    rxreset_n_p1

    rxreset_n

    结束其他开始

    如果 (!rx_ready_s1) 开始

    rxreset_n_p2

    rxreset_n_p1

    rxreset_n

     

    结束其他开始

    rxreset_n_p2

    rxreset_n_p1

    rxreset_n

     

    结束

    结束

    结束

     

    要触发字重新对齐过程手动进行,通过 Avalon-MM phy_mgmt 收发器接口执行以下步骤:

    (1) 确定phy_mgmt_write=1'b1 指定写入操作。

    (2) 将数据写入地址phy_mgmt_writedata=32'b0,以地址phy_mgmt_address=9'h80 为目标通道 0。

    (3) 将数据写入地址phy_mgmt_writedata=32'b1 到地址phy_mgmt_address=9'h85,以表明rx_enapatternalign,这将触发通道 0 的字对齐操作。

    (4) 将数据写入地址phy_mgmt_writedata=32'b0,地址phy_mgmt_address=9'h85,deassert rx_enapatternalign。

    对于其它所有通道,重复上述步骤:通道 1(0x80=32'b1)、通道 2(0x80=32'b2)和通道 3(0x80=32'b3)。

    相关产品

    本文适用于 2 产品

    Arria® V FPGA 和 SoC FPGA
    Cyclone® V FPGA 和 SoC FPGA

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