Detener el reloj sin ajustar el reloj

4

¿Cómo se podría hacer un registro de desplazamiento que solo cambie cuando una línea de habilitación es alta? La respuesta obvia es pasar el reloj y habilitar a través de una puerta AND, pero eso rompe la regla de "no hacer puertas". Otra posibilidad podría ser usar un mux para seleccionar la entrada de cada flip-flop para que sea la salida del flip-flop anterior, o para devolver su propia salida a la entrada. Eso funcionaría para el registro de turnos, pero ¿hay una mejor manera? ¿Cómo se logran efectos similares en diseños complejos, donde partes de la funcionalidad pueden detenerse temporalmente para ahorrar energía?

    
pregunta Theran

3 respuestas

11

Depende del flip-flop utilizado en el registro de desplazamiento. Efectivamente, niegue la línea de habilitación o afirme la línea de inhabilitación :-), pero usted lo sabe.

Le preguntaría: "¿Por qué no bloquear los relojes, siempre que los active" correctamente "?

Un peligro es que, si sincroniza un reloj de forma asíncrona, puede (~ = 50% de probabilidad de un reloj simétrico) producir una transición de reloj adicional en el momento de desactivación o reactivación. es decir, NO HAGAS ESTO

PERO,sisesincronizademaneraque,porejemplo,cuandolapuertafueradelrelojcontinúeconsupróximatransiciónalta/baja,permanezcabajamientrasaúnestédesactivada,luego,cuandoseactivalapuertadeenlace,sereanudaráenelsiguientebordebajo/alto. Comosedescribe,estopuedepermitirunpicomuyestrechoencualquierbordesilaseñaldeactivaciónsimplementeprecedeaunatransiciónderelojbajo/alto,perounpocodesentidocomúnenlaimplementaciónlodetiene.

Efectivamente,sielretardoesaceptableentrelaseñalderelojprovistaylautilizada(ygeneralmenteuncicloderelojesindistinguibledelsiguiente),entoncestieneunFFalternanteenlalíneadelrelojysedeshabilitaimplementaráloanterior(posiblementeconelpeligrodepicodescritopresente).)

Enestecircuitode- Sugerencias de diseño de FPGA

Dicen

  • La siguiente figura muestra una alternativa sincrónica al reloj cerrado que usa una ruta de datos. El flip-flop se sincroniza en cada ciclo de reloj y la ruta de datos se controla mediante una habilitación. Cuando la habilitación es Baja, el multiplexor devuelve la salida del registro a sí mismo. Cuando la habilitación es Alta, los datos nuevos se envían al flip-flop y el registro cambia su estado. Este circuito garantiza un ancho de pulso de reloj mínimo y no agrega sesgo al reloj. Los flip-flops de las familias XC4000, Spartan-II y Virtex tienen habilitado para reloj (CE) incorporado.

Respondiendoparcialmenteamipreguntaanteriorde"por qué no": el retraso del reloj se retrasará debido a la demora en la activación del cambio del flip-flop. En algunos casos, esto no importa, en otros es claramente aceptable. El tercer caso, en el peor de los casos, es donde parece estar bien, pero a veces puede que no lo esté, de manera intermitente. Por lo tanto, utilizar con cuidado.

En esta página advierte Roadie Roger

  • En realidad, cerrar los relojes es relativamente malo. Tener un reloj cerrado que Las transiciones con menos frecuencia ahorran energía. Cada borde de la señal es un poder. Desaprovechado frente a la capacitancia. Relojes cerrados crean otros problemas. Tus relojes ya no están exactamente alineados. Muchas fichas Tiene un reloj global que va a todas partes. Romperlo en pedazos no es una buena cosa Desea habilitar los datos en lugar de los relojes de puerta. Llame a la habilitación 'E'. Esto se ve algo así como:

Y Robert contadores útiles

  • Depende de su tecnología de destino. Lo anterior puede valer para los FPGA, pero para las tecnologías ASIC basadas en células estándar, los relojes cerrados son Una metodología elegante (en mi opinión) y limpia para bajo consumo. diseño.

    En este caso, lo más probable es que esté utilizando un generador de árbol de reloj De todos modos, y todos los generadores de árbol de reloj que conozco manejan fácilmente puertas de reloj Ellos alinearán automáticamente los relojes DESPUÉS de cualquier puertas posibles, es decir, en los nodos de hoja (entradas de reloj de registros). En este caso, generar un árbol de reloj de baja inclinación es mucho más fácil para relojes cerrados que para relojes derivados (es decir, relojes divididos).

    Las herramientas de síntesis modernas también pueden insertar puertas de reloj automáticamente reemplazando el registro habilita (como se muestra en la publicación anterior) por relojes cerrados. Esto puede ser útil, pero tiene el inconveniente de reduciendo su control sobre las puertas del reloj (nombres, jerarquía).

    Insertar puertas de reloj en un diseño VHDL es fácil. Solo decide que estilo de gating que desea / necesita (y / o se basa, con / sin pestillo, con bypass de prueba, observabilidad, ...).

    Mi elección es luego crear una instancia explícita de una sincronización de reloj elemento donde sea necesario. Esto tiene la desventaja de requerir uno para "enrutar" diferentes señales de reloj a través del diseño, pero le da control total sobre los elementos de reloj de reloj para su uso En etapas posteriores del diseño (generación de árbol de reloj, física optimización, ...).

    La información sobre la sincronización de reloj "limpia" se puede encontrar en los libros o también en manuales de herramientas de síntesis (donde reloj automático se describe la inserción de la puerta). Probablemente también encontrarás recursos en la web.

respondido por el Russell McMahon
1

Dependiendo de lo que pueda garantizar sobre el tiempo de la línea de habilitación en relación con el reloj, el enfoque más sencillo puede ser controlar el reloj. Si se garantiza que la habilitación no cambiará cerca del borde del reloj, puede usar un flip flop con ClockIn y / Reiniciar vinculados a la entrada del reloj, y Datos vinculados a la entrada de habilitación. Siempre que al flip flop no le importe que el reloj y / Reset reinicien ambos cambios al mismo tiempo, ese enfoque proporcionará agradables pulsos de reloj de ancho completo sin importar lo que haga la habilitación, siempre que el pulso de habilitación no viole la muestra / retención tiempos del flip flop.

Si el flip flop no garantiza que un flanco ascendente simultáneo en el reloj y / reseteará el flip flop en los datos, puede ser necesario usar dos flip flops y algunas puertas xor para generar una puerta cerrada realmente agradable. reloj.

Se puede encontrar un enfoque de dos flip-flop aquí .

Siempre que no se violen los tiempos de muestra / retención de los flip flops, cada pulso de reloj pasará a su ancho completo o no se pasará en absoluto.

    
respondido por el supercat
0

La mayoría de los sistemas resuelven esto mediante doble enclavamiento.

Un flip-flop D de borde positivo en cada salida del registro de desplazamiento tomará una instantánea de cada uno de los bits del registro de desplazamiento cuando la línea de habilitación pase de baja a alta. No importa lo que ocurra el desplazamiento cuando la línea de habilitación es alta, solo lo que queda allí cuando hace la transición de baja a alta.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas