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.