Td4 vhdl TD VHDL Logique Sequentielle TD VHDL Logique Sequentielle Dans ce chapitre nous présentons toute la logique séquentielle appelée non régulière Dé ?nition On appelle logique séquentielle non régulière toute logique séquentielle pour laquelle le ca
TD VHDL Logique Sequentielle TD VHDL Logique Sequentielle Dans ce chapitre nous présentons toute la logique séquentielle appelée non régulière Dé ?nition On appelle logique séquentielle non régulière toute logique séquentielle pour laquelle le calcul de l'état futur en fonction de l'état présent ne peut pas se faire avec des opérateurs simples sur plusieurs bits Le lecteur de ce chapitre devra essayer d'appréhender les techniques communes à tout ce qui a été présenté au chapitre précédent surtout ce qui concerne le problème des initialisations Programmation des graphes d'évolutions Nous allons nous intéresser dans cette section à la programmation des graphes d'évolutions en VHDL C'est un sujet que nous avons abordé en TD mais qu'il est important d'approfondir maintenant Pour illustrer cette partie nous allons prendre un exemple particulier le réveil Le diagramme d'évolution comme moyen de spéci ?er le calcul de l'état futur en fonction de l'état présent '' Principe de fonctionnement du réveil à partir de O ? key arme le réveil Si trip passe à c'est à dire que l'heure courante devient égale à l'heure de réveil le réveil passe en ringing et sonne trip ne reste pas très longtemps à un seconde Son retour à ne su ?t pas à errêter la sonnerie Seul le passage de key à peut l'arrêter Les graphes d'évolutions et le style case when ? On rappelle encore une fois que le style case when ? permet de ne pas chercher les équations de récurrences Mais comme nos diagrammes d'évolutions se sont compliqués par l'ajout d'étiquettes sur les transitions il nous faudra ajouter des if then Cela est tellement intuitif que nous passons directement aux exemples Présentons Programmation sans initialisation Le principe consiste à déclarer d'abord un type énuméré avec une dé ?nition symbolique de chacun des états ici Armed O ? Ringing TYPE typetat IS Armed O ? Ringing -- dans architecture SIGNAL etat typetat CTD VHDL Logique Sequentielle Ensuite dans un case when ? on détaillera toutes les transitions possibles comme montré ci-dessous dans le cas o? l'on ne s'intéresse pas à une initialisation -- sans initialisation BEGIN PROCESS clock BEGIN IF clock'EVENT AND clock ' ' THEN CASE etat IS WHEN O ? IF key ' ' THEN etat Armed ELSE etat O ? END IF END CASE END IF END PROCESS L'idée générale est donc d'utiliser un case ? sur les états avec des if ? pour gérer l'ensemble des transitions Voici le programme complet du réveil ENTITY Alarm IS PORT clock Key Trip IN BIT Ring OUT BIT END Alarm ARCHITECTURE ar OF Alarm IS TYPE typetat IS Armed O ? Ringing SIGNAL etat typetat BEGIN PROCESS clock etat BEGIN -- partie séquentielle IF Clock ' ' AND Clock'EVENT THEN CASE etat IS WHEN O ? IF key ' ' THEN etat Armed ELSE etat O ? END IF WHEN Armed IF Key ' ' THEN etat O ? ELSIF Trip ' ' THEN etat Ringing ELSE etat Armed END IF WHEN Ringing IF Key ' '
Documents similaires










-
37
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise- Détails
- Publié le Mar 26, 2021
- Catégorie Philosophy / Philo...
- Langue French
- Taille du fichier 77kB