Bonjour à tous,
Je travaille actuellement sur un code en VHDL qui se compose de la manière suivante :
- Une entité générale
- Trois composants, qui sont eux-mêmes des entités
La première chose qui m'intrigue est la suivante, je déclare en interne des signaux du genre :
signal indicatif: integer := 16;
Lorsque je programme le FPGA (Cyclone II) et que je regarde les données en interne (Quartus + Signal Tap Logic Analyser) j'observe que la valeur d'indicatif est toujours celle de la valeur dans mon code VHDL + la valeur d'initialisation : pour faire explicite, c'est comme si indicatif valait toujours 16 + quelque chose correspondant à une valeur que j'affecte dans mon programme. Si vous avez bien suivi lorsque je fais indicatif <= 5 alors en pratique indicatif vaut 5+16=21. Je ne sais pas pourquoi ? Alors que n'importe quelle test logique fonctionne du type IF prend en compte la valeur affectée et non réelle ?
Dois-je déclarer mes variables en tant que variables, ou bien puis-je les laisser en tant que signal ? Quel est l'avantage de l'une ou l'autre solution ?
Enfin par rapport au fonctionnement général, j'ai un signal d'horloge que chacune des entités utilise, et qui est généré par l'entité globale. Ensuite je défini pour chacune des entités en entrée un signal de type clk. Est-ce judicieux ou est-ce que je peux mettre ce signal en commum pour toutes les entités en utilisant un package ?
Merci par avance !
qcalv
Partager