Formulación Sistemas Secuenciales

Anuncio
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.5. Tipos de máquinas secuenciales
Si bien existen innumerables formas que pueden tomar los diagramas de estados, pueden describirse
algunos tipos que se presentan más a menudo en electrónica.
a) Máquinas que analizan secuencias de largo fijo con un recorrido fijo. Por ejemplo: tomar 5 valores de
la secuencia y tomar una acción, de acuerdo a los valores.
b) Máquinas que analizan secuencias de largo fijo con un recorrido fijo con reintento en caso de falla. Si
una subsecuencia no es correcta, vuelven al estado inicial; o a un estado previo.
c) Reconocedores continuos. Se genera una salida cada vez que se detecta una secuencia dada. En estas
máquinas, cada estado recuerda una secuencia previa de la entrada. En este caso, se habla de estado
inicial sólo cuando la máquina comienza a funcionar.
9.6
Síntesis de Diagramas de Estado. Modelado
Se desea obtener el diagrama de estados a partir de una descripción en lenguaje natural.
Nuestro lenguaje común suele ser impreciso y a veces redundante. Por esta razón es conveniente emplear
las construcciones estructuradas de los lenguajes de programación.
En general, el paso de una descripción en lenguaje natural a la tabla de estados, se efectúa por pasos
tentativos, hasta asegurar que el modelo formal obtenido cumple las especificaciones dadas.
Veremos algunos ejemplos.
9.6.1 Verificador BCD
Reconoce si una secuencia de cuatro bits en serie es BCD.
Tenemos una máquina con una entrada y una salida:
x
M.S.
z
Figura 9.34 Diagrama en bloque verificador BCD.
Tenemos que interpretar cuando se genera la salida. Como a cada valor i de la secuencia de entrada debe
existir un valor de la secuencia de salida; debemos decidir qué salida generar cuando han llegado uno,
dos o tres valores de la entrada. En estos casos asumiremos salida cero, dejando salida uno si los cuatro
bits no pertenecen al código BCD. El bit más significativo es el primero.
Prof. Leopoldo Silva Bijit.
05-03-2004
189
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Verificador BCD:
estado_inicial();
while(1)
{ lea primer valor de xi ; z=0;
lea segundo valor de xi ; z=0;
lea tercer valor de xi ; z=0;
lea cuarto valor de xi ;
if ( los últimos cuatro bits de xi es cifra BCD)
then z=0; else z:=1;
}.
La descripción en pseudo lenguaje es bastante útil para especificar con rigurosidad los requerimientos del
diseño.
El pseudo lenguaje es similar a un lenguaje de programación estructurado, en el cual las acciones
describen los eventos asociados a las máquinas digitales.
Estado Inicial
a
1/0
0/0
0/0
b
0/0
1/0
d
0/0
e
h
0/0
0/0
1/0
1/0 0/0
1/0
0/0
1/0
g
f
0/0
1/0
j
i
c
l
k
1/0 0/0
1/0 0/0
0/0
1/0
n
m
1/0 0/1
1/0
1/1 0/1
o
1/1 0/1
1/1
Figura 9.35 Diagrama de estados verificador BCD.
Cada estado representa una subsecuencia previa de la entrada. Por ejemplo, en l se ha recibido la
secuencia 100. En d se ha recibido 00.
Este primer diseño es muy sistemático; se forma un árbol de decisión. De cada estado, se pasa a dos
próximos con entrada cero y uno respectivamente.
Estos problemas no tienen una solución única. Puede encontrarse un diagrama de estados más simple.
Por ejemplo:
Prof. Leopoldo Silva Bijit.
05-03-2004
190
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
a
1/0
0/0
b
e
1/0
0/0
φ/0
c
f
/0
φφφ/0
/0
1/0
g
φ/0
0/0
h
d
φ/0
φ/1
Figura 9.36 Diagrama de estados reducido del verificador BCD.
Se emplea φ para indicar que con entrada cero o uno, se pasa al próximo estado. Este segundo diagrama
requiere tres flip-flops para representar los estados. El anterior requiere 4 flip-flops para identificar 15
estados.
Existen procemientos sistemáticos para encontrar estados equivalentes y removerlos de los diagramas.
9.6.2. Reconocedor continuo
Se desea obtener el diagrama de estados de una máquina secuencial que produzca una salida alta cada vez
que se detecta la secuencia 0101 en la entrada; la salida debe ser cero en el resto de los casos.
Solución:
Si por ejemplo la entrada es: 0, 1, 0, 1, 0, 1, ...
la salida debe ser:
0, 0, 0, 1, 0, 1, ...
Tenemos:
reconocedor 0101:
estado_inicial(); i=0;
while( i<3) { lea(xi); zi=0; i ++;}
for(; ;i++)
{ lea(xi);
if ( (xi-3==0) && (xi-2==1) && (xi-1==0) && (xi==1) ) then zi=1; else zi=0 ;
}
Prof. Leopoldo Silva Bijit.
05-03-2004
191
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
A partir de un estado inicial A, se plantea la secuencia a reconocer:
A
B
C
0/0
D
1/0
0/0
1/1
Figura 9.37 Reconocedor de secuencia 0101.
Luego, lo que resta es completar las transiciones que faltan. Desde cada estado deben salir dos
transiciones; en este caso, sólo hay una entrada, y ésta puede tomar valores 0 y 1.
Ayuda conceptualizar el significado de los estados, del siguiente modo:
A:
inicial, se espera un cero.
B: después de haber aceptado un cero.
C: después de haber aceptado la secuencia 01.
D: después de haber aceptado la secuencia 010.
Observaciones:
Estando en D, si llega un cero, debe ir al estado B, pues ya tendría el primer cero de la secuencia.
Estando en B, debe permanecer en B mientras lleguen ceros.
Permanece en A, mientras lleguen unos.
Estando en C, si llega un uno, debe ir al estado inicial.
Estando en D, si llega un uno, se reconoce secuencia correcta; y debe ir a C. Ya que tiene los dos
primeros bits reconocidos.
Resulta el siguiente diagrama de estados:
1/0
0/0
1/0
A
0/0
B
B
1/0
C
0/0
D
1/1
0/0
Figura 9.38 Diagrama de estados completo del reconocedor continuo.
Prof. Leopoldo Silva Bijit.
05-03-2004
192
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.6.3.Reconocedor continuo con reintento en caso de falla
Diseñar máquina secuencial que reconozca con salida uno, cada vez que se presente en la entrada, la
secuencia de exactamente dos ceros, seguida de 10. En caso contrario debe generar salida cero.
Solución:
La siguiente secuencia de entrada:
debe generar la siguiente salida:
001001000010010...
000100100000001...
Un esquema de la “columna vertebral” del diagrama es:
1/0
A
0/0
B
0/0
1/0
C
D
0/1
Figura 9.39 Diagrama de estados inicial.
A, es el estado inicial: en él se espera por un cero.
Si en B o D falla la secuencia se retorna al estado inicial.
Estando en C, si llega un cero debe pasarse a un estado E; en el cual deben descartarse todos los ceros que
lleguen.
El diagrama completo:
0/0
1/0
E
1/0
1/0
A
0/0
B
0/0
1/0
0/0
C
1/0
D
0/1
Figura 9.40 Diagrama de estados completo.
9.6.4.Reconocedor continuo de códigos BCD válidos.
En este ejemplo se ilustra la importancia de darle un nombre simbólico adecuado a cada estado.
Si la entrada presente y las tres anteriores forman un código válido BCD, entonces la salida permanece en
0; en caso contrario la salida debe ser uno.
Solución:
El nombre del estado recuerda la secuencia previa de 3 bits de la entrada. Para construir el diagrama basta
obtener los estados próximos a cualquier estado.
Por ejemplo, a partir del 001, se llega a los estados 011 y 010, con entradas uno y cero respectivamente.
Prof. Leopoldo Silva Bijit.
05-03-2004
193
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Esto se ilustra en el siguiente diagrama:
001
0
1
010
011
Figura 9.41 Estados siguientes al estado 001.
Los dos últimos bits de 001, forman los dos primeros de 011 y 010.
De esta forma es sencillo plantear, el diagrama completo:
0
000
1
0
1
001
100
0
0
010
1
0
1
1
011
0
101
1
110
0
1
0
111
1
Figura 9.42 Diagrama de estados completo, sin salida.
Para completar el diagrama deben indicarse las salidas asociadas a las transiciones.
Las secuencias: 1010, 1011, 1100, 1101, 1110, 1111 son las que tienen asociada una salida uno.
Prof. Leopoldo Silva Bijit.
05-03-2004
194
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
La función de salida puede describirse por la siguiente tabla de verdad, y con ésta completar el diagrama.
Estado
000
001
010
011
100
101
110
111
x
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
1
1
1
z
Figura 9.43 Tabla de verdad de la función de salida.
9.6.5. Del diagrama a la especificación.
Dado el siguiente diagrama de estados, describir qué efectúa la máquina.
Asumir 1 como estado inicial.
0/0
1/0
1
2
0/0
1/0
1/0
3
1/0
4
5
0/0
0/0
0/1,
1/1
Figura 9.44 Diagrama de estados ejemplo 9.6.5.
Solución:
Observando que en 1 se espera un cero; y que 2 simboliza que ha llegado un cero.
Se tiene que es un reconocedor continuo de las secuencias 01110 y 01111 con salida uno.
La salida es cero en el resto de los casos.
Cuando reconoce una de las secuencias anteriores vuelve a comenzar de nuevo.
Prof. Leopoldo Silva Bijit.
05-03-2004
195
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.6.6.Inferir conducta de la máquina secuencial
A
0/0
1/0
1/0
0/0
B
1/1
C
1/0
φ/0
φ/0
0/0
D
E
1/0
F
φ/0
0/0
G
Figura 9.45 Diagrama de estados ejemplo 9.6.6.
Solución:
Asumiendo que el estado inicial es el A: analiza secuencias de largo cuatro. Si la secuencia es 1111
genera salida 1; en el resto de las secuencias la salida es cero.
Prof. Leopoldo Silva Bijit.
05-03-2004
196
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.6.7. Máquina vendedora de bebidas.
Especificaciones: Liberar una bebida después de que se hayan ingresado 150 pesos. Pueden ingresarse
monedas de 50 y 100 pesos(por dos ranuras diferentes, en las cuales no pueden introducirse monedas
simultáneamente). La máquina no entrega vuelto.
Reset
M50
Abrir
Expendedor
a
Sensor Monedas
M100
Mecanismo
para entregar envase
Clock
Figura 9.46 Diagrama en bloques de máquina vendedora.
El diagrama anterior ilustra las entradas y salidas, así como las señales de control.
Las siguientes secuencias satisfacen las especificaciones: 3 monedas de 50; 1 de 100 seguida de una de
50; una de 50 seguida de una de 100; dos de 100(el usuario pierde 50). Las posibles soluciones se
ilustran en el siguiente diagrama:
Las salidas de los estados: E0, E1, E2 y E3 deben desactivar la señal abrir. Luego de los estados: E4, E5,
E6 y E7 debe retornarse al estado inicial E0. Si asignamos la lógica: cuando se ingresa una moneda de 50
la señal M50 es 1; y mientras no se ingrese M50 es cero; y el mismo tipo de lógica para las monedas de
100. Habría que agregar lazos para mantenerse en los estados a la espera de ingreso de monedas.
Reset
E0
M100
M50
E1
M50
E3
E2
M100
M50
E4/
abrir
E5/
abrir
M100
E6/
abrir
M50
E7/
abrir
Figura 9.47 Diagrama de estados de máquina vendedora.
Prof. Leopoldo Silva Bijit.
05-03-2004
197
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Si se asignan nombres lógicos a los estados(en lugar de denominarlos Ei), que recuerden la condición del
estado(0, 50, 100,150). Y si para la inserción de una modeda de 50 se emplea L(en romano) = 1 y C= 1(
para inserción de monedas de a 100), las transiciones se rotulan con las ecuaciones lógicas que implican
el cambio de estado. Entonces puede simplificarse el diagrama, según:
L’ C’ + Reset
Reset
L
C
L
0
0
L’C’ +Reset
50
0
L’ C’
100
0
C
L’ C’
Entradas CL Reset=0
E.Actual
00
01
10
11
0
0
50
100
50
50
100
150
100
100
150
150
150
150
Próximo estado
E.Actual
L+C
150
1
Reset’
0
50
100
150
Entradas
00
0
0
CL
01
-
Reset=1
10
11
-
Abrir
0
0
0
1
Abrir
0
0
0
1
Figura 9.48 Diagrama de estados simplificado.
Nótese que el control Reset sólo está permitido para ingresar al estado 0, o para salir del estado 150. Las
casillas marcadas con un guión se pueden emplear como condiciones superfluas. Si se agrega una señal
para devolver monedas, podría aplicarse la señal reset en estados intermedios, o cuando la cantidad
ingresada exceda los $ 150(en este caso no se puede comprar con dos monedas de a 100) o que exceda
los $200.
El problema queda completamente especificado, si están presentes todas las transiciones posibles, o si
quedan bien definidas todas las casillas de la matriz de transiciones.
9.6.8. Cerebro de Hormiga. (Ant Brain. Propuesto en el MIT).
Se desea diseñar una máquina secuencial cuyo objetivo es permitir a la hormiga encontrar la salida del
laberinto.
La hormiga dispone de dos sensores en las antenas izquierda y derecha(I y D), que están en 1 si la antena
respectiva entra en contacto con las paredes del laberinto; y se colocan en cero si dejan de estar en
contacto. Son las entradas a la máquna de estados finitos.
La hormiga también dispone de tres señales de actuación, que son las salidas de la máquina, una señal
para avanzar hacia delante A; otra para doblar levemente hacia la izquierda DI; y otra para doblar
levemente hacia la derecha DD.
Prof. Leopoldo Silva Bijit.
05-03-2004
198
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
La estrategia para diseñar el cerebro de la hormiga es mantener la pared a la derecha de la hormiga.
Figura 9.49 Laberinto.
Para desarrollar el diagrama de estados, se elige emplear el modelo de Moore. Es decir, las salidas estarán
asociadas al estado.
Se definen los estados posibles, y en cada uno de éstos debe observarse los valores de las entradas que
llevan a otros estados. Debe notarse que se tienen cuatro combinaciones posibles para los valores
permitidos a las entradas, esto implica dibujar 4 transiciones a estados próximos. Sin embargo es posible
simplificar el diagrama rotulando las transiciones como una expresión lógica de las entradas.
Ejemplos:
Si debe pasarse a cierto estado cuando cualesquiera de las antenas tocan una pared, la transición puede
rotularse ( I + D).
Si debe pasarse a cierto estado cuando ambas antenas no tocan a alguna pared, la transición puede
rotularse ( I ' D'). Es decir, que ambas no toquen.
Si la transición es cuando la izquierda no toque y la derecha entre en contacto con la pared, la transición
se anota: (I' D).
Para encontrar los estados debe analizarse las diversas situaciones en que se puede encontrar la hormiga
en su recorrido del laberinto. Observando las entradas, y las acciones que ésta puede realizar, a
continuación se plantean algunas de las situaciones:
Prof. Leopoldo Silva Bijit.
05-03-2004
199
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
A: Siguiendo la muralla y tocándola:
Avanzar, doblando levemente a la
izquierda, hasta llegar a B:
B: Siguiendo la muralla y no tocándola:
Avanzar, doblando levemente a la
derecha. O se vuelve a A, o se pasa
a C.
C: Se acaba la pared:
Avanzar, doblando levemente a la
derecha, hasta llegar a D:
D: Vuelve a tocar la muralla, con la
Antena derecha:
Es la situación A.
E: Pared al frente: Mientras
toque con alguna antena:
Doblar levemente a la
izquierda hasta pasar a F:
F: Igual situación que en el estado B.
G: Tocando la pared con la izquierda.
Doblar a la izquierda hasta no tocar
la pared. Es la situación B.
H: Perdido:
Avanzar hasta tocar algo.
Figura 9.50 Esquema de situaciones. Definición de estados.
No se encuentran otras situaciones que no se hayan planteado, entonces se procede a conectar los
diferentes estados, mediante el siguiente un diagrama:
Prof. Leopoldo Silva Bijit.
05-03-2004
200
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
I+D
LOST
(A)
I’ D
E/G
(DI)
I+D
D
I’ D’
I’ D’
A
(DI, A)
I
D
I’ D’
B
C
(DD, A)
(DD, A)
D’
D’
Figura 9.51 Diagrama de estados para el cerebro de la hormiga.
Nótese que los estados E y G se tratan como si fuera un solo estado. En ambos se toca con la antena
izquierda, y el objetivo(local, para cumplir la estrategia) es dejar de tocar la pared.
El diagrama muestra que los estados B y C podrían tratarse como uno solo(son equivalentes). Ya que
tienen iguales salidas; y para iguales entradas, se pasa a igual estado próximo(más adelante se verán
algoritmos para determinar estados equivalentes).
Si se funden los estados B y C se llega al siguiente diagrama, que representa el cerebro de la hormiga:
I+D
LOST
(A)
I’ D
E/G
(DI)
I+D
D
L’ R’
I’ D’
A
(DI, A)
I
I’ D’
D’
B/C
(DD,
A)
Figura 9.52 Reducción de estados equivalentes.
Prof. Leopoldo Silva Bijit.
05-03-2004
201
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.6.9. Contador sincrónico con control de modo M.
Si M = 0 el contador es binario ascendente; si M = 1 el contador avanza según código Gray. A
continuación se indican las secuencias:
binario: 000, 001, 010, 011, 100, 101, 110, 111
Gray:
000, 001, 011, 010, 110, 111, 101, 100
El diagrama de estados se construye para la secuencia binaria, con transiciones con entrada de control
igual a cero. Luego, se marcan las transiciones para contar en Gray:
0
reset
S0
[000]
S1
0
[001]
S2
[010]
0
S3
[011]
0
S4
[100]
0
S5
[101]
0
S6
[110]
0
S7
[111]
0
Figura 9.53 Contador binario ascendente.
0
reset
S0
[000]
S1
[001]
0
1
S2
[010]
0
0
1
S3
[011]
0
S4
[100]
1
0
S5
[101]
0
S6
[110]
1
S7
[111]
1
1
1
0
1
Figura 9.54 Contador Gray descendente.
9.6.10 Reconocedor de un patrón finito.
Sean: entrada x y salida z. La salida se activa cada vez que se presenta la secuencia 010, y mientras que la
secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva permanentemente.
Ejemplos de secuencias, y columna vertebral del diagrama de estados:
X: 0 0 1 0 1 0 1 0 0 1 0 …
Z: 0 0 0 1 0 1 0 1 0 0 0 …
X: 1 1 0 1 1 0 1 0 0 1 0 …
Z: 0 0 0 0 0 0 0 1 0 0 0 …
Prof. Leopoldo Silva Bijit.
05-03-2004
202
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
E0
reset
[0]
0
1
E1
E4
[0]
[0]
1
0
E2
E5
[0]
[0]
0
0
E3
E6
[1]
[0]
0/1
Figura 9.55 Diagrama de estados inicial.
Luego deben completarse las transiciones que faltan.
Si en E5 llega un cero, debe ir al estado permanente E6, ya que habría reconocido la secuencia 100. Si
estando en E3(los últimos 3 bits de la secuencia son 010) llega un 1, los últimos dos serán ahora 01, esto
implica pasar al estado E2.
En E1 debe permanecer si llegan secuencias de ceros. En E4 debe permanecer si llegan secuencias de
unos.
Si estando en E2 llega un uno, se tendrán dos unos seguidos, entonces debe pasarse al estado E4.
Si estando en E5 llega un uno, se tendrá hasta ese momento, que los dos últimos de la secuencia son 01,
entonces debe pasarse al estado E2.
El diagrama final se muestra a continuación:
Prof. Leopoldo Silva Bijit.
05-03-2004
203
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
E0
reset
[0]
0
1
E1
0
[0]
E4
...0
1
...01
...010
1
E5
[0]
[0]
1
0
1
0
1
E2
[0]
...1
0
E3
E6
[1]
[0]
...100
0/1
Figura 9.56 Diagrama de estados final.
Si denominamos X a la entrada, el diagrama puede describirse, según:
While (1)
{if ( reset) estado = E0;
else
switch (estado)
{ case E0: if (X) estado = E4 else estado = E1;
case E1: if (X) estado = E2 else estado = E1;
case E2: if (X) estado = E4 else estado = E3;
case E3: if (X) estado = E2 else estado = E6;
case E4: if (X) estado = E4 else estado = E5;
case E5: if (X) estado = E2 else estado = E6;
case E6: estado = E6;
}
}
Prof. Leopoldo Silva Bijit.
05-03-2004
204
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.6.11. Diseñar el control de una máquina de lavar ropa.
El funcionamiento de la lavadora es el siguiente:
• Cuando se oprime el botón “Partida”, después de colocar las prendas, la máquina determina el tamaño
de la carga( Mediano / Grande) y de acuerdo al tamaño dispensa la cantidad de agua y detergente.
• Luego de esto, la máquina lava la ropa por 10 minutos.
• Después del ciclo anterior, la máquina enjuaga las ropas por 10 minutos. Detecta si el líquido de
salida está sucio, al final del enjuague; en caso de estarlo, repite el ciclo (lavado + enjuague), pero no
más de 3 repeticiones.
• Luego centrifuga las ropas hasta que no detecta descarga de agua, pero por no más de 20 minutos.
Las duraciones de los ciclos se logran con temporizadores. Los cuales pueden modelarse con una entrada
que inicia la cuenta del tiempo, y una salida que indica que ya transcurrió el tiempo programado.
Entradas
Descripción
Botón de Partida
Sensor carga mediana
Sensor carga grande
Sensor salida sucia
Sensor descarga salida
Timeout 60 min
Timeout 10 min
Variable
SP
SM
SG
SS
SD
O60
O10
Salidas
Descripción
Dispensador mediano
Dispensador Grande
Actuador lavado
Actuador enjuague
Actuador centrífuga
Inicio timer 60 min
Inicio timer 10 min
Variable
AM
AG
AL
AE
AC
I60
I10
Figura 9.57 Especificaciones de variables.
reset
SP’
SD’ # O10
Inicio
SD’
(SP&SM) / AM, AL, I10, I60
#
(SP&SG) / AG, AL, I10, I60
2
Lavado
O10’ / AL
O10 / I10
O10’ / AE
Centrifuga
O10’&SD / AC
O10&SD / I10
O10&SS&O60’&SM / AM, AL, I10
#
O10&SS&O60’&SG / AG, AL, I10
Centrifuga
Enjuage
O10&SS’ # O60 / I10
1
O10’&SD / AC
Figura 9.58 Diagrama de estados control lavadora.
Prof. Leopoldo Silva Bijit.
05-03-2004
205
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
9.7. Diseño de Máquinas Secuenciales empleando lenguaje Abel.
9.7.1 Detector secuencia 0101.
A continuación se tiene el diagrama de estados de una máquina secuencial(Modelo de Mealy) que
produce una salida alta cada vez que se detecta la secuencia 0101 en la entrada; y salida cero en el resto
de los casos.
1/0
0/0
1/0
A
0/0
B
B
1/0
C
0/0
D
1/1
0/0
Figura 9.59 Diagrama de estados detector secuencia 0101.
La siguiente secuencia de entrada produce las siguientes secuencias de salida y de transiciones de estados.
Entrada
0
1
0
1
1
0
0
1
1
....
Salida
0
0
0
1
0
0
0
0
0
....
Estado
B
C
D
C
A
B
B
C
A
….
Figura 9.60 Secuencias de entrada, salida y de estados.
El siguiente módulo describe el diagrama de estados.
En las declaraciones se emplea el tipo reg, para declarar una salida registrada; es decir, una salida de un
flip-flop D. En el diseño se tienen dos salidas: z es una salida combinacional, que como veremos es
asincrónica; mientras que la salida zs es de tipo sincrónica.
Luego se declara el registro de estado(sreg), en función de las salidas de los flip-flops.
También se efectúa un mapeo de nombres lógicos a físicos. Esto también se denomina asignación de
estados. El estado inicial, será el estado A; cuyo nombre binario será [0, 0].
En las ecuaciones se indican las señales de entrada que ingresan al reloj(clock), a la habilitación de la
salida(enab, no se usa enable ya que es palabra reservada) y al reseteo asincrónico de la
macrocelda(reset).
Luego se describe el diagrama de estados de sreg, mediante la especificación de cada estado. En la cual
se indica las transiciones de acuerdo a los valores de las entradas(esto se indica con la sentencia if then
else); y los valores que deben tomar las salidas(esto se realiza con la sentencia with). Debe notarse que las
salidas registradas se asignan con :=, y que a las salidas combinacionales se les asigna un valor con el
signo igual. Pueden agruparse acciones, mediante el uso de paréntesis cursivos{ }.
Finalmente se especifican vectores de prueba. Se emplea la constante .c. para modelar un pulso de reloj,
equivale a generar tres vectores, uno con clock en cero, luego un valor de clock uno; y finalmente un
valor de clock cero. Como el resto de las entradas no cambian, se cumplen automáticamente las
especificaciones de tiempos de set-up y hold para la variable de entrada x.
Prof. Leopoldo Silva Bijit.
05-03-2004
206
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
La constante .C. es adecuada para flip-flops que operan con cantos de subida; la constante .K. genera la
secuencia 101 en el reloj, que es adecuada para flip-flops que operan con cantos de bajada. Además se
tienen los estímulos .D. que genera un canto de bajada , con la secuencia 10; la constante .U. genera un
canto de subida, con la secuencia 01.
Se generan los vectores asociados a la tabla anterior con las secuencias de la entrada, salida y estados.
MODULE estado1
TITLE 'Diagrama de Estados. Modelo de Mealy'
"Declaraciones
q1, q0, zs pin istype 'reg';"Estado y Salida Registrada
clock, enab, reset, x pin ;"Entradas
z pin istype 'com';"Salida Combinacional.
sreg = [q1,q0];
"Valores de los estados
A= 0; B= 1; C= 2; D= 3;
equations
[q1,q0,zs].clk= clock;
[q1,q0,zs].oe = !enab;
[q1,q0,zs].ar = reset; "Con reset va a [0, 0](el estado A).
state_diagram sreg;
State A:
zs := 0; if (!x) then B with z = 0; else A with z = 0;
State B:
if (!x) then B with z = 0; else C with z = 0;
State C:
if (!x) then D with z = 0; else A with z = 0;
State D:
if (!x) then B with z = 0; else C with {z = 1; zs := 1;}
test_vectors ( [clock,enab,reset, x]->[sreg,zs])
[.c. , 0 , 1 , 0 ]->[A ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 0 ]->[D ,0];
[.c. , 0 , 0 , 1 ]->[C ,1];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
END
Prof. Leopoldo Silva Bijit.
05-03-2004
207
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Después de la compilación, las ecuaciones reducidas resultan:
q1.OE = (!enab);
q1 := (q1.FB & !q0.FB & !x) # (q0.FB & x);
q1.AR = (reset);
q1.C = (clock);
q0.OE = (!enab);
q0 := (!x);
q0.AR = (reset);
q0.C = (clock);
zs.OE = (!enab);
zs := (q1.FB & q0.FB & x);
zs.AR = (reset);
zs.C = (clock);
z = (q1.FB & q0.FB & x);
El en siguiente diagrama se ilustra la notación empleada para las variables asociadas a cada salida
registrada. Nótese que cuando q1 aparece al lado izquierdo de la asignación, está representando a la
entrada D del flip-flop, es el próximo estado que tomará dicha variable; es decir q1(k+1), con la notación
empleada en clases.
Cuando aparece en el lado derecho el término q1.FB(por feed-back) se lo interpreta como la salida del
flip-flop.
clock
enable
reset
Q.AR
Q.OE
AR
D
Q.C
x
Q
clk
Q.FB
in
Q.PIN
Figura 9.61 Variables internas. Visión del programador.
Prof. Leopoldo Silva Bijit.
05-03-2004
208
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Nótese que la expresión booleana para la salida asincrónica z es idéntica a la de zs, que es salida de flipflop.
La salida del reporte de simulación muestra los estímulos y respuestas debidos a los vectores elegidos.
c r
l e e
on s
ca e
q qz
kb t x 1 0s
V0001 C 0 1 0 Z Z Z
C010 LLL
C010 LLL
C010 LLL
V0002 C 0 0 1 L L L
C001 LLL
C001 LLL
V0003 C 0 0 0 L L L
Clock = 0
C000 LHL
Clock = 1
C000 LHL
Clock = 0
V0004 C 0 0 1 L H L
C001 HLL
C001 HLL
V0005 C 0 0 0 H L L
C000 HHL
C000 HHL
V0006 C 0 0 1 H H L
C001 HLH
C001 HLH
C001 HLH
V0007 C 0 0 1 H L H
C001 LLL
C001 LLL
V0008 C 0 0 0 L L L
C000 LHL
C000 LHL
V0009 C 0 0 0 L H L
C000 LHL
C000 LHL
V0010 C 0 0 1 L H L
C001 HLL
C001 HLL
V0011 C 0 0 1 H L L
C001 LLL
C001 LLL
11 out of 11 vectors passed.
Debe notarse que cada vector genera tres estímulos(esto debido al pulso definido con .c.).
Los vectores generan las siguientes formas de ondas:
Prof. Leopoldo Silva Bijit.
05-03-2004
209
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
V003
asincrónica
V006
Figura 9.62 Simulación funcional. Formas de ondas generadas por estímulos.
La señal z cambia entre dos cantos de subida del reloj, por esto se dice que es asincrónica respecto de
éste. Mientras que la señal zs, que se obtiene como salida de un flip-flop será sincrónica con éste.
La salida z cambia en la transición, apenas se produce la condición que la genera. La señal zs ocurre
generalmente un poco después, ya que se activa cuando ocurre el siguiente canto de subida del reloj.
La señal z, es una salida de una máquina de Mealy, y depende de las entradas; lo cual puede verse ya que
interviene la entrada x en la ecuación: z = (q1.FB & q0.FB & x);
Si esta salida está conectada como entrada a otra máquina secuencial, que ocupe el mismo reloj, podría no
cumplir las condiciones para operación sincrónica. Por lo tanto es recomendable emplear la salida
sincronizada zs.
Con dispositivos programables conviene emplear el modelo de Moore. En este caso las salidas están
sincronizadas con el reloj.
9.7.2. Reconocedor de un patrón finito. Modelo de Moore
Sean: entrada x y salida z. La salida se activa cada vez que se presenta la secuencia 010, y mientras que la
secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva permanentemente.
Ejemplos de secuencias de entrada y salida:
X: 0 0 1 0 1 0 1 0 0 1 0 …
Z: 0 0 0 1 0 1 0 1 0 0 0 …
X: 1 1 0 1 1 0 1 0 0 1 0 …
Z: 0 0 0 0 0 0 0 1 0 0 0 …
Ver ejemplo 9.6.10.
El siguiente programa Abel, implementa el diseño:
MODULE fsm010
TITLE 'fsm010'
"Activa Z cada vez que llega 010 y mientras no llegue 100.
"si llega 100 se activa Y, y permanece en ese estado.
Prof. Leopoldo Silva Bijit.
05-03-2004
210
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
"Declaraciones
"Pines de entrada
clk, Xin, RESET pin;
"Pines de Salida
Q0, Q1, Q2 pin istype 'reg';
Z, Y pin istype 'com';
"Registro de Estado
SREG = [Q0, Q1, Q2];
"Definicion de Estados
S0 = [0,0,0]; " Estado Inicial. (Reset state)
S1 = [0,0,1]; " secuencias tipo ...0
S2 = [0,1,0]; " secuencias tipo ...01
S3 = [0,1,1]; " secuencias tipo ...010
S4 = [1,0,0]; " secuencias tipo ...1
S5 = [1,0,1]; " secuencias tipo ...10
S6 = [1,1,0]; " secuencias tipo ...100
equations
[Q0,Q1,Q2].clk= clk;
[Q0.ar, Q1.ar, Q2.ar] = RESET;"Con Reset va a S0
"Z=!Q0&Q1&Q2; Y=Q0&Q1&!Q2;
"Modelo de Moore
state_diagram SREG
state S0: Z=0; Y=0;
state S1:
state S2:
state S3: Z=1;
state S4:
state S5:
state S6: Y=1;
if Xin then S4 else S1;
if Xin then S2 else S1;
if Xin then S4 else S3;
if Xin then S2 else S6;
if Xin then S4 else S5;
if Xin then S2 else S6;
goto S6;
test_vectors ([clk, RESET, Xin] -> [Z,Y])
[.C.,1,.X.] ->[0,0];"reset
[.C.,0, 0] -> [0,0];"secuencia 00101010010
[.C.,0, 0] -> [0,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 0] -> [0,1];
[.C.,0, 1] -> [0,1];
[.C.,0, 0] -> [0,1];
Prof. Leopoldo Silva Bijit.
05-03-2004
211
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
END fsm010;
Nótese la definición de las salidas asociadas al estado. Y el salto incondicional, mediante el goto.
Las salidas también podrían haberse definido en el segmento de las ecuaciones, esto se insinúa como
comentario.
Después de la compilación, resultan las ecuaciones reducidas:
Q0 := (!Q0.FB & Q1.FB & Q2.FB & !Xin) # (Q0.FB & !Q1.FB & !Xin) # (Q0.FB & !Q2.FB)
# ( !Q2.FB & Xin);
Q0.AR = (RESET);
Q0.C = (clk);
Q1 := (!Q0.FB & Q1.FB & !Xin) # ( !Q0.FB & Q2.FB & Xin) # (Q0.FB & Q1.FB & !Q2.FB)
# (Q0.FB & !Q1.FB & Q2.FB);
Q1.AR = (RESET);
Q1.C = (clk);
Q2 := (!Q1.FB & !Q2.FB & !Xin) # (!Q0.FB & !Q2.FB & !Xin) # (!Q0.FB & !Q1.FB & !Xin);
Q2.AR = (RESET);
Q2.C = (clk);
Z = (!Q0.FB & Q1.FB & Q2.FB);
Y = (Q0.FB & Q1.FB & !Q2.FB);
Con estas ecuaciones, podría haberse efectuado el diseño sin emplear diagrama de estados.
Después de la compilación de los vectores, se obtiene:
R
E
cS X
l E i
kT n ZY
V0001 C 1 X
C1X
C1X
V0002 C 0 0
C00
C00
V0003 C 0 0
C00
C00
V0004 C 0 1
C01
C01
V0005 C 0 0
C00
C00
C00
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
HL
HL
Prof. Leopoldo Silva Bijit.
05-03-2004
212
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
V0006 C 0 1 H L
C01 HL
C01 LL
C01 LL
V0007 C 0 0 L L
C00 LL
C00 HL
C00 HL
V0008 C 0 1 H L
C01 HL
C01 LL
C01 LL
V0009 C 0 0 L L
C00 LL
C00 HL
C00 HL
V0010 C 0 0 H L
C00 HL
C00 LH
C00 LH
V0011 C 0 1 L H
C01 LH
C01 LH
V0012 C 0 0 L H
C00 LH
C00 LH
12 out of 12 vectors passed.
Generando las siguientes formas de ondas:
Figura 9.63 Formas de ondas ejemplo 9.7.2.
9.7.3. Contador sincrónico con control de modo M.
Si M = 0 el contador es binario ascendente; si M = 1 el contador avanza según código Gray. A
continuación se indican las secuencias de cuentas:
Prof. Leopoldo Silva Bijit.
05-03-2004
213
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
binario: 000, 001, 010, 011, 100, 101, 110, 111
Gray:
000, 001, 011, 010, 110, 111, 101, 100
El diagrama de estados se construye para la secuencia binaria, con transiciones con entrada de control
igual a cero. Luego, se marcan las transiciones para contar en Gray.
En este diseño las salidas corresponden al estado directamente. Como es usual en contadores.
Ver ejemplo 9.6.9.
MODULE cntgray
TITLE 'Contador en Gray'
"Pines de Entrada
clk, M, RESET pin 1, 2, 3;
"Pines de Salida
Z0, Z1, Z2
pin istype 'pos, reg';
"Registro de Estado
SREG = [Z0, Z1, Z2];
S0 = [0,0,0];
S1 = [0,0,1];
S2 = [0,1,0];
S3 = [0,1,1];
S4 = [1,0,0];
S5 = [1,0,1];
S6 = [1,1,0];
S7 = [1,1,1];
equations
[Z0,Z1,Z2].clk= clk;
[Z0.ar, Z1.ar, Z2.ar] = RESET; "Reset asincrónico lleva al estado S0
state_diagram SREG
state S0: goto S1;
state S1: if M then S3 else S2;
state S2: if M then S6 else S3;
state S3: if M then S2 else S4;
state S4: if M then S0 else S5;
state S5: if M then S4 else S6;
state S6: goto S7;
state S7: if M then S5 else S0;
test_vectors ([clk, RESET, M] -> [Z0, Z1, Z2])
[0,1,.X.] -> [0,0,0];
[.C.,0,0] -> [0,0,1];
[.C.,0,0] -> [0,1,0];
[.C.,0,1] -> [1,1,0];
[.C.,0,1] -> [1,1,1];
[.C.,0,1] -> [1,0,1];
[.C.,0,0] -> [1,1,0];
[.C.,0,0] -> [1,1,1];
end cntgray
Prof. Leopoldo Silva Bijit.
05-03-2004
214
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Las ecuaciones resultan, después de la compilación:
Equations:
Z0 := (Z0.FB & !Z1.FB & !M) # (Z0.FB & !Z2.FB & !M) # (Z0.FB & Z2.FB & M)
# (!Z0.FB & Z1.FB & Z2.FB & !M) # (Z1.FB & !Z2.FB & M);
Z0.AR = (RESET);
Z0.C = (clk);
Z1 := (!Z0.FB & Z2.FB & M) # (!Z1.FB & Z2.FB & !M) # (Z1.FB & !Z2.FB);
Z1.AR = (RESET);
Z1.C = (clk);
Z2 := (!Z0.FB & !Z1.FB & M) # (Z0.FB & Z1.FB & M) # (!Z2.FB & !M);
Z2.AR = (RESET);
Z2.C = (clk);
Los estímulos generan las siguientes formas de ondas:
Figura 9.64 Formas de ondas contador Gray.
Prof. Leopoldo Silva Bijit.
05-03-2004
215
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO211 Sistemas Digitales
Índice de Figuras.
Figura 9.34 Diagrama en bloque verificador BCD. ................................................................................189
Figura 9.35 Diagrama de estados verificador BCD. ...............................................................................190
Figura 9.36 Diagrama de estados reducido del verificador BCD............................................................191
Figura 9.37 Reconocedor de secuencia 0101. .........................................................................................192
Figura 9.38 Diagrama de estados completo del reconocedor continuo...................................................192
Figura 9.39 Diagrama de estados inicial. ................................................................................................193
Figura 9.40 Diagrama de estados completo. ...........................................................................................193
Figura 9.41 Estados siguientes al estado 001..........................................................................................194
Figura 9.42 Diagrama de estados completo, sin salida. ..........................................................................194
Figura 9.43 Tabla de verdad de la función de salida...............................................................................195
Figura 9.44 Diagrama de estados ejemplo 9.6.5. ....................................................................................195
Figura 9.45 Diagrama de estados ejemplo 9.6.6. ....................................................................................196
Figura 9.46 Diagrama en bloques de máquina vendedora. .....................................................................197
Figura 9.47 Diagrama de estados de máquina vendedora. ......................................................................197
Figura 9.48 Diagrama de estados simplificado. ......................................................................................198
Figura 9.49 Laberinto..............................................................................................................................199
Figura 9.50 Esquema de situaciones. Definición de estados...................................................................200
Figura 9.51 Diagrama de estados para el cerebro de la hormiga.............................................................201
Figura 9.52 Reducción de estados equivalentes......................................................................................201
Figura 9.53 Contador binario ascendente................................................................................................202
Figura 9.54 Contador Gray descendente. ................................................................................................202
Figura 9.55 Diagrama de estados inicial. ................................................................................................203
Figura 9.56 Diagrama de estados final....................................................................................................204
Figura 9.57 Especificaciones de variables. .............................................................................................205
Figura 9.58 Diagrama de estados control lavadora. ................................................................................205
Figura 9.59 Diagrama de estados detector secuencia 0101.....................................................................206
Figura 9.60 Secuencias de entrada, salida y de estados. .........................................................................206
Figura 9.61 Variables internas. Visión del programador. .......................................................................208
Figura 9.62 Simulación funcional. Formas de ondas generadas por estímulos.......................................210
Figura 9.63 Formas de ondas ejemplo 9.7.2. ..........................................................................................213
Figura 9.64 Formas de ondas contador Gray. .........................................................................................215
Prof. Leopoldo Silva Bijit.
05-03-2004
216
Descargar