trouvé '0' définitions de l'opérateur “+” en VHDL
À d'abord je veux préciser que c'est ma première tentative avec le VHDL, de sorte à être gentil. Je veux lire X1,..., X4 intrants et des produits agricoles à la somme de ceux à la sortie. Ce mon code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity counter_of_aces is
Generic(N: integer := 3);
port( X1, X2, X3, X4 : IN BIT;
count: out std_logic_vector(N-1 downto 0));
end counter_of_aces;
architecture behavioral of counter_of_aces is
signal counter : std_logic_vector(Ν-1 downto 0);
begin
process (X1, X2, X3, X4)
begin
counter <= "0";
if(X1='1' OR X2='1' OR X3='1' OR X4='1')then
counter <= counter + "1"; --O counter λειτουργεί ως στοιχείο μνήμης
else
counter <= counter;
end if;
end process;
end behavioral;
et j'obtiens les erreurs suivantes
ERROR:HDLCompiler:69 - Line 11: <í> is not declared.
ERROR:HDLCompiler:1731 - Line 17: found '0' definitions of operator "+", cannot determine exact overloaded matching definition for "+"
ERROR:HDLCompiler:854 - Line 10: Unit <behavioral> ignored due to previous errors.
Laquelle "je" est-il référence et qu'en est-il des autres? Merci à l'avance.
OriginalL'auteur Billy Grande | 2014-10-27
Vous devez vous connecter pour publier un commentaire.
Commencer votre VHDL avec
tu veux dire
use ieee.numeric_std_unsigned.all;
(partie de VHDL-2008)... celui que vous mentionnez n'est pas partie de la norme.OriginalL'auteur Boris Ivanov
Ces observations sont basées sur le fait d'essayer d'analyser votre code.
Ceci est causé par un non de caractères ISO 8859-1. J'ai remplacé le
N
avec un nouveauN
et a obtenu passé ce moment. Mon analyseur signalé à la ligne 11, du caractère, du 36 et l'examen a montré une de deux octets de caractères (X"CE9D").Une VHDL de l'analyseur de constructions lexicales des éléments de sous-ensembles spécifiques du jeu de caractères ISO 8859-1 qui n'a pas de multi-octets. Les commentaires peuvent contenir n'importe quels caractères, du code VHDL -2008, tandis que les précédentes révisions de la norme requise commentaires comporte le caractère graphique de sous-ensemble.
Sélectionner les fonctions à utiliser dans une expression se fait en regardant les signatures comprend les types et le nombre d'entrées, et pour les fonctions du type de la valeur de retour.
Une VHDL de l'analyseur ne regarde où elle est dirigée à l'autre que pour un contexte implicite de la clause à la disposition de chaque unité de conception:
bibliothèque STD, TRAVAIL; utiliser STD.STANDARD.tous;
C'est pourquoi nous ajoutons les goûts:
À faire toutes les déclarations dans la bibliothèque ieee paquetage std_logic_1164 visible de sorte qu'ils peuvent être utilisés dans les spécifications de conception.
Sans ajouter le droit de l'utiliser et de la bibliothèque des clauses de l'analyseur ne peut pas trouver un
"+"
une fonction de signature:trouve sur la ligne 17:
Où la valeur de retour est utilisé dans l'attribution de
counter
, la gauche argument estcounter
(un type std_logic_vector) et il à droite argument est indiqué que la chaîne"1"
.Vous avez probablement signifie que la chaîne de
"1"
à être un1
ou un'1'
.N'est toujours pas à la fonction désirée visible. Il y a deux candidats paquets, std_logic_unsigned un Synopsys, et numeric_std_unsigned IEEE paquet. Ni sont visibles actuellement par une clause d'utilisation, tous deux se produisent tobe trouvé dans la bibliothèque de l'ieee.
Paquet std_logic_unsigned a un candidat:
qui une droite argument du caractère littéral
'1'
est compatible avec.Paquet numeric_std_unsigned a un candidat:
Où le côté droit de
1
serait plus approprié.Laquelle de ces deux forfaits sont disponibles VHDL est la norme de révision de la charge. Parce que vous avez utilisé librement UTF type de caractère dans le commentaire, il semblerait que vous avez un norme IEEE Std 1076-2008 conforme de l'analyseur, et VHDL puriste peut vous dire pour l'utilisation de paquet numeric_std_unsigned, la remise de colis std_logic_unsigned âgées VHDL révisions.
Il n'y a qu'un peu de chasse aux sorcières. Si vous êtes à la synthèse du résultat, vous pouvez ne pas avoir des outils de synthèse qui sont -2008 conforme. Pour les anciens outils que vous pouvez coller avec le Synopsys du package std_logic_unsigned, écrire votre propre "+" ou utiliser les conversions de type de paquet numeric_std:
OriginalL'auteur user1155120
essayer cela,
C'est un terrible conseils!!! Ne pas utiliser ces bibliothèques, comme ils ne font pas partie de la norme. Lorsque vous faites
signed
etunsigned
arithmétique, vous devez utiliser lenumeric_std
de la bibliothèque. Si vous voulez désespérément d'utiliserstd_logic_vector
arithmétique, utilisez le VHDL-2008numeric_std_unsigned
OU(!) lenumeric_std_signed
de la bibliothèque.OriginalL'auteur Roja