Simulación de un contador hasta 22

Hola, estoy aprendiendo a usar Proteus y trato de realizar un contador sincrono ascendente-descendente, que cuente hasta 22. lo he diseñado como un contador normal de 6 bits, la idea que tengo es que al llegar a (10111) el contador se reinicie, por medio de una compuerta, volviendo a 0. el problema esta en que cuenta hasta (10011) o 19 y se queda atrapado en un bucle entre el 16 y el 19. Probé reiniciarlo usando un comparador y contó bien una vez luego se encasillo de nuevo. si no lo hago reiniciarse, el cuenta normal. y todavía debo hacerlo descendente... se me tranco el serrucho. tiene el añadido de que se puede escoger el numero por donde se quiere que comience. agradezco su ayuda.
 

Adjuntos

  • contador.rar
    25.7 KB · Visitas: 19
Así sin ver el esquema porque no tengo instalado proteus (ni intención de instalarlo tampoco) huele a que tu contador no es síncrono en realidad y las puertas reseteadoras se disparan cuando al pasar del 19 al 20, es decir 10011 a 10100 hay un momento de indefinición en el que se activa el bit 2 antes de borrarse el 0 y el 1 y a su vez el circuito de reset llega de los bits 0 al 4 pero antes de llegar al 5, como ya no es la condición de reset, deja de resetear y se queda a 1.


Y si no es eso, será otra cosa.

Huele a que no es síncrono, o puede que simule mal, no sé.
 
Bienvenido al mundo real!... Aunque sea a traves de una simulación.

Empecemos con reconectar el reset R4 , que veo que en la deseperación lo soltaste.

Tu problema es que estás haciendo un reset asincrónico y deberías saber que los sistemas asincrónicos acostumbran dar dolores de cabeza con los aleatorios (riesgos, hazards)

Las entradas de U24 (Q4,/Q3,Q2,Q1,Q0) no cambian instantáneamente de estado.
Esta diferencia de tiempo depende del tipo de compuerta, de como esté montado el circuito y en este caso, del modelo que utilice el simulador.

En la realidad son retardos de nanosegundos, pero suficientes para volverte loco. Aca, el problema pasa en que cuando la cuenta pasa de 15 a 16, hay un instante en que Q0=Q1=Q2=Q3=/Q4=Q4=1 y eso te dispara un pulso de reset.

Como lo solucionamos? hay distintas formas y todas lógicamente implican mayor complejidad.
- Una criticable pero simple y efectiva es insertar un filtro RC que nos coma esos pulsos indeseables.
resetasincro.jpg

- Una mas refinada sería usar monoestables.
- Otra , hacer todo sincrónico.
Y la lista puede seguir y dependerá del circuito...
 
Necesito ayuda con este contador.
Y
a hice que contara pero el problema está que cuando quiero que se resetee en 23 no me muestra el numero 22, se resetea antes en el 21
¿Qué tengo que hacer para que se resetee exactamente en el 23?
 

Adjuntos

  • imagen_2021-06-23_225606.png
    imagen_2021-06-23_225606.png
    55.5 KB · Visitas: 10
Hola, me parece que te has liado con las compuertas que leen las salidas de los contadores.
Básicamente tienes que hacer la función AND, entre la salida A y B del contador de unidades y la salida B del otro contador y con esa salida actuar el RESET.
Es decir que cuándo el 1er. valga 3 y el otro 2. Provoca el reset de ambos contadores.
 
...Ya hice que contara pero el problema está que cuando quiero que se resetee en 23 no me muestra el numero 22, se resetea antes en el 21
¿Qué tengo que hacer para que se resetee exactamente en el 23?

En la salida del 74LS190 no cambian simultánea e instantáneamente de 0001 a 0010 , primero se activa Q1 y luego de unos nanosegundos Q0 va a 0. Es decir, la secuencia es 0001 --> 0011(por ns) --> 0010 suficiente para activar PL
Necesitás agregar un pequeño retardo entre la salida Q1 de U1 y la entrada de la AND


Estos problemas que estás ignorando olímpicamente son típicos en circuitos asincrónicos (estás haciendo un reset asincrónico). Googlea dentro del tema circuitos digitales "transitorios", "riesgo" y/o "logic hazards"
 
Última edición:
Mientras el retardo sea poco se hace aprovechando compuertas libres.
Lógicamente, el número de compuertas depende de la compuerta y del retardo necesario, y por supuesto en circuitos complejos esto puede ser muy difícil o poco práctico --> Por eso se los hace directamente todo sincrónico.

En este ejemplo debería contar de 0 a 5, pero debido a que en el instante que se activa Q2, Q1 sigue en "1" te cuenta de 0 a 3.
Agregamos dos compuertas y final feliz.

test10.gif
 
Arriba