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

1

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.