ID de l'article: 000077247 Type de contenu: Dépannage Dernière révision: 28/08/2007

Pourquoi le logiciel Quartus II convertit-il ma broche bidirectionnelle en broche à sortie seule ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

Le logiciel Quartus® II version 6.0 et ultérieure synthétise plus strictement les signaux directionnels VHDL. Comme il applique les règles VHDL, le logiciel Quartus II convertit des tampons bidirectionnels incorrectement codés en broches de sortie.

Par exemple, si vous implémentez une mémoire tampon bidirectionnelle comme indiqué dans le code suivant, le logiciel Quartus II synthétise une broche de sortie (à partir de la version 6.0).

process(mdio_out,mdio_oe)
begin
    if (mdio_oe = '1') then
        mac_mdio <= mdio_out;
    else
        mac_mdio <= 'Z';
    end if
end process;

mdio_oe <= NOT(mdio_oe_n);
test_out <= mac_mdio and test;
mii_mdio <= mac_mdio;

Si mac_mdio est un signal et mii_mdio est le port bidirectionnel, la dernière affectation ci-dessus est directionnelle. Comme écrit, il est impossible que les données passent d’mii_mdio à mac_mdio. À partir de la version 6.0, le logiciel Quartus II applique la nature directionnelle de cette affectation VHDL en insérant un tampon entre mac_mdio et mii_mdio. Cette mémoire tampon apparaît dans la visionneuse RTL comme mémoire tampon directionnelle dans la série avec la mémoire tampon à trois états, et la broche bidirectionnelle prévue (mii_mdio) est synthétisée comme une sortie uniquement.

Les versions antérieures du logiciel Quartus II n’appliquent pas la nature directionnelle de ces types de affectations, synthétisant le code ci-dessus comme une broche bidirectionnelle.

Pour être conforme à la norme VHDL, supprimez la dernière assignation de signal dans l’exemple ci-dessus et écrivez le code comme suit :

process(mdio_out,mdio_oe)
begin
    if (mdio_oe = '1') then
        mii_mdio <= mdio_out;
    else
        mii_mdio <= 'Z';
    end if;
end process;

mdio_oe <= NOT(mdio_oe_n);
test_out <= mii_mdio and test;

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

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.