11. TP Mémoire¶
Les circuits que nous avons vus jusqu’à maintenant s’appellent circuits combinatoires. Leur sortie est le seul résultat de leurs entrées. Une même entrée produit toujours la même sortie. Le circuit n’a pas de mémoire.
La famille de circuits que nous allons découvrir s’appelle circuit séquentiel. Ces circuits permettent de mémoriser un état.
11.1. Cellule de mémoire¶
Une cellule de mémoire élémentaire peut être créée avec une porte OU, ou la sortie est connectée avec une de ses entrées.
Circuit 1
Connectez la sortie de la porte OU via la porte OUI avec une de ses entrées
Montrez que vous avez une cellule de mémoire qui peut mémoriser une seule fois (fusible)
Circuit 2
Connectez la sortie de la porte OU via la porte ET avec une de ses entrées
Montrez que vous avez une cellule de mémoire qui peut mémoriser S (set) et qui peut être remis avec R (reset)
Circuit 3
Connectez la sortie de la porte OU via la porte ET avec une de ses entrées
Contrôlez la porte ET via une porte NON
Mettez l’entrée R en poussoir
Attention : Pour éviter des effets d’oscillation, vous devez appuyer sur le bouton pressoir plus longtemps que 200 ms ou diminuer fortement le temps de propagation dans la boucle.
11.2. Verrou SR¶
Un verrou SR (set-reset) permet de “verrouiller” (mémoriser) une information.
Jouez avec le verrou SR pour comprendre son fonctionnement
Recréez le verrou SR avec les composants NOT et OR
11.3. Bascule D¶
La bascule D (data) recopie la donnée sur l’entrée D vers sa sortie Q à chaque front montant de l’horloge clock.
ajoutez les 6 entrées/sorties à la bascule D,
lisez et comprenez les étiquettes,
observez et comprenez son comportement.
11.4. Registre 4 bits¶
Le registre est un circuit qui peut mémoriser multiples bits sur un coup d’horloge. À partir de 4 bascules D, nous pouvons construire un registre pour mémoriser 4 bits.
Ajoutez les connexions qui manquent :
Connectez chacun des 4 bits d’entrée vers une entrée D de la bascule.
Connectez chacun des 4 bits de sortie Q vers son bit de sortie correspondante.
Ajoutez une sortie 4 bits et un affichage 4 bits
Connectez les 4 entrées preset, clock et clear
11.5. Décodeur de touche¶
Quand on appuie sur une touche d’une calculatrice électronique, telle que la TI-30, la valeur de la touche est transformée en binaire 4 bits, enregistré dans un registre 4 bits, et affiché avec un affichage à 7 segments. Les étapes sont :
une touche 0 - 9 est appuyé
une conversion en binaire est faite
une entrée clock est produite
la valeur est mémorisée dans un registre
la valeur est décodée vers les signaux a-g
la valeur numérique est montrée sur l’affichage à 7 segments
Complétez le circuit pour traiter les touches 0 à 3
11.6. Décodeur pour 8 touches¶
Complétez le circuit pour traiter les touches 0 à 7
11.7. Compteur 4 bits¶
Une bascule D avec une rétroaction de la sortie inversée \(\bar{Q}\) vers son entrée \(D\) divise la fréquence de l’horloge par 2. Nous avons effectivement un compteur 1 bit.
Complétez le circuit pour construire un compteur 4 bits.
Le circuit final doit compter de
0000
vers1111
.Ajoutez un affichage 4 bits
Connectez aussi les 4 signaux clear pour la remise du compteur
11.8. Compteur 8 bits¶
Le compteur 4 bits utilise un signal d’horloge et incrémenté à chaque coup d’horloge. Un décodeur à 7 segments transforme les 4 signaux qui représentent un nombre binaire de 0 à 16 vers les sorties correspondant pour activer les bonnes lampes de l’affichage à 7 segments.
Utilisez le signal de sortie V (overflow) pour faire fonctionner un deuxième compteur
Ceci donnera un compteur 8 bit, permettant de compter de 00 à FF (255)
Diminuez la période de l’horloge à 250 ms
11.9. Compteur avec remise¶
Pour créer une montre, un minuteur ou une alarme, nous devons compter à 60, 12 ou 24. L’entrée Reset peut être utilisée pour remettre le compteur à zéro. Une porte ET détecte le nombre 6 et réinitialise le compteur.
Ajoutez un deuxième compteur
Configurez-le pour qu’il compte de 0 à 9
Ajoutez le décodeur et un affichage à 7 segments
Utilisez les deux compteurs pour faire un compteur qui affiche les nombres 00 à 59
Diminuez la période à 1 seconde
11.10. Rouler un dé¶
Un dé électronique utilise 7 LEDs pour afficher les points. Une horloge rapide, liée par une porte ET vers l’entrée d’un compteur compte rapidement de 0 à 5. À 6 le compteur est remis à 0 à l’aide d’une autre porte ET.
Voici la table de vérité pour les 7 LEDS.
dice |
bin |
a,g |
b,f |
c,e |
d |
---|---|---|---|---|---|
1 |
000 |
0 |
0 |
0 |
1 |
2 |
001 |
1 |
0 |
0 |
0 |
3 |
010 |
1 |
0 |
0 |
1 |
4 |
011 |
1 |
0 |
1 |
0 |
5 |
100 |
1 |
0 |
1 |
1 |
6 |
101 |
1 |
1 |
1 |
0 |
Ajoutez les portes logiques appropriées pour implémenter ce dé électronique.
Par exemple, le signal pour lampe a,g correspond à
b0 or b1 or b2
Trouvez les autres circuits et construsez ce dé électronique.
11.11. Registre à décalage¶
Un registre de décalage propage une information d’un registre vers l’autre.
Placez tous les entrées P (preset) et C (clear)
Connectez la sortie Q avec l’entrée D suivante
Connectez tous les entrées clock
Testez le circuit à décalage
Si ça fonctionne, connectez la sortie du registre à décalage avec son entrée et connectez une entrée horloge à 1 second à l’entrée clock. Vous avez un registre à décalage circulaire.
11.12. RAM (mémoire vive)¶
La RAM (Random Access Memory) de 16 x 4 bits permet de stocker 16 mots de 4 bits. Les quatre bits de l’adresse Addr déterminent l’endroit où seront écrites les données D.
Addr détermine l’endroit des données
D signifie les données à écrire
Q représente les 4 bits des données lus
WE (Write Enable) permet d’écrire si 1
clock transmet les données sur D en mémoire
Clr (clear) remet toute la mémoire à zéro
À l’adresse 0001
(1) se trouvent déjà les données 1001
. Ceci ressemble à des yeux.
Ajoutez d’autres valeurs pour en faire un smiley.
11.13. RAM avec bits aléatoires¶
Le circuit suivant utilise un compteur pour créer les 16 adresses et écrire un bit aléatoire dans la RAM.
Complétez le circuit pour écrié 16 x 4 bits aléatoires dans la mémoire.
11.14. RAM avec binaire¶
Utilisez un compteur 4-bit pour remplir automatiquement la RAM avec les valeurs de 0 à 15. Voici le contenu à écrire dans la RAM.
0000
0001
0010
...
1111
Utilisez la sortie overflow (V) du compteur pour faire une mise à zéro de la RAM, à chaque fois quand elle est pleine.
Dans l’image ci-dessous, la RAM est déjà remplie jusqu’à 1010
(10).
11.15. RAM avec image¶
La mémoire peut contenir des images. Chaque bit représente un pixel. Un des premiers jeux vidéo, Space Invaders, utilise des images monocolores pour présenter des envahisseurs extraterrestres.
Remplissez la mémoire avec l’image d’un space invader 8x8 bits. L’image sera alors visible dans la partie visualisation du bloc RAM 16x8 bits.
11.16. RAM avec ASCII¶
La mémoire peut contenir du code ASCII. Voici les codes ASCII des 6 lettres du mot ON AIR
, exprimées en binaire et en hexadécimal.
O = 0b01001111 0x4f
N = 0b01001110 0x4e
= 0b00100000 0x20
A = 0b01000001 0x41
I = 0b01001001 0x49
R = 0b01010010 0x52
Le circuit ci-dessous contient le mot HELLO
en mémoire RAM. Un compteur avec une horloge 1 Hz affiche le contenu de la mémoire en boucle vers un affichage à 16 segments.
Remplacez le contenu de la mémoire pour afficher le mot ON AIR
.