Cómo entender el pestillo SR

14

No puedo entender cómo funciona el SR Latch. Aparentemente, conecta una línea de entrada desde R y otra desde S, y se supone que obtendrá resultados en Q y Q '.

Sin embargo, tanto R como S requieren la entrada de la salida del otro, y la salida del otro requiere la entrada de la salida del otro. ¿¿Qué viene primero, el huevo o la gallina??

Cuando conecta este circuito por primera vez, ¿cómo comienza?

SR Latch

CodyBugstein
fuente
1
Finalmente encontré una respuesta realmente fantástica en el libro But How Do It Know . Puede verlo en el enlace de la página 24.
CodyBugstein
Para una mejor comprensión de SR Latch a fondo y cómo se comporta para las diferentes entradas como 00, 01, 10 y 11, vea este video. www.youtube.com/watch?v=VtVIDgilwlA

Respuestas:

5

Una pregunta perceptiva. De hecho, si construye este pestillo en un programa de simulación, de hecho le mostrará que no puede predecir en qué estado comenzará:

RS se cierra con puertas NOR, la mayoría de las señales son de color ROJO para "desconocido"

Pero si configura una de las entradas en alto (esos son botones a la izquierda), la señal se propagará (recuerde, 1 O [cualquier cosa] es igual a 1) y el circuito bloqueará ese estado:

Mismo pestillo;  una entrada es alta;  todas las líneas se vuelven verde claro u oscuro

Estas son puertas NOR, por lo que la salida invertida baja cuando cualquiera de las entradas es alta. El programa que utilicé es Logisim. Es pequeño, y lo recomiendo para comenzar. Los compiladores lógicos (FPGA y todo lo demás) adoran quejarse de estados no inicializados. Este fue un gran primer ejemplo.

Ahora, sé que en la vida real, el circuito se enganchará aleatoriamente en uno u otro estado por sí solo. Muchos otros lo han señalado. Pero a veces, es importante que comience de manera confiable en un estado u otro, y de eso se tratan todas las advertencias.

gbarry
fuente
Gracias por la gran explicación. Si lo entiendo bien, cuando está enchufado, el circuito comienza en algún estado aleatorio.
CodyBugstein
@ Imray No usaría la frase "estado aleatorio" sino "estado indefinido". Podría elegir al azar, podría ser lo mismo cada vez, lo importante es que no sabes y no te importa. Todo lo que necesita hacer es darse cuenta de que debe inicializar el pestillo (pulsando R o S alto brevemente) antes de comenzar a confiar en la salida.
Scott Chamberlain
Acabo de releer su respuesta y entendí las cosas que previamente me perdí. ¡Gran explicación!
CodyBugstein
5

Un flip-flop se implementa como un multivibrador biestable; por lo tanto, Q y Q 'están garantizados como inversos entre sí para todas las entradas, excepto S = 1, R = 1, que no está permitido. La tabla de excitación para el flip-flop SR es útil para comprender qué ocurre cuando se aplican señales a las entradas.

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

Las salidas Q y Q 'cambiarán rápidamente de estado y se detendrán en un estado estable después de que se hayan aplicado señales a S y 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 examinamos la implementación más simple de un flip-flop SR (ver http://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg ), descubrimos que está compuesto por dos transistores de unión bipolares (BJT) y cuatro resistencias (reemplace los interruptores de palanca SPST a tierra con interruptores SPDT que pueden cambiar el conjunto y restablecer las líneas entre el potencial de tierra y V +). Los BJT están configurados como inversores emisores comunes. El colector (salida) de cada transistor se retroalimenta a la base (entrada) del transistor opuesto. La entrada S está cableada con la salida del BJT cuya conexión de colector sirve como salida Q (la unión de R1 / R3). La entrada R está cableada con la salida BJT cuya conexión de colector sirve como salida Q '(la unión de R2 / R4).

Cuando el circuito se enciende por primera vez, ninguno de los transistores se polariza en la región de saturación durante una pequeña fracción de segundo, lo que significa que tanto Q como Q 'están en el nivel lógico 1. El voltaje disponible en cada colector se alimenta a la base del transistor opuesto, lo que hace que se polarice hacia adelante en la región de saturación. El transistor que se polariza hacia adelante primero comenzará a conducir corriente primero, lo que, a su vez, provocará una caída de voltaje en su resistencia del colector, estableciendo su salida en el nivel lógico 0. Esta caída en el voltaje del colector evitará que el transistor opuesto volverse sesgado hacia adelante; por lo tanto, establecer el estado inicial del flip-flop. Básicamente es una condición de carrera de hardware que conduce a un resultado impredecible.

bit-twiddler
fuente
¿Puede la animación del circuito en el enlace proporcionado, pero en términos más simples? Estoy tomando un curso de pregrado para principiantes
CodyBugstein
3

Como dijiste, no está definido. En la práctica, hay transitorios o caprichos que deberían poner el pestillo en un cierto estado, pero no hay garantía de en qué estado estará. Esto es causado por un desajuste en las dos puertas que definirán un estado inicial dado (básicamente el circuito no No se comporta como un verdadero enganche SR digital, pero es un circuito analógico complejo como lo es en la vida real). La salida inicial será más o menos aleatoria, ya sea Q=1 and ~Q=0oQ=0 and ~Q=1 .

Salvo que una hoja de datos mencione explícitamente, no confiaría en que se elija un estado sobre el otro, ya que el estado inicial real puede cambiar entre las diferentes partes del lote, la colocación en un tablero, los factores ambientales (temperatura / humedad / etc.) Y el envejecimiento (de ninguna manera una lista completa de factores).

La mejor manera de definir un estado es después del inicio, afirmar el conjunto o restablecer para poner el bloqueo SR en un estado conocido.

Como nota al margen, en general, los bloqueos SR que afirman S y R al mismo tiempo también darán lugar a un comportamiento indefinido y dependerá de un vudú similar para configurar las salidas (una implementación real puede apagar ambas salidas, alternar aleatoriamente las dos, alternar ambas salidas, etc.). Como supercat comentó si un pin no está insertado antes que el otro, el pestillo SR puede entrar en un estado conocido porque solo se está afirmando un pin. Otros tipos de pestillos / flip-flops pueden definir un comportamiento diferente, por ejemplo, los flip-flops JK definen la afirmación de ambos pines para alternar las salidas (Q = ~ Qprev, ~ Q = Qprev).

helloworld922
fuente
Pero mi pregunta es, ¿cómo puede establecerse algo si ambas entradas dependen de entradas que aún no existen? Es como un caso de "me levantas en el aire, luego te levantaré y ambos estaremos flotando en el aire"
CodyBugstein
2
@ Imray: un lado del flip-flop siempre supera al otro cuando está recién alimentado. Por lo general, siempre se enciende de la misma manera debido a ligeros desajustes de sincronización, pero no hay garantías para este tipo de dispositivo.
Andy alias
1
Exactamente. Depende de un fenómeno de desajuste. No debe pensar que ambos lados son exactamente iguales. Ellos no están. Uno de ellos es más lento, el otro más rápido, y esto hará que uno de ellos se encienda inicialmente.
Gustavo Litovsky
Sí, confiaría en este comportamiento de desajuste para asegurar que el estado inicial sea "válido" (no obtenemos Q = ~ Q), pero no confiaría en este comportamiento para asegurar que Q siempre sea un cierto estado en el inicio ya que esto puede variar entre las partes de un lote o incluso cambiar para la misma parte a lo largo de la temperatura / tiempo. Por supuesto, la hoja de datos puede indicar lo contrario, pero en general no confiaría en ella de otra manera.
helloworld922
Es bastante común que el comportamiento de un enclavamiento se definirá cuando ambas entradas estén en el estado "activo" [alto para un enclavamiento NOR; bajo para un enclavamiento NAND], siempre que una de las entradas quede inactiva notablemente antes que la otra.
supercat
2

Tenga en cuenta que las puertas están invirtiendo. Esto proporciona un ciclo de retroalimentación positiva. Suponiendo que tanto S como R son cero y una salida es una, esta retroalimentará a la otra puerta para forzar la otra salida a cero. De esta manera, las puertas están en cualquiera de los dos estados estables.

Tan pronto como establezca uno de S o R en uno, esto forzará a la puerta correspondiente a salir a cero, lo que a su vez forzará a la otra puerta a salir a cero. De nuevo, estable.

Por ejemplo, estado inicial: S = 0, R = 0, Q = 0, Q # = 1. Ahora configura S = 1. Esto cambiará la salida de la puerta inferior (Q #) a 0. Este 0 alimenta a la superior puerta, forzando esa salida (Q) a 1. Este 1 retroalimenta a la puerta inferior. Cuando vuelve a establecer S en 0, la puerta inferior todavía recibe el 1 de la otra puerta. Esto mantendrá la salida Q # en 0.

Si Q ya es 1 y configura S en 1, ambas entradas a la puerta inferior son 1 y, por lo tanto, no hay cambio.

DoxyLover
fuente
No entiendo cómo Q 'puede ser uno si no hay entradas que puedan ejecutarse.
CodyBugstein
Nuevamente, el estado estable es solo cuando ONE OF Q y Q # es uno. De lo contrario, (por ejemplo, en el encendido), las puertas asumirán rápidamente uno de los dos estados estables, dependiendo de la velocidad real de las dos puertas y tal. Una vez que las puertas son estables, puede usar las dos entradas para cambiar entre los estados estables.
DoxyLover
1

Creo que la parte importante que está preguntando tiene que ver con el hecho de que el pestillo se activa en un estado desconocido, entonces, ¿cómo podemos llevarlo a un estado conocido? Debe recordar que si cualquiera de las entradas a una puerta NOR es un 1, la salida debe ser un 0, independientemente del estado de la otra entrada. Por lo tanto, la aplicación de las combinaciones de entrada SET o RESET siempre forzará el pestillo al estado establecido o de reinicio, independientemente del estado anterior del pestillo.

Joe Hass
fuente
Sí, entiendes mi pregunta! Sin embargo, todavía no me siento respondido con lo que has escrito. Supongamos que el pestillo nunca se ha enchufado, y de repente, por primera vez, x e y están enchufados. ¿Cómo podrían tener algún efecto sobre Q si no pueden pasar las puertas iniciales?
CodyBugstein
Supongo que quiere decir que las entradas R y S obtienen algunos valores X e Y. Si X o Y son uno, entonces la salida de esa puerta NOR debe ser un 0 ... así es como funcionan las puertas NOR. De modo que 0 retroalimenta a la otra puerta NOR, que presumiblemente tiene un 0 para su entrada (si X es 1, entonces Y es 0, o viceversa). Entonces, la segunda puerta NOR tiene dos entradas que son 0 y su salida debe ser 1. La única situación en la que no podemos decir qué pasará con Q y Q 'es si tanto X como Y (es decir, S y R) son ajuste a 0 justo después de encender la alimentación. Como otros han señalado, este es un estado inestable.
Joe Hass