flip-flops maestro-esclavo

5

Tengo algunos problemas para encontrar un ejemplo de la inestabilidad temporal que motiva al flip-flop. Dondequiera que miro, las explicaciones son terriblemente hadas (o, al menos, mi entendimiento es). por ejemplo, aquí explican que puede haber inestabilidad si el pulso de reloj toma muestras de circuitos combinacionales. Estoy buscando un ejemplo concreto de tal inestabilidad (necesito que me expliquen estas cosas como si fuera un niño de seis años), no solo diciendo que "las cosas pueden ser inestables". Si escribiera en un examen de matemáticas, "la implicación dada puede ser problemática" sin proporcionar un ejemplo de contador, no obtendría la mitad de una nota, y, de la misma manera, si estuviera escribiendo un artículo que discute motivar flip-flops, lo vería esencial "probar" su necesidad.

mi problema es que si he resuelto que si el retardo de propagación [máximo] para un circuito dado, no necesito esperar el borde del pulso del reloj, puedo muestrear la salida después de ese período de tiempo. es decir, incluso con un flip-flop tengo que calcular mi velocidad de pulso de reloj, así que ¿por qué tomarme la molestia de tener 2 pestillos cuando sé que la salida deseada existirá después de 1 pulso de tiempo?

así que si tuviera muchos circuitos diferentes que dependieran de la salida de cada uno, en lugar de cambiarlos por todos, los activaría en el orden correspondiente de acuerdo con el pulso del reloj. Obviamente me falta algo simple aquí porque no puedo ver el funcionamiento del flip-flop para salvar de la inestabilidad ...

el flip-flop JK es una buena forma de "regular" la salida porque resuelve un problema totalmente diferente, que cuando j = k = 1 el interruptor que el pestillo JK realizaría durante todo el ciclo que el reloj el pulso es 1, ocurre solo una vez, lo que significa que la salida final es determinista, en lugar de indefinida. aunque eso no explica por qué es necesario en un cierre D y un cierre RS.

en esa nota, añadiré una segunda pregunta. ¿Cuál es el uso del cierre / flip-flop JK? Parece que se introdujo en muchos textos como una mejora en el cierre RS, debido a la problemática s = r = 1 situación y la condición de carrera resultante. sin embargo, si configuramos el RS en un flip flop, nos brindamos una mejor alternativa al JK: este funciona como un pestillo RS pero cuando r = s = 1 en el flanco ascendente del reloj, tanto Q como Q 'son 0 , y en el borde descendente no hay cambios en el pestillo del esclavo. por lo que la situación problemática de r = s = 1 se vuelve estable. La única ventaja que tiene JK sobre esta configuración es que r = s = 1 en realidad proporciona una nueva funcionalidad de alternar, no estoy seguro de si eso es algo deseado o no ...

esperando alguna idea ...

    
pregunta davin

2 respuestas

3

El arreglo maestro-esclavo no resuelve estrictamente el problema de metastabilidad, AFAICT. Se usa comúnmente para cruzar diferentes dominios de reloj de lógica síncrona, pero no veo qué mejora hace en la entrada puramente asíncrona (el esclavo obtiene un estado claro, pero puede derivar de una transición metaestable de todos modos). Simplemente podría ser una descripción incompleta, ya que podría agregar una función de histéresis combinando las salidas de los dos registros.

En cuanto a las diferencias entre los flip-flops SR, JK, D o incluso T, tiende a reducirse a qué entradas son asíncronas. Los pestillos SR más simples no alternan con S = R = 1, sino que simplemente mantienen el último estado (o, en el peor de los casos, oscilan con un retardo de puerta), esa es la carrera. El JK, por otro lado, hará la transición en el borde del reloj - comportamiento síncrono. Por lo tanto, es su naturaleza que un registro T solo puede ser síncrono, y un latín D asíncrono es transparente mientras se engancha. El registro SR que describe no tiene la función T, que puede ser útil dependiendo de la función. Por ejemplo, un contador de ondulación se puede describir puramente con los registros T. En pocas palabras, el JK le brinda un conjunto completo de operaciones (establecer, borrar, alternar y no operar) sin que le cueste una línea de control adicional.

En la lógica síncrona, con frecuencia utilizamos amplios conjuntos de registros para implementar una función más grande. No importa estrictamente si usamos D, T, JK o cualquier otro registro, ya que simplemente podemos rediseñar la función lógica que los impulsa a incluir retroalimentación (a menos que necesitemos construir esa lógica, es decir, en la lógica de 74 familias). Es por eso que los FPGA y tales tienden a tener solo registros D en sus representaciones esquemáticas. Lo que importa es que el propio registro introduce la operación síncrona: estado estable hasta el próximo reloj. Esto permite combinar muchos registros en paralelo o con funciones de retroalimentación.

En cuanto a la elección entre la lógica de pulsos retardados y la sincronización de reloj, no es automática. Algunas computadoras tempranas (p. Ej., PDP-1) e incluso algunas de alta eficiencia energética (p. Ej., GreenArrays) usan el diseño de pulso retardado, y de hecho es comparable a un diseño canalizado en lógica síncrona. El sumador de Carry-Save demuestra la diferencia crucial: es un diseño canalizado donde realmente no tiene un valor conocido, no incluso intermedio, hasta que el pulso del último nuevo valor para ingresar haya salido por el otro extremo. Si sabe en la etapa de diseño lógico la acumulación repetida pero solo se utiliza la suma final, puede ser la mejor opción. Mientras tanto, los FPGA se diseñan normalmente con solo unas pocas redes de reloj y, por lo tanto, no se adaptan bien a la lógica de pulsos retardados (aunque puede aproximarse con la sincronización del reloj).

Espero que esto sea más útil que confuso ... ¡preguntas interesantes!

    
respondido por el Yann Vernier
4

Un pestillo puede garantizar que si la entrada del reloj tiene un flanco ascendente y permanece alta durante al menos Twidth, y la entrada de datos es alta, al menos Tsetup antes de un borde ascendente del reloj y permanece alta durante al menos Thold después, luego dentro de Tpd la salida del pestillo será alta y permanecerá así hasta el próximo flanco ascendente del reloj. Sin embargo, eso no significa que la salida del pestillo nunca cambie a un tiempo mayor que el Tpd eliminado de un borde de reloj ascendente.

En un mundo ideal, si un circuito de retención recibe un estímulo que puede o no causar que cambie de estado, siempre ocurrirá una de dos cosas:

  1. El estímulo cambiará visiblemente el estado de cierre inmediatamente; el pestillo permanecerá en ese estado de cambio particular hasta el próximo estímulo.
  2. El estímulo no cambiará el estado de cierre en absoluto; el estado de cierre permanecerá sin cambios hasta el siguiente estímulo.

Lamentablemente, hay otra posibilidad:

  1. El estado de enganche puede cambiarse de una manera que no sea inmediata o completamente evidente durante algún tiempo; el estado visible puede cambiar en algún momento futuro arbitrario, a menos que un estímulo "limpio" ponga el cierre en un estado conocido.

Para usar una analogía física cruda, si un bolos de pie se golpea con fuerza, se caerá de inmediato. Si se golpea muy débilmente, puede ser empujado ligeramente de la vertical, pero rápidamente volverá a ponerse de pie firmemente. Sin embargo, si se golpea en algún lugar en el medio, puede tambalearse un poco antes de volver a un estado vertical estable o caer. Puede que no sea evidente por más de un segundo lo que el pin terminaría haciendo si no se lo perturbara. El peor de los casos para determinar si un pin ha sido golpeado lo suficientemente fuerte como para derribarlo puede exceder con creces el tiempo que se requeriría para determinar un golpe limpio o falla.

Cuanto más cerca esté el estímulo de un pestillo a uno que casi o apenas lo haga cambiar permanentemente de estado, más tiempo puede tomar el pestillo para producir una salida de resolución limpia.

Parecería que sería posible diseñar un circuito de retención con una salida trifásica, donde las tres fases fueron "alta", "baja" y "tambaleante", y tener circuitos descendentes a la espera de que el pestillo producir una salida limpia antes de usar el valor de salida. Desafortunadamente, volviendo a la analogía de los bolos, aunque es posible decir que un alfiler se ha caído lo suficiente como para que no se endurezca por sí mismo, y que es posible que un alfiler se haya estabilizado lo suficiente como para no caiga, a menos que se vuelva a golpear, no hay una forma clara e inequívoca de establecer el momento en el que el resultado del pin se vuelve seguro. No importa lo que uno haga, siempre habrá un "caso de problemas" teóricamente posible. Lo mejor que se puede hacer, muchas veces, es dejar que la barredora de pines entre y reinicie el estado del sistema, y espero que no haya desacuerdo sobre si se debe contar con que el pin ha caído antes de que lo haya recibido el alfiler.

    
respondido por el supercat

Lea otras preguntas en las etiquetas