Electronica digital contador de 0 a 99 en decimal
Diseñe un contador de 0 a 99 en decimal de forma ascendente.
Diagrama de Bloques:
QO
Q1
Q2
Contador
Display (decenas)
Q3
Q6
Q5
Q4
Q5
Q4
Q3
Q2
Q1
QO
Contador
Q6
Display (unidades)
Rck
Clk
Diagrama de Transición
Para este sistema secuencial se han identificado 10 estados, los números del 0 al 9, Los números siguientesserán una simple secuencia. Sin embargo como se pretende evitar el decodificador, tendremos que conectar dos GAL en cascada por medio de una salida combinacional llamada Ripple Clock 0 Rck como le llamaremos de ahora en adelante. El cual será el clock para el siguiente GAL, generando un pulso cada vez que se completen diez unidades es decir una decena.
Asignación de valores a los estados
Laasignación de los val0res será esencial para el correcto encendido de los LEDs que darán forma a los números decimales.
Normalmente se trabaja con el número de flip flops correspondiente al número de eventos |que se requieren, sin embargo para este proyecto declararemos 6 flip flops, por lo que tendremos la cantidad suficiente de salidas como para asignarlas a los segmentos del display y de estamanera tendremos un contador con decodificador a siete segmentos en un solo dispositivo.
Estado | Q6=F | Q5=G | Q4=A | Q3=B | Q2=C | Q1=D | Q0=E |
E0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
E1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
E2 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
E3 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
E4 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
E5 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
E6 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |E7 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
E8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
E9 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
Código ABEL
Como se trata de un contador de 0 a 99, ambos dispositivos se configuraran con base al mismo programa, lo que diferenciará al dispositivo de las decenas del de las unidades será el Rck el cual generará un pulso en la transición del estadoE9 al E0.
MODULE contador
declarations
Clk pin 1;
Rck pin 12 istype 'com';
Q6..Q0 pin 19..13 istype 'reg';
S=[Q6..Q0];
E0=[1,0,1,1,1,1,1];
E1=[0,0,0,1,1,0,0];
E2=[0,1,1,1,0,1,1];
E3=[0,1,1,1,1,1,0];
E4=[1,1,0,1,1,0,0];
E5=[1,1,1,0,1,1,0];
E6=[1,1,1,0,1,1,1];
E7=[0,0,1,1,1,0,0];
E8=[1,1,1,1,1,1,1];
E9=[1,1,1,1,1,1,0];
equationsS.clk=Clk;
state_diagram S
State E0:
Rck=1;
goto E1 ;
State E1:
Rck=1;
goto E2 ;
State E2:
Rck=1;
goto E3 ;
State E3:
Rck=1;
goto E4 ;
State E4:
Rck=1;
goto E5 ;
State E5:
Rck=1;
goto E6 ;
State E6:
Rck=1;
goto E7 ;
State E7:
Rck=1;
goto E8 ;
State E8:
Rck=1;
goto E9 ;
State E9:
Rck=0;
goto E0 ;test_vectors
([Clk]->[Rck])
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
[.c.]->[.x.];
END
Simulación
Podemos observar el comportamiento del Ripple Clock el cual actuará como elPulso(Clk) de el siguiente GAL conectado en cascada.
Archivo RPT
P16V8R Programmed Logic:
--------------------------------------------------------------------------------
Rck = ( !Q6.Q & !Q5.Q & !Q4.Q & Q3.Q & !Q2.Q & !Q1.Q
# Q6.Q & Q5.Q & !Q3.Q & !Q2.Q & Q1.Q & Q0.Q
# !Q6.Q & !Q5.Q & Q4.Q& !Q3.Q & !Q2.Q & Q1.Q & Q0.Q
# Q6.Q & !Q5.Q & !Q4.Q & !Q3.Q & !Q2.Q & !Q1.Q & Q0.Q
# Q6.Q & !Q5.Q & !Q4.Q & !Q3.Q & Q2.Q & !Q1.Q & !Q0.Q
# !Q6.Q & !Q4.Q & !Q3.Q & !Q2.Q & !Q1.Q & !Q0.Q );
Q6.D = ( !Q6.Q & !Q5.Q & Q4.Q & !Q3.Q & !Q2.Q & Q1.Q...
Regístrate para leer el documento completo.