Comprender el momento del registro de turnos

(Estoy aprendiendo el diseño de circuitos digitales. Disculpe si es una pregunta ingenua).

De Wikipedia , encontré el siguiente diagrama sobre el registro de desplazamiento SIPO:

ingrese la descripción de la imagen aquí

Según tengo entendido, este registro de desplazamiento está hecho de DFF (D Flip-Flop). DFF se activa en el flanco ascendente del período de reloj. Entonces, para cada flanco ascendente de la Clockseñal, los datos del Data Inse propagarán a través de una etapa de DFF.

Mi pregunta es, dado Clockque todos los DFF lo comparten, cuando llega el flanco ascendente, los 4 DFF deben estar en estado activado/transparente. Entonces, ¿qué garantiza que los datos se propaguen a través de la only 1etapa de DFF en lugar de 2 o más etapas?

Digamos:

  • Tdes el retardo interno de 1 etapa DFF para cargar datos de D a Q.
  • Tres el tiempo de duración del flanco ascendente del reloj. Vea la foto de abajo.

ingrese la descripción de la imagen aquí

Creo que para limitar la propagación a 1 etapa, tiene que ser:

Td < Tr < Td*2

¿Estoy en lo correcto?

Pero en el enlace de arriba dice:

En esta configuración, cada flip-flop se activa por flanco. El flip-flop inicial opera a la frecuencia de reloj dada. Cada flip-flop subsiguiente reduce a la mitad la frecuencia de su predecesor, lo que duplica su ciclo de trabajo . Como resultado, el flanco de subida/bajada tarda el doble de tiempo en activar cada flip-flop subsiguiente; esto escalona la entrada en serie en el dominio del tiempo, lo que lleva a una salida en paralelo.

Me confunde con algunas cosas.

  • ¿Qué halves the frequencysignifica?
  • ¿Cómo se podría caracterizar un DFF con una frecuencia?
  • ¿Un DFF no solo funciona en el flanco ascendente del reloj y, en general, no le importa la frecuencia en la que se encuentre el reloj?
  • ¿Y cómo podría relacionarse la frecuencia con el ciclo de trabajo? La frecuencia está relacionada con el período, mientras que el ciclo de trabajo solo significa el porcentaje de un período en el que una señal o sistema está activo . No veo ninguna relación entre la frecuencia y el ciclo de trabajo.

AÑADIR 1

Como dijo Neil_UK en su respuesta a continuación, la cita wiki anterior es simplemente incorrecta. Y ha arreglado la página wiki.

Como dijo EM Fields en su respuesta a continuación,

...no puede pasar nada más hasta el próximo flanco ascendente del reloj, ya que el flanco del reloj que hizo el trabajo ya ha muerto...

Estrictamente hablando, no hay un borde ascendente idealmente vertical. Debería haber algunos Trcomo se muestra en la ilustración anterior. Supongo que para limitar la propagación de la señal a través de las etapas DFF, el flanco ascendente debe durar lo suficiente para que la señal se propague a través de una etapa y lo suficientemente corto para que la señal no se propague a la siguiente etapa.

Simplemente creo que este tipo de control es demasiado complicado/delicado para ser verdad. Pero si es cierto, ¿cómo se consigue? (Acabo de ofrecer una recompensa por esta pregunta).

¿Qué quiere decir exactamente con "Tr es el tiempo de duración del flanco ascendente del reloj"?
@Elbehery Gracias por la respuesta. Agregué una ilustración. Dado que el reloj es compartido por todas las etapas de DFF Tr, creo que durante el , todos los DFF deben ser transparentes para la entrada. Por eso creo que es necesario controlar hasta dónde se puede propagar la señal.
Te ha confundido una entrada dudosa de wikipedia. Vea mi respuesta y vea la página actualizada de wikipedia (es posible que deba vaciar la memoria caché de su navegador para ver la nueva página)

Respuestas (9)

Mi pregunta es, dado que el reloj es compartido por todos los DFF, cuando llega el flanco ascendente, los 4 DFF deben estar en estado activado/transparente. Entonces, ¿qué garantiza que los datos se propaguen a través de solo 1 etapa de DFF en lugar de 2 o más etapas?

Considere los requisitos de tiempo de un típico D Flip Flop .

Temporización del flip-flop D

Como puede ver, hay una serie de parámetros; Aquí son de suma importancia el tiempo de configuración, el tiempo de espera y el retardo de propagación .

La entrada (en D) debe ser estable durante el período que se muestra (desde t s tu a t h ).

Para esta parte en particular, el tiempo de espera mínimo requerido es de 3 nseg. Esta es la cantidad mínima de tiempo que la entrada debe estar estable detrás del reloj para un rendimiento garantizado (es decir, D se transfiere a Q)

Configuración y tiempos de espera

Cualquier transición de la entrada después de esto es efectivamente ignorada por el dispositivo. Siempre que el período del reloj sea mayor que t s tu + t h funcionará correctamente.

Ahora echemos un vistazo a los retrasos de propagación ( t pag yo h y t pag h yo )

De la hoja de datos, estos son típicamente 14 nseg:

retardo de propagación

Como este evento ocurrirá más allá del requisito de tiempo de espera, esta transición en la siguiente entrada D no tendrá efecto ya que la entrada ahora está efectivamente bloqueada por el mecanismo de retroalimentación interno.

Tenga en cuenta que la velocidad máxima a la que puede ir un registro de desplazamiento es 1 t s tu ( metro i norte )   + t pag r o pag ( metro a X ) ya que la entrada D debe ser estable durante al menos el tiempo de configuración después de que la salida Q anterior se haya estabilizado.

Siempre que el retraso de propagación sea mayor que el tiempo de espera, puede ignorarse para la velocidad de reloj máxima.

Entonces, la conclusión es que siempre que el retraso de propagación de D a Q sea mayor que el tiempo de espera requerido, un solo evento de reloj no puede propagarse a través de más de un flip-flop.

Usando su diagrama, el reloj sucede en algún momento t 0 . La salida q 1 cambiará después del retraso de propagación del primer flip flop, pero como esto será después del tiempo de configuración de entrada en el segundo flip flop, siempre que el retraso de propagación del primer flip flop sea mayor que el tiempo de retención de entrada del segundo flip flop (siempre lo es, según mi experiencia), entonces la transición en Q1 (D del segundo flip flop) no tiene efecto para este evento de reloj .

Ese enlace de wikipedia tenía una descripción incorrecta, era para un contador de división en cascada por 2. Ahora he arreglado la entrada de Wikipedia para que describa un registro de desplazamiento. Puede que no sea la mejor descripción (hecha en un minuto), ¡pero al menos no está mal!

Para que los tiempos funcionen correctamente, el tiempo de espera en la entrada D debe ser menor que el retraso de propagación del flip-flop menos la incertidumbre del reloj. Siempre que esta condición sea verdadera, los nuevos datos del flip-flop anterior no cambiarán hasta que la siguiente etapa haya bloqueado los datos.

Para un NXP 74HC74, vemos en la hoja de datos que el tiempo de espera es de 3 ns en el peor de los casos, y el retraso de propagación suele ser de 14 ns, por lo que un sesgo de reloj de hasta 11 ns no representará un problema (a 5 V) con estos tiempos. Sin embargo, tenga en cuenta que el retraso de propagación no suele ser mínimo, por lo que los márgenes en una parte en particular pueden ser mucho más estrechos, sin embargo, por razones bastante obvias, la mayoría de los flip-flops D están diseñados para que este tipo de cosas funcionen en el tiempo, ya que es probable que obtener uno particularmente rápido también tienen requisitos de tiempo de espera más cortos.

Los DFF no son transparentes, operan en el borde de la señal del reloj. El borde del reloj tiene que ser lo suficientemente rápido para que los circuitos funcionen correctamente.

A continuación se muestra un ejemplo:ingrese la descripción de la imagen aquí

La primera etapa está activa durante la fase baja del reloj. Cuando el reloj sube, los primeros inversores conectados uno tras otro (latch) almacenan el estado actual y la entrada se desconecta por la puerta de transmisión que queda en el nodo X. Al mismo tiempo, el segundo TG se vuelve transparente y acciona el segundo latch. Tan pronto como el reloj vuelve a bajar, el segundo pestillo retiene el valor.

En el circuito tomado de Wikipedia los flip-flops forman un registro de desplazamiento, todos operan a la misma frecuencia. Podrían usarse como contadores o divisores de reloj, sin embargo, para esto se usaría una configuración diferente.

Pero, ¿cómo vas a lograr phi y phi_bar 100% simétricos? Probablemente usaría un inversor, lo que lleva al menos un retraso de puerta entre los dos. Así que ahora su primera puerta de transmisión puede pasar un '0' un poco más que un '1', y la segunda puerta de transmisión puede pasar un '1' un poco más que un '0', debido a relojes irregulares. Efectos similares ocurren con los dispositivos de retroalimentación tristate. También hay enrutamiento de metal entre los puntos del reloj. Nada es exacto. Entonces, este análisis ideal solo oculta problemas que existen en la vida real. yo soy
@ jbord39: por supuesto, se debe verificar el tiempo. Hacer que phi y phi_bar sean simétricos no es tan difícil. Si se necesitara un margen de error, podría introducirse un retraso entre los dos TG. El enrutamiento es solo local y muy corto. Los retrasos generalmente se determinan después de la extracción parasitaria y también se pueden verificar. Por supuesto, hay diseños más robustos, pero ya he visto este en bibliotecas de celdas estándar.
Sí, está en las bibliotecas de celdas estándar todo el tiempo, es el DFF más básico. Pero los relojes rara vez están hechos para ser simétricos. El retardo de 10ps/inversor es 'suficientemente bueno'. El motor de caracterización recogerá las diferencias de subida/bajada y las representará en tablas de todos modos. Mi punto es que el OP plantea una pregunta completamente lógica, que ha causado errores reales en el diseño. Soplarlo como 'en el borde ascendente lo captura instantáneamente' es una gran simplificación, pero no muy buena en mi opinión cuando la pregunta se refiere a los matices en el tiempo.
@ jbord39: mi punto es que este diseño se puede hacer tan robusto como sea necesario. Si esto provoca un error en el diseño, es necesario corregir el flujo de diseño. Aparte de eso, creo que estás leyendo demasiado en la pregunta. Sin embargo, veo tu punto.

En pocas palabras, no hay nada para evitar la situación que describe, excepto el conocimiento propio de los diseñadores al construirlo. Tenga en cuenta que hay un retraso finito entre la activación del borde del reloj y el cambio de la salida, generalmente llamado clk-to-q o clk-to-out.

Con un DFF de estilo de puerta de transmisión común (el más utilizado en las CPU hoy en día) en la tecnología actual, lo más probable es que se encuentre con la situación que describe. Se conoce como una violación de retención.

De hecho, las infracciones de retención son las más letales para los chips digitales. Si hay una infracción de configuración, simplemente puede reducir la velocidad del reloj hasta que la ruta lenta deje de fallar. Pero, si hay una violación de retención, generalmente no hay nada que hacer (a menos que coloque medidas de seguridad, como bordes de reloj móviles por registro). Debido a que son tan letales, es normal acolcharse furiosamente para evitar violaciones de retención. Entonces, si tiene un carril bici (digamos 400ps @ 2.5GHz) eso es solo flop->flop; no hay razón para no agregar algunos amortiguadores. Esto es de hecho alentado.

Otros también afirmaron que los DFF no son transparentes. Esto ciertamente depende del DFF , la mayoría de los VLSI FF actuales tienen una transparencia de un par de picosegundos. Otros se modifican intencionalmente para permanecer transparentes por más tiempo (cambio de préstamo de tiempo, lo que otorga tiempo adicional para la configuración y también lo obliga a retener los datos válidos por más tiempo) al retrasar el reloj maestro en relación con el esclavo.

Si la señal saltara el flip flop, se consideraría una ruta de ciclo 0. Esto generalmente se considera una "infracción de retención", lo que significa que los datos no se retuvieron el tiempo suficiente.

Los tiempos de configuración y espera de cada flip flop son diferentes. Si fueron diseñados para su uso en un registro de desplazamiento, casi puedo garantizarle que tendrán un tiempo de espera negativo (retraso del reloj en el pestillo esclavo en relación con el pestillo maestro; haciendo que el pestillo maestro se cierre antes y se vuelva no transparente, en algún momento antes de que el pestillo esclavo se vuelva transparente). O eso, o el clk->out de estas chanclas puede ser mucho más largo que el tiempo de espera. O insertaron retraso entre etapas; ya sea en la ruta de datos o en la ruta del reloj (invertida).

Es muy sencillo solucionar este problema. De hecho, hay muchas, muchas, muchas formas de solucionar el problema. Dos simples: simplemente inserte un retraso apropiado entre cada etapa de flip flop. O bien, ponga un retraso entre el reloj y cada flip flop en el registro de desplazamiento; empezando por el último de la cadena. Esto asegurará que cada flip flop tome los datos estables del flip flop anterior.

Este esquema muestra la lógica de las puertas de transmisión y las puertas de transmisión inversoras justo después del flanco ascendente activo del reloj que controla la serie de interruptores con la capacidad de almacenamiento suficiente para permitir que un interruptor de retroalimentación mantenga activamente ese nivel lógico aislado de la entrada.

Tres (3) etapas de D Flip flops se muestran a continuación como parte o un registro de desplazamiento que podría ser Serial In Parallel Out (SIPO) o Serial In Serial Out (SISO)

Aunque el reloj está invertido para el control bipolar de las puertas de transmisión, se muestra simbólicamente como un control de relé para simplificar la comprensión.

esquemático

simular este circuito : esquema creado con CircuitLab

¡Esta es realmente una muy buena pregunta! Para saber cómo funciona DFF, vaya aquí , para la sincronización del reloj y la transición, encontrará la respuesta aquí que dice lo siguiente

La acción del disparador Schmitt en la entrada del reloj hace que el circuito sea altamente tolerante a tiempos de subida y bajada del reloj más lentos.

La implementación de esta acción de Schmitt eliminará al máximo la metaestabilidad durante la transición del reloj. Por lo tanto, el reloj aumentará lógicamente solo una vez, lo que hará que el disparador verifique su estado solo una vez. Para la frecuencia del reloj, los DFF suelen tener valores mínimos y máximos en sus hojas de datos para garantizar la propagación síncrona de la señal dentro de sus elementos lógicos.

En la configuración de SIPO, su tarea es garantizar que el retraso de propagación a través de DFF sea menor que el período del reloj más un poco de holgura para garantizar que la señal sea estable en el cable conectado a la entrada D del siguiente DFF.

Cuando la entrada de reloj de un flip-flop tipo "D" sube, el estado de la entrada D, en ese instante, se transferirá a la salida Q y Q permanecerá en ese estado independientemente de cualquier cambio en D hasta el siguiente. borde alto del reloj.

Un pestillo transparente, por otro lado, opera haciendo que Q siga a D mientras el reloj está alto, y luego traba el estado de D en Q en el instante en que el reloj baja.

En el circuito que muestra, el reloj está en paralelo con todos los dflops, por lo que una vez que aparece el borde superior del reloj y los contenidos de D se transfieren a Q, y por lo tanto a D de la etapa siguiente, no puede suceder nada más hasta que el siguiente flanco ascendente del reloj, ya que el flanco del reloj que hizo el trabajo ya ha muerto.

A continuación, su circuito cobra vida con algunos controladores y su respuesta se ilustra con un diagrama de tiempo.

Tenga en cuenta que los estados de salida de las etapas anteriores se propagan a través de las siguientes etapas solo una vez por cada flanco ascendente del reloj.

ingrese la descripción de la imagen aquí

Gracias por la respuesta. Como dijiste, ... nada más puede suceder hasta el próximo flanco ascendente del reloj, ya que el flanco del reloj que hizo el trabajo ya murió . Estrictamente hablando, no hay un borde ascendente vertical ideal como lo Trindica mi pregunta. Entonces, supongo que el borde ascendente debe durar lo suficiente para que la señal se propague a través de una etapa y lo suficientemente corto para que la señal no se propague a la siguiente etapa. Simplemente creo que este tipo de control es demasiado complicado/delicado para ser verdad. Pero si es cierto, ¿cómo se consigue?

La forma en que funciona es que cada DFF está habilitado por un período muy corto. Para convertir un pestillo en un flip-flop, usa algo como el siguiente circuito en su señal de habilitación. borde del relojEl reloj está conectado como entrada. Cuando obtiene el flanco ascendente, solo se genera un pulso muy corto. Suponga inicialmente que el reloj está en 0. Las salidas de las puertas NOT en la puerta AND son altas. Cuando obtiene el flanco ascendente del reloj, ambas entradas a la compuerta AND son altas, generando su señal de habilitación alta. Sin embargo, poco después, el reloj alto se propaga a través de las puertas not y la salida de la puerta AND vuelve a ser baja.

Puede cronometrar esto con bastante precisión eligiendo las dimensiones del transistor en las puertas NOT. El pulso de habilitación tiene la longitud justa para que la señal cambie una vez en su registro de desplazamiento y no tenga propagación múltiple. Esto depende del proceso, por supuesto, y es bastante complicado hacerlo bien.

Tengo que estar en desacuerdo contigo en esto. Agregar ese circuito a un pestillo simplemente lo convierte en un "pestillo de pulso": eetimes.com/document.asp?doc_id=1271447 Para convertir un pestillo en un flip flop (FF verdadero), toma dos pestillos, colóquelos espalda con espalda y darles relojes de fase opuesta como los habilitados. Puedes hacer esto con cualquier tipo de pestillo. JK, D, SR, etc; no importa: la diferencia fundamental entre un latch y un flip flop está en la topología maestro-esclavo.
Además de eso, simplemente no es cierto. Los latches de pulso SÍ se utilizan, pero deben estar muy delimitados debido a su naturaleza más dinámica. Por ejemplo, cómo debe asegurarse de que el pulso sea lo suficientemente largo para que los datos se escriban en voltajes bajos y altos, en todas las temperaturas y esquinas del proceso. Esto es ciertamente posible, pero probablemente 3-5 veces más difícil que un flip flop maestro-esclavo tradicional.