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

Maîtriser la logique conditionnelle en VHDL : If-Then-Elsif-Else expliqué

Dans le tutoriel précédent, nous avons utilisé une expression conditionnelle avec l'instruction Wait Until pour déclencher un processus uniquement lorsque deux signaux compteurs correspondaient. Et si nous avons besoin que le programme effectue différentes actions en fonction d'entrées variables ?

La structure If-Then-Elsif-Else nous permet de brancher notre logique. Selon la valeur d'une variable ou le résultat d'une expression, le programme peut suivre des chemins distincts.

Cet article fait partie de la série Tutoriels VHDL de base.

Syntaxe de base

La forme canonique est :

if <condition> then elsif <condition> then else end if;

Les clauses elsif et else sont optionnelles, et elsif peut apparaître plusieurs fois. Une <condition> peut être un littéral booléen ou une expression qui évalue à true ou false.

Exemple : MyCounter < 10 est vrai lorsque MyCounter est inférieur à dix.

Opérateurs relationnels

=égal
/=différent
<inférieur à
<=inférieur ou égal à
>supérieur à
>=supérieur ou égal à

Opérateurs logiques

not atrue si a est false
a and btrue si a et b sont true
a or btrue si a ou b sont true
a nand btrue si a ou b est false
a nor btrue si a et b sont false
a xor btrue si exactement un de a ou b est true
a xnor btrue si a et b sont égaux

Exercice

Voici un exemple VHDL complet qui montre la structure If-Then-Elsif-Else en action.

Code final :

entity T08_IfTb is end entity; architecture sim of T08_IfTb 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; process is begin if CountUp > CountDown then report "CountUp is larger"; elsif CountUp < CountDown then report "CountDown is larger"; else report "They are equal"; end if; wait on CountUp, CountDown; end process; end architecture; 

Sortie console du simulateur lors de l'exécution du modèle dans ModelSim :

VSIM 2> run # ** Note: CountDown is larger # Time: 0 ns Iteration: 0 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 0 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 10 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 20 ns Iteration: 1 Instance: /t08_iftb # ** Note: CountDown is larger # Time: 30 ns Iteration: 1 Instance: /t08_iftb # ** Note: They are equal # Time: 40 ns Iteration: 1 Instance: /t08_iftb # ** Note: Countup is larger # Time: 50 ns Iteration: 1 Instance: /t08_iftb # ** Note: Countup is larger # Time: 60 ns Iteration: 1 Instance: /t08_iftb ...

Analyse

Nous avons initialisé CountDown à 10 et CountUp à 0. Les deux compteurs sont mis à jour simultanément toutes les 10 ns dans le premier processus. Le second processus attend sur ces signaux, donc il se déclenche à chaque changement. Le bloc If-Then-Elsif-Else sélectionne alors l'une des trois branches : CountUp > CountDown, CountUp < CountDown, ou CountUp = CountDown. Bien qu'un else explicite ne soit pas obligatoire, l'inclure est une bonne pratique, assurant que tous les cas limites sont gérés.

La trace console confirme que le second processus évalue la condition après chaque mise à jour, affichant le message approprié.

Maîtriser la logique conditionnelle en VHDL : If-Then-Elsif-Else expliqué

À retenir

Continuez vers le tutoriel suivant »

VHDL

  1. Comment le molybdène façonne l'industrie moderne : usages, avantages et dynamiques d'approvisionnement
  2. Créer des listes de chaînes en VHDL : Bonnes pratiques et exemple
  3. Terminer proprement une simulation de banc de test VHDL
  4. Implémenter un contrôleur PWM en VHDL : Conception, simulation et démo FPGA
  5. Générer des nombres aléatoires en VHDL : De l'uniforme à OSVVM
  6. Exploiter les procédures in-process pour un design FSM VHDL plus propre
  7. Utilisation des fonctions impures en VHDL : Améliorer la lisibilité et la maintenabilité des FSM
  8. Maîtriser les fonctions VHDL : Guide pratique pour un design efficace
  9. Maîtriser les techniques de la rectifieuse d'outils : guide pratique