Está en la página 1de 20

Tomado del libro: Sistemas Digitales y sus Aplicaciones. Gerardo Mino et al.

Editorial
BUAP. 2016

Capitulo 7 Máquinas de estados finitos


Ana María Rodríguez Domínguez, Selene Edith Maya Rueda, Gerardo Mino Aguilar,
Ricardo Álvarez González, Rodrigo Lucio Maya Ramírez, José Francisco Portillo Robledo

7.1 Síntesis de Máquinas Secuenciales


Una vez diseñado el algoritmo de solución del problema y expresado de manera gráfica o no
gráfica, se debe realizar la síntesis, es decir, llegar al circuito digital que realizará la función
deseada; para ello se puede utilizar alguno de los siguientes métodos de síntesis o una mezcla
de ellos: tradicional, multiplexores, one-hot, ROM y dispositivos programables. Sin importar
qué tipo de descripción se tenga (diagrama de estados, diagrama MDS o carta ASM) se puede
aplicar cualquiera de los métodos de síntesis.

Como ejemplo se tomará la descripción de la figura 7-17 para ilustrar la síntesis por los cinco
métodos.

La figura 7-17 describe por medio de una carta ASM el control para un motor de pasos
unipolar con una secuencia normal de pasos completos que incluye una línea de control de
avance (PAUSA) y una línea para indicar la dirección del movimiento (DIR). La frecuencia
del movimiento va de acuerdo a la señal de CLK. El control produce una salida M de 4 bits
para dos puentes H (L293B) que darán el voltaje y corriente necesaria para controlar las
bobinas del motor; se tienen dos LEDs: uno (LU) para indicar que ya se ha completado la
secuencia de 4 pasos en movimiento ascendente y otro LED (LD) para indicar lo mismo pero
cuando va en la dirección contraria. Su diagrama esquemático se muestra en la figura 7-16.

Figura 7-16 Diagrama esquemático del control de un motor de pasos unipolar.


Figura 7-17 Carta ASM que genera una secuencia normal de pasos completos de un motor de pasos unipolar.

7.1.1 Método Tradicional


Este método es muy simple y se pueden utilizar compuertas y flip flops de baja escala de
integración. La idea es determinar primero cuántos flip flops y de qué tipo se utilizarán y
luego obtener las ecuaciones para los dos decodificadores, el de estado presente y el de
salidas.

A partir de la descripción realizada en la figura 7-17, se llena una tabla de estados (Tabla 7-
1).

Es imprescindible que a los estados se les asigne un código binario (el código de estado), que
es el valor que toma cada una de las variables de estado para un estado determinado. La
cantidad de variables de estado(n) o número de bits del código de estado depende
directamente del número de estados (N) que tenga el sistema siendo N < 2n. Para este ejemplo
en particular, al tener 4 estados, se requiere de 2 variables de estado que llamaremos Q1 y Q0.
La asignación del código a cada estado en particular puede ser arbitraria, en este método sin
embargo, determinadas elecciones pueden resultar en una mayor cantidad de compuertas; por
ejemplo se procura que parte del código coincida con los valores de las salidas para reducir
el decodificador de salida o bien que los estados siguientes tengan códigos que difieran en
sólo un bit para reducir el decodificador de estado siguiente. En este ejemplo se ha asignado
el código de estado de manera que coincida con los dos bits menos significativos de la salida
M para cada estado.

Estado Entradas Estado Salidas


Presente Siguiente
Q1t Q0t Paus DIR Q1t+1 Q0t+1 LU LD M
a
0 0 0 0 0 1 0 0 1100
0 1 1 0 0 0 1100
1 0 0 0 0 0 1100
1 1 0 0 0 0 1100
0 1 0 0 1 1 0 0 1001
0 1 0 0 1 0 1001
1 0 0 1 0 0 1001
1 1 0 1 0 0 1001
1 0 0 0 0 0 0 1 0110
0 1 1 1 0 0 0110
1 0 1 0 0 0 0110
1 1 1 0 0 0 0110
1 1 0 0 1 0 0 0 0011
0 1 0 1 0 0 0011
1 0 1 1 0 0 0011
1 1 1 1 0 0 0011
Tabla 7-1 Tabla de estados del ejemplo del control del motor de pasos.

Las columnas de la tabla de estados de la Tabla 7-1 indican estado presente y entradas
externas como las variables que determinan al estado siguiente y a las salidas, ya que de
acuerdo a la figura 7-1, las entradas a ambos bloques decodificadores son precisamente las
entradas externas y el estado presente.

Para el llenado de la tabla se requiere observar la figura 7-17, se elige un primer estado el
cual será tratado como el estado presente y de acuerdo a las combinaciones de entradas se
anota a qué estado pasará en la columna del estado siguiente y qué salida produce en ése
estado y con ésa condición de entrada. Una vez analizado el primer estado, se procede a tomar
otro estado como presente y se hace el mismo proceso y así hasta terminar con cada uno de
los estados.

Observe la diferencia entre las salidas condicionales (LU, LD) y las no condicionales (M).
Las primeras dependen del estado presente y ciertas condiciones de las entradas, no se
producen durante un estado completo, sólo en partes de él; las salidas no condicionales se
producen durante todo el estado completo sin importar las condiciones de las entradas.

A continuación se obtienen las ecuaciones para las variables de estado siguiente y las salidas,
puede usarse cualquier método de reducción como mapas de Karnaugh o suma de
minitérminos o cualquier otro (fig. 7-18).
Debe tenerse cuidado al llenar los mapas ya que puede ser que la tabla de estados no se
presente en estricto orden binario o bien que existan combinaciones no ocupadas; por
ejemplo, suponga que el sistema solamente tuviera 3 estados, entonces habría un estado no
ocupado y no todas las casillas tendrán un valor; en estos casos el diseñador debe decidir qué
valor será el adecuado para el estado siguiente y para las salidas; usualmente a las salidas se
les asigna 0 y se envía al estado inicial o a un estado que sí esté ocupado. Es recomendable
reducir al mínimo las expresiones obtenidas si así lo desea.

Q1t Q0t

Pausa DIR 00 01 11 10

00 0 1 1 0

01 1 0 0 1

11 0 0 1 1

10 0 0 1 1

Q1t+1 = Q0t·Pausa·DIR + Q0t·Pausa·DIR + Q1t·Pausa

Q1t Q0t

Pausa DIR 00 01 11 10

00 1 1 0 0

01 0 0 1 1

11 0 1 1 0

10 0 1 1 0

Q0t+1 = Q1t·Pausa·DIR + Q1t·Pausa·DIR + Q0t·Pausa

LU = Q1t Q0t Pausa DIR LD = Q1t Q0t Pausa DIR


Q1t Q0t Q1t Q0t

Pausa DIR 00 01 11 10 Pausa DIR 00 01 11 10

00 1 1 0 0 00 1 0 0 1

01 1 1 0 0 01 1 0 0 1

11 1 1 0 0 11 1 0 0 1

10 1 1 0 0 10 1 0 0 1

M(3) = Q1t M(2) = Q0t

Q1t Q0t Q1t Q0t

Pausa DIR 00 01 11 10 Pausa DIR 00 01 11 10

00 0 0 1 1 00 0 1 1 0

01 0 0 1 1 01 0 1 1 0

11 0 0 1 1 11 0 1 1 0

10 0 0 1 1 10 0 1 1 0

M(1) = Q1t M(0) = Q0t

Figura 7-18 Mapas de Karnaugh y ecuaciones del decodificador de estado siguiente y del decodificador de salidas.

Lo único que resta es dibujar el circuito considerando lo siguiente:

 Tanto en éste como en los métodos siguientes, la entrada de reloj es común a todos
los flip flops y se conecta a una señal CLK (binaria y periódica), con el fin de
proporcionar la sincronía al sistema, ya que los cambios de estado se darán en el
instante del flanco activo (puede ser el de subida o el de bajada) del reloj.
 Ya que se trata de una máquina secuencial síncrona se utilizan los flip flops como
elementos de memoria
 El número de flip flops se determina de acuerdo con la cantidad de variables de
estado, en este caso particular se tienen 2 variables de estado (Q1 Q0) para codificar
los 4 estados, por lo tanto se usarán 2 flip flops
 El tipo de flip flops a usar dependerá de la elección del diseñador, sin embargo, al
usar flip flops de otros tipos diferentes al tipo D, hay que modificar la tabla de estado
y/o las ecuaciones para los decodificadores. Se mostrará un ejemplo más adelante
 Los decodificadores, como bloques combinacionales que son, pueden construírse con
cualquier elemento y técnica conocidos, en este caso se muestran con compuertas
básicas pero pueden utilizarse multiplexores o memorias ROM como se mostrará en
los siguientes métodos
 El decodificador de estado siguiente produce las entradas de los flip flops así que va
al principio; después de los flip flops se conecta el decodificador de salida, como se
puede observar en la figura 7-19

7-19 Diagrama del circuito obtenido por el método tradicional con flip flops D.

7.1.2 Método Tradicional con otros tipos de flip flops


En el caso de usar flip flops distintos al D, se utiliza su tabla de transiciones o excitaciones
para modificar la tabla de estados. Por ejemplo si se quieren usar flip flops tipo JK hay que
revisar su tabla de transiciones (fig. 7-20).

7-20 Flip flop JK a) diagrama esquemático b) tabla característica c) tabla de transiciones o excitaciones.

Debido a que ahora el estado siguiente, es decir las entradas a la memoria ya no son Q0t+1 ni
Q1t+1 sino las entradas J y K de cada uno de los flip flops, se deben colocar estas columnas
en la tabla; los valores correspondientes se obtienen combinando la tabla de estados con la
tabla de transiciones. Por ejemplo, observe en la Tabla 7-2 que en el primer renglón se tiene
Q1t = 0 y Q1t+1 = 0, entonces se buscan esos valores en la figura 21 c) y se encuentra en el
primer renglón que debe suceder que J1 = 0 y K1 = X, de la misma forma se observa que Q0t
= 0 y Q0t+1 = 1 y de la tabla de transiciones del flip flop JK se obtiene que los valores que
deben tomar J y K son J0 = 1 y K0 = X, así que estos datos se colocan en las columnas
correspondientes al primer renglón de la tabla de estados. Lo mismo se hace con el resto de
los renglones (Tabla7-2); posteriormente se obtienen los mapas, expresiones y el circuito
para J1, K1, J0 y K0 (fig. 7-21 y 7-22).

Estado Entradas Estado Siguiente Salidas


Presente
Q1t Q0t Pausa DIR Q1t+1 Q0t+1 J1 K1 J0 K0 LU LD M
0 0 0 0 0 1 0 X 1 X 0 0 1100
0 1 1 0 1 X 0 X 0 0 1100
1 0 0 0 0 X 0 X 0 0 1100
1 1 0 0 0 X 0 X 0 0 1100
0 1 0 0 1 1 1 X X 0 0 0 1001
0 1 0 0 0 X X 1 1 0 1001
1 0 0 1 0 X X 0 0 0 1001
1 1 0 1 0 X X 0 0 0 1001
1 0 0 0 0 0 X 1 0 X 0 1 0110
0 1 1 1 X 0 1 X 0 0 0110
1 0 1 0 X 0 0 X 0 0 0110
1 1 1 0 X 0 0 X 0 0 0110
1 1 0 0 1 0 X 0 X 1 0 0 0011
0 1 0 1 X 1 X 0 0 0 0011
1 0 1 1 X 0 X 0 0 0 0011
1 1 1 1 X 0 X 0 0 0 0011
Tabla 7-2 Tabla de estados por el método tradicional con flip flops JK.

Q1t Q0t

Pausa DIR 00 01 11 10

00 0 1 X X

01 1 0 X X

11 0 0 X X

10 0 0 X X

J1 = Q0t·Pausa·DIR + Q0t·Pausa·DIR = Pausa (Q0t xor DIR)


Q1t Q0t

Pausa DIR 00 01 11 10

00 X X 0 1

01 X X 1 0

11 X X 0 0

10 X X 0 0

K1 = Q0t·Pausa·DIR + Q0t·Pausa·DIR = Pausa (Q0t xor DIR)

Q1t Q0t

Pausa DIR 00 01 11 10

00 1 X X 0

01 0 X X 1

11 0 X X 0

10 0 X X 0

J0 = Q1t·Pausa·DIR + Q1t·Pausa·DIR = Pausa (Q1t xor DIR)

Q1t Q0t

Pausa DIR 00 01 11 10

00 X 0 1 X

01 X 1 0 X

11 X 0 0 X

10 X 0 0 X
K0 = Q1t·Pausa·DIR + Q1t·Pausa·DIR = Pausa (Q1t xor DIR)
Figura 7-21 Mapas el método tradicional con flip flops JK.

Note que sólo se modificó el decodificador de estado siguiente, pero el de salida permanece
sin cambio.

Figura 7-22 Diagrama del circuito obtenido por el método tradicional con flip flops JK.

7.1.3 Método por Multiplexores


En este método de síntesis se utilizan dispositivos MSI (Medium Scale Integration) como
multiplexores para generar el decodificador de entradas y opcionalmente demultiplexores
para el decodificador de salidas (fig. 7-23).

7-23 Diagrama de bloques de una máquina secuencial por el método de multiplexores.


Estado Estado Condición para
Presente Siguiente la transición
Q1t Q0t Q1t+1 Q0t+1
0 0 0 0 Pausa
1 0 Pausa’·DIR
0 1 Pausa’·DIR’
0 1 0 1 Pausa
0 0 Pausa’·DIR
1 1 Pausa’·DIR’
1 0 1 0 Pausa
1 1 Pausa’·DIR
0 0 Pausa’·DIR’
1 1 1 1 Pausa
0 1 Pausa’·DIR
1 0 Pausa’·DIR’
Tabla 7-3 Tabla para el ejemplo del control del motor de pasos por el método de multiplexores.

A continuación se mostrará, usando el mismo ejemplo del control del motor de pasos, este
método de síntesis suponiendo que se usarán flip flops tipo D como elementos de memoria.
A partir de la figura 7-17 se deriva una tabla (7-3) con el fin de obtener el bloque
decodificador de estado siguiente.

'La tabla de la figura 7-3 tiene 3 columnas, la primera para escribir un estado presente, la
segunda columna es para escribir los estados siguientes a ése estado presente, es decir, los
estados a los que puede pasar y la tercera columna es para escribir la forma en que intervienen
las entradas para transitar de ese estado presente al estado siguiente determinado. Por ejemplo
al elegir el primer estado, el 00, se observa en la figura 7-17 que en el siguiente flanco activo
del reloj puede pasar al mismo estado 00 si se cumple que la señal de entrada Pausa sea
activa, si no entonces hay que observar la condición DIR, si ésta es 0 entonces el estado
siguiente será 01, es decir la condición para pasar del estado 00 al estado 01 es que Pausa sea
0 y que DIR sea 0, lo cual equivale a que la expresión Pausa’·DIR’ sea verdadera; finalmente,
para terminar de analizar el estado 00 se observa que con la condición Pausa’·DIR el estado
siguiente será el 10. El mismo procedimiento se realiza con el resto de los estados
analizándolos como estado presente uno a uno.

Para la implementación de esta tabla con multiplexores tendremos que hacer la siguiente
interpretación:

 las variables de estado presente (en este caso Q1t y Q0t) corresponden a las líneas de
selección o selectores de los multiplexores (S1 y S0). Este parámetro nos dice el
tamaño de los multiplexores, es decir, si se tienen 2 variables, como en este ejemplo,
se tendrán 2 multiplexores con dos líneas selectoras y 22 = 4 entradas a los
multiplexores, en resumen se requieren 2 multiplexores de 4 a 1.
 la salida de cada multiplexor es la entrada D del flip flop correspondiente
 las entradas de cada multiplexor, por tanto, se obtienen de las columnas del estado
siguiente multiplicados por la condición para la transición. Si existe más de una
condición, entonces se suman todas.

En el caso particular del ejemplo que se está trabajando, se tiene la entrada 0 en las líneas en
que Q1t Q0t = 00, la entrada 1 (con 01), la entrada 2(con 10) y la entrada 3 (con 11) y las
ecuaciones para cada entrada del multiplexor (mux1) que corresponderá al flip flop que
genera la variable de estado Q1, se muestran a continuación y van de acuerdo a la columna
Q1t+1:

mux1(0) = 0·Pausa + 1·Pausa’·DIR+ 0·Pausa’·DIR’ = Pausa’·DIR


mux1(1) = 0·Pausa + 0·Pausa’·DIR+ 1·Pausa’·DIR’ = Pausa·DIR
mux1(2) = 1·Pausa + 1·Pausa’·DIR+ 0·Pausa’·DIR’ = Pausa + Pausa’·DIR = Pausa + DIR
mux1(3) = 1·Pausa + 0·Pausa’·DIR+ 1·Pausa’·DIR’ = Pausa + Pausa’·DIR’ = Pausa + DIR’

De la misma manera se toma la columna Q0t+1 para obtener las entradas al multiplexor mux0:

mux0(0) = 0·Pausa + 0·Pausa’·DIR+ 1·Pausa’·DIR’ = Pausa’·DIR’


mux0(1) = 1·Pausa + 0·Pausa’·DIR+ 1·Pausa’·DIR’ = Pausa +Pausa’·DIR’ = Pausa + DIR’
mux0(2) = 0·Pausa + 1·Pausa’·DIR+ 0·Pausa’·DIR’ = Pausa’·DIR
mux0(3) = 1·Pausa + 1·Pausa’·DIR+ 0·Pausa’·DIR’ = Pausa + Pausa’·DIR = Pausa + DIR

Se observa que se han utilizado propiedades del álgebra booleana para reducir la cantidad de
compuertas a usar.

El decodificador de salida puede implementarse con multiplexores de manera similar al


proceso anterior, también se pueden utilizar compuertas como en el método tradicional o
algunos otros elementos según convenga. Las expresiones booleanas para las salidas se
pueden obtener directamente de la carta ASM o diagrama de estados o MDS según sea el
caso.

Las salidas no condicionales se activan en el estado en que se presentan sin que intervenga
ninguna entrada. Para el ejemplo del control del motor de pasos (fig. 17), la salida M de 4
bits es no condicional y se debe tratar a cada bit independientemente, sumando los estados
en los que está presente. Las ecuaciones para cada uno de sus bits son:

M(3) = Q1t·Q0t + Q1t·Q0t = Q0t (ya que M(3) se activa en el estado 00 y en el 01)
M(2) = Q1t·Q0t + Q1t·Q0t = Q1t (ya que M(2) se activa en el estado 00 y en el 10)
M(1) = Q1t·Q0t + Q1t·Q0t = Q1t (ya que M(1) se activa en el estado 10 y en el 11)
M(0) = Q1t·Q0t + Q1t·Q0t = Q0t (ya que M(0) se activa en el estado 01 y en el 11)

Las salidas condicionales se activan bajo condiciones determinadas de entrada que se dan en
un estado, así que intervienen tanto el código del estado como los valores de las entradas.
Para el mismo ejemplo (fig.7-17), Lu y LD son salidas condicionales, su expresión se obtiene
multiplicando el estado en donde se presentan por la condición de entrada que les precede.
Así, se tiene que:

LU = Q1t·Q0t·Pausa·DIR (ya que se activa en el estado 01 con la entrada Pausa inactiva


y DIR activa)

LD = Q1t·Q0t·Pausa·DIR (ya que se activa en el estado 10 con la entrada Pausa inactiva


y DIR inactiva también)

Ahora que se tienen ya las expresiones para ambos decodificadores, se puede obtener el
circuito mostrado en la figura 7-24.

El tamaño y número de multiplexores, para el decodificador de estado siguiente en este


método, depende directamente del número de estados y no del número de entradas.

Figura 7-24 Diagrama del circuito para el ejemplo del control del motor de pasos por el método de multiplexores.

7.1.4 Método ROM


Éste método de síntesis, como su nombre lo indica utiliza una memoria de sólo lectura
programable que puede ser ROM, PROM, EPROM o E2PROM para realizar la parte
combinacional de la máquina de estados, es decir los decodificadores de estado siguiente y
de salidas. Ya que este tipo de dispositivos en realidad no contienen elementos de memoria
como flip flops o latches, éstos deberán conectarse externamente. El diagrama de bloques de
la figura 7-25 muestra la conexión entre el elemento combinacional (ROM) y el elemento de
memoria (flip flops).

Como se observa en la figura 7-25, lo único que falta por hacer es determinar cuántos flip
flops se requieren y los valores con los que se programa la PROM antes de conectar el
circuito.
Figura 7-25 Diagrama de bloques de una máquina secuencial por el método de ROM.

Ya que las memorias tipo ROM se pueden considerar como tablas de búsqueda (look up
tables), las líneas de dirección (address bus) indican la localidad de donde se va a tomar el
dato que se presenta en las salidas (data bus). Así que se necesita hacer una tabla indicando
el número de la localidad y el dato que debe contener. Para ello se hará uso de la tabla de
estados del sistema con la única modificación de transformar las salidas de los
decodificadores en una cantidad de dos dígitos hexadecimales para poder generar el archivo
de programación para la PROM.

La tabla 7-4 es para el ejemplo del motor de pasos que se está trabajando, es la misma que la
de la figura 7-18, del método tradicional, sólo se han agregado dos renglones y dos columnas.
Es muy importante que la tabla se encuentre en estricto orden numérico. El primer renglón
indica ahora cuáles columnas corresponden a las líneas de entrada de dirección (Address) y
cuáles a las líneas de salida de datos (Data) de la memoria ROM, PROM, EPROM o
E2PROM que se utilizará. Como se indica en el tercer renglón, el estado presente y las
entradas al sistema corresponderán, en el orden indicado por la tabla, a los bits del bus de
direcciones (A0, A1, …, An); por otra parte, las salidas del sistema y el estado siguiente se
toman de los bits del bus del datos (D0, D1, …, Dm) en el orden correspondiente. La primera
columna indica en decimal la dirección apuntada, es decir, la localidad de la memoria que es
indicada por las líneas A. La última columna es la conversión de los datos (Data) a código
hexadecimal de dos dígitos.
Direcciones (Address) Datos (Data)

Estado Entradas Estado Salidas


Presente Siguiente
Localidad HEX
A3 A2 A1 A0 D7 D6 D5 D4 D3D2D1D0

Q1t Q0t Paus DI Q1t+1 Q0t+1 LU LD M


a R

0 0 0 0 1 0 0 1100 4C

1 0 1 1 0 0 0 1100 8C
0 0
2 1 0 0 0 0 0 1100 0C

3 1 1 0 0 0 0 1100 0C

4 0 0 1 1 0 0 1001 C9

5 0 1 0 0 1 0 1001 29
0 1
6 1 0 0 1 0 0 1001 49

7 1 1 0 1 0 0 1001 49

8 0 0 0 0 0 1 0110 16

9 0 1 1 1 0 0 0110 C6
1 0
10 1 0 1 0 0 0 0110 86

11 1 1 1 0 0 0 0110 86

12 0 0 1 0 0 0 0011 83

13 0 1 0 1 0 0 0011 43
1 1
14 1 0 1 1 0 0 0011 C3

15 1 1 1 1 0 0 0011 C3
Tabla 7-5 Tabla de estados para la síntesis del ejemplo del control del motor de pasos por método ROM.

Se requieren tanto la primera como la última columna para crear el archivo hexadecimal para
programar a la memoria PROM o EPROM o E2PROM que elija. En este momento ya se
observa que el tamaño mínimo necesario de la ROM para alojar este sistema, es una que
tenga al menos 16 localidades (de la 0 a la 15) y 8 bits de salida de datos (de 0 a 7), así que
debe ser una memoria de tamaño mínimo de 16 x 8 bits.

Una vez programada la memoria se conecta como muestra el diagrama de la figura 7-25. Este
método tiene la ventaja de utilizar muy pocos chips de circuitos integrados; la cantidad de
estados y de entradas está limitada por el número de entradas de la ROM.

Figura 7-26 Diagrama del circuito para el ejemplo del control del motor de pasos por el método ROM.

7.1.5 Método One Hot


En los tres métodos presentados anteriormente, la lógica del estado siguiente para todos los
estados se encuentra fusionada en un mismo decodificador, de manera que si en la
implementación existe un error, afectará probablemente a todos los estados y será difícil
corregirlo; el método One Hot (uno a la vez) en cambio, maneja cada estado de manera
independiente, por lo que:

 se utiliza un flip flop para cada estado


 es necesario que los flip flops tengan una entrada de borrado (CLR o reset) común
para inicializar la máquina de estados
 se diseña un decodificador de estado siguiente para cada estado con su propio
hardware independiente
 no se asigna código a los estados, solamente se identifican por nombre
 solamente un estado (flip flop) se activa a la vez, no se pueden tener dos o más estados
activos al mismo tiempo y tampoco es posible que todos estén inactivos

La figura 7-27 muestra un esquema de la síntesis de las máquinas de estados por el método
One Hot.
Figura 7-27 Diagrama de bloques de una máquina secuencial por el método de One Hot para n estados

En la figura 7-28 se muestra la carta ASM del ejemplo del motor de pasos con los nombres
que se ha asignado a los estados. A continuación se llena la tabla 7-6 que contiene tres
columnas como en el método del multiplexor, pero ahora se inicia con un estado en la
columna de estado siguiente, entonces se revisan cuáles son los estados de donde procede y
se escriben en la columna de estado presente, la condición con la que transitan se escribe en
la tercera columna. Por ejemplo en el primer renglón se toma el estado A como siguiente y
se observa en la carta ASM que procede del mismo estado A bajo la condición de que la
entrada Pausa sea verdadera, también procede del estado B cuando, estando en B se cumple
que Pausa sea falsa y DIR sea verdadera, por último, también procede del estado C cuando,
estando en C, se cumple que tanto Pausa como DIR sean falsas; por lo tanto los estados
presentes de A son A, B y C con sus respectivas condiciones. Este mismo procedimiento se
realiza con cada uno de los estados.

Figura 7-28 Carta ASM del ejemplo del motor de pasos unipolar con los nombres de los estados.
Estado Estado Condición para la
Siguiente Presente transición

At Pausa

At+1 Bt Pausa’·DIR

Ct Pausa’·DIR’

Bt Pausa

Bt+1 Dt Pausa’·DIR

At Pausa’·DIR’

Ct Pausa

Ct+1 At Pausa’·DIR

Dt Pausa’·DIR’

Dt Pausa

Dt+1 Ct Pausa’·DIR

Bt Pausa’·DIR’
Tabla 7-6 Tabla para el ejemplo del control del motor de pasos por el método de One Hot.

Para distinguir los estados presente y siguiente, se colocan los subíndices t y t+1 según
corresponda.

Las ecuaciones para cada uno de los decodificadores de estado siguiente se obtienen a partir
de la tabla de la tabla 7-6 de manera muy sencilla, el estado siguiente es igual a la suma de
sus estados presentes multiplicados por su condición para la transición. Así se tiene que para
el ejemplo, las ecuaciones de estado siguiente son:

At+1 = At·Pausa + Bt·Pausa·DIR + Ct·Pausa·DIR


Bt+1 = Bt·Pausa + Dt·Pausa·DIR + At·Pausa·DIR
Ct+1 = Ct·Pausa + At·Pausa·DIR + Dt·Pausa·DIR
Dt+1 = Dt·Pausa + Ct·Pausa·DIR + Bt·Pausa·DIR

El decodificador de salida se encuentra de manera directa a partir de la carta ASM o diagrama


de estados o MDS.

Las salidas no condicionales, al activarse en el estado al que corresponden, solamente son la


suma de los estados en los que se presentan; para el ejemplo:
M(3) = At + Bt ya que M(3) se activa en los estados A y B
M(2) = At + Ct ya que M(2) se activa en los estados A y C
M(1) = Ct + Dt ya que M(1) se activa en los estados C y D
M(0) = Bt + Dt ya que M(0) se activa en los estados B y D

Las salidas condicionales resultan de la multiplicación del estado por la condición de entrada
que las genera. Del ejemplo se tiene que:

LU = Bt·Pausa·DIR
LD = Ct·Pausa·DIR

Por lo tanto, el circuito queda como indica la figura 7-29.

Figura 7-29 Diagrama del circuito para el ejemplo del control del motor de pasos por el método One Hot

Se observa en la figura 7-29 que en el estado A, tanto la entrada como la salida del flip flop
están negados y solamente en ese estado ¿cuál es la razón?

Recuerde que al describir este método se mencionó que el nombre de One Hot proviene del
hecho de que solamente un estado se activa a la vez, no dos estados activos, ni cero estados
activos, debe ser uno y solamente uno. También se mencionó que se requiere de una entrada
de borrado o clear o reset para inicializar la máquina, es decir, para llevarla al estado inicial,
que para el ejemplo es el estado A.

Pues bien, suponga que en el diagrama del circuito tomamos el estado A directamente de la
salida Q sin negar, lo mismo que el resto de los estados y que la entrada del flip flop tampoco
tiene inversor. En este caso, al aplicar un 0 en la terminal CLR. L, los flip flops entrarían en
el estado de RESET y la salida Q de todos ellos sería 0, lo cual indicaría que ningún estado
está activo y eso no puede ser. Si queremos que con la activación de la señal CLR. L el circuito
active el estado A, hay que tomarlo de la salida Q negada, en donde se tendrá un 1 y por lo
tanto la indicación de que el estado A está activo. Y para no modificar la ecuación que genera
la entrada del flip flop, hay que negar también la entrada, ya que el negado del negado de una
señal corresponde a la señal original.

Aunque se aprecia que el hardware es mayor, facilita la detección de errores en la


implementación del sistema, por ejemplo, si dos estados están activos a la vez, se debe revisar
solamente el hardware del estado que se sabe que no debería activarse.

7.1.6 Método por Dispositivos Programables


Al hablar de dispositivos lógicos programables en este texto, se hace referencia a los SPLDs
(Dispositivos Lógicos Programables Simples –como las GAL y las PALCE), a los CPLDs
(Dispositivos Lógicos Programables Complejos) y a los FPGAs (Arreglos de Compuertas
Programables por Campo), que si bien son distintos en su arquitectura y en su capacidad,
contienen todos los elementos necesarios para configurar una máquina de estados, a saber:
elementos combinacionales, elementos de memoria y retroalimentación.

Dado que existe una gran cantidad de software y de hardware disponible en el mercado para
trabajar con los dispositivos de lógica programable, en este apartado solamente se enumeran
los pasos generales que deben seguirse.

1. Recibir las especificaciones del diseño


o Entender perfectamente las necesidades del problema que se quiere resolver y
determinar si el proceso es secuencial o no lo es.
o Determinar qué partes son digitales y qué bloques deben realizarse fuera del
control, es decir, diferenciar entre la parte de control del proceso que puede ser
digital y las partes que constituyen los elementos a controlar o los que
proporcionan alguna información (sensores, transductores, interfaces
analógicas/digitales, etapas de potencia, etc)
o Evaluar diferentes opciones de solución y elegir la que convenga más según el
costo, el espacio, el consumo de potencia u otros criterios.
2. Determinar con exactitud las entradas y salidas del sistema
o Cuántas son y de qué tipo cada una, por ejemplo, ver si son grupos de señales
(buses) o señales simples, si deben ser de tercer estado o solamente binarias, etc.
3. Determinar el comportamiento que tendrá la máquina de estados, pudiendo hacerlo
mediante un algoritmo, un diagrama de estados, un diagrama MDS o una carta ASM,
según la preferencia del diseñador y la complejidad del problema
4. Describir en un lenguaje de descripción de hardware (HDL) la máquina de estados
o En este caso, se ha utilizado el lenguaje VHDL para hacer la descripción (ver
figuras 7-14 y 7-15)
5. Revisar la sintaxis
o Para este paso se utiliza algún hardware especializado que sea de la elección del
diseñador, lo mismo que los pasos siguientes
6. Hacer la simulación incluyendo todos los casos posibles
o Es de gran importancia que la simulación incluya todas las posibles
combinaciones de las entradas y situaciones que pudieran presentarse en la
solución del problema, así se puede asegurar la robustez del sistema
o Si hubiera alguna respuesta inesperada, se debe regresar a los pasos anteriores
para corregir las fallas
7. Asignar las terminales (pins) para las entradas y salidas
8. Hacer la síntesis para el dispositivo en particular
o Este proceso realizado por diferentes elementos de hardware especializado, tiene
como propósito pasar de la descripción en HDL al elemento de hardware (SPLD,
CPLD o FPGA) y configurarlo para realizar la tarea específica que se requiere,
así que deben usarse siempre construcciones del lenguaje que sean sintetizables
9. Generar el archivo de programación y programar el dispositivo

Este método, muy actual, es ampliamente utilizado debido a su capacidad de reconfiguración,


es decir, el mismo dispositivo se puede utilizar una y otra vez para diferentes aplicaciones,
sin embargo se requiere tener, además del dispositivo en sí, los elementos de software
necesarios y que en ocasiones representan un considerable costo.

También podría gustarte