ID de l'article: 000085194 Type de contenu: Dépannage Dernière révision: 12/06/2013

Pourquoi le débit de reconfig_busy du contrôleur de reconfiguration de l’émetteur-récepteur reste-t-il élevé après une réinitialisation ?

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descriptif

    Il est possible que la reconfiguration de l’émetteur-récepteur \'reconfig_busy\' port de sortie reste figée, ce qui est indiqué haut après une réinitialisation.  Il est possible que les canaux d’émetteur-récepteur connectés au contrôleur de reconfiguration affecté restent bloqués à la réinitialisation.  Le port de sortie \'reconfig_busy\ reste bloqué même après la réinitialisation du contrôleur de reconfiguration ; seule la reprogrammation du périphérique peut résoudre le problème.

    Ce symptôme peut être provoqué par la structure de réinitialisation interne du contrôleur de reconfiguration de l’émetteur-récepteur.  Une réinitialisation asynchrone de la logique entraînant le bus d’adresses d’un RAM M20K peut provoquer une logique asynchrone.  Cela peut entraîner l’affirmation simultanée de plusieurs lignes d’adresses dans le M20K, ce qui peut entraîner un partage de charge entre les cellules bits, corrompant le contenu du M20K.

    Cette corruption affecte les Stratix® V et Arria® contrôleur de reconfiguration de l’émetteur-récepteur des périphériques V GZ, car il contient un processeur Nios® II utilisé pour le calibrage PMA, et le code de programme du processeur est stocké dans la RAM M20K.  Si la corruption se produit dans la mémoire du programme Nios® II, cela peut entraîner le verrouillage du processeur, ce qui fait en sorte que le port de sortie reconfig_busy reste bloqué.  La récupération de cette situation n’est possible qu’en reprogrammant le périphérique, car le contenu M20K n’est chargé que pendant la programmation des périphériques.

    Résolution

    Le correctif de ce problème modifiera le contrôleur de réinitialisation interne et la structure de réinitialisation du contrôleur de reconfiguration de l’émetteur-récepteur pour utiliser des réinitialisations synchrones, ainsi que le découptage de manière préventive du port M20K clock_enable pendant une condition de réinitialisation.

    Le correctif sera disponible dans une version ultérieure du logiciel Quartus® II.  Un correctif peut être fourni pour les versions antérieures du logiciel Quartus II en soumettant une demande de service dans mySupport.  Si une solution est nécessaire immédiatement, le correctif peut être appliqué manuellement en suivant les instructions suivantes.

    Il y a 9 fichiers qui doivent être ajoutés ou modifiés :

    • altera_reset_controller_early_ce_mod.v (ajouter)
    • altera_reset_synchronizer_early_ce_mod.v (ajouter)
    • Fichier QIP associé au contrôleur de reconfiguration de l’émetteur-récepteur (modifier)
    • alt_xcvr_reconfig.sv (modifier)
    • alt_xcvr_reconfig_soc.sv (modifier)
    • alt_xcvr_reconfig_cpu.v (modifier)
    • alt_xcvr_reconfig_cpu_ram.sv (modifier)
    • sv_xrbasic_lif_csr.sv (modifier)
    • sv_xcvr_reconfig_mif_avmm.sv (modifier)

    Ces 9 fichiers doivent être situés dans le répertoire dans lequel le contrôleur de reconfiguration de l’émetteur-récepteur a été généré.


    Téléchargez altera_reset_controller_early_ce_mod.v et placez-le dans le répertoire dans lequel les fichiers de reconfiguration de l’émetteur-récepteur sont conservés :

    Télécharger altera_reset_synchronizer_early_ce_mod.v et placez-le dans le répertoire dans lequel les fichiers de reconfiguration de l’émetteur-récepteur sont conservés :

    Afin d’ajouter ces deux fichiers à votre conception, localisez et modifiez le fichier .qip associé à l’instance de contrôleur de reconfiguration de l’émetteur-récepteur et ajoutez les deux lignes suivantes au fichier :
    set_global_assignment -bibliothèque « LIBRARY_NAME » -nom VERILOG_FILE [fichier rejoindre $::quartus(qip_path) « LIBRARY_PATH/altera_reset_controller_early_ce_mod.v » ].
    set_global_assignment -bibliothèque « LIBRARY_NAME » - nom VERILOG_FILE [fichier rejoindre $:quartus(qip_path) « LIBRARY_PATH/altera_reset_synchronizer_early_ce_mod.v » ].

    Dans les deux lignes ci-dessus, modifiez LIBRARY_NAME et LIBRARY_PATH pour correspondre aux autres entrées du fichier .qip du contrôleur de reconfiguration de l’émetteur-récepteur.

    Pour alt_xcvr_reconfig.sv, effectuez les modifications suivantes :

    • Localisez l’instanciation du module alt_xcvr_resync et inversez les connexions entre les ports « d » et « reset » (Réinitialiser).  Une fois modifiée, l’instantiation devrait ressembler à ce qui suit :

    alt_xcvr_resync (nº)
    . INIT_VALUE (1)
    ) inst_reconfig_reset_sync (
    .clk (mgmt_clk_clk),
    .d (mgmt_rst_reset),
    .reset (1\'b0),
    .q (r_mgmt_rst_reset)
    );

    Pour alt_xcvr_reconfig_soc.sv, effectuez les modifications suivantes :

    Ajoutez la définition de fil suivante près du haut du module :

    cpu_reset_req fil ;

    Localisez l’instantiation du module alt_xcvr_reconfig_cpu et ajoutez le port suivant :

    .ram_ce (cpu_reset_req),

    Localisez l’instantiation du module alt_xcvr_reconfig_cpu_ram et ajoutez le port suivant :

    .ram_ce (cpu_reset_req),

    Pour alt_xcvr_reconfig_cpu.v, effectuez les modifications suivantes :

    • Ajoutez le port suivant au niveau supérieur :

    ram_ce de câble de sortie,

    • Ajoutez le code suivant au module :

    m20k_gate fil ;
    altera_ram_clock_enable fil ;
    assigner altera_ram_clock_enable = ~ m20k_gate ;
    assigner ram_ce = altera_ram_clock_enable ;

    • Trouvez l’instantiation de altera_reset_controller et changez-la en une instanciation de altera_reset_controller_early_ce_mod.  Ajoutez le port m20k_gate à cette instantiation, puis connectez-le au signal m20k_gate.  Après avoir apporté ces modifications, l’instantiation devrait ressembler à ce qui suit :

    altera_reset_controller_early_ce_mod (nº)
    . NUM_RESET_INPUTS (1),
    . OUTPUT_RESET_SYNC_EDGES (« de décort »),
    . SYNC_DEPTH (2)
    ) rst_controller (
    .reset_in0 (~reset_reset_n), // reset_in0.reset
    .clk (clk_clk), // clk.clk
    .reset_out (reconfig_ctrl_reset_reset), // reset_out.reset
    .m20k_gate (m20k_gate),
    .reset_in1 (1\'b0), // (résilié)
    .reset_in2 (1\'b0), // (terminé)
    .reset_in3 (1\'b0), // (résilié)
    .reset_in4 (1\'b0), // (résilié)
    .reset_in5 (1\'b0), // (terminé)
    .reset_in6 (1\'b0), // (résilié)
    .reset_in7 (1\'b0), // (résilié)
    .reset_in8 (1\'b0), // (résilié)
    .reset_in9 (1\'b0), // (résilié)
    .reset_in10 (1\'b0), // (résilié)
    .reset_in11 (1\'b0), // (résilié)
    .reset_in12 (1\'b0), // (résilié)
    .reset_in13 (1\'b0), // (résilié)
    .reset_in14 (1\'b0), // (résilié)
    .reset_in15 (1\'b0) // (résilié)
    );

    Pour le fichier alt_xcvr_reconfig_cpu_ram.sv, effectuez les modifications suivantes :

    • Ajoutez le port d’entrée suivant :

    ram_ce d’entrée,

    • Trouvez l’instanciation altsyncram et modifiez le port clocken0 pour le connecter au nouveau port d’entrée ram_ce :

    .clocken0 (ram_ce),

    • Modifiez les définitions defparam clock_enable_input/output_a/b comme suit :

    altsyncram_component.clock_enable_input_a = « NORMAL »,
    altsyncram_component.clock_enable_input_b = « NORMAL »,
    altsyncram_component.clock_enable_output_a = « NORMAL »,
    altsyncram_component.clock_enable_output_b = « NORMAL »,

    Pour le fichier sv_xrbasic_lif_csr.sv, effectuez les modifications suivantes :

    • Localisez le bloc toujours séquentiel qui contrôle l’adresse logique du canal.  Ce bloc peut toujours être identifié par le commentaire « // registre logique des canaux » ci-dessus.  Retirez l’état de réinitialisation de la liste de sensibilités.  Une fois modifié, le démarrage du bloc toujours en place devrait ressembler à ce qui suit :

    registre des canaux logiques
    toujours @(posedge reconfig_clk) commencer
    si (réinitialisation == 1) commencez
    ...

    • Localisez le bloc toujours séquentiel qui contrôle le registre d’adresses reconfig natif.  Ce bloc peut toujours être identifié par le commentaire « // registre des adresses reconfig natives, peut être interprété comme une adresse de décalage de canal ou une adresse physique » ci-dessus.  Retirez l’état de réinitialisation de la liste de sensibilités.  Une fois modifié, le démarrage du bloc toujours en place devrait ressembler à ce qui suit :

    registre d’adresse reconfig natif, peut être interprété comme une adresse de décalage de canal, ou une adresse physique
    toujours @(posedge reconfig_clk) commencer
    si (réinitialisation == 1) commencez
    ...

    Pour le fichier sv_xcvr_reconfig_mif_avmm.sv, cette modification n’est nécessaire que si la reconfiguration du canal ou de la PLL est activée dans la GUI Megawizard du contrôleur de reconfiguration de l’émetteur-récepteur.  Effectuez les modifications suivantes :

    • Localisez le bloc toujours séquentiel qui possède le commentaire « // Avalon sortie et stockage interne » ci-dessus et retirez l’état de réinitialisation de la liste de sensibilité.  Une fois modifié, le démarrage du bloc toujours en place devrait ressembler à ce qui suit :

    Avalon sortie et stockage interne
    toujours @(clk posege)
    Commencer
    si (réinitialisation) commencez
    ...

    Une fois toutes ces modifications apportées, votre conception devra être repilée.

    Produits associés

    Cet article concerne 2 produits

    FPGA Arria® V GZ
    FPGA Stratix® V GX

    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.