J'ai un signal dans VHDL déclaré comme ceci: ceci est-il possible d'utiliser des tableaux multidimensionnels dans VHDL pour stocker des signaux 80 bits? p> p> temp_key code> est transmis via un
pour code> boucle 31 fois et il est modifié. Je veux stocker tous les 31 différents
temp_keys code> dans un tableau. p>
3 Réponses :
Oui, vous devez d'abord déclarer un type:
signal MY_SIGNAL : YOUR_ARRAY_TYPE; ... MY_SIGNAL(0) <= data; ... MY_SIGNAL(1) <= data;
Comme le poste ci-dessus dit, vous pouvez créer n'importe quel type de données multi-dimensionnel. L'autre chose que vous devez faire attention est de savoir si ce code est synthétisable (c'est-à-dire ciblé aux FPGA ou aux ASIC, ou est-il purement pour la simulation). Vous pouvez itération de 0 à 31 à l'aide d'un compteur FSM / Compteur ou d'un bloc de génération, en fonction de la critique de votre synchronisation et de la quantité de zone que vous souhaitez utiliser. Une instance de tableau multidimensionnelle indiquée dans la poste ci-dessus est certainement synthétisable. P>
Malheureusement, le post ci-dessus ne contient pas de type de matrice multidimensionnelle. "Un objet de tableau est caractérisé par le nombre d'indices (la dimensionnalité de la matrice); ...", IEEE STD 1076-2008 5.3.2 Types de réseau, 5.3.2.1. Le type de tableau indiqué n'a qu'un seul index. Le type d'élément se trouve être un type de tableau.
dans VHDL Il existe deux options
signal Y is array (range1, range2) of Type;
Ainsi, lorsque vous utilisez l'option 2 et en passant ce signal à une fonction, comment pourrais-je obtenir la plage1 et la plage2?
Voulez-vous dire que ce sera un problème de stocker des signaux de 80 bits dans 31Keys différents? Comment est-ce lié à la question et à ma réponse? Il ne semble pas facile d'itérus de la matrice 2D arbitraire. C'est une bonne question réellement. Beaucoup mieux que de demander la syntaxe 2D-Array. C'est pourquoi vous me le demandez plutôt que sur Stackoverflow.