ID de l'article: 000082815 Type de contenu: Dépannage Dernière révision: 10/04/2018

Pourquoi observe-t-je un l’exemple de conception de contrôle de machine d’état IP RTL de l’état JESD204B lors de l’exécution de plusieurs réinitialisations de la machine d’état JESD204B ?

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • Intel® Quartus® Prime Standard Edition
  • FPGA Intel® IP JESD204B
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Problème critique

    Descriptif

    Lorsque vous effectuez des réinitialisations multiples de l’exemple de conception de la machine d’état JESD204B IP RTL mis en œuvre dans les périphériques Intel® Arria® 10, Stratix® V, Arria® V ou Cyclone® V, vous pouvez observer les broches d’interruption (jesd204_tx_int et/ou jesd204_rx_int) être revendiquées en raison d’erreurs ou de erreurs, qui peuvent être lues depuis la tx_err (0x60), rx_err0 (0x60), registres rx_err1 (0x64 ).

    Résolution

    Pour Intel Arria 10 périphériques, utilisez plutôt l’exemple de conception du processeur Nios® II.

    Pour Stratix V, Arria V ou Cyclone V, effectuez les modifications suivantes sur le RTL :

    1. Modifiez un module de haut niveau jesd204b_ed dans le fichier jesd204b_ed.sv.

    Définissez les fils actifs haute réinitialisation :

    tx_link_rst_sync fil ;

    tx_frame_rst_sync fil ;

    rx_link_rst_sync fil ;

    rx_frame_rst_sync fil ;

    global_rst_sync fil ;

     

    Modifiez la polarité de la réinitialisation dans les affectations filaires suivantes :

    Maintenez le cœur en mode de réinitialisation jusqu’à ce que l’émetteur-récepteur soit prêt

    assigner global_rst_n_sync = ~global_rst_sync ; Ajouter global_rst_n_sync affectation

    assigner tx_avs_rst_n = avs_rst_n ;

    assigner rx_avs_rst_n = avs_rst_n ;

    assigner tx_frame_rst_n = ~tx_frame_rst_sync ;

    attribuer rx_frame_rst_n = ~rx_frame_rst_sync ;

    attribuer des tx_link_rst_n = ~tx_link_rst_sync ;

    assigner rx_link_rst_n = ~rx_link_rst_sync ;

     

    altera_reset_controller est un synchronisateur actif à haute réinitialisation. Modifiez l’entrée et la sortie des instanciations de synchronisation de réinitialisation en conséquence pour refléter la polarité correcte :

    //

    Réinitialiser les synchronisations pour la réinitialisation globale (domaine de l’horloge mgmt)

    //

    altera_reset_controller (nº)

    . NUM_RESET_INPUTS (1),

    . OUTPUT_RESET_SYNC_EDGES (« de décort »),

    . SYNC_DEPTH (2)

    ) u_avs_rst_sync (

    .reset_in0 (~global_rst_n),

    .clk (mgmt_clk),

    .reset_out (global_rst_sync)

    );

     

    Effectuez des débits binaires ET sur les wire_tx_ready et les wire_rx_ready, qui sont des signaux de bus.

    //

     

    Réinitialiser les synchronisateurs pour la réinitialisation des couches de transport (domaine de l’horloge de trame)

    //

    altera_reset_controller (nº)

    . NUM_RESET_INPUTS (1),

    . OUTPUT_RESET_SYNC_EDGES (« de décort »),

    . 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 (nº)

    . NUM_RESET_INPUTS (1),

    . OUTPUT_RESET_SYNC_EDGES (« de décort »),

    . 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)

    );

     

    //

    Réinitialiser les synchronisations pour la réinitialisation du cœur de base (domaine de l’horloge de liaison)

    //

    altera_reset_controller (nº)

    . NUM_RESET_INPUTS (1),

    . OUTPUT_RESET_SYNC_EDGES (« de décort »),

    . 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 (nº)

    . NUM_RESET_INPUTS (1),

    . OUTPUT_RESET_SYNC_EDGES (« de décort »),

    . 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. Dans le module control_unit (control_unit.sv), modifiez la valeur de réinitialisation des frame_rst, des link_rst, des avs_rst et des xcvr_rst.

    //

    Registre de sortie pour la réinitialisation de l’émetteur-récepteur de base

    //

    toujours @ (clk ou negedge posege rst_n)

    Commencer

    si (~rst_n) commencent

    frame_rst

    link_rst

    avs_rst

    xcvr_rst

    la fin d’autre commence

     

    Il n’est pas prévu de résoudre ce problème.

    Produits associés

    Cet article concerne 7 produits

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

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.