7
votes

VHDL attribuant des littéraux

J'essaie d'utiliser des entiers non signés dans VHDL avec des largeurs de bits bien définies. Il semble que VHDL n'aime pas que je tente d'essayer d'attribuer des valeurs littérales à ces types définis comme suit: xxx

mais dans mon IDE (Quartus), je reçois une plainte "Le type non signé ne correspond pas au littéral entier. " Je reçois également des plaintes pour ajouter des chiffres aux types définis comme celui-ci. Quel est le changement préféré que j'ai besoin de faire?


0 commentaires

3 Réponses :


1
votes

non signé est lié à STD_ULOGIC, où la valeur d'un élément serait "0". xxx

qui fournit un agrégat pour l'affectation par défaut avec tous les éléments Réglez sur '0'.

Vous ne pouvez pas attribuer un seul élément de type entier à un tableau d'éléments STD_ULOGIQUES.

Vous pouvez ajouter signé ou non signé à un naturel (non signé) ou entier (signé) en utilisant des fonctions "+" définies dans le package numeric_std: xxx


0 commentaires

1
votes
library ieee;
use ieee.std_logic_1164.all;
use IEEE.NUMERIC_STD.ALL;

0 commentaires

6
votes

Voir d'autres réponses et notez que pour les littéraux non nuls, vous voulez probablement faire quelque chose comme: xxx

substitut un littéral pour n . Cela fonctionne pour n = 0 aussi, bien sûr, mais ce n'est pas aussi bien rangé que (autres => '0') .


4 commentaires

Lcd_data'length n'est disponible qu'après le semi-colon. IEEE STD 1076-1993 10.3 Notes "2-Les règles définissant la portée immédiate, la cachette et la visibilité impliquent qu'une référence à un identifiant, de caractère littéral ou d'opérateur dans sa propre déclaration est illégale (à l'exception des unités de conception). L'identifiant, Les symboles de caractère littéral ou de l'opérateur cachent des homographies extérieures dans sa portée immédiate - c'est-à-dire dès le début de la déclaration. D'autre part, l'identifiant, le littéral du caractère ou l'opérateur est visible qu'après la fin de la déclaration (à nouveau, sauf pour les unités de conception). "


Pour -2008 c'est la section 12.3 Visibilité, même note 2.


La réponse erronée originale fournie variable lcd_data: non signé (19 baisse de 0): = to_unsigned (n, lcd_data'length); Essentiellement, quelque chose n'est pas disponible jusqu'à ce qu'il soit déclaré et la déclaration est variable_declaration :: = [partagé] identifiant variable_list: sous-type_indication [: = expression]; , lequel est l'endroit après le commentaire du point-virgule. Voir IEEE STD 1076-1993 4.3.1.3 (6.4.2.4 -2008) Déclarations variables.


Oui, je suis tellement habitué à utiliser cette construction dans des processus, etc., j'ai oublié qu'il était illégal dans les déclarations.