Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Lab 1 : Gestion d’un parking

Back                  << Index >>

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.

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

gestion parking

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.

chrono_detect_front diag_etat_detect_front

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.

Back                  << Index >>