ID de l'article: 000077812 Type de contenu: Dépannage Dernière révision: 11/09/2012

Pourquoi certains signaux tri-état VHDL sont-ils déduits incorrectement dans la version 8.1 du logiciel Quartus II ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

Il existe un problème dans la version 8.1 du logiciel Quartus® II qui peut faire déduire incorrectement les signaux tri-état VHDL comme des multiplexeurs. Si le signal est connecté à une broche de sortie de l’appareil, le résultat de compilation peut amener la broche à se rendre sur la carte au lieu d’agir comme une sortie à trois états.

Le problème logiciel se produit uniquement si une entité de conception VHDL contient un port de sortie inutilisé avec une valeur par défaut qui comprend 'Z' (c’est-à-dire que le port de sortie possède la 'Z' cession à trois états dans la déclaration de l’entité, mais sans affectation explicite au signal dans la conception). Lorsque le problème se produit, toute logique de tri-état déduite décrite par des déclarations de vantation dans l’architecture de mise en cache est inférable incorrectement en tant que multiplexeurs. Le problème se limite à la hiérarchie unique de l’architecture et non aux hiérarchies instantanées, sauf si les autres entités possèdent le même type de port de sortie inutilisé avec une valeur par défaut comprenant 'Z' . Reportez-vous à l’exemple à la fin de cette solution pour une petite conception qui illustre ce problème.

Si les signaux tri-état affectés sont des connexions internes à trois états, l’inférateur est attendu car il n’y a pas de logique interne à trois états dans les périphériques Altera. Cependant, si les ports d’entité à trois états alimentent les broches d’E/S du périphérique, ce comportement logiciel peut entraîner la broche de sortie non utilisée à se rendre sur la carte au lieu d’agir comme une sortie à trois états, ce qui peut provoquer des conflits de signaux dans le système.

Pour contourner le problème et déduire le comportement tri-état défini, attribuez explicitement les broches de sortie non utilisées à une valeur de trois états à l’aide d’une affectation du signal dans la conception, au lieu de s’appuyer sur l’état par défaut. Par exemple, utilisez une déclaration telle unused_output <= 'Z'; que unused_output <= (others => 'Z');

Un correctif est disponible pour résoudre ce problème dans la version 8.1 du logiciel Quartus II. Téléchargez le correctif Windows 0.34 ou le correctif Linux 0.34, puis installez le correctif et recompilez la conception.

Ce problème logiciel sera également résolu dans une future version du logiciel Quartus II.

Voici un exemple de conception qui est affecté par ce problème :

library ieee;
use ieee.std_logic_1164.all;
entity example is
  port (
    en : in std_logic;
    data : in std_logic;
    unused_output: out std_logic := 'Z';
    other_output : out std_logic);
end example;

architecture rtl of example is
begin  
   -- other_output should be tri-state but won't be tri-state due to this problem
   other_output <= data when en = '1' else 'Z';
end rtl;

Pour déduire le comportement tri-état correct pour les deux broches de sortie dans l’exemple de conception ci-dessus avec le logiciel Quartus II version 8.1 , ajoutez la déclaration suivante dans l’architecture :
   unused_output <= 'Z';

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

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.