¡Eliminando Signal Race Hazard en un pestillo/registro dinámico IC!

Trabajo en el software MAGIC Integrated Circuit a nivel de diseño.

Obtuve un registro dinámico de 8 bits hecho de flip-flops dinámicos de 1 bit que escriben la entrada en el borde positivo de la señal:

chanclas

(Nota: utilicé puertas de transmisión como interruptores en lugar de solo NMOS, por robustez. Los inversores son inversores CMOS normales).

Básicamente tiene 8 de estos flip-flops, conectados al mismo CLK. Sin embargo, cuando solo hago la propagación simple de CLK y notCLK, mi registro funciona AMBOS en el borde positivo y negativo de CLK, mientras que debería funcionar solo en el borde positivo. Mi TA me dijo que se debe a Race Hazard, donde en un momento tanto CLK como notCLK están en un nivel lógico alto, durante la transición. Esto fue correcto cuando simulé, así que eliminé Race Hazard con este circuito:

circuito de carreras

Y, de hecho, con esto no hubo superposición de '1' lógico para CLK y notCLK. Por supuesto, hubo una superposición de los '0', pero eso es inevitable y no debería afectar el circuito, ¿verdad?

Sin embargo, ¡todavía tengo el registro de 8 bits escribiendo valores de entrada en AMBOS bordes CLK positivos y negativos! ¿Por qué sigue pasando esto? Funciona correctamente aparte de este hecho. Aquí está el diagrama de la señal:diagrama

Como puede ver, t2clk y t2nclk son mis salidas CLK y notCLK del circuito eliminador de carreras, y eliminó con éxito la superposición de '1'. Sin embargo, todavía escribe valores en el borde negativo de las señales.

Aquí está mi diseño de todo el registro de 8 bits, si es de alguna utilidad:

disposición

Si necesita diseños detallados, se los daré, ¡pero puedo garantizar que son fieles a mis explicaciones! :) ¡Ayuda lo antes posible por favor, fecha límite mañana! :)

EDITAR: ¿Podría la adición de puertas de transmisión en lugar de NMOS ser el motivo del mal funcionamiento?

Respuestas (1)

Sí, si reemplazó los transistores NMOS con puertas de transmisión completas, donde el transistor P y N están en fases de reloj opuestas, entonces tendrá un problema de carrera. Suponga que sus dos fases de reloj se nombran PH1y PH2. Una de las puertas de transmisión debe controlarse con PH1y ~PH1y la otra debe controlarse con PH2y ~PH2.

No puede usar PH2como ~PH1o usar PH1como ~PH2.

Debe verificar que la condición de no superposición aún se cumple para las fases invertidas, así como para las fases verdaderas. Si necesita aumentar la no superposición, agregue pares de inversores en las rutas de retroalimentación de las puertas NOR de acoplamiento cruzado.

Sí. Se requiere un segundo circuito generador de reloj, esta vez usando puertas NAND, para generar ~PH1 y ~PH2. Además, debe caracterizar los tiempos de apagado de las puertas de transmisión y asegurarse de que el tiempo de no superposición del reloj sea mayor por un margen cómodo.
¡Joe lo ha clavado! sin embargo, puede generar todas las señales que necesita con inversores en las señales Phi1 y Phi2 para obtener las (4) que necesita.
¡Gran respuesta! Consideré agregar cuatro señales para propagarlas a través del circuito o agregar dos inversores en cada celda flip-flop. me decidi por la segunda opcion :)