Quel est le but de la " std_logic` type énuméré en VHDL?
Quel est le but de la std_logic
type énuméré?
'U': uninitialized. This signal hasn't been set yet.
'X': unknown. Impossible to determine this value/result.
'0': logic 0
'1': logic 1
'Z': High Impedance
'W': Weak signal, can't tell if it should be 0 or 1.
'L': Weak signal that should probably go to 0
'H': Weak signal that should probably go to 1
'-': Don't care.
OriginalL'auteur newprint | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
std_logic est, fondamentalement, un seul fil ou peu. Vous pouvez utiliser des opérateurs logiques (et, ou, xor, etc.) sur eux. Lors de la simulation d'un design, je crois que je l'ai vu seulement des 'X', '0' ou '1'. Évidemment, vous voulez que '0' ou '1'. Un " X " indique que la valeur est inconnue (peut-être pas connecté à quelque chose ou il y a un problème dans le signal). Aussi, std_logic_vector peut être utilisé pour les signaux qui doivent être de plus de 1 bits de large. Je ne sais pas si cela répond à votre question...
OriginalL'auteur Robert Harris
OriginalL'auteur BennyBarns
La
std_logic
type a été introduit par la norme IEEE-1164 standard comme un précis représentant d'un seul fil ou peu. Le langage VHDL lui-même ne fournit qu'un seul bits type qui est suffisamment robuste pour représenter le "réel" de la logique. C'est, pour représenter tous les états possibles de l'modelable et synthesizable logique dans un cadre moderne programmable logic device.Tôt dans l'histoire de VHDL, certains développeurs ont été essentiellement la création de leurs propres versions de
std_logic
de la nécessité de représenter des signaux du monde réel. IEEE-1164 introduit cette normalisée à la logique de type dans un effort pour améliorer l'interopérabilité de code écrit par des développeurs différents pour différentes architectures.L'article de wikipédia pour la norme fournit une description succincte:
http://en.wikipedia.org/wiki/IEEE_1164
OriginalL'auteur Ryan
En plus les réponses qui ont déjà été fournis, je pense qu'il est intéressant de mentionner que STD_LOGIC est ce qu'on appelle un résolus type, ce qui signifie qu'il n'y est une priorité pour le signal. Par exemple, 1 et 0 ont une priorité plus élevée à H ou L, de sorte que si un signal a été conduit avec un L et un 1 simultanément, la sortie serait haut (1 logique) parce que 1 a une priorité plus élevée que L.
Il se trouve que l'ordre que vous avez énumérés, les valeurs, dans votre question est à l'ordre de la priorité, le seul inconvénient est que certaines valeurs ont la même priorité et donc, si vous conduisez avec deux de ces signaux n'est pas claire "gagnant" de sorte que le résultat est le suivant "inconnu" de l'état ('X' ou 'W') haut de la hiérarchie, un exemple simple est que si un signal est conduit avec un " H "et un "L", le résultat sera "W".
La table de résolution pour STD_LOGIC ressemble à quelque chose comme ceci:
OriginalL'auteur Gipsy Danger
std_logic
a une fonction de résolution deNon seulement
std_logic
ont plus utile d'états en plus de1
et0
, il a également une fonction de résolution définie.Une fonction de résolution est un langage VHDL concept. C'est une fonction qui est associée à un type, et il détermine ce qui se passe lorsque plusieurs valeurs de ce type sont appliqués à un seul signal. La syntaxe est la suivante:
où
std_ulogic
est le suspens (et donc beaucoup moins utile) version destd_logic
.En particulier, cela implique de belles choses comme
0
et1
conduit àX
:Cela fait sens intuitif, comme nous le comprenons
X
à l'état où plusieurs incompatible valeurs sont appliquées à un seul fil.std_logic
sait également comment résoudre toute autre paire de signaux d'entrée selon un tableau présent sur la LRM.bit
d'autre part, ne dispose pas d'une fonction de résolution, et si nous l'avions utilisé sur l'exemple ci-dessus, cela donnerait lieu à une erreur de simulation sur GHDL de 0,34.Les valeurs possibles de
std_logic
sont un bon choix parce qu'ils sont normalisés par IEEE 1164 et faire face à de nombreux cas d'utilisation courants.OriginalL'auteur Ciro Santilli 新疆改造中心996ICU六四事件
J'ai observé ce comportement dans Xilinx simulateur de la ISim:
Il n'est pas possible d'examiner les variables dans la Mies, mais je suppose que les mêmes règles s'appliquent.
bon point, mon expérience n'est qu'avec Xilinx Fpga où ils ne peuvent pas être synthétisés de façon significative.
OriginalL'auteur Marcus10110