Amélioration de l'architecture du minuteur

Affichage du temps au moment de l’alarme

En simulant le minuteur, laissez-le décompter le temps jusqu’à ce que l’alarme se déclenche. À la fin du décompte, vous devez observer que le temps affiché n’est pas « 00:00 » mais « 99:59 ».

Proposez une explication de ce comportement, puis modifiez l’architecture du minuteur de telle sorte que le décompte s’arrête à « 00:00 ».

Une entité générique pour gérer N décodeurs 7 segments

On souhaite regrouper l’instanciation des décodeurs 7 segments dans une entité MultipleSegmentDecoder.

Cette entité possédera un paramètre générique :

Paramètre Type Rôle
N Entier Le nombre de décodeurs à instancier

Et voici la liste de ses ports :

Port Direction Type Rôle
digits_i Entrée Tableau de N entiers Les N chiffres à afficher
segments_o Sortie Tableau de N vecteurs Les états des segments des N afficheurs

Les types tableaux seront déclarés dans un paquetage Pomodoro_pkg. Ils respecteront les définitions suivantes :

Type Définition
DigitArray_t Tableau d’entiers compris entre 0 et 9
SegmentArray_t Tableau de vecteurs de 7 bits

Dans un nouveau fichier Pomodoro_pkg.vhd, créez le paquetage Pomodoro_pkg contenant la déclaration des deux types tableaux.

Dans un nouveau fichier MultipleSegmentDecoder.vhd, importez le paquetage Pomodoro_pkg et décrivez l’entité MultipleSegmentDecoder et son architecture Structural.

Dans le fichier Pomodoro.vhd, importez le paquetage Pomodoro_pkg et modifiez l’architecture en remplaçant l’instanciation des quatre décodeurs par une instanciation de l’entité MultipleSegmentDecoder. Il est recommandé de faire un schéma où vous ferez apparaître clairement les signaux internes utilisés.