ID de l'article: 000078174 Type de contenu: Dépannage Dernière révision: 13/10/2014

Pourquoi la connexion d’horloges périphériques HPS à des broches externes via FPGA logique provoque-t-elle des erreurs d’ajustement Quartus® ?

Environnement

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

    Les horloges périphériques HPS suivantes peuvent être acheminées vers la logique FPGA :

    • emac0_md_clk
    • emac0_gtx_clk
    • emac1_md_clk
    • emac1_gtx_clk
    • qspi_sclk_out
    • spim0_sclk_out
    • spim1_sclk_out
    • i2c0_clk
    • i2c1_clk
    • i2c2_clk
    • i2c3_clk

    En raison d’un problème dans les versions 13.0 et ultérieures du logiciel Quartus® II, Quartus® fit peut générer un message d’erreur si ces horloges sont directement connectées à une broche de FPGA externe. Voici un exemple de signal spim1_sclk_out connecté à une broche externe :

    Erreur (14566) : Impossible de placer 1 composant(s) périphérique(s) en raison de conflits avec les contraintes existantes (1 pilote(s) d’horloge promu(s) automatiquement)

    Erreur (175020) : contrainte illégale d’un pilote d’horloge à promotion automatique faisant partie du système de processeur dur Arria V/Cyclone V ghrd_hps_0 à la région (92, 67) à (183, 137) : aucun emplacement valide dans la région

    Infos (14596) : Informations sur le composant défaillant :

    Infos (175028) : Le nom du pilote d’horloge promu automatiquement : ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

    Vous trouverez de plus amples renseignements sur ces horloges dans la section « Peripheral FPGA Clocks » du Manuel des appareils Cyclone® V ou Arria® V, Volume 3 : Manuel technique de référence du système de processeur dur (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, pages 27-12).

    Résolution

    Pour éviter ces messages d’erreur, le signal d’horloge doit d’abord être acheminé via une LUT. Cela peut être réalisé en instanciant une primitive lcell_comb appropriée pour votre famille d’appareils. Voici un exemple d’instanciation de lcell_comb Verilog pour l’horloge spim1_sclk_out du SoC Arria® V :

    arriav_lcell_comb wirelut( .dataa(spim1_sclk_from_hps), .combout(spim1_sclk_to_pin) );
    defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    defparam wirelut.dont_touch = « on »;

    Dans l’exemple ci-dessus, le signal spim1_sclk_from_hps est connecté au port de sortie spim1_sclk_out de l’instance HPS. Le signal spim1_sclk_to_pin peut être connecté au port de sortie de niveau supérieur et affecté à une broche FPGA.

    L’utilisation d’une primitive lcell_comb minimisera les ressources. L’utilisation d’une petite fonction combinatoire booléenne déduite permettra également d’éviter cette erreur. L’utilisation de la fonction booléenne évitera d’avoir à instancier une primitive, mais peut entraîner une utilisation des ressources légèrement plus élevée.

    Voici un exemple de code Verilog montrant un booléen inféré qui évite également une erreur en ANDing l’horloge avec un signal de faible réinitialisation actif (provoquant une instance LUT déduite) :

    attribuer spim1_sclk_to_pin = spim1_sclk_from_hps & réinitialiser ;

    Ce problème est résolu à partir de la version 15.1 du logiciel Quartus® II.

    Produits associés

    Cet article concerne 5 produits

    FPGA SoC Arria® V ST
    FPGA SoC Arria® V SX
    FPGA SoC Cyclone® V SE
    FPGA SoC Cyclone® V ST
    FPGA SoC Cyclone® V SX

    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.