3. Temas a tratar…
Diagrama ASM (Algorithmic State Machine).
Ing. Ronald Ponguillo Intriago3
4. Generalidades
Los Diagramas de Estados y tablas de Estado Presente
y Siguiente son convenientes para describir el
comportamiento de las MSS que tienen pocas entradas y
pocos estados.
Para las MSS más grandes los diseñadores a menudo utilizan
una forma diferente de representación llamada el Diagrama
de Maquina de Estado Algorítmica (ASM).
Un Diagrama ASM es una especie de diagrama de flujo que
puede ser usada para representar las transiciones de estados y
las salidas generadas por una MSS.
Ing. Ronald Ponguillo Intriago4
5. Ing. Ronald Ponguillo Intriago5
Un Diagrama ASM utiliza tres tipos de elementos:
1. Bloque de Estado.
Nombre
de Estado Código
de
Ta 000 identificación
Salidas incondic.
(modelo Moore)
ejemplo: Clr, Load
Este rectángulo es equivalente a un círculo del Diagrama de Estado.
Dentro del bloque de estado se indican todas las salidas que debe
generar la MSS en este estado que dependen solo de los valores de
variables de Estado Presente, es decir, son salidas incondicionales.
No es necesario indicar Clr = 1, es suficiente solo escribir Clr.
6. Ing. Ronald Ponguillo Intriago6
2. Bloque de Decisión
F VInput
El diamante indica que en un determinado estado la MSS pregunta
por el valor de una de sus entradas y dependiendo del valor de esta
entrada elije cual será el estado siguiente.
7. Ing. Ronald Ponguillo Intriago7
3. Bloque de Salida Condicional.
Salidas condic.
Este oval indica que debe ser generada la salida condicional (modelo
Mealy).
Esta salida depende de los valores de las variables de Estado
Presente y de las entradas de la MSS.
8. Equivalencia entre el Diagrama de
Estados y el Diagrama ASM
Ing. Ronald Ponguillo Intriago8
Diagrama de Estados.
Formato: In / Out1 Out2
0 / 00 1 / 10
d / 00
d / 00
d / 01
a
c b
d
1). Asignamos los
códigos de estados.
y1
0. 2.
a d
1. 3.
y0 c b
9. Ing. Ronald Ponguillo Intriago9
2) Elaboramos la tabla de estados presentes y siguientes.
Est. Pre. Est. Sig.
y2 y1 In Y2 Y1 Out1 Out2
a 0. 0 0 0 0 1 0 0
1. 0 0 1 1 1 1 0
c 2. 0 1 0 0 0 0 0
3. 0 1 1 0 0 0 0
d 4. 1 0 0 0 0 0 1
5. 1 0 1 0 0 0 1
b 6. 1 1 0 1 0 0 0
7. 1 1 1 1 0 0 0
10. Ing. Ronald Ponguillo Intriago10
y1
0 0 1 0 Y1 = /y1•/y0•In + y1•y0
In 1 0 1 0
y0 y1
1 0 0 0 Y0 = /y1•/y0
In 1 0 0 0
y0
y1
0 0 0 0 Out1 = /y1•/y0•In
In 1 0 0 0
y0
y1
0 0 0 1 Out2 = y1•/y0
In 0 0 0 1
y0
3). Implementamos los mapas para las variables de estado
siguiente Y1 y Y0 y las Out1 y Out2.
11. Ing. Ronald Ponguillo Intriago11
Diagrama ASM.
Ta
F V
Tc
Tb
Td
In
Out1
Out2
1). Asignamos los
mismos Códigos de
Estados.
y1
0. 2.
Ta Td
1. 3.
y0 Tc Tb
12. Ing. Ronald Ponguillo Intriago12
2). Implementamos los mapas del Decodificador de Estado Siguiente.
y1
0. 2.
In 0
1. 3. Y1
y0 0 1
y1
0. 2.
1 0
1. 3. Y0
y0 0 0
Para llenar los mapas del Decodificador de Estado Siguiente se debe
analizar los cambios de variables de estado en cada estado del
Diagrama ASM.
Es aconsejable llenar al mismo tiempo las celdas correspondientes al
mismo estado en todos los mapas.
13. Ing. Ronald Ponguillo Intriago13
3). Escribimos las ecuaciones de salida.
Tenemos dos salidas de las cuales la salida Out1 es condicional y
la salida Out2 es incondicional.
Out1 = Ta • In = /y1• /y0• In
Out2 = Td = y1• /y0
14. EJEMPLO
Ing. Ronald Ponguillo Intriago14
Dado el Diagrama de
Estados de una MSS:
Transfórmalo en un
Diagrama ASM.
Impleméntalo con flip-flops,
mux, decodificador y puertas
lógicas adicionales
necesarias, asumiendo el
código de estados dado.
Resetn
0Ø/000
1Ø/000
1Ø/000
00/000
01/000
Ø1/100
Ø0/000 Ø0/100 Ø1/000
Ø1/100
Ø0/100
Ø0/001 1/010
a
d
b
c
e
f
y2y1
y0 00 01 11 10
0 0. a 2. e 6. Ø 4. f
1 1. b 3. c 7. Ø 5. d
Formato: Start Data / Err One Zero
15. Resolución.
Ing. Ronald Ponguillo Intriago15
Resetn
Ta 000
0
Tb 1 001
1
0
0 1
Tc 011 Td 101
1 0
Te 0 010 Tf 1 100
0 1 0 1
Start
Err
Start
Data
Data Data
Err
Err
Data Data
Zero One
Err
16. Ing. Ronald Ponguillo Intriago16
y2
0. 0 2. Data 6. Ø 4. 0 Y2
y0 1.Startn*Data 3. Data 7. Ø 5. Data
y1
y2
0. 0 2. 0 6. Ø 4. Datan Y1
y0 1.Startn*Datan 3. Datan 7. Ø 5. Datan
y1
y2
0. Start 2. Data 6. Ø 4. Datan Y0
y0 1. 1 3. Data 7. Ø 5. Datan
y1
Zero = Te Datan
One = Tf Data Err = (Tc + Te) Data + (Td + Tf) Datan
18. Diseño de una MSS con Diagrama
ASM.
Ing. Ronald Ponguillo Intriago18
Ejemplo. Diseñar una MSS que funciona como Circuito de Cuatro
Luces y tiene la entrada Start y la entrada X representadas con dos
botoneras y cuatro salidas A, B, C y D representadas con cuatro
diodos LED.
El circuito debe funcionar de la siguiente manera:
Inicialmente se debe presionar y soltar la botonera de la entrada
Start.
Luego se presiona la botonera X. Se prende el LED de la salida A y
se mantiene prendido mientras la botonera X sigue presionada. Al
soltar la botonera X, el LED A se apaga y se prende el LED B, y así
sucesivamente hasta el LED D. Al apagarse el LED D el circuito
regresa al estado inicial a esperar que la botonera de la entrada Start
se presione de nuevo.
19. Ing. Ronald Ponguillo Intriago19
Si se presiona la botonera X por segunda vez, mientras la luz esta
desplazándose de A hasta D, la luz regresa al LED anterior y este
LED permanece prendido mientras se mantenga presionada la
botonera X.
Al soltarla la luz sigue desplazándose hacia LED D.
Start A
Controlador B
X del circuito C
de cuatro luces D
Clock
Resetn
20. Ing. Ronald Ponguillo Intriago20
Resetn
Ta
0
Tb 1
1
Tc 0
0
Td 1
1
Te 0
1
Tf 0
Th
1
0 1
Tg 0
Ti
0 1
0 1
Start
B
A
Start
B
X
X
X
X
X
Cnt=15
X
C
D
C
24. Diseño del circuito Controlador con
método tradicional.
Ing. Ronald Ponguillo Intriago24
1). Una vez que tenemos el
Diagrama ASM diseñada, se
requiere asignar el código de
identificación para cada
estado.
El numero de bits de código
depende de del numero de
estados.
Para asignar a los siete
estados los códigos diferente
se requiere el código de tres
bits.
Ta
F
Tb V
Tb
V
F
Tc
F
Tc
V
F
F V
Td Tf
F V
F F
Te V Tg V
MP
MP
A<B
A=B
RN DP
CR PDR
Dec Acc Clear Acc
25. Ing. Ronald Ponguillo Intriago25
Este significa que Bloque de Memoria de Estados debe tener tres flip-flops.
En asignación de códigos de estados para el Diagrama ASM se debe aplicar
las mismas reglas que en asignación de código en el Diagrama de Estados.
Es decir, hay que tratar de escoger los códigos de tal manera, para que el
código entre un estado y el siguiente tenga la distancia unitaria.
Esta regla proporciona menor tamaño del Decodificador de Estado
Siguiente y mayor estabilidad de funcionamiento del circuito.
Asignaremos los códigos de la siguiente manera:
y2
0. Ta 2. Td 6. Tf 4. Tg
y0 1. Tb 3. Tc 7. Te 5. Td
y1
26. Ing. Ronald Ponguillo Intriago26
y2
0. 0 2. CR 6. 1 4. 0 Y2
y0 1. 0 3. A=B 7. 0 5. Ø
y1
y2
0. 0 2. 1 6. /PDR 4. 0 Y1
y0 1. /CP 3. /A<B 7. 1 5. Ø
y1
y2
0. CP 2. CR 6. 0 4. 0 Y0
y0 1. 1 3. 0 7. 1 5. Ø
y1
2). Elaborar los mapas del Decodificador de Estado Siguiente.
Se puede simplificar los
mapas e implementar
las expresiones para
Y2, Y1 y Y0 utilizando
puertas lógicas.
Pero lo mas practico en
este caso es utilizar los
Multiplexores de 8-a-1
cuyas entradas deben
ser conectadas como lo
indican los mapas.
27. Ing. Ronald Ponguillo Intriago27
3). El circuito Controlador debe generar cuatro salidas
incondicionales.
Ecuaciones del Decodificador de Salida:
RN = Td = /y2 • y1 • /y0
DA = Te = y2 • y1 • y0
DP = Tf = y2 • y1 • /y0
CA = Tg = y2 • /y1 • /y0
Las expresiones de salida también pueden ser implementadas
utilizando puertas lógicas. Pero es mas practico usar un
Decodificador de 3-a-8.
28. Ing. Ronald Ponguillo Intriago28
4). Utilizando el Editor Grafico ingresamos el circuito en software Quartus II,
compilamos en modo Funcional y creamos Default Symbol del circuito
Controlador que luego podemos utilizar para implementar la Partición
Funcional del Sistema Digital diseñada.
Diagramas de Tiempo.