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 ».
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.