Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> VHDL

Utilisation des listes de sensibilité dans les processus VHDL pour une conception RTL fiable

En VHDL de niveau production, les processus sont généralement pilotés par une liste de sensibilité plutôt que par des instructions wait. Une liste de sensibilité énumère chaque signal qui doit réveiller le processus lorsqu'il change.

Bien que wait on et wait until soient pratiques pour la simulation, ils sont rarement utilisés dans du RTL synthétisable. En synthèse, une instruction wait est souvent ignorée, ce qui mène à un matériel imprévisible. À l'inverse, une liste de sensibilité correspond directement à un bloc combinatoire ou synchrone sur front d'horloge que les outils de synthèse peuvent implémenter de manière fiable.

Tutoriels VHDL de base – Sensibilité des processus

Lorsque j'écris du code pour un simulateur, je m'appuie toujours sur des instructions wait pour contrôler le timing. Pour tout design qui sera synthétisé en silicium, j'évite totalement wait et j'utilise des listes de sensibilité.

La syntaxe d'un processus avec une liste de sensibilité est :

 process( signal1, signal2, ... ) is begin -- logique principale ici end process; 

Notez que chaque signal lu à l'intérieur du processus doit apparaître dans la liste. Le compilateur VHDL ne signale pas un signal manquant, mais l'omettre changera le comportement après synthèse.

VHDL‑2008 a introduit le mot-clé all pour inclure automatiquement tous les signaux lus, par exemple process(all). Cependant, la plupart des synthétiseurs commerciaux ne supportent pas encore cette fonctionnalité.

Exercice

Dans la vidéo tutorielle accompagnante, nous parcourons la construction d'un processus qui utilise une liste de sensibilité.

L'extrait VHDL final produit dans cette leçon est :

 entity T09_SensitivityListTb is end entity; architecture sim of T09_SensitivityListTb is signal CountUp : integer := 0; signal CountDown : integer := 10; begin process is begin CountUp <= CountUp + 1; CountDown <= CountDown - 1; wait for 10 ns; end process; -- Processus déclenché avec Wait On process is begin if CountUp = CountDown then report "Process A: Jackpot!"; end if; wait on CountUp, CountDown; end process; -- Processus équivalent utilisant une liste de sensibilité process(CountUp, CountDown) is begin if CountUp = CountDown then report "Process B: Jackpot!"; end if; end process; end architecture; 

L'exécution de ce testbench dans ModelSim donne :

 VSIM 2> run # ** Note: Process A: Jackpot! # Time: 40 ns Iteration: 1 Instance: /t09_sensitivitylisttb # ** Note: Process B: Jackpot! # Time: 40 ns Iteration: 1 Instance: /t09_sensitivitylisttb 

Analyse

La sortie console démontre que le processus wait on et le processus à liste de sensibilité se déclenchent sous des conditions identiques. Cette équivalence tient parce qu'une liste de sensibilité se comporte implicitement comme un wait on placé à la fin du processus.

En pratique, les listes de sensibilité sont le standard de facto pour le RTL synthétisable. Elles offrent une intention claire, permettent aux outils de synthèse de générer du matériel correct, et évitent les ambiguïtés que les instructions wait peuvent introduire.

Utilisation des listes de sensibilité dans les processus VHDL pour une conception RTL fiable

Points clés à retenir

  • Un processus à liste de sensibilité est fonctionnellement identique à un processus se terminant par wait on.
  • Tous les signaux lus à l'intérieur du processus doivent figurer dans sa liste de sensibilité.
  • Utilisez des instructions wait pour du code simulation uniquement ; utilisez des listes de sensibilité pour du RTL synthétisable.

Passez au tutoriel suivant ici.

VHDL

  1. Créer des listes de chaînes en VHDL : Bonnes pratiques et exemple
  2. Créer un banc de test piloté par Tcl pour un module verrou code VHDL
  3. Implémenter un contrôleur PWM en VHDL : Conception, simulation et démo FPGA
  4. Conception d'un tampon circulaire VHDL robuste en mémoire bloc
  5. Comment construire un testbench auto-vérifiant en VHDL - Guide pratique
  6. Implémentation d'une liste chainée dynamique en VHDL avec types protégés et pointeurs d'accès
  7. Exploiter les procédures in-process pour un design FSM VHDL plus propre
  8. Utilisation des fonctions impures en VHDL : Améliorer la lisibilité et la maintenabilité des FSM
  9. Maîtriser les fonctions VHDL : Guide pratique pour un design efficace