Lab 1 : Gestion d'un parking
Le but de ce système est de gérer la disponibilité des places d’un parking.
L’élément principal du système est un compteur qui s’incrémente si le capteur d’entrée vaut 1 et se décrémente si le capteur de sortie vaut 1.
Un registre permet de stocker le nombre de places max admissible dans le parking.
Une comparaison entre la valeur de comptage et celle du registre permet d’indiquer si le parking est complet ou pas.
Q1. A partir d’un fichier vierge, proposer la description de l’ensemble des composants de ce système, et réaliser l’instanciation de ces composants pour créer l’entité gestion_parking.
La démonstration du fonctionnement de l’ensemble doit se faire avec un test pertinent
Comparateur
Composant combinatoire, la syntaxe doit être :
signal <= valeur when condition else autre_valeur;
Soustracteur
result <= B - A
RAPPEL : Une opération arithmétique se fait entre opérandes de type signed ou unsigned.
Registre
Composant Synchrone, reset asynchrone –> process(clk,reset)
Compteur
Composant Synchrone, reset asynchrone –> process(clk,reset)
Le comptage doit se faire avec des unsigned
Détecteur de Front Montant
Le capteur peut fournir une information à 1 pendant plusieurs coups d’horloge.
Or le compteur ne doit s’incrémenter ou se décrémenter qu’une fois pour une voiture.
La solution consiste à utiliser une machine d’état pour détecter un front montant.
A l’issue d’un front montant de l’entrée, la sortie vaut 1 pendant une période de clk.
|
|
NB: Transition de la machine d’états “=1” –> Transition inconditionnelle (toujours vrai)
La description des machines d’états en VHDL répond à une syntaxe très précise reposant sur la machine de Moore ou de Mealy.
Il est demandé de respecter cette syntaxe.