ID do artigo: 000076355 Tipo de conteúdo: Solução de problemas Última revisão: 24/05/2017

Por que o rapidIO port_ok de status não pode afirmar após a re-inicialização do link?

Ambiente

  • Intel® Quartus® Prime Pro Edition
  • RapidIO (IDLE1 de até 5.0 Gbaud) Intel® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Problema crítico

    Descrição

    port_ok status em bit-0, erro de porta 0 e CSR de status (0x158) pode permanecer em LOW após a re-inicialização do link ocorrer. A re-inicialização do link é feita pelo acionamento de bit-23 PORT_DIS no CSR de controle da porta 0 (0x15C), ou quando o parceiro de link está executando a reinicialização. Isso pode causar um erro fatal durante a operação normal,

    Este problema acontece devido aos seguintes motivos:

    • O núcleo RapidIO pode estar fora de reinicialização antes do transceptor sair do reset. Isso faz com que o núcleo RapidIO comece a operar enquanto o transceptor ainda está em reinicialização.
    • O processo de re-alinhamento da palavra é limitado à faixa 0 e será acionado apenas uma vez durante a reinicialização do link.

    Este problema afeta as seguintes variantes do RapidIO I:

    • Arria® V/Cyclone® V com modo x2.
    • Arria V/Cyclone V à taxa baud 5000 Mbaud.
    • Arria V com modo x4 na taxa baud 3125 Mbaud.
    Resolução

    Para garantir que o transceptor está fora de reinicialização e pronto para iniciar qualquer operação antes do núcleo RapidIO, qualibilize o reset do núcleo RapidIO com os sinais de status prontos para transceptor no módulo _riophy_reset:

    TX_SIDE

     

    sempre @(posedge tx_clk ou negedge reset_n)

    Começar

    se (!reset_n) começar

    tx_ready_s0 <= 1'b0;

    tx_ready_s1 <= 1'b0;

     

    fim de outra começa

    tx_ready_s0 <= tx_ready;

    tx_ready_s1 <= tx_ready_s0;

     

    Final

     

    Final

     

    sempre @ (posedge tx_clk ou negedge reset_n) começar

    se(!reset_n)começar

    txreset_n_p2 <= 1'b0;

    txreset_n_p1 <= 1'b0;

    txreset_n <= 1'b0;

    fim de outra começa

    se (!gxbpll_locked_tx_clk_d2 || !tx_ready_s1) começar

    txreset_n_p2 <= 1'b0;

    txreset_n_p1 <= 1'b0;

    txreset_n <= 1'b0;

    fim de outra começa

    txreset_n_p2 <= 1'b1;

    txreset_n_p1 <= txreset_n_p2;

    txreset_n <= txreset_n_p1;

    Final

    Final

    Final

     

    RX_SIDE

     

    sempre @(posedge rx_clk ou negedge reset_n)

    Começar

    se (!reset_n) começar

    rx_ready_s0 <= 1'b0;

    rx_ready_s1 <= 1'b0;

     

    fim de outra começa

    rx_ready_s0 <= rx_ready;

    rx_ready_s1 <= rx_ready_s0;

     

    Final

    Final

     

    sempre @ (posedge rx_clk ou negedge reset_n) começar

    se(!reset_n)começar

    rxreset_n_p2 <= 1'b0;

    rxreset_n_p1 <= 1'b0;

    rxreset_n <= 1'b0;

    fim de outra começa

    se (!rx_ready_s1) começar

    rxreset_n_p2<=1'b0;

    rxreset_n_p1<=1'b0;

    rxreset_n<=1'b0;

     

    fim de outra começa

    rxreset_n_p2 <= 1'b1;

    rxreset_n_p1 <= rxreset_n_p2;

    rxreset_n <= rxreset_n_p1;

     

    Final

    Final

    Final

     

    Para desencadear o processo de re-alinhamento de palavras manualmente, execute as seguintes etapas através da interface Avalon-MM phy_mgmt transceptor:

    (1) Afirme phy_mgmt_write=1'b1 para especificar a operação de gravação.

    (2) Gravar dados phy_mgmt_writedata=32'b0 no endereço phy_mgmt_address=9'h80 para atingir a faixa 0.

    (3) Gravar dados phy_mgmt_writedata=32'b1 no endereço phy_mgmt_address=9'h85 para afirmar rx_enapatternalign que desencadeará a operação de alinhamento de palavras para a faixa 0.

    (4) Gravar dados phy_mgmt_writedata=32'b0 no endereço phy_mgmt_address=9'h85 para desassert rx_enapatternalign.

    Repita as etapas acima para todas as outras vias: faixa 1 (0x80=32'b1), pista 2 (0x80=32'b2) e faixa 3 (0x80=32'b3).

    Produtos relacionados

    Este artigo aplica-se a 2 produtos

    FPGAs Arria® V e FPGAs SoC
    FPGAs Cyclone® V e FPGAs SoC

    O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.