8 votos

¿Por qué no puedo hacer flip-flops en los simuladores lógicos?

He estado jugando con algunos simuladores lógicos y no entiendo por qué no funcionan los flip-flops. Estoy tratando de implementar un flip-flop T con puertas NAND:

enter image description here

Todos los simuladores que he probado dan el mismo resultado. Q o Q' toma el estado del reloj en lugar de conmutar en el flanco ascendente, dependiendo del tiempo de las actualizaciones internas. Dada la simetría del circuito no me sorprende, pero me pregunto cómo se supone que funciona en la práctica.

¿Es esto posible, o estos imuladores proporcionan componentes de flip-flop porque no es posible hacerlo con piezas básicas? Si es así, ¿por qué y qué falta?

Simuladores:

Circuito de puerta NAND comparado con un flip-flop T proporcionado (circuitverse.org):

enter image description here

Lo mismo en simulator.io (usando AND+NOT ya que no hay NAND):

enter image description here

12voto

TimWescott Puntos 261

Porque desde esta página El estilo que muestras sólo funciona si el ancho del pulso de reloj se ajusta para que sea lo suficientemente largo para que la etapa de salida reaccione, pero lo suficientemente corto para que la cosa no oscile. Un simulador lógico que no modele el tiempo de propagación puede no ser capaz de hacerlo.

Para simular tu circuito, necesitarías un simulador de circuitos que "entienda" el retardo de propagación, o tendrías que simular tu circuito a nivel de transistores.

En esa misma página se muestra este circuito para un flip-flop J-K totalmente síncrono (basta con conectar J y K para obtener un T f-f):

enter image description here

Puede que quieras probar eso en tu simulador, a ver qué pasa.

11voto

hacktastical Puntos 560

El circuito que muestras es un latch JK cerrado, no un flip-flop. Tiene un defecto: con T alto y el reloj alto, las puertas NAND acopladas forman un oscilador de anillo. Esto se llama a veces el problema de "race-around". La salida nunca se estabiliza hasta que el reloj vuelve a estar bajo.

Este circuito es ilustrativo de cómo no hacer un flop con reloj. De lo contrario es inútil. Un flop de conmutación real utilizará un par de latches en dos etapas, sincronizados en niveles opuestos. Esto se llama a veces un flip-flop 'edge-triggered' o 'master-slave'.

Más información aquí: ¿Cómo se determina la Q y la Q' la primera vez en JK flip flop?

Y aquí: El pestillo JK, ¿posible error de Ben Eater?

5voto

Para implementar un Flip-Flop T disparado por flanco que no dependa de la temporización del retardo de la puerta, requiere, creo, un mínimo de 6 puertas Nand. El circuito de abajo simula bien en CircuitLab.

schematic

simular este circuito - Esquema creado con CircuitLab

Editar:

Alguien ha comentado que este circuito no es un flip-flop T porque el circuito depende sólo del reloj, y no tiene entradas T y de reloj separadas.

Sin embargo, cuando busco en Google "T flip-flop", el primer resultado que me aparece es este que establece:

El flip-flop T o "toggle" cambia su salida en cada flanco de reloj, dando una salida que es la mitad de la frecuencia de la señal a la entrada T.

Es útil para construir contadores binarios, divisores de frecuencia y dispositivos de suma binaria en general. Se puede hacer a partir de un flip-flop J-K atando sus dos entradas en alto.

y que contiene el gráfico:

enter image description here

No pretendo que esto sea necesariamente una refutación autorizada de la afirmación de que un flip-flop T debe tener entradas T y de reloj separadas. (Ciertamente hay mucha información errónea sobre los flip-flops en las interwebs. Por ejemplo, el circuito de los OPs, aparece por todas partes etiquetado como un flip-flop T a pesar de que tiene problemas descritos en otras respuestas). Sin embargo, estoy ofreciendo la información anterior como un punto de vista alternativo al del comentarista.

Edición 2: Un comentarista ha pedido un diagrama de estado para el circuito. Voy a proporcionar esta información, pero no como un diagrama.

Hay 4 estados estables y 12 estados que son transitorios entre estados estables en el funcionamiento normal.

Los estados estables son:

Estado: Vin N1 N2 N3 N4 N5 N6

S1: 0 1 1 0 1 1 0

S2: 1 0 1 0 1 0 1

S3: 0 1 1 1 0 0 1

S4: 1 1 0 1 1 1 0

Las transiciones son las siguientes

S1 En \$\uparrow\$ N1 \$\downarrow\$ N6 \$\uparrow\$ N5 \$\downarrow\$ S2

S2 En \$\downarrow\$ N1 \$\uparrow\$ N4 \$\downarrow\$ N3 \$\uparrow\$ S3

S3 En \$\uparrow\$ N2 \$\downarrow\$ N5 \$\uparrow\$ N6 \$\downarrow\$ N4 \$\uparrow\$ S4

S4 En \$\downarrow\$ N2 \$\uparrow\$ N3 \$\downarrow\$ S1

1voto

Shashank V M Puntos 7

Otra cuestión que puede (pero debe ) se encuentran con esto : ¿Cómo se determina la Q y la Q' la primera vez en JK flip flop? .

Esto es especialmente cierto para un Flip-Flop T.

Para un Flip-Flop T con sólo 2 entradas, T y Clock, no hay manera de que la salida entre en un conocido estado en una simulación que soporta 'X'.

A buena el simulador mostrará una 'X' en ambas salidas, lo que indica que el valor es desconocido.

Como he mencionado en mi respuesta En este caso, se pueden utilizar entradas síncronas o asíncronas para ajustar la salida a un estado conocido.

Como referencia, he construido un Flip-Flop T con entradas asíncronas utilizando un Flip-Flop JK Maestro Esclavo, que puedes simular en tu navegador:

T flip-flop simular este circuito - Esquema creado con MultisimLive

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