Está en la página 1de 90

Detector de Secuencia

Si hayas un camino sin obstáculos,


quizás no te lleve a ninguna parte.
VIGIL
Lucestraseras
Luces traserasde
deun
unauto
auto

Diseñe un Sistema Secuencial que controle las luces traseras de un automóvil.

Se tienen tres entradas que son:


• Pedal de Freno F
• Direccional derecha De
• Direccional Izquierda Iz

Además de cuatro juegos de luces


de salida llamadas:
DI1, DI2
DD1, DD2
Lucestraseras
Luces traserasde
deun
unauto
auto

Al oprimir el freno F se deberán encender todas las luces no


importa si están activadas las direccionales.
La direccionales tienen tres estados que se repiten en los tiempos
mientras la palanca este en este en la posición
Luces traseras
Luces traseras de
de un
un auto
auto

Direccionales
Luces traseras
Luces traseras de
de un
un auto
auto

Direccionales

DD1
Luces traseras
Luces traseras de
de un
un auto
auto

Direccionales

DI2 DI1 DD1 DD2


Secuencia derecha
Secuencia derecha

Direccionales

DD1 DD2
Secuencia derecha
Secuencia derecha

Direccionales

DI2 DI1
Freno
Freno
Diagramade
Diagrama deTransición
Transición
Diagramade
Diagrama deTransición
Transición
Diagramade
Diagrama deTransición
Transición
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E3 E1 E5

E1 E2 E5

E2 E0 E5

E3 E4 E5
Cual seria el estado siguiente si:
E4 E0 E5
F=0, De=0, Iz=0
E5 E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 E5

E1 E0 E2 E5

E2 E0 E0 E5

E3 E0 E4 E5
Cual seria el estado siguiente si:
E4 E0 E0 E5
F=0, De=1, Iz=1
E5 E0 E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E2 X E5

E2 E0 E0 X E5

E3 E0 E4 X E5

E4 E0 E0 X E5

E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E2 X E5

E2 E0 E0 X E5

E3 E0 E4 X E5
Cual seria el estado siguiente si
E4 E0 E0 X E5
Estando en E1 las entradas son :
F=0, De=0, Iz=1 E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 X E5

E3 E0 E4 X E5

E4 E0 E0 X E5

E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 X E5

E3 E0 E4 X E5
Cual seria el estado siguiente si
E4 E0 E0 X E5
Estando en E2 las entradas son :
F=0, De=0, Iz=1 E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 X E5

E4 E0 E0 X E5

E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 X E5
Cual seria el estado siguiente si
Estando en E3 o E4 las entradas son: E4 E0 E0 X E5
F=0, De=1, Iz=0
E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 E0 X E5
Cual seria el estado siguiente si
Estando en E5 las entradas son: E4 E0 E0 E0 X E5
F=0, De=1, Iz=0
F=0, De=0, Iz=1 E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 E0 X E5

E4 E0 E0 E0 X E5

E5 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 E0 X E5

E4 E0 E0 E0 X E5

E5 E0 E0 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 X E5

E1 E0 E0 E2 X E5

E2 E0 E0 E0 X E5

E3 E0 E4 E0 X E5

E4 E0 E0 E0 X E5

E5 E0 E0 E0 X E5
Tablade
Tabla deestados
estados
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5

E1 E0 E0 E2 E0 E5

E2 E0 E0 E0 E0 E5

E3 E0 E4 E0 E0 E5

E4 E0 E0 E0 E0 E5

E5 E0 E0 E0 E0 E5
EntradasyySalidas
Entradas Salidas
F 0 0 0 0 1

De 0 0 1 1 X

Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5

E1 E0 E0 E2 E0 E5

E2 E0 E0 E0 E0 E5

E3 E0 E4 E0 E0 E5

E4 E0 E0 E0 E0 E5

E5 E0 E0 E0 E0 E5
AsignarValores
Asignar Valoresaalos
losestados
estados

F 0 0 0 0 1

De 0 0 1 1 X Q2 Q1 Q0
Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
0 0 0

E1 E0 E0 E2 E0 E5
0 0 1

E2 E0 E0 E0 E0 E5
0 1 0

E3 E0 E4 E0 E0 E5
0 1 1

E4 E0 E0 E0 E0 E5
1 0 0

E5 E0 E0 E0 E0 E5
1 0 1
AsignarValores
Asignar Valoresaalos
losestados
estados

F 0 0 0 0 1

De 0 0 1 1 X Q2 Q1 Q0
Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
0 0 0

E1 E0 E0 E2 E0 E5
0 0 1

E2 E0 E0 E0 E0 E5
0 1 0

E3 E0 E4 E0 E0 E5
0 1 1

E4 E0 E0 E0 E0 E5
1 0 0

E5 E0 E0 E0 E0 E5
1 0 1

E6 E0 E0 E0 E0 E0
1 1 0

E7 E0 E0 E0 E0 E0
1 1 1
Archivo ABEL-HDL
ABEL-HDL 1.- Entradas y Salidas
Archivo
MODULE luc
DECLARATIONS
“Reloj
CLK PIN 1;
" variables de Entrada
De,Iz,F PIN 2,3,4;
" variables de Salida Combinacionales
DD1,DD2,DI1,DI2 PIN 19..16 istype 'com';
" variables de Salida Registradas FF’s
Q2..Q0 PIN 15..13 istype 'reg';
Archivo ABEL-HDL
ABEL-HDL 2.- Sincronización
Archivo

DECLARATIONS
Sinc=[ Q2..Q0];
EQUATIONS
Sinc.clk=CLK;
Archivo ABEL-HDL
Archivo ABEL-HDL 3.- Asignar valores a los estados

DECLARATIONS
Q2 Q1 Q0
E0 =[0,0,0];
E0 0 0 0
E1 =[0,0,1];
E1 0 0 1
E2 =[0,1,0];
E2 0 1 0
E3 =[0,1,1];
E3 0 1 1
E4 =[1,0,0];
E4 1 0 0
E5 =[1,0,1];
E5 1 0 1
E6 =[1,1,0];
E6 1 1 0
E7 =[1,1,1];
E7 1 1 1
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State_diagram Sinc De 0 0 1 1 X

State E0: Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DD1=0; DD2=0;
E1 E0 E0 E2 E0 E5
DI1=0; DI2=0;
E2 E0 E0 E0 E0 E5
If !F & !De & !Iz Then E0;
E3 E0 E4 E0 E0 E5
If !F & !De & Iz Then E3;
E4 E0 E0 E0 E0 E5
If !F & De & !Iz Then E1;
E5 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E6 E0 E0 E0 E0 E0
If F Then E5;
E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E1: De 0 0 1 1 X

DD1=1; DD2=0; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=0; DI2=0;
E1 E0 E0 E2 E0 E5
If !F & !De & !Iz Then E0;
E2 E0 E0 E0 E0 E5
If !F & !De & Iz Then E0;
E3 E0 E4 E0 E0 E5
If !F & De & !Iz Then E2;
E4 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E5 E0 E0 E0 E0 E5
If F Then E5;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E2: De 0 0 1 1 X

DD1=1; DD2=1; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=0; DI2=0;
E1 E0 E0 E2 E0 E5
If !F & !De & !Iz Then E0;
E2 E0 E0 E0 E0 E5
If !F & !De & Iz Then E0;
E3 E0 E4 E0 E0 E5
If !F & De & !Iz Then E0;
E4 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E5 E0 E0 E0 E0 E5
If F Then E5;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E3: De 0 0 1 1 X

DD1=0; DD2=0; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=1; DI2=0;
E1 E0 E0 E2 E0 E5
If !F & !De & !Iz Then E0;
E2 E0 E0 E0 E0 E5
If !F & !De & Iz Then E4;
E3 E0 E4 E0 E0 E5
If !F & De & !Iz Then E0;
E4 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E5 E0 E0 E0 E0 E5
If F Then E5;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E4: De 0 0 1 1 X

DD1=0; DD2=0; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=1; DI2=1;
E1 E0 E0 E2 E0 E5
If !F & !De & !Iz Then E0;
E2 E0 E0 E0 E0 E5
If !F & !De & Iz Then E0;
E3 E0 E4 E0 E0 E5
If !F & De & !Iz Then E0;
E4 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E5 E0 E0 E0 E0 E5
If F Then E5;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E5: De 0 0 1 1 X

DD1=1; DD2=1; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=1; DI2=1;
E1 E0 E0 E2 E0 E5
If !F & !De & !Iz Then E0;
E2 E0 E0 E0 E0 E5
If !F & !De & Iz Then E0;
E3 E0 E4 E0 E0 E5
If !F & De & !Iz Then E0;
E4 E0 E0 E0 E0 E5
If !F & De & Iz Then E0;
E5 E0 E0 E0 E0 E5
If F Then E5;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Archivo ABEL-HDL
Archivo ABEL-HDL 4.- Tabla de estados
F 0 0 0 0 1
State E6: De 0 0 1 1 X

DD1=0; DD2=0; Iz 0 1 0 1 X

E0 E0 E3 E1 E0 E5
DI1=0; DI2=0;
E1 E0 E0 E2 E0 E5
GOTO E0;
E2 E0 E0 E0 E0 E5
State E7:
E3 E0 E4 E0 E0 E5
DD1=0; DD2=0;
E4 E0 E0 E0 E0 E5
DI1=0; DI2=0;
E5 E0 E0 E0 E0 E5
GOTO E0;
E6 E0 E0 E0 E0 E0

E7 E0 E0 E0 E0 E0
Test_vectors
([CLK,De,Iz,F]->[DD1,DD2,DI1,DI2])
Simulación
Simulación
[.c.,0,0,0]->[.x.,.x.,.x.,.x.];
[.c.,1,0,0]->[.x.,.x.,.x.,.x.];
[.c.,1,0,0]->[.x.,.x.,.x.,.x.];
[.c.,1,0,0]->[.x.,.x.,.x.,.x.];
[.c.,1,0,0]->[.x.,.x.,.x.,.x.];
[.c.,1,0,0]->[.x.,.x.,.x.,.x.];
[.c.,0,0,1]->[.x.,.x.,.x.,.x.];
[.c.,0,0,1]->[.x.,.x.,.x.,.x.];
[.c.,0,0,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,1,0]->[.x.,.x.,.x.,.x.];
[.c.,0,0,1]->[.x.,.x.,.x.,.x.];
[.c.,0,0,0]->[.x.,.x.,.x.,.x.];
END
Un detector de secuencia

Es un circuito el cual tiene una entrada de datos


X en serie y una o varias salidas con las
cuales se indica que una o varias secuencias
son correctas o no.
Diseño un sistema secuencial que
detecte la secuencia 001
El detector tendrá una entrada X que estará sincronizada con
la señal de reloj.
Diseño un sistema secuencial que detecte
la secuencia 001

A medida que pasen los pulsos de reloj la entrada irá siendo


0 o 1, con lo que se irá ``escribiendo'' una secuencia en
binario (algo como 011000011001000110...).
Diseño un sistema secuencial que detecte
la secuencia 001

Cada vez que el circuito detecte la secuencia 001 su salida se


pondrá en alta y regresara a condiciones iniciales para
detectar de nuevo la secuencia.
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001
Diseño un sistema secuencial que detecte
la secuencia 001

0 1 Y
E0 E1 E0 0
E1 E2 E0 0
E2 E2 E3 0
E3 E1 E0 1
Diseño un sistema secuencial que detecte
la secuencia 001

MODULE dsccu
"entradas
Clk, X pin 1,2;
"salida Combinacional
Y pin 19 istype 'com';
"Salidas registradas
Q1,Q0 pin 18,17 istype 'reg';
"sincronización
S=[Q1,Q0];
equations
S.clk=Clk;
"Asignación de valores a los estados
declarations
E0=[0,0];
E1=[0,1];
E2=[1,0];
E3=[1,1];
state_diagram S
State E0: 0 1 Y
Y=0;
If X then E0 else E1; E0 E1 E0 0
State E1:
Y=0;
If X then E0 else E2;
E1 E2 E0 0
State E2:
Y=0;
E2 E2 E3 0
If X then E3 else E2;
State E3: E3 E1 E0 1
Y=1;
If X then E0 else E1;
test_vectors
([Clk,X]->[Y])
[.c.,0]->[.x.];
[.c.,1]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,1]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
[.c.,0]->[.x.];
END
Detector de secuencia
Diseñar un circuito secuencial síncrono con
una sola entrada y una sola salida .
Que reconozca números decimales codificados
en binario del 0 al 9 (BCD)
La salida sea 1 cuando la secuencia es
diferente a un numero en BCD.
El bit más significativo va a la cabeza de la
secuencia.
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
Posibles 0 0 1 1 0
secuencias 0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
ABCD Z
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0

Posibles 0 0 1 0 0
0 0 1 1 0
secuencias
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0

D Z 1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0

Posibles 0 0 1 0 0
0 0 1 1 0
secuencias
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0

CD Z 1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0

Posibles 0 0 1 0 0
0 0 1 1 0
secuencias
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0

CD Z 1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1

D=? 1
1
1
1
0
0
0
1
1
1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
D 0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
C 0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
D
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0

C 0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
B 1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
A 1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
D
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
C 0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
D
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
C C
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
B 1 0 0 0 0
B B
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
A
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D C B A Z

0 0 0 0 0
0 0 0 1 0
D 0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
C
C 0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
B
B B 1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
A
1 0 1 1 1
A 1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
D D
0 1
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
0 1
E0 E1 E2
E1
E2
E3
E4
E5
E6
E7
E8
E9
0 1
E0 E1 E2
E1 E3 E3
E2
E3
E4
E5
E6
E7
E8
E9
0 1
E0 E1 E2
E1 E3 E3
E2 E6 E7
E3
E4
E5
E6
E7
E8
E9
0 1
E0 E1 E2
E1 E3 E3
E2 E6 E7
E3 E4 E4
E4 E5 E5
E5 E1 E2
E6
E7
E8
E9
0 1
E0 E1 E2
E1 E3 E3
E2 E6 E7
E3 E4 E4
E4 E5 E5
E5 E1 E2
E6 E4 E8
E7 E8 E8
E8 E9 E9
E9 E1 E2
Para 10 estados
cuantos Flip Flops se requieren
MODULE dcodbcd
"Entradas
Clk,X pin 1,2;
"salida
Y pin 19 istype 'com';
"flip flops
Q3..Q0 pin 18..15 istype 'reg';
"sincronización
S=[Q3..Q0];
equations
S.clk=Clk;
declarations
"asignación de valores a los estados
E0=[0,0,0,0];
E1=[0,0,0,1];
E2=[0,0,1,0];
E3=[0,0,1,1];
E4=[0,1,0,0];
E5=[0,1,0,1];
E6=[0,1,1,0];
E7=[0,1,1,1];
E8=[1,0,0,0];
E9=[1,0,0,1];
E10=[1,0,1,0];
E11=[1,0,1,1];
E12=[1,1,0,0];
E13=[1,1,0,1];
E14=[1,1,1,0];
E15=[1,1,1,1];
0 1
state_Diagram S
State E0:
Y=0;
E0 E1 E2
If X then E2 else E1;
State E1:
E1 E3 E3
Y=0;
goto E3; E2 E6 E7
State E2:
Y=0; E3 E4 E4
If X then E7 else E6;
State E3: E4 E5 E5
Y=0;
goto E4; E5 E1 E2
State E4: E6 E4 E8
Y=0;
goto E5; E7 E8 E8
E8 E9 E9
E9 E1 E2
0 1
E0 E1 E2
State E5:
Y=0; E1 E3 E3
If X then E2 else E1;
State E6: E2 E6 E7
Y=0;
If X then E4 else E8; E3 E4 E4
State E7:
Y=0; E4 E5 E5
goto E8;
State E8: E5 E1 E2
Y=0;
goto E9; E6 E4 E8
State E9: E7 E8 E8
Y=1;
If X then E2 else E1; E8 E9 E9
E9 E1 E2
State E10: 0 1
Y=0;
goto E0; E10 E0 E0
State E11:
Y=0; E11 E0 E0
goto E0;
State E12: E12 E0 E0
Y=0;
goto E0; E13 E0 E0
State E13:
Y=0; E14 E0 E0
goto E0;
State E14: E15 E0 E0
Y=0;
goto E0;
State E15:
Y=0;
goto E0;
test_vectors
([Clk,X]->Y)
[.c.,0]->.x.;
[.c.,1]->.x.;
[.c.,1]->.x.;
[.c.,1]->.x.;
[.c.,0]->.x.;
[.c.,0]->.x.;
[.c.,1]->.x.;
[.c.,1]->.x.;
[.c.,0]->.x.;
[.c.,1]->.x.;
[.c.,1]->.x.;
[.c.,0]->.x.;
[.c.,0]->.x.;
[.c.,0]->.x.;

También podría gustarte