Cómo entender el SR Latch

14

No puedo ver cómo funciona el SR Latch. Aparentemente, conectas una línea de entrada de R y otra de S, y se supone que obtienes resultados en Q y Q ′.

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

Cuando conectas este circuito por primera vez, ¿cómo se inicia?

    
pregunta CodyBugstein

5 respuestas

5

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

PestilloRSconcompuertasNOR,lamayoríadelasseñalesestánenrojopara"desconocido">> </p>

<p> Pero si configura una de las entradas alta (esos son los botones a la izquierda), la señal se propagará (recuerde, 1 O [cualquier cosa] es igual a 1) y el circuito cerrará ese estado: </p>

<p> <img src="https://i.stack.imgur.com/KPwpk.png"> </p>

<p> 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 empezar. A los compiladores lógicos (FPGA y todo lo demás) les encanta quejarse de estados no inicializados. Este fue un gran primer ejemplo. </p>

<p> 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 uno u otro estado, y de eso se tratan todas las advertencias. </p>
    </div>                                    </div>
                                    <div class="action-time">
                                        respondido por el <a href="#" rel="noopener" target="_blank">gbarry</a>
                                        <!-- <span title="61843" class="relativetime"> 22.03.2013 - 01:07</span> -->
                                    </div>
                                </div>
                            </div>
                        </div>
                                                                                                                                                                                                
                                                                                                            <div class="answer" id="61835" itemscope="" itemtype="http://schema.org/Answer">
                            <div class="left-row">
                                <div class="votes">
                                    <i class="fa fa-caret-up vote"></i>
                                    <div class="vote-count" itemprop="upvoteCount">5</div>
                                    <i class="fa fa-caret-down vote"></i>
                                </div>
                            </div>
                            <div class="answer-row">
                                <div class="answer-text">
                                    <div class="description" itemprop="text">
                                        <div class="post-text" itemprop="text">
<p> Un flip-flop se implementa como un multivibrador biestable; por lo tanto, se garantiza que Q y Q

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 los estados y quedarán en reposo después de que las señales se hayan aplicado 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 (consulte enlace ), descubrimos que está compuesto por dos transistores de unión bipolar (BJT) y cuatro resistencias (reemplace los conmutadores SPST a tierra con interruptores SPDT que pueden cambiar las líneas de configuración y restablecimiento entre el potencial de tierra y V +). Los BJT se configuran como inversores emisores comunes. El colector (salida) de cada transistor se devuelve 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 está polarizado en la región de saturación por 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 desvíe hacia adelante en la región de saturación. El transistor que se polariza primero comenzará a conducir la corriente primero, lo que, a su vez, provocará una caída de voltaje en su resistencia de colector, estableciendo su salida en el nivel lógico 0. Esta caída en el voltaje del colector evitará que el transistor opuesto volviéndose sesgado hacia adelante por lo tanto, establecer el estado inicial del flip-flop. Es básicamente una condición de carrera de hardware que conduce a un resultado impredecible.

    
respondido por el bit-twiddler
3

Como dijiste, está indefinido. En la práctica, hay transitorios o peculiaridades que deben poner el pestillo en un cierto estado, pero no hay ninguna garantía de en qué estado estará. Esto se debe a la falta de coincidencia en las dos puertas que definirán un estado inicial dado (básicamente, el circuito no lo hace). No se comporte como un verdadero latch 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=0 o Q=0 and ~Q=1 .

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

La mejor manera de definir un estado es después de la puesta en marcha, ya sea para establecer el restablecimiento o ponerlo en un estado conocido.

Como nota al margen, en general, los latches SR que afirman S y R al mismo tiempo también darán como resultado un comportamiento indefinido y dependerá de un vudú similar para establecer las salidas (una implementación real puede cerrar ambas salidas, alternar al azar los dos, alternar ambas salidas en, etc.). Como supercat comentó si un pin no está activado antes que el otro, el latch SR puede entrar en un estado conocido porque solo se está activando un pin. Otros tipos de latches / 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).

    
respondido por el helloworld922
2

Ten en cuenta que las puertas se están invirtiendo. Esto proporciona un bucle de retroalimentación positiva. Suponiendo que tanto S como R son cero y que una salida es una, ésta se enviará nuevamente a la otra puerta para forzar a la otra salida a cero. De esta manera, las puertas están en cualquiera de dos estados estables.

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

Por ejemplo, estado inicial: S = 0, R = 0, Q = 0, Q # = 1. Ahora establece S = 1. Esto cambiará la salida de la puerta inferior (Q #) a 0. Este 0 se alimenta en la puerta superior, forzando esa salida (Q) a 1. Este 1 se retroalimenta a la puerta inferior. Cuando ajusta S de nuevo a 0, la puerta inferior sigue recibiendo el 1 de la otra puerta. Esto mantendrá la salida Q # en 0.

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

    
respondido por el DoxyLover
1

Creo que lo importante sobre lo que estás preguntando tiene que ver con el hecho de que el pestillo se enciende en un estado desconocido, así que, ¿cómo podemos obtenerlo en un estado conocido? Debe recordar que si cualquiera de las entradas a una compuerta NOR es un 1, entonces 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 restablecido, independientemente del estado previo del pestillo.

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas