Comment comprendre le verrou SR

14

Je ne peux pas comprendre comment fonctionne le verrou SR. Apparemment, vous branchez une ligne d'entrée de R, et une autre de S, et vous êtes censé obtenir des résultats dans Q et Q '.

Cependant, les deux R et S nécessitent une entrée de la sortie de l'autre, et la sortie de l'autre nécessite une entrée de la sortie de l'autre. Qu'est-ce qui vient en premier le poulet ou l'œuf ??

Lorsque vous branchez ce circuit pour la première fois, comment démarre-t-il?

SR Latch

CodyBugstein
la source
1
J'ai finalement trouvé une réponse vraiment fantastique dans le livre But How Do It Know . Vous pouvez le voir sur le lien à la page 24.
CodyBugstein
Pour une meilleure compréhension de SR Latch et comment il se comporte pour les différentes entrées comme 00, 01, 10 et 11, regardez cette vidéo. www.youtube.com/watch?v=VtVIDgilwlA

Réponses:

5

Une question perspicace. En fait, si vous construisez ce verrou dans un programme de simulation, il vous montrera en effet qu'il ne peut pas prédire dans quel état il commencera:

Verrou RS avec portes NOR, la plupart des signaux sont de couleur rouge pour "inconnu"

Mais si vous réglez l'une des entrées à l'état haut (ce sont des boutons-poussoirs à gauche), le signal se propage à travers (rappelez-vous, 1 OU [n'importe quoi] est égal à 1) et le circuit verrouille cet état:

Même verrou;  une entrée est élevée;  les lignes deviennent toutes claires ou vert foncé

Ce sont des portes NOR, donc la sortie inversée devient faible lorsque l'une ou l'autre entrée est élevée. Le programme que j'ai utilisé est Logisim. Il est petit et je le recommande pour débuter. Les compilateurs logiques (FPGA et tout le reste) adorent se plaindre des états non initialisés. Ce fut un excellent premier exemple.

Maintenant, je sais que dans la vraie vie, le circuit se verrouillera aléatoirement dans l'un ou l'autre état. Beaucoup d'autres l'ont souligné. Mais parfois, il est important que cela démarre de manière fiable dans un état ou un autre, et c'est à cela que servent tous les avertissements.

gbarry
la source
Merci pour la grande explication .. Si je comprends bien, une fois branché, le circuit démarre dans un état aléatoire?
CodyBugstein
@Imray Je n'utiliserais pas l'expression "état aléatoire" mais "état non défini". Il pourrait choisir au hasard, ce pourrait être la même chose à chaque fois, l'important est que vous ne le sachiez pas et que vous ne vous en souciez pas. Tout ce que vous devez faire est de réaliser que vous devez initialiser le verrou (en pulsant brièvement R ou S haut) avant de commencer à vous fier à la sortie.
Scott Chamberlain
Je viens de relire votre réponse et j'ai compris des choses qui m'avaient manqué auparavant. Grande explication!
CodyBugstein
5

Une bascule est implémentée comme un multivibrateur bi-stable; par conséquent, Q et Q 'sont garantis comme étant inverses l'un de l'autre pour toutes les entrées sauf S = 1, R = 1, ce qui n'est pas autorisé. La table d'excitation de la bascule SR est utile pour comprendre ce qui se produit lorsque des signaux sont appliqués aux entrées.

S R  Q(t) Q(t+1)   
----------------
0 x   0     0       
1 0   0     1   
0 1   1     0   
x 0   1     1   

Les sorties Q et Q 'changeront rapidement d'état et s'arrêteront à un état stable après que des signaux ont été appliqués à S et R.

Example 1: Q(t) = 0, Q'(t) = 1, S = 0, R = 0. 

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

State 2: Q(t+1 state 1)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     

Since the outputs did not change, we have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 2: Q(t) = 0, Q'(t) = 1, S = 0, R = 1

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(1 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t))  = NOT(0 OR 0) = 1


State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(1 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     


We have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 3: Q(t) = 0, Q'(t) = 1, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 0) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 0) = 0     

State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
         Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 4: Q(t) = 1, Q'(t) = 0, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 5: Q(t) = 1, Q'(t) = 0, S = 0, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

We have reached a steady; state therefore, Q(t+1) = 1, Q'(t+1) = 0.


With Q=0, Q'=0, S=0, and R=0, an SR flip-flop will oscillate until one of the inputs is set to 1.

    Example 6: Q(t) = 0, Q'(t) = 0, S = 0, R = 0

    State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
             Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

    State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
             Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

    State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
             Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2)) =  NOT(0 OR 0) = 1

    State 4: Q(t+1 state 4)  = NOT(R OR Q'(t+1 state 3)) = NOT(0 OR 1) = 0
             Q'(t+1 state 4) = NOT(S OR Q(t+1 state 3))  = NOT(0 OR 1) = 0     
    ...


As one can see, a steady state is not possible until one of the inputs is set to 1 (which is usually handled by power-on reset circuitry).

Si nous examinons la mise en œuvre la plus simple d'une bascule SR (voir http://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg ), nous découvrons qu'elle est composée de deux transistors à jonction bipolaire (BJT) et de quatre résistances (remplacer les interrupteurs à bascule SPST à la terre par des interrupteurs SPDT qui peuvent commuter les lignes de réglage et de réinitialisation entre le potentiel de terre et V +). Les BJT sont configurés comme des onduleurs à émetteur communs. Le collecteur (sortie) de chaque transistor est réinjecté dans la base (entrée) du transistor opposé. L'entrée S est câblée avec la sortie du BJT dont la connexion du collecteur sert de sortie Q (la jonction de R1 / R3). L'entrée R est câblée avec la sortie le BJT dont la connexion collecteur sert de sortie Q '(la jonction de R2 / R4).

Lorsque le circuit est mis sous tension pour la première fois, aucun des transistors n'est polarisé en direct dans la région de saturation pendant une infime fraction de seconde, ce qui signifie que Q et Q 'sont au niveau logique 1. La tension disponible sur chaque collecteur est envoyée à la base du transistor opposé, ce qui le rend polarisé en direct dans la région de saturation. Le transistor qui est polarisé en direct en premier commencera à conduire le courant en premier, ce qui, à son tour, provoquera une chute de tension à travers sa résistance de collecteur, plaçant sa sortie au niveau logique 0. Cette chute de tension du collecteur empêchera le transistor opposé de devenir biaisé vers l'avant; par conséquent, définir l'état initial de la bascule. Il s'agit essentiellement d'une condition de concurrence matérielle qui conduit à un résultat imprévisible.

bit-twiddler
la source
Pouvez-vous l'animation du circuit sur le lien fourni, mais en termes plus simples? Je prends un cours de premier cycle pour débutants
CodyBugstein
3

Comme vous l'avez dit, ce n'est pas défini. Dans la pratique, il existe des transitoires ou des caprices qui devraient mettre le verrou dans un certain état, mais il n'y a aucune garantie dans quel état il se trouvera. Cela est dû à une incompatibilité entre les deux portes qui définira un état initial donné (fondamentalement, le circuit ne ne se comportent pas comme un véritable verrou SR numérique mais sont un circuit analogique complexe comme dans la vie réelle). La sortie initiale sera plus ou moins aléatoire, soit Q=1 and ~Q=0ou Q=0 and ~Q=1.

Sauf mention explicite dans une fiche technique, je ne m'appuierais pas sur un état choisi plutôt que sur l'autre car l'état initial réel peut changer entre les différentes parties du lot, le placement sur une carte, les facteurs environnementaux (température / humidité / etc.) et le vieillissement (en aucun cas une liste complète des facteurs).

La meilleure façon de définir un état est, après le démarrage, d'affirmer l'ensemble ou de réinitialiser pour mettre le verrou SR dans un état connu.

En remarque, en général, les verrous SR affirmant S et R en même temps entraîneront également un comportement indéfini et vous comptez sur un vaudou similaire pour définir les sorties (une véritable implémentation peut désactiver les deux sorties, basculer au hasard entre les deux, activer / désactiver les deux sorties, etc.). Comme l'a expliqué Supercat si une broche n'est pas affirmée avant l'autre, le verrou SR peut entrer dans un état connu car une seule broche est affirmée. D'autres types de bascules / bascules peuvent définir un comportement différent, par exemple les bascules JK définissent l'affirmation des deux broches pour basculer les sorties (Q = ~ Qprev, ~ Q = Qprev).

helloworld922
la source
Mais ma question est, comment peut-il être réglé sur quelque chose si les deux entrées reposent sur des entrées qui n'existent pas encore? C'est comme un cas de "vous me soulevez en l'air, alors je vous soulèverai et nous flotterons tous les deux dans l'air"
CodyBugstein
2
@Imray - un côté de la bascule bat toujours l'autre lorsqu'il est fraîchement alimenté. Il s'allume généralement toujours de la même manière en raison de légères disparités de synchronisation, mais il n'y a aucune garantie sur ce type d'appareil.
Andy aka
1
Exactement. Cela dépend d'un phénomène de non-concordance. Vous ne devez pas penser que les deux côtés sont exactement les mêmes. Ils ne sont pas. L'un d'eux est plus lent, l'autre plus rapide, ce qui entraînera l'allumage initial de l'un d'eux.
Gustavo Litovsky
Oui, je me fierais à ce comportement de non-concordance pour garantir que l'état initial est "valide" (nous n'obtenons pas Q = ~ Q), mais je ne me fierais pas à ce comportement pour garantir que Q est toujours un certain état au démarrage puisque cela peut varier entre les pièces d'un lot ou même changer pour la même pièce en fonction de la température / du temps. Bien sûr, la fiche technique peut indiquer le contraire, mais en général, je ne m'y fierais pas autrement.
helloworld922
Il est assez courant que le comportement d'un verrou soit défini lorsque les deux entrées sont à l'état "actif" [élevé pour un verrou NOR; bas pour un verrou NAND], à condition que l'une des entrées devienne sensiblement inactive avant l'autre.
supercat
2

Gardez à l'esprit que les portes s'inversent. Cela fournit une boucle de rétroaction positive. En supposant que S et R sont à zéro et qu'une sortie est une, celle-ci sera réinjectée dans l'autre porte pour forcer l'autre sortie à zéro. De cette façon, les portes sont dans l'un des deux états stables.

Dès que vous définissez l'un de S ou R sur un, cela forcera la porte correspondante à sortir zéro qui, à son tour, forcera l'autre porte à sortir zéro. Encore une fois, stable.

Par exemple, état initial: S = 0, R = 0, Q = 0, Q # = 1. Vous définissez maintenant S = 1. Cela changera la sortie de la porte inférieure (Q #) à 0. Ce 0 alimente la partie supérieure porte, forçant cette sortie (Q) à 1. Ce 1 renvoie à la porte inférieure. Lorsque vous remettez S à 0, la porte inférieure reçoit toujours le 1 de l'autre porte. Cela maintiendra la sortie Q # à 0.

Si Q est déjà 1 et que vous réglez S sur 1, les deux entrées de la porte inférieure sont égales à 1 et il n'y a donc pas de changement.

DoxyLover
la source
Je ne comprends pas comment Q 'peut jamais être un s'il n'y a aucune entrée qui puisse réellement s'exécuter.
CodyBugstein
Encore une fois, l'état stable n'est que lorsque ONE OF Q et Q # est un. Sinon, (par exemple à la mise sous tension), les portes prendront rapidement l'un des deux états stables, en fonction de la vitesse réelle des deux portes et autres. Une fois que les portes sont stables, vous pouvez utiliser les deux entrées pour basculer entre les états stables.
DoxyLover
1

Je pense que le point important dont vous parlez concerne le fait que le verrou se met sous tension dans un état inconnu, alors comment pouvons-nous le mettre dans un état connu. Vous devez vous rappeler que si l'une des entrées d'une porte NOR est un 1, la sortie doit être un 0, quel que soit l'état de l'autre entrée. Ainsi, l'application des combinaisons d'entrée SET ou RESET forcera toujours le verrou dans l'état défini ou réinitialisé, quel que soit l'état précédent du verrou.

Joe Hass
la source
Oui tu comprends ma question! Cependant, je ne me sens toujours pas répondu par ce que vous avez écrit. Supposons que le verrou n'ait jamais été branché, et tout à coup, pour la première fois, x et y sont branchés. Comment pourraient-ils avoir un effet sur Q s'ils ne peuvent pas franchir les portes initiales ??
CodyBugstein
Je suppose que vous voulez dire que les entrées R et S obtiennent des valeurs X et Y. Si X ou Y est un, alors la sortie de cette porte NOR doit être un 0 ... c'est ainsi que fonctionnent les portes NOR. De sorte que 0 renvoie à l'autre porte NOR, qui a vraisemblablement un 0 pour son entrée (si X est 1, alors Y est 0, ou vice versa). Alors maintenant, la deuxième porte NOR a deux entrées qui sont 0 et sa sortie doit être 1. La seule situation où nous ne pouvons pas dire ce qui va arriver à Q et Q 'est si X et Y (signifiant à la fois S et R) sont mis à 0 juste après la mise sous tension. Comme d'autres l'ont noté, il s'agit d'un état instable.
Joe Hass