En combinatoire, pour chaque combinaison des entrées, il existe une et une seule combinaison des sorties. En séquentiel, l'état des sorties dépend en plus de l'histoire (de l'état précédent, qui lui aussi, dépend de l'état qui l'a précédé...)
|
Ce composant est le composant de base du séquentiel. Analysons l'état des sorties dans différents états. |
Rappel : la sortie d'une porte NOR ne vaut 1 que quand toutes ses entrées sont à 0.
S
|
R
|
Q
|
Q'
|
|
1
|
0
|
1
|
0
|
Set
(allumer)
|
0
|
0
|
1
|
0
|
Mémorisation
|
0
|
1
|
0
|
1
|
Reset
(éteindre)
|
0
|
0
|
0
|
1
|
Mémorisation
|
1
|
1
|
0
|
0
|
Etat
Interdit
!
|
Si le dernier cas n'est pas utilisé (on ne demande pas simultanément d'allumer et d'éteindre), Q' vaut toujours l'opposé de Q, on l'appellera donc /Q (Q barre)
Un capteur ne peut pas passer de manière parfaite (sans aléa) de l'état 0 à l'état 1. On peut utiliser une bascule, qui mémorisera l'état stable précédent pendant l'état transitoire. (T1)
Exercice : quel est le comportement d'un même composant où l'on a remplacé les NOR par des NAND ? (réponse : bascule commandée par des niveaux 0)
|
T
est l'entrée de validation
: si T=1, les entrées R et S sont prises en compte, si T=0 elles ne le sont pas. Dans ce cas, la bascule n'est pas éteinte, elle reste
"figée" dans le même état.
|
Deux bascules RST sont reliées en série. Une seule est validée à la fois (T inversé). Une entrée Preset permet le forçage à 1 de l'ensemble, une entrée Clear le forçage à 0 (indépendamment de l'état précédent et de T).
Analysons le fonctionnement de cette bascule:
|
![]() |
maître
(Master)
|
esclave
(Slave)
| |
Si
T=0
|
information
S/R transmise en s'r'
|
non
transmis en Q (ancien Q)
|
Si
T=1
|
R
S en attente (ancien r's')
|
ancien
r's' transmis en Q
|
On remarque donc que l'information est transmise au prochain front montant de l'horloge T.
Elle
synchronise un signal extérieur sur un front d'horloge (à
condition que le signal dure au moins une demi période).
|
![]() |
Elle comporte en général plusieurs entrées de mise à 1 (J) et de mise à 0 (K). Dans le cas où l'on demande l'état impossible (J.K), la sortie est inversée à chaque front d'horloge. Dans les autres cas le fonctionnement est identique. De plus on peut avoir des bascules JK dont le basculement et commandé par un niveau (0 ou 1) ou par un front ("edge triggered").
On dispose donc en série des diviseurs de fréquence (trois par exemple), à chaque front appliqué en entrée du premier diviseur, regardons l'état des sorties :
Ce sytème décompte les fronts (même si les signaux d'entrée ne sont pas régulièrement espacés). En inversant les sorties, on obtient un compteur. En reliant ensemble les Clear des différents étages, on peut remettre le compteur d'impulsions à 0. En général, on initialise le décompteur (par les P et C) au nombre à compter, et on attend la valeur 0. On peut remarque le binaire se "crée" automatiquement : la base 2 est la mieux adaptée au comptage à l'aide de composants ToR.
Un compteur - décompteur comporte deux entrées, une de comptage (ajoute un) et l'autre de décomptage (soustrait un). Un compteur asynchrone (comme celui-ci) pose un petit problème : les bascules en série ont un temps de réponse qui fait que la nouvelle valeur se "propage" de gauche à droite, on aura donc pendant un très court instant une valeur de sortie erronnée. Les compteurs synchrones résolvent ce problème (à l'aide de bascules JK, je ne donne pas le schéma, il faut bien que les éditeurs de livres scolaires aient encore quelque chose à vendre).
Une fois arrivé à la valeur 1010 (10 en binaire), on le remet à 0 et on lance un signal à la dizaine supérieure. Attention dans la pratique ce n'est pas aussi simple : si un composant va plus vite que l'autre, la remise à 0 peut se faire sur une période transitoire où l'on se trouvait à 1010. (C+=entrée de comptage)
Autre application du compteur. C'est un compteur d'impulsions pendant un temps donné (cas des fréquences élevées), ou alors on compte le temps pendant une période (fréquences faibles).
De même en mettant en cascade des bascules D MS, on obtient un registre à décalage, que l'on peut initialiser en parallèle (indépendamment de T) par les broches Preset et Clear.
|
ROM : Read Only Memory : On a figé par construction le contenu des mémoires. En fait, pour un bit, une mémoire à 1 correspond à une liaison sur l'alimentation, un 0 à une liaison à la masse. Comment regrouper plusieurs bits ? Soit par exemple une mémoire de 64 valeurs binaires :
|
Les
intersections sont : pour une valeur 0 : pas de liaison, pour une valeur 1 :
une diode empêchant le courant de remonter de la colonne. :
![]() |
PROM : programmable une seule fois : liaison "fusible". On programme une Prom sous une tension supérieure à la tension de fonctionnement.
UVPROM : Prom reprogrammable après régénération sous ultra violets (20 mn).
EEPROM : Prom régénérable électriquement.
Application :Utilisation de ROM en combinatoire
Pour chaque état des entrées on mémorise la sortie (décomposition en mintermes). Par exemple, pour créer un générateur de caractères 8x8 pixels on préférera utiliser une ROM plutôt que de faire un circuit spécifique (pour 127 caractères, il faut 1 Ko).
RAM statique : garde la valeur tant qu'elle est alimentée. On utilise la même disposition que pour la ROM, mais à chaque intersection on place une bascule.
RAM dynamique : d'accès beaucoup plus rapide, mais il faut les régénérer (lire et réécrire) à intervalle régulier (plusieurs fois par seconde). On intègre actuellement plusieurs Mbit par composant.
Un boîtier RAM comprend en général des entrées A0 à An permettant de désigner la mémoire, R/W pour dire si lire ou écrire, et D0 à Dm pour les données (entrée sortie) (ou D si c'est un boîtier de mémoires 1 bit). De plus, le composant ne fonctionnera que s'il est sélectionné (entrée CS : chip select). De plus, il faut entrer un signal de synchronisation (horloge) et évidement l'alimenter.
Chronogramme : en lecture, il faut donner l'adresse, CS, Read, on obtiendra le contenu D au prochain top d'horloge. En écriture, on donne l'adresse, CS et Write, puis la donnée au prochain top d'horloge.
En fait, on envoie les signaux de commande et l'adresse aux 8 boitiers.
Ceux-ci, simultanément, traiteront les 8 bits du mot
désiré. Les différents bits d'une même
mémoire ne sont donc pas physiquement situés au même
endroit.
|
|
Ici, les 10 bits de poids faible de l'adresse désirée est
transmise à tous les boitiers. Mais un seul est
sélectionné, suivant les 3 bits de poids fort de l'adresse. Les 8
bits de données de tous les boitiers sont reliés ensemble, on est
sûr qu'un seul sera sélectionné à la fois, via le
démultiplexeur.
|
![]() |