Estoy tratando de construir un contador de programa de 8 bits en Logisim. Actualmente tiene funciones LOAD, lo que hace que la entrada de 8 Bits (A0-A7) aparezca en la salida (S0-S7) en el pulso del reloj:
1 cargado/almacenado con éxito:
Cuando LOAD es alto, A0-A7 se ejecuta a través del sumador completo, que técnicamente se usa; solo agrega 0, por lo que no afecta la salida.
Ahora también estoy tratando de implementar un INC (incremento), que cuando sea alto básicamente solo agregará 1, pero tomará el valor del registro actual como entrada, en lugar de A0-A7. Aquí está la lógica que fluye en la simulación, que es exactamente lo que quiero (he marcado con un círculo el valor que entra en el registro, que es 2 - perfecto):
Sin embargo, ahora, cuando trato de almacenar este valor en el registro pulsando el reloj, aparece un error de "oscilación detectada" en Logisim:
Esta es la primera vez que intento construir esto, entonces, ¿hay algo intrínsecamente incorrecto con mi implementación, o me estoy perdiendo algo pequeño que debería hacer que funcione como se esperaba?
Su registro está propagando su salida en función del nivel de "reloj" y no de su transición (también conocido como registro transparente), lo que está creando un bucle inestable. Para que ese circuito funcione, tendrías que:
o
srl100
rafaelp
eddiewastaken
eddiewastaken
rafaelp
eddiewastaken
rafaelp
eddiewastaken
usuario253751
eddiewastaken