Infracciones de tiempo de retención con registros de desplazamiento / contadores de timbre

1

He leído (y me han dicho) varias veces que para un registro de desplazamiento, el reloj debería funcionar de manera inversa a los datos (por ejemplo, enlace ).

Pregunta principal: ¿Esto también es cierto para los contadores de anillo (o LSFR)?

Estoy construyendo un bloque como este, donde la salida se conecta nuevamente a la entrada ("contador de anillo"):

CadacuadradoconsisteenunflipflopDyunMUX2-1queinicializaelregistrodesdeDcuandoLOADesalto.Esteessolounpequeñoejemplo,enrealidadestaráentre20y30registros.

Ahoraestoyenfrentandoproblemasinesperadosquecreoquesedebenaviolacionesdetiempo.Resolvíunproblemaalinicializarelregistrocon"11000 ... 1". En el primer ciclo, todos los datos son consistentes. Sin embargo, en el segundo ciclo, el contenido es "01100 .... 0" en lugar de "111000 ... 0". El reloj del último registro es el más rápido, por lo que primero cambia de 1 a cero (que es la salida y también la entrada al primer registro). Sin embargo, el reloj del primer registro está muy retrasado y, por lo tanto, almacena el nuevo valor 0 en lugar del antiguo, 1.

Entonces, dudo que esta regla se aplique a los contadores de anillo / LFSR. Si este es el caso, ¿cuál es la forma correcta de implementar un contador de timbre para minimizar los problemas de violación de tiempo de espera?

    
pregunta divB

1 respuesta

0

Hay dos formas de hacerlo y mucho depende de la tecnología de los tipos D. Cuando el tipo D tiene un tiempo de espera significativo, debe ejecutar el reloj como lo ha mostrado y hacer contadores de llamadas u otros registros de desplazamiento circular será imposible a menos que agregue un flop o un pestillo adicionales en el extremo superior del registro para almacenar temporalmente el bit superior o final hasta que el reloj llegue al otro extremo.

Incluso con esto, se enfrenta a una condición de carrera de propagación de reloj contra el último retardo de propagación del flop D + tiempo de configuración del primer flop.

La mayoría de las tecnologías actuales tienen un requisito de tiempo de espera bajo o nulo. En este caso, puede concentrarse en llevar el reloj a todos los flops al mismo tiempo utilizando un "árbol de reloj". En esto, usted maneja múltiples flops desde un búfer, si no puede manejar todos los flops desde un búfer, usa múltiples buffers y equilibra el ventilador de cada uno en un intento de mantener los tiempos de propagación iguales.

    
respondido por el RoyC

Lea otras preguntas en las etiquetas