¿Este almacén de control de microcódigo es realista como implementación de hardware?

En una unidad de control simple que usa secuenciación microcodificada, uso una ROM para almacenar las secuencias de señales de control. La instrucción forma los 8 bits superiores de la dirección de la ROM, y los ocho bits inferiores están formados por un contador que se incrementa en el flanco descendente del reloj.

La dirección cero de la ROM contiene la señal para cargar una instrucción en el registro de instrucciones, apuntando así la ROM a esa dirección y enviando los datos allí en orden. Una vez completada la instrucción, la ROM emitirá bits para borrar el registro de instrucciones y el contador de microcódigo, reiniciando todo el proceso. Cuando estos bits se configuran en alto, la dirección de la ROM se restablece instantáneamente y los bits bajan inmediatamente.

Mi objetivo es implementar este circuito utilizando la lógica de la serie 7400 y una EEPROM, pero sospecho que mi método de usar los datos de la ROM para restablecer de forma asíncrona sus propios registros de dirección introducirá una condición de carrera o un estado no válido. ¿Es aceptable este método? Si no, ¿cuál es la forma adecuada de hacerlo?

Diagrama de circuito Logisim para una tienda de control de microcódigo.

Respuestas (1)

Supongo que está hablando de un reinicio asíncrono aquí.

La forma más segura es pasar el reinicio a través de un registro. De esa manera permanecerá afirmado incluso si la entrada al registro desaparece.

Como suele ocurrir, el diablo está en los detalles:

  1. El registro proporciona un restablecimiento retrasado, por lo que es posible que deba activar el restablecimiento 1 ciclo de reloj antes. (Depende de cómo funcione tu circuito)

  2. Luego debe Y el reinicio con el no-reloj para que esté activo solo durante la primera mitad del ciclo del reloj. (Como lo está haciendo ahora) Si no lo hace, tendrá una condición de carrera diferente: su reinicio desaparece al mismo tiempo que su reloj aumenta.