8
votes

VHDL: Comment définir une valeur sur un port inout?

J'essaie de tester un composant VHDL , mais je ne peux pas sembler obtenir cela Un port d'inuite pour me donner tout comportement. J'ai essayé de définir le port à tout de '1' à '-', mais il apparaît toujours comme «u» dans la simulation. Des sucettes ce qui pourrait être faux?


1 commentaires

La définition explicitement sur Z a fait le port donnez-moi les données, mais maintenant je ne peux pas sembler obtenir les signaux internes à lire du port :(


4 Réponses :


7
votes

Vous avez besoin d'un pilote explicite sur 'Z'.


1 commentaires

Je réalise que c'est le cas, mais je ne sais pas ce que cela signifie dans le code VHDL



19
votes

pour le port inout (par exemple en RAM): xxx

Vous attribuez des données lisez et écrivez pour inout avec une condition. Lorsque les données sont lues, il est entraîné par un autre module. Quand il écrit, il est entraîné par interne.

  • Lorsqu'il est entraîné par un autre module (comme signal), les données sont résolues entre tous les "Z" et un vecteur "0101010" par exemple. Les données seront conduites comme "0101010".
  • Dans l'autre cas: l'autre module doit entraîner des données de tous les "Z", puis le signal interne peut mettre sa valeur à des données.

0 commentaires

1
votes

J'ai essayé de définir le port vers tout de '1' à '-', mais il apparaît toujours comme "u" dans la simulation.

Enfer à la bonne réponse à l'affectation / lecture des ports Inout, le texte ci-dessus pourrait être lié au port étant attribué à deux endroits distincts, il est donc résolu comme «U».


0 commentaires

0
votes

Lorsque vous utilisez un port inout, j'ai été mordu par un outil de synthèse instanciant d'une OBUF au lieu d'une IOBUF lorsque les déclarations VHDL étaient apparemment trop compliquées pour la synthèse pour déduire l'IOBUF. Ce qui suit est un exemple simplifié (supposons que tous les signaux sont STD_Logic) de la situation qui mord peu: xxx

dans mon cas de défaillance, la synthèse générée un obuf pour data_inout. J'aurais attendu qu'un IOBUF gère le cas de choisi_a = '0' et float_b = '1' car cela aurait dû être attribué 'z' à data_inout, mais ce n'est pas ce que j'ai eu.


0 commentaires