¿Qué es un reloj de onda?

5

Estoy leyendo Capítulo 12. Prácticas de diseño recomendadas en el Quartus Manual II versión 13.1 Volumen 1: Diseño y síntesis que indica (pág. 8):

  

Los contadores de ondulación utilizan registros en cascada, en los que el pin de salida de uno   El registro alimenta el pin del reloj del registro en la siguiente etapa. Esta   La cascada puede causar problemas porque el contador crea una ondulación.   Reloj en cada etapa. Estos relojes de rizo deben ser manejados adecuadamente   durante el análisis de tiempo, lo que puede ser difícil y puede requerirle   Realiza complicadas asignaciones de tiempos en tu síntesis y colocación.   y herramientas de enrutamiento.

¿Qué es un reloj de onda? ¿Por qué es difícil el análisis de tiempo en un reloj de onda?

    
pregunta Randomblue

4 respuestas

4

En Quartus II, Ripple clock es cualquier reloj impulsado por la salida de otro registro. Un par de problemas con los relojes de onda:

  1. El último reloj tendrá un retraso que el reloj de entrada, ya que pasa por una serie de fracasos. Entonces, ¿cuál es el problema con este retraso? Tendrá problemas cuando su diseño tenga rutas de dominio cruzado entre estos dos relojes. Si alguna ruta tiene un reloj de inicio desde el dominio del reloj de entrada y un reloj de captura proveniente de ese dominio de reloj derivado, esa ruta tendrá un gran sesgo. Por lo tanto, te será difícil cumplir el cronograma.

  2. Otro problema es con la escritura de restricciones SDC. Tu tienes que escribir Las definiciones de reloj en cada etapa, incluso si no se utilizan. Vea un ejemplo aquí en la página 18.

respondido por el hassansin
5

Este es un contador de ondas:

simular este circuito : esquema creado usando CircuitLab

Es un contador asíncrono que dividirá el reloj de entrada por 2 en cada etapa. Es un contador asíncrono porque cada etapa cambiará en diferentes momentos y cada flip-flop tiene una entrada de reloj diferente. La diferencia de tiempo entre cada etapa está determinada por el retardo CLOCK- > Q del flip-flop utilizado. El resultado simulado se muestra a continuación, mostrando que cada etapa retrasa la transición de salida por el retardo de reloj a salida.

Ahora,paraponerelsignificadodeestoenperspectivadeunFPGA,laherramientadeanálisisdetemporizaciónquiereasegurarsedequetodoestécronometradoenelmomentocorrecto.PartedeesoeshacerquecadaseñalqueingresaalpinCLKdeunflip-flopseaunrelojdelsistemaquedebesincronizarsecontodoslosotrosrelojes.Comotal,siingresaraelesquemaanteriorenunaherramientadesíntesisdeFPGA,consideraríaquelasredesCLK_IN,DIV_2,DIV_4yDIV_8sonredesde"reloj" independientemente de si se usan para conducir Cualquier otro reloj. Probablemente esto funcionará bien como contador (existe la posibilidad de una infracción de tiempo de espera en cada flip-flop), pero no está hecho en el método de lógica síncrona.

Si estás usando esto para tomar un reloj de entrada rápido y derivar un reloj más lento (por ejemplo, hacer que DIV_8 sea un reloj maestro para el sistema) probablemente estés bien.

El problema se produce cuando se desea que los circuitos rápidos estén sincronizados con CLK_IN interactuando con los circuitos lentos sincronizados con DIV_8 . En el caso de este , desea que se sincronicen los flancos ascendentes del reloj, pero tendrá un gran sesgo de reloj entre estas redes de reloj. La cantidad de sesgo de reloj generado por una etapa podría ser suficiente para causar errores de sincronización, y más etapas casi lo garantizarán.

Si desea crear dos relojes sincronizados dentro de un FPGA, lo mejor es usar un generador de reloj síncrono o un módulo de reloj interno al FPGA, como un bloque PLL / DCM.

    
respondido por el W5VO
3

Este problema afecta no solo a los contadores binarios simples, sino también a los más complicados, como los contadores de décadas (como los 74HCT4017 ) donde cada contador cuenta internamente de 0 a 9, y está conectado para restablecerse a 0 en el décimo pulso.

Suponga que tiene un número de contadores de décadas, uno para la posición de las unidades, la posición de las decenas, la posición de las centenas, etc.

Cada uno de los contadores de décadas tiene una entrada de reloj. El reloj del contador de unidades se alimenta de la fuente del reloj principal, que se puede activar y desactivar presumiblemente. El reloj del contador de decenas está conectado para llevar la salida del contador de unidades. Cuando el contador de unidades cuenta de 9 a 10, suceden dos cosas: el contador se restablece a 0 (por lo que realmente nunca hay una salida válida de 10), y un impulso de reloj se propaga a la entrada del reloj del siguiente contador, en este Caso del lugar de las decenas.

La razón por la que se llama un reloj de rizado, es que el reloj que entra en el contador de las decenas retrasará al menos un retraso de propagación desde el reloj original que va al lugar de la unidad. Esto tendrá lo que se llama un "efecto de onda", por ejemplo. Si tiene un contador de 6 puestos, el reloj que va al sexto lugar en una transición de 099999 a 100000 se retrasará cinco veces.

Esto puede crear problemas de tiempo, por ejemplo, si uno intentara comparar la salida de los contadores con un valor particular, los contadores no cambian todos a la vez, por lo que los circuitos de comparación pueden dispararse en el momento equivocado. No hay señal que diga: todas las salidas son estables.

    
respondido por el tcrosley
1

Por lo que he visto, Ripple Conters, como a veces se los llama, son temporizadores digitales (contadores) que se utilizan cuando no se requiere precisión y la simplicidad es el objetivo. Además, se pueden usar como divisores de reloj para precalificar una señal de reloj de entrada en un orden de 2 por etapa.

Básicamente, tienes una serie de FlipFlops conectados donde la salida de la etapa anterior se convierte en el reloj de la siguiente etapa.

Consulte: Contador de ondulación

    
respondido por el sherrellbc

Lea otras preguntas en las etiquetas