Problema al conectar dos contadores síncronos ascendentes y descendentes de 4 bits

Circuito de semáforos

Ese es un circuito de semáforo que diseñé en Multisim . Usé 2 contadores 74LS191 , 2 decodificadores 74LS47 , 2 pantallas de siete segmentos, un temporizador 555 y un flip-flop JK como puede ver.

Debe contar desde 29 hasta 00, luego las luces se encienden y el mismo proceso se repite nuevamente.

El problema que tengo es que el contador inferior, que es responsable de mostrar los números en la pantalla izquierda, va así 0 -> 2 -> 1 -> 0 en lugar de comenzar desde 2 cuando ejecuto la simulación por primera vez, pero después de que termina el primer ciclo funciona correctamente. Creo que el problema se debe a las conexiones o Multisim, pero realmente no puedo determinar la causa. ¿Puedes ayudarme por favor?

Parece que no tiene ningún sistema de reinicio de encendido...
@Trevor, creo que conectar el RCO al pin de carga hace que el contador se reinicie cada vez que llega a cero, si entendí bien lo que dijiste
Eso sería correcto para una operación posterior, pero no para la carga inicial. He publicado la respuesta, no estoy seguro de que sea correcta, ¿puede intentar configurar el contador inferior en 9 para ver si comienza con 9?
Sí, pero lo que comienza en el encendido no está definido. Debe usar esas puertas AND de repuesto y un RC para mantenerlo reiniciado mientras se enciende la energía.
Si te quedas atascado... simplemente llama. Agregar un botón a eso para restablecerlo manualmente mientras está en eso también sería un buen complemento.

Respuestas (2)

Estoy de acuerdo con Trevor en que necesita un circuito de reinicio externo. Hace varios años, estaba diseñando un circuito basado en LS191 y descubrí que su salida TC y RCO son difíciles de usar.

En general, no puede usarlos como reinicio, y tienen aplicaciones limitadas además de los contadores en cascada.

Mire esta hoja de datos de TI en la página 5. Tiene un diagrama de tiempo, y puede ver que en la parte inferior RCO se activa cuando el valor del contador es 9. Lo más probable es que sea por eso que el contador superior se reinicia automáticamente, y es por eso que el contador inferior no . Apuesto a que si configuras el contador inferior en 9 en sus entradas, también comenzará con 9, no con 0. Demuéstrame que estoy equivocado :)

Actualización: el circuito de reinicio es simple: como dijo Trevor, usa dos puertas AND de repuesto que conectan sus salidas a las entradas LOAD de LS191, conectan una de sus entradas al RCO respectivo y conectan las segundas entradas juntas al circuito de resistencia-condensador como este . Entonces, al encender, mientras que el capacitor no está cargado, pasará algún tiempo hasta que se cargue con el voltaje suficiente para activar 1 en las entradas de las puertas AND, y luego estas puertas continúan funcionando siendo bajadas por RCO. La carga del LS191 ocurrirá en algún lugar al final del "período de carga" del capacitor.

Actualización 1: voté a favor de WhatRoughBeast por mencionar el requisito de la acción del disparador Schmitt entre el circuito RC y la entrada de puerta AND. Si bien el circuito puede comportarse correctamente en la simulación, en la vida real puede experimentar fallas y fallas.

Revisé el artículo de STMicroelectronics al que me referí anteriormente, y la MCU ST6 a la que se dirige tiene el disparador Schmitt en su entrada de reinicio (página 25). Parece que el chip de compuertas AND con disparadores Schmitt en sus entradas no existe; por lo tanto, la forma más simple/barata (pero puede que no sea la más óptima) es usar LS14 (tiene 6 inversores, mientras que solo necesita dos conectados en cadena). Una forma más óptima, diría que una forma más avanzada, es usar una especie de supervisor de reinicio, por ejemplo, TLC7705 . Una buena señal de reinicio, generada por este chip, puede usarse de manera confiable en cualquier otra parte de su circuito.

No te equivocas en absoluto, comienza a contar desde 99, pero nunca antes había pensado en hacer un circuito de reinicio externo, así que no sé cómo hacerlo.
Respuesta actualizada con una explicación simple del circuito de reinicio
¡Guau! ¡Gracias! Funcionó tal como estaba previsto. ¡Eres genial, tío!

Con el debido respeto, ha perdido el punto de los contadores síncronos y la lógica síncrona en general. Esto se muestra en su uso del RCO del contador superior para impulsar el reloj del inferior. Por supuesto, usar el 191 para el propósito que desea será un desafío de todos modos, debido al reinicio asíncrono.

De hecho, no hay razón para pensar que su circuito funciona como pretende. Cuando el contador superior llegue a cero, se cargará instantáneamente a 9 y forzará un conteo en el contador inferior. Entonces contarás 29,28,27,26,25,24,23,22,21,(20),19,18, etc., con el conteo entre paréntesis solo un parpadeo. No solo eso, sino que la salida RCO será propensa a pulsos cortos falsos en los bordes del reloj, ya que el sesgo de propagación interna provoca una decodificación incorrecta de las salidas.

En general, hacer un circuito de reinicio de encendido es quizás un poco (solo un poco) más complicado de lo que se ha sugerido. Esto se debe a que necesita un disparador Schmitt en la red RC: una constante de tiempo grande producirá una transición lenta a través del umbral lógico y luego existe la posibilidad de una señal de encendido ruidosa, y eso puede tener efectos inesperados.

Finalmente, no recomendaría usar un contador binario para el trabajo de décadas, o al menos no uno con una función de carga asíncrona. Es mejor que utilice un contador totalmente síncrono como el 74LS169.

Entonces, recomendaría los siguientes cambios a su circuito, asumiendo que debe usar el 191

esquemático

simular este circuito : esquema creado con CircuitLab

En este circuito, todos los inversores son disparadores Schmitt como el 74LS14. Notará que el TCO de la primera etapa se conecta al CTEN de la segunda y hay un reloj común. Además, cada TCO va a un flip-flop que generará un pulso de carga breve (100 useg o más), que se combina con el reinicio de encendido generado por el circuito RCD de la izquierda.

Este es un circuito realmente complicado y se puede simplificar enormemente usando 74169s, de la siguiente manera

esquemático

simular este circuito

Notarás cuánto más simple es esto. Sin embargo, debes tener cuidado con una cosa. Dado que la función de carga es síncrona, el reinicio de encendido debe ser lo suficientemente largo para garantizar que se produzca al menos un flanco de reloj mientras el reinicio está activo (bajo). Si no lo hace, el restablecimiento no funcionará de manera confiable.