Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Editorial
BUAP. 2016
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.
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.
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 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
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
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
Figura 7-18 Mapas de Karnaugh y ecuaciones del decodificador de estado siguiente y del decodificador de salidas.
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-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).
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
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
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
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.
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:
De la misma manera se toma la columna Q0t+1 para obtener las entradas al multiplexor mux0:
Se observa que se han utilizado propiedades del álgebra booleana para reducir la cantidad de
compuertas a usar.
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:
Ahora que se tienen ya las expresiones para ambos decodificadores, se puede obtener el
circuito mostrado en la figura 7-24.
Figura 7-24 Diagrama del circuito para el ejemplo del control del motor de pasos por el método de multiplexores.
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)
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.
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:
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
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.
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.