L'initialisation d'un tableau d'enregistrements en VHDL
J'ai un dossier défini comme suit
type ifx_t is
record
data : std_logic_vector(127 downto 0);
address : std_logic_vector (19 downto 0);
WrReq : std_logic;--
RdReq : std_logic; --
end record;
type Array_ifx_t is array (0 to 2) of ifx_t;
Et je dois initialiser une instance de cette gamme de dossiers et j'ai essayé de la manière suivante, et il ne fonctionne pas
signal pair_in : Array_ifx_t:= (others =>((others =>'0'),(others=>'0'),'0','0'));
Aide gentiment.
Quel outil utilisez-vous et quel message d'erreur avez-vous voir ? Il fonctionne très bien dans ModelSim de la compilation.
De cette manière, le message d'erreur est "Formel <pair_in> n'a pas de réelle ou valeur par défaut" et le code est respecté dans "ISim Simulateur: Comportemental de Vérification de la Syntaxe".
Juste essayé ISim de 14,6 (nt64), qui transmet "Comportementale de Vérification de la Syntaxe" de fonctionner sans erreurs. Peut-être que l'erreur est due à une relation avec un autre code. Vous pouvez essayer de couper le module vers le bas pour seule entité, l'architecture et le code ci-dessus, et ensuite voir si les passes. Sinon, merci de poster l'ensemble de couper vers le bas module ici.
La question était due à la non mappage du port où pair_in était censé.
De cette manière, le message d'erreur est "Formel <pair_in> n'a pas de réelle ou valeur par défaut" et le code est respecté dans "ISim Simulateur: Comportemental de Vérification de la Syntaxe".
Juste essayé ISim de 14,6 (nt64), qui transmet "Comportementale de Vérification de la Syntaxe" de fonctionner sans erreurs. Peut-être que l'erreur est due à une relation avec un autre code. Vous pouvez essayer de couper le module vers le bas pour seule entité, l'architecture et le code ci-dessus, et ensuite voir si les passes. Sinon, merci de poster l'ensemble de couper vers le bas module ici.
La question était due à la non mappage du port où pair_in était censé.
OriginalL'auteur mohit | 2013-12-17
Vous devez vous connecter pour publier un commentaire.
Comme dit dans le commentaire, ModelSim de travail lors de la compilation du code à partir de la question avec ModelSim. Cependant, d'autres outils peuvent être plus stricte sur l'utilisation d'une valeur typée pour les éléments en
Array_ifx_t
.Pour typé affecter et utiliser de nom d'éléments, qui, je pense, donne getter vue d'ensemble et d'éviter les erreurs commises par les références de positionnement, vous pouvez faire l'initialisation avec:
L'indice est le mot "Officiel" ... il y a un code que vous n'êtes pas à nous raconter, un port ou d'un paramètre d'une procédure quelque part appelé "pair_in" qui n'est pas correctement connecté à ce signal (ou non initialisées. Trouver et ajouter à la question.
Et ça sonne comme une) Il n'y a pas un défaut d'expression où
pair_in
est déclaré comme un "formelle port ou formel générique d'un dessin ou modèle entité, une instruction de bloc, ou un paramètre formel d'un sous-programme" (LRM glossaire à l'intention formelle) et il n'est pas piloté. Êtes-vous en utilisant le nompair_in
en plus d'un endroit?La question était due à la non mappage du port où pair_in était censé.
OriginalL'auteur Morten Zilmer
Ma première réaction en voyant le total de votre valeur par défaut pour pair_in était qu'il y avait trop de "autres", j'ai donc indépendamment écrit l'un utilisant le type d'enregistrement de la déclaration elle-même:
Et ce analysé avec succès. Un total dispose de deux types d'association, de position ou nommé. Le par défaut ci-dessus expression de valeur de position. Avec un nom de l'association:
Vous remarquerez présente une ressemblance troublante avec la valeur de l'expression qui se trouve dans Morten a accepté de répondre à la déclaration de constante, et raconte en fait l'histoire de compatibilité pour une expression d'agrégation.
Un total compatible avec un type d'enregistrement contient une expression de valeur qui est compatible avec chaque élément du type d'enregistrement. Ceci est fait pour les éléments du tableau des adresses et des données en fournissant des agrégats pour leurs valeurs par défaut, tout en WrReq et RdReq sont fournis avec leurs valeurs par défaut directement.
Supplémentaires d'autres énoncé que l'on trouve dans l'original tentative aurait été approprié avait
pair_in
été un type composite constitué d'une matrice composée deifx_t
type d'enregistrement d'éléments.LRM (par exemple, IEEE Std 1076-1993) a une section sur les Expressions, un paragraphe sur les Granulats avec un autre paragraphe sur l'Enregistrement des agrégats.
Il y a aussi une section sur les Types, un paragraphe sur les types de composé, avec un paragraphe sur les types d'Enregistrement.
OriginalL'auteur user1155120