¿Por qué no es conveniente modificar las entradas de reloj (agregando puertas adicionales)?

3

Estoy tomando un curso de electrónica digital en la universidad. Soy estudiante de segundo año de ingeniería mecánica, pero sentí que era importante entender algunos componentes electrónicos. El profesor en una de las diapositivas, cuando hablaba sobre cómo hacer un contador binario sincrónico con T-flip flops, dijo

  

No es conveniente modificar las entradas del reloj

No entiendo por qué este es el caso. ¿Lo he pensado un poco, y solo puedo pensar en el retardo de propagación que afecta a la frecuencia? Pero seguramente para nMOS y pMOS es < Unos pocos nano segundos. Si solo tienes un reloj de unos pocos MHz, no vale la pena pensar en la diferencia.

¿Alguien puede explicar por qué esto no es deseable? Corregirme si me equivoco.

    
pregunta Lewis

5 respuestas

1

Por "modificar", estoy bastante seguro de que se refería a algún tipo de activación controlada por retroalimentación de las salidas del contador. El problema al hacer esto es que debe tener mucho cuidado de que la señal de su puerta esté limpia. Si, por ejemplo, apaga el reloj cuando cambian las dos salidas, es posible que las dos no cambien exactamente al mismo tiempo. Esto produce lo que se llama un error de sesgo (las dos señales están "torcidas" una con respecto a la otra), y esto puede producir una falsa ventaja en el reloj. A su vez, este borde falso producirá una transición no deseada en los flip-flops y puede hacer que el circuito se mueva a un estado no deseado. Este tipo de condiciones de error pueden ser muy difíciles de detectar y pueden depender de cosas como la temperatura del circuito. Así que es una muy mala idea intentarlo, a menos que sepas lo que estás haciendo.

    
respondido por el WhatRoughBeast
2

Probablemente hay más razones, pero enumeraré tres que vienen a mi mente:

Como usted indicó, el tiempo de propagación de las puertas afectará la ubicación de los bordes del reloj y puede reducir el margen de tiempo del circuito. Esto puede no importar con relojes más lentos como los pocos MHz que mencionó, pero importará si se ejecuta en un sistema más rápido.

Segundo, dependiendo de cuáles sean las otras entradas a las puertas, las salidas de la puerta pueden terminar siendo ciclos de reloj parciales, generando bordes que están muy alejados de los bordes del reloj esperados (o pulsos de runt o fallas) que pueden sincronizarse. Datos incorrectos en los flip-flops.

Y tercero, si el diseño del circuito se utiliza en un circuito integrado de producción, el diseño puede modificarse para que pueda probarse en busca de defectos mediante la prueba de exploración. En este modo, los relojes de todos los flip-flops en el chip deben estar unidos. La sincronización del reloj puede ser problemática en este caso.

    
respondido por el B Pete
0

Los circuitos que están diseñados en torno a un reloj síncrono a menudo asumen que todos los elementos de almacenamiento activados por el borde, como los flip-flops, se sincronizan simultáneamente. La razón de esto es que, inmediatamente después de sincronizarse, el estado de todos los flip-flops cambia simultáneamente, y sus nuevos estados se propagan a través del cableado en un par de nanosegundos en preparación para el próximo cambio de estado / reloj. Si el reloj llega a un flip-flop lo suficientemente tarde, los datos de entrada pueden cambiar antes de que tenga la oportunidad de procesarlo. Por lo tanto, un diseño destinado a ejecutarse en un solo reloj sincronizado fallará porque algunos dispositivos reciben esencialmente una señal de reloj diferente, derivada del reloj original, pero una versión retrasada.

Si modifica la ruta del reloj a algunos de los flip-flops usando algún tipo de lógica adicional, podría retrasarlo lo suficiente como para causar este problema.

    
respondido por el Entrepreneur
0

Al modificar los relojes, él quiere decirlos de manera que produzcan un nuevo reloj procedente de una puerta lógica.

A menudo, es tentador hacerlo en un FPGA / CPLD: DESACTIVAR relojes para controlar o obtener poca potencia, ejecutar un contador y tomar la salida de un flip-flop como un nuevo reloj CLKIN dividido por n. Un ejemplo podría ser hacer un controlador de comunicaciones (I2C, UART, SPI) produciendo un reloj cerca de la frecuencia de bits.

El problema es que produce un nuevo reloj (llámelo CLKG) que cambia justo después de que lo haga CLKIN original.

Esto se muestra a continuación, con la salida de DFF1 cambiando justo cuando DFF2 está sincronizando su nivel. Esto puede hacer que DFF2 sea metaestable o que tome el nivel incorrecto porque el voltaje de salida de DFF1 no ha hecho la transición suficiente.

simular este circuito : esquema creado usando CircuitLab

Esta podría ser la situación en el circuito del controlador de comunicaciones, pasando los bytes de datos de la lógica CLKIN rápida al registro de cambio CLKG para la transmisión.

Es posible diseñar circuitos de reloj sincronizados perfectamente, circuitos que diseñen estos problemas o los solucionen. Los verás rutinariamente en los ASICs. Pero el circuito es más complicado de diseñar y mantener por otros. El esquema de reloj más simple y confiable es un solo reloj lógico que va desde un PLL o pin de entrada a todos los relojes de flip-flop, el software de síntesis requerirá el menor esfuerzo para producir un circuito confiable. Use más de un dominio de reloj con moderación y porque absolutamente debe hacerlo.

    
respondido por el TonyM
0

Primero, parece subestimar la importancia de los retrasos en la propagación. Unos cuantos nanosecods de sesgo de reloj son mucho , incluso en bajas frecuencias. Tener el pulso de su reloj avanzado entre 5 y 10 ns no es tan malo, ya que violará sus tiempos de configuración y reducirá su circuito, por ejemplo. de 10 MHz a 9 MHz contrarrestará eso. Tener su reloj retrasado es mucho peor, ya que estará violando tiempos de espera , y simplemente ejecutar su diseño a una velocidad de reloj más lenta no ayudará. Por supuesto, si el pulso del reloj llega por adelantado para un disparo, el reloj en el siguiente disparo parecerá retrasado, por lo que es casi seguro que ocurra el peor de los casos.

Segundo (y más importante), los circuitos combinatorios son propensos a hazards o problemas técnicos , como se describe, por ejemplo, aquí :

Los peligros producirán bordes ascendentes / descendentes adicionales en su señal antes de que alcance un valor estable. Eso no importa demasiado para las señales de datos que se muestrean al final del ciclo de reloj cuando están estables. Sin embargo, en un circuito de reloj, tales fallas provocarán un comportamiento indefinido porque producirán bordes de reloj adicionales y violarán los requisitos de tiempo de todos sus disparadores.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas