문서 ID: 000076355 콘텐츠 형태: 문제 해결 마지막 검토일: 2017-05-24

링크 재초기화 후 RapidIO I port_ok 상태 신호가 어설션되지 않는 이유는 무엇입니까?

환경

  • 인텔® Quartus® Prime Pro Edition
  • RapidIO(IDLE1 최대 5.0Gbaud)) 인텔® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    중요 문제

    설명

    비트 0의 port_ok 상태, 포트 0 오류 및 상태 CSR(0x158)은 링크 재초기화가 발생한 후 LOW로 유지될 수 있습니다. 링크 재초기화는 포트 0 제어 CSR(0x15C)에서 bit-23 PORT_DIS를 트리거하거나 링크 파트너가 재설정을 수행할 때 수행됩니다. 정상 작동 중에 치명적인 오류가 발생할 수 있습니다.

    이 문제는 다음과 같은 이유로 발생합니다.

    • 트랜시버가 리셋에서 벗어나기 전에 RapidIO 코어가 리셋되지 않을 수 있습니다. 이로 인해 트랜시버가 재설정되는 동안 RapidIO 코어가 작동을 시작합니다.
    • 단어 재정렬 프로세스는 레인 0으로 제한되며 링크 재초기화 중에 한 번만 트리거됩니다.

    이 문제는 다음 RapidIO I 변형에 영향을 줍니다.

    • x2 모드의 Arria® V/Cyclone® V.
    • 전송 속도 5000Mbaud에서 Arria V/Cyclone V.
    • 전송 속도 3125Mbaud에서 x4 모드의 Arria V.
    해결 방법

    트랜시버가 재설정되지 않고 RapidIO 코어 전에 모든 작업을 시작할 준비가 되었는지 확인하려면 모듈 <your_ip>_riophy_reset의 트랜시버 준비 상태 신호로 RapidIO 코어 재설정을 검증합니다.

    TX_SIDE

    항상 @(posedge tx_clk 또는 negedge reset_n)

    시작

    if (!reset_n) 시작

    tx_ready_s0 <= 1'b0;

    tx_ready_s1 <= 1'b0;

    끝 그렇지 않으면 시작

    tx_ready_s0 <= tx_ready;

    tx_ready_s1 <= tx_ready_s0;

    항상 @(posedge tx_clk 또는 negedge reset_n) 시작

    if(!reset_n)begin

    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)

    시작

    if (!reset_n) 시작

    rx_ready_s0 <= 1'b0;

    rx_ready_s1 <= 1'b0;

    끝 그렇지 않으면 시작

    rx_ready_s0 <= rx_ready;

    rx_ready_s1 <= rx_ready_s0;

    항상 @(posedge rx_clk 또는 negedge reset_n) 시작

    if(!reset_n)begin

    rxreset_n_p2 <= 1'b0;

    rxreset_n_p1 <= 1'b0;

    rxreset_n <= 1'b0;

    끝 그렇지 않으면 시작

    if (!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) 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에 기록하여 레인 0에 대한 워드 정렬 작업을 트리거할 rx_enapatternalign 어설션합니다.

    (4) phy_mgmt_writedata=32'b0 데이터를 주소 phy_mgmt_address=9'h85에 기록하여 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

    이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.