Diseñe un contador síncrono de 4 bits usando filp-flops D y ROM de 16 x 4 que pueda generar cualquier secuencia de conteo arbitraria

¿Cuáles son las restricciones en la secuencia de conteo? Da el contenido de la ROM para las siguientes secuencias: a) 12, 13, 14, 15, 5, 6, 7, 0, 1, 2, 3, 4, 11, 10, 9, 8, 12, 13, etc. b) 8, 9, 0, 1, 8, 9, etc...

Esta es la pregunta de un examen de muestra, no tengo ningún problema en diseñar un contador síncrono de n bits usando cualquier tipo de flip-flop. Mis dudas son sobre la parte de la ROM, en el libro no tengo ningún ejemplo de como implementar una ROM a un contador, me puedes decir el paso para hacerlo? y no entiendo la pregunta de las restricciones de las secuencias, ¿se refieren al patrón (no lo veo) o qué significan? Mi última pregunta sería, ¿necesito diseñar dos contadores de 4 bits?, ¿uno para cada secuencia?

Muchas gracias

Respuestas (2)

Un contador es simplemente una máquina de estado que avanza de un estado al siguiente en cada flanco de reloj. Normalmente, utiliza la lógica para determinar el siguiente estado a partir del estado actual para crear, por ejemplo, contadores binarios, contadores BCD o contadores de código Gray.

Pero no hay razón para que la lógica del siguiente estado no pueda ser reemplazada por una ROM. La ROM sería direccionada por los flip-flops de estado, y la salida de la ROM sería el siguiente estado de los flip-flops. Esto le permite crear una secuencia de estados de cualquier longitud, hasta 2 N , donde N es el número de flip-flops. Los estados pueden ocurrir en cualquier orden, siempre que cada estado tenga un siguiente estado único.

Si entiendo bien lo que quiere decir, entonces la ROM tendrá en la memoria el siguiente estado de la secuencia (no es necesario calcular la ecuación lógica para cada entrada del flip-flop). Entonces, las salidas de la ROM serán las entradas del Fli-flop, ¿verdad? y las direcciones de la ROM serán cada uno de los estados del flip-flop (¿qué pasa con las direcciones que no están en uso?)
Si hay direcciones que no se usan, les daría valores que coloquen el contador en uno de los estados en la secuencia deseada. Esto permite que el contador se recupere del inicio en un estado no válido.

Tenga los tipos D en una configuración normal de contador ascendente para direccionar la ROM. La ROM tendría entonces cualquier secuencia de salida en orden en la memoria. Como dirección de contador, nueva ubicación de memoria, su contenido será direccionado y aparecerá en el bus de datos: su salida. simples.

Pero eso no aborda la segunda secuencia...
@DaveTweed Dado que ambas secuencias tienen convenientemente una potencia de 2 de longitud, simplemente puede repetir la secuencia en la ROM.