27 votos

¿Qué es un flip flop?

Parece que hay una serie de diferentes definiciones de flip-flops y latches por ahí, algunas de las cuales son contradictorias.

El libro de texto de Ciencias de la Computación para el curso que enseño es probablemente el más confuso (de hecho tengo poca fe en el libro porque está simplemente equivocado en varios lugares).

Estoy cómodo con el funcionamiento de los latches (SR, SR con compuertas, D con compuertas), y la diferencia entre dispositivos de disparo por nivel y dispositivos de disparo por flanco, al menos en términos de compuertas lógicas y diagramas de tiempo. Sin embargo, todavía estoy buscando una definición concisa de un flip flop y de un latch.

Esto es lo que creo hasta ahora:

“Un flip-flop es un dispositivo biestable disparado por flanco que puede almacenar 1 bit”.

“Un latch es un dispositivo biestable disparado por nivel que puede almacenar 1 bit”.

He echado un vistazo a publicaciones anteriores en este sitio web sobre esto y, por iluminadoras que sean, todavía estoy buscando algo definitivo.

Mi entendimiento actual, que quiero verificar, está en los diagramas siguientes…

Lado a lado están lo que entiendo son dos implementaciones de un latch D con compuertas disparado por nivel.

Debajo de éstas está un detector de flanco positivo, en ese breve momento cuando la compuerta NOT aún no ha respondido al cambio de entrada de bajo a alto, es decir, el flanco ascendente (rojo es 1 azul es 0).

En el último diagrama, el detector de flanco se ha adaptado a un latch D desactualizado y esto es lo que lo convierte en un flip-flop.

ingrese la descripción de la imagen aquí

¿Es realmente el último diagrama un flip flop, o sigue siendo simplemente un latch?

¿Y por qué necesitamos la versión maestro-esclavo proporcionada, dado que este dispositivo es mucho más simple?

1 votos

@DanielTork ¿por qué no conviertes eso en una respuesta?

10 votos

En Australia y Nueva Zelanda, son una forma de zapatos abiertos a menudo usados en la playa o en clima favorable. ;)

4 votos

En los EE. UU., también. Pero solíamos llamarlos tangas, pero eso ahora se refiere a algo diferente ;-)

11voto

user64619 Puntos 11

He estado pensando mucho en esta definición hoy.

Como señalaron otros, los significados exactos variarán. Además, probablemente verás a más personas equivocarse en esto, incluso en este sitio, que acertar. ¡No me importa lo que dice Wikipedia!

Pero en general:

  • Un flip flop cambiará su estado de salida como máximo una vez por ciclo de reloj.
  • Un latch cambiará su estado tantas veces como las transiciones de datos durante su ventana de transparencia.

Además,

  • Un flip flop es muy seguro. Casi a prueba de tontos. Por esta razón, las herramientas de síntesis suelen utilizar flip flops. Pero son más lentos que un latch (y consumen más energía).
  • Los latches son más difíciles de usar correctamente. Pero son más rápidos que los flip flops (y más pequeños). Por lo tanto, los diseñadores de circuitos personalizados a menudo "extienden el flip flop" a lo largo de su bloque digital (un latch en cada extremo con fase opuesta) para exprimir algunos picosegundos adicionales de un arco de tiempo malo. Esto se muestra al final de la publicación.

Un flip flop típicamente se caracteriza por una topología maestro-esclavo. Son dos latches acoplados (puede haber lógica entre ellos), uno tras otro con fases opuestas (a veces en la industria llamados L1/L2).

Esto significa que un flip flop inherentemente se compone de dos elementos de memoria: uno para retener durante el ciclo bajo y uno para retener durante el ciclo alto.

Un latch es simplemente un elemento de memoria único (latch SR, latch D, latch JK). Solo porque introduces un reloj para controlar el flujo de datos en el elemento de memoria no lo convierte en un flip flop, en mi opinión (aunque puede hacer que actúe como tal: es decir, más activado por flanco de subida). Solo lo hace transparente durante un tiempo específico.

A continuación se muestra un verdadero flip flop creado a partir de dos latches SR (nota los relojes de fase opuesta).

verdadero d ff

Y otro verdadero flip-flop (este es el estilo más común en VLSI) a partir de dos D-latches (estilo de puerta de transmisión). Nuevamente, nota los relojes de fase opuesta:

verdadero flip flop tg style

Si haces pulsar el reloj a un latch lo suficientemente rápido, comienza a parecerse al comportamiento de un flip flop (latch pulsado). Esto es común en el diseño de vías de datos de alta velocidad debido al menor retraso de D->Out y Clk->Out, además de un mejor tiempo de preparación otorgado (el tiempo de retención también debe aumentar, pequeño precio a pagar) por la transparencia a lo largo del pulso. ¿Esto lo convierte en un flip flop? No realmente, ¡pero ciertamente parece actuar como uno!

Sin embargo, esto es mucho más difícil de garantizar que funcione. Debes verificar en todas las esquinas de proceso (nmos rápidos, pmos lentos, alta carga de línea, baja carga de línea; como ejemplo de uno) y todos los voltajes (el voltaje bajo causa problemas) que el pulso de tu detector de flanco siga siendo lo suficientemente ancho para abrir realmente el latch y permitir la entrada de datos.

Para tu pregunta específica, sobre por qué se considera un latch de pulso en lugar de un flip flop, es porque realmente solo tienes un elemento de almacenamiento de bits sensible a nivel único. Aunque el pulso es estrecho, no forma un sistema de bloqueo y represa que crea un flip flop.

Aquí hay un artículo que describe un latch de pulso muy similar a tu consulta. Una cita pertinente: "Si la forma de onda de pulso del reloj activa un latch, el latch está sincronizado con el reloj de manera similar a un flip-flop activado por flanco porque los flancos de subida y de bajada del reloj de pulso son casi idénticos en cuanto a tiempo"

EDITAR Para mayor claridad, incluí un gráfico de un diseño basado en latches. Hay un L1 latch y un L2 latch con lógica en el medio. Esta es una técnica que puede reducir los retrasos, ya que un latch tiene un retraso menor que un flip flop. ¡El flip flop está "extendido" y se pone lógica en el medio. ¡Ahora, ahorras un par de puertas de retraso (¡en comparación con un flip flop en cada extremo)!

diseño basado en latches

0 votos

"Caracterizado por una topología maestro-esclavo" - eso suena más como un detalle de implementación, en lugar de una característica de comportamiento definitoria. Comportamentalmente, un flip-flop (según tu definición) es una memoria de un solo bit que resulta ser activada por flanco. En la práctica, ¡la magia de implementación requerida para aproximar la activación por flanco requiere un segundo elemento de almacenamiento!

1 votos

@OliverCharlesworth: Bueno, es un detalle de implementación. Así como un detalle físico, conductual, estructural y topológico. No puedes simplemente llamar a un latch un flip flop porque se parezca a uno. Puede que puedas salirte con la tuya, pero para usarlos al máximo necesitas saber la diferencia. Si separas un flip flop, tienes dos latches separados en fase opuesta. Puedes meter lógica en medio. Esto es más rápido que tener un flip flop en cada extremo. También permite "pedir prestado tiempo" a través de un límite de ciclo, lo cual es un concepto muy importante para diseños de alta velocidad.

0 votos

Aquí hay algunas imágenes más útiles de DFF's que podrían ayudar, mira la última. El DFF publicado anteriormente es confuso debido al enclavamiento en fases opuestas del reloj (es decir, el maestro se bloquea en el flanco de subida, el esclavo se bloquea en la caída). electronics.stackexchange.com/a/84247/42957

2voto

shash Puntos 668

Muchas personas se referirán a los dispositivos con reloj como "flip-flops" y a los dispositivos sin reloj como latches. Cuando aprendí sobre ello, se les llamaba "flip-flops con reloj" y "flip-flops". Ambos pueden ser activados por flanco.

Existe suficiente ambigüedad que cuando es importante, confíe en los números de parte, hojas de datos y diagramas de temporización, y no en descripciones verbales.

0 votos

¿Entonces un GTO-SCR es también un flip-flop?

1voto

Drummy Puntos 145

Gracias a todos los que han respondido a mi pregunta. Como era de esperar, hay cierta desacuerdo. Desafortunadamente, a menudo la semántica es más importante que la comprensión cuando se trata de exámenes. Si necesito discutir con un tribunal de exámenes por marcar incorrectamente el examen de un estudiante de Ciencias de la Computación de A Level (y lo he hecho en el pasado), quiero estar en una posición fuerte. Pensé en compartir con ustedes un par de páginas del libro de texto oficial de A Level.

El primer diagrama es un latch SR activo bajo. El libro lo llama flip-flop.

En el texto, el libro dice "Usando dos flip-flops podemos crear un circuito llamado flip-flop tipo D que utiliza un circuito controlado por reloj para controlar la salida, retrasándola en un pulso de reloj. La D significa retraso." Este texto parece estar refiriéndose a la configuración maestro/esclavo. El segundo diagrama (figura 14.2) está etiquetado como un flip-flop tipo D. En realidad, es un latch D activo alto.

¡No muy útil!

Voy a quedarme con "Un flip-flop se caracteriza más típicamente por una topología maestro-esclavo" como sugirió jbord39, con la advertencia de que el término flip-flop a menudo se usa para referirse a un latch activado por flanco, y a veces simplemente a cualquier tipo de latch. Creo que es de donde proviene mi libro, aunque no llega convincentemente allí.

Gracias de nuevo a todos.

inserte descripción de la imagen aquí inserte descripción de la imagen aquí

2 votos

Sí, ese libro es verdaderamente engañoso. Además, la D significa Datos, no retraso ... jaja La parte importante es entender cómo funcionan y no obsesionarse demasiado con la semántica. Yo expliqué la semántica tal como me lo explicaron en las empresas donde trabajé. Podría variar según la zona y el nivel de experiencia (especialmente en relación con los internos de las compuertas lógicas, que es en lo que trabajo).

0 votos

Tengo que estar de acuerdo con jbord39. Como he mostrado en mi respuesta, ese E input solo permite que los datos afecten la salida. Aun así, tienes libros de texto que contienen información incorrecta. Bastante molesto en realidad.

1voto

Daniel Tork Puntos 182

Un flip-flop es diferente a un latch. Ambos son circuitos biestables, pero son dos cosas diferentes en realidad.

El latch tiene un pin de habilitación y escucha la entrada de datos solo cuando este pin está alto. Cuando está bajo, el latch se congela y memoriza su estado. Ahora incluso si manipulas las entradas, no reaccionará.

El flip-flop contiene en su lugar un pin de reloj, que reacciona solo a pulsos de cambio (cambios de nivel). Piensa en una onda cuadrada. El tiempo transitorio entre apagado y encendido; apagado y encendido es el tiempo en el que el circuito reacciona a las señales de entrada. Solo entonces está disponible para cambiar, no cuando el pin está estable y completamente encendido.

Tiempo de reacción del flip-flop

Nota que las líneas verdes representan el periodo en el que escucha la entrada y las líneas rojas el periodo en el que no lo hace. El latch permite la entrada solo durante los periodos mostrados por las líneas rojas superiores.

El SR independiente no es un circuito viable en la práctica.

Créditos a jbord39 por señalar el error. Imagen tomada de radio-electronics.com y editada.

0 votos

Un flip-flop no es una compuerta, pero se puede construir a partir de dos compuertas de fase opuesta, una tras otra.

0 votos

Edité la respuesta @jbord39

0 votos

Gracias, @Peter Mortensen. No vi esos.

0voto

bigli Puntos 11

(Salta al final si deseas saber si el último circuito del OP es flip-flop o latch.)

En términos básicos, un Flip-Flop es una disposición de compuertas lógicas (o componentes) que permite el almacenamiento de 2 estados junto con un pin de reloj que habilita estos cambios de estados.

Ahora aquí está la diferencia entre un Flip-flop y una latch. Las latches son asíncronas mientras que los Flip-flops son síncronos.

  • Las latches asíncronas no requieren un pin de actualización, que comúnmente se llamaría pin CLK (abreviatura de reloj) en un flip-flop. Lo único que les importa es si las entradas están en un estado específico, ya sea HIGH o LOW. Cuando una cierta combinación de HIGHs y LOWs se instigan en la entrada, en ese momento el circuito decide realizar una acción y tu resultado deseado se devuelve "inmediatamente". Hay 4 posibles acciones en una latch.

    1. No hacer nada
    2. Establecer Q en HIGH
    3. Establecer Q en LOW
    4. El estado inválido (supuestamente invertir el valor de Q)

    Observa que Q' depende de Q.

Un ejemplo es la latch SR que demuestra las 4 posibles acciones que una latch puede realizar: RS Latch

  1. Cuando S es LOW y R es LOW, no cambia nada.
  2. Cuando S es HIGH y R es LOW, Q se establece en HIGH.
  3. Cuando S es LOW y R es HIGH, Q se establece en LOW.
  4. Cuando S es HIGH y R es HIGH, Q se invierte, a una velocidad "impredeciblemente" rápida. Este estado es inválido.
  • Los flip-flops síncronos te permiten establecer un valor en los pines de datos. Esto significa que solo les importa cuál es el estado de estos pines. Sin embargo, el circuito no decide realizar ninguna acción en la salida aún. Tienes el pin CLK mencionado anteriormente. Cuando el pin CLK cambia de estado (ya sea de LOW a HIGH, viceversa o ambos), los pines de datos son "capturados" y el flip-flop realiza una acción basada en la combinación de HIGHs y LOWs de los datos capturados de los pines de datos. Hay dos acciones para el pin CLK.
  1. No hacer nada
  2. "Capturar" datos de los pines de datos y realizar una acción en la salida basada en los valores de los pines de datos en ese momento específico.

Nuevamente hay 4 posibles acciones que el circuito puede realizar en la salida.

  1. No hacer nada
  2. Establecer Q en HIGH
  3. Establecer Q en LOW
  4. Invertir el valor de Q (ahora es válido porque solo lo hace una vez)

ESTO NO ES UN FLIP-FLOP:

enter image description here

Pero ¿por qué podrías preguntar? Ese pin E no es un pin de reloj. Los pines de reloj permiten al circuito analizar la información de los pines de datos UNA VEZ, donde esa información se envía como instrucciones para realizar acciones específicas en la salida. Sin embargo, los pines de habilitación como este permiten al circuito analizar la información de los pines de datos siempre que se mantenga alto y esté estableciendo constantemente los valores de la salida. Por lo tanto, es una latch. (Gracias a jbord39 por señalar mi error).

Entonces el Flip-flop es como una latch, excepto que necesitas un paso de "confirmación" adicional, que es el pin CLK.

Entonces, ¿ese último circuito de la pregunta del OP es un flip-flop? Intenta mantener el C en alto y observa si la salida cambia cuando cambias el valor de D. Si la salida cambia, debería llamarse habilitación en su lugar y sería una latch. Pero si la salida no cambia (en cuyo caso), entonces es un flip-flop.

Las imágenes son de Wikipedia.

0 votos

No, muchos latches tienen pines de reloj. nxp.com/documents/data_sheet/74HC_HCT373.pdf de hecho, el circuito que mostraste es un latch no un flip flop...

0 votos

@jbord39 ? ¿Qué pin de reloj? Y el pin de habilitación es diferente a un pin de reloj.

0 votos

@jbord39 y disculpa, tienes razón. Los dos circuitos inferiores son latches. Por favor, reconsidera mi respuesta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X