Synthétiser la «constante» en VHDL

Meenie Leis

Synthétiser la «constante» en VHDL


Du point de vue d’un synthétiseur, y a-t-il une différence entre:

  1. Décalage du signal: std_logic_vector (3 jusqu’à 0): = « 0100 »;

  2. Décalage constant: std_logic_vector (3 jusqu’à 0): = « 0100 »;

Brian Drummond

Cela dépend si vous attribuez autre chose au signal. Cependant, constantgarantit que vous ne le ferez pas et communique cette intention au lecteur. Alors utilisez-le où vous le pouvez.

Réponses


 MITU RAJ

Nan. Cependant, « constante » ne peut recevoir aucune valeur. Sa valeur ne peut jamais changer pendant la simulation. Sinon, c’est comme un « signal » lui-même. Il est simplement utilisé pour améliorer la maintenabilité, la lisibilité et la clarté du code pour l’utilisateur. Une utilisation de constante est:

    constant const: integer := 7; 
    signal a: std_logic_vector(const downto 0);
    signal b: std_logic_vector(const downto 0);
    signal c: std_logic_vector(const+1 downto 0);

À l’avenir, si vous souhaitez modifier la largeur du bus, il vous suffit de modifier la valeur d’initialisation de const.

Notez que – Comme @damage l’a souligné, nous faisons généralement toute l’initialisation en affirmant le signal de réinitialisation au début. Cependant, j’ai vu que la plupart des synthétiseurs FPGA synthétisent la valeur initialisée.

TonyM

Pouvez-vous montrer des exemples spécifiques où « la plupart des synthétiseurs synthétisent la valeur initiale » pour les FPGA? On dirait que vous limitez cette vue aux FPGA basés sur RAM. Comment les valeurs initiales fonctionneront-elles dans un FPGA ou CPLD basé sur Flash?

MITU RAJ

A travaillé sur Quartus II 13.1, qui synthétise les valeurs initiales sur les cartes de la série Altera cyclone.


 dommage

Non, pour presque tous les outils de synthèse, il n’y aura pas de différence.

Cependant, les personnes ayant une formation en conception ASIC décourageront l’utilisation des valeurs initiales pour les signaux et recommanderont l’utilisation d’un signal de réévaluation pour définir la valeur initiale. En effet, pour les ASIC, il n’y a pas de phase de configuration comme pour les FPGA et les registres seront généralement dans un état inconnu après la mise sous tension.

Pour les FPGA, certains fournisseurs recommandent l’utilisation de valeurs initiales au lieu de réinitialisations autant que possible , car cela peut entraîner une utilisation moindre des ressources. En effet, pendant la phase de configuration des FPGA basés sur SRAM, lorsque le flux binaire est chargé sur le FPGA, chaque registre peut être défini sur une valeur initiale.

Pour la simulation, cela ne changera rien non plus.

TonyM

Pouvez-vous montrer des exemples spécifiques de «la plupart des fournisseurs recommandant des valeurs initiales dans la mesure du possible» pour les FPGA? On dirait que vous limitez cette vue aux FPGA basés sur RAM. Comment les valeurs initiales fonctionneront-elles dans un FPGA ou CPLD basé sur Flash?

dommage

Je ne connais pas très bien les FPGA basés sur flash. Je suppose qu’ils ont également un réseau GSR (global-set-reset) qui est utilisé pour définir tous les FF à des valeurs connues une fois la configuration terminée (ce qui se produit de manière relativement rapide).

 

#en, #la, constante, Synthétiser, VHDL

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *