maquinas de estado finito
Post on 26-Jul-2015
320 Views
Preview:
TRANSCRIPT
M Á Q U I N A S D E E S T A D O I T L A C
MÁQUINAS DE ESTADOS FINITOS (FSM)
Las máquinas de estados finitos, cuyo nombre proviene del hecho de que el comportamiento
funcional de estos circuitos puede representarse mediante un número finito de estados, son una
clase general de circuitos en los que las salidas dependen de la conducta anterior del circuito,
así como de los valores presentes en las entradas. También se denominan circuitos
secuenciales. En la mayor parte de los casos se usa una señal de reloj para controlar la
operación de un circuito secuencial; un circuito de este tipo se llama circuito secuencial
síncrono. La alternativa, en la que no se emplea ninguna señal de reloj, se denomina circuito
secuencial asíncrono. Es más fácil diseñar circuitos síncronos y se utilizan en la inmensa
mayoría de las aplicaciones prácticas. Estos circuitos son el tema del presente trabajo.
Los circuitos síncronos secuenciales se realizan usando la lógica combinacional y uno o más
flip-flops. Su estructura general se muestra en la Figura 1.1. El circuito tiene una serie de
entradas principales, W, y produce una serie de salidas, Z. Los valores de las salidas de los
flip-flops se conocen como el estado, Q, del circuito. Bajo el control de la señal de reloj, las
salidas de los flip-flops cambian su estado según lo determina la lógica combinacional que
alimenta las entradas de esos flip-flops. De esta manera el circuito pasa de un estado a otro.
Para asegurar que sólo hay una transición de un estado a otro durante un ciclo del reloj, los
flip-flops deben ser del tipo disparado por flanco.
D I S E Ñ O D I G I T A L C O N V H D L | 1
Figura 1.1. Forma general de un circuito secuencial.
M Á Q U I N A S D E E S T A D O I T L A C
Pueden dispararse ya sea por el flanco positivo (transición de 0 a 1) o por el negativo
(transición de 1 a 0) del reloj. Se empleará el término flanco activo del reloj para referirnos al
flanco del reloj que produce el cambio de estado.
La lógica combinacional que proporciona las señales de entrada a los flip-flops deriva sus
entradas de dos fuentes: las entradas principales, W, y las salidas presentes (actuales) de los
flip-flops, Q. Por tanto, los cambios de estado dependen tanto del estado presente como de los
valores de las entradas principales.
En la Figura 1.1 se indica que las salidas del circuito secuencial se generan mediante otro
circuito combinacional, de tal forma que las salidas son una función del estado presente de los
flip-flops y de las entradas principales. Aun cuando las salidas siempre dependen del estado
presente, no necesariamente deben depender de manera directa de las entradas principales. Por
ende, la conexión mostrada en rojo en la figura podría existir o no. Para distinguir entre estas
dos posibilidades, se acostumbra decir que los circuitos secuenciales cuyas salidas dependen
sólo del estado del circuito son del tipo Moore, mientras que aquellas cuyas salidas dependen
tanto del estado como de las entradas principales son del tipo Mealy. Estos nombres se
asignaron en honor a Edward Moore y George Mealy, quienes investigaron el comportamiento
de estos circuitos en la década de 1950.
PASOS BÁSICOS DE DISEÑO
Se presentan las técnicas para el diseño de circuitos secuenciales por medio de un ejemplo
sencillo. Supóngase que deseamos diseñar un circuito que cumpla con la especificación
siguiente:
1. El circuito tiene una entrada, w, y una salida, z.
2. Todos los cambios en el circuito deben ocurrir en el flanco positivo de una señal de reloj.
3. La salida z es igual a 1 si durante dos ciclos del reloj inmediatamente anteriores la entrada
w era igual 1. De lo contrario, el valor de z es igual a 0.
Por tanto, el circuito detecta si dos o más 1 consecutivos ocurren en su entrada w. Los
circuitos que detectan la ocurrencia de un patrón en particular en su(s) entrada(s) se conocen
D I S E Ñ O D I G I T A L C O N V H D L | 2
M Á Q U I N A S D E E S T A D O I T L A C
como detectores de secuencia. A partir de esta especificación es evidente que la salida z no
puede depender únicamente del valor presente en w. Para ilustrar esto, considérese la
secuencia de valores de las señales w y z durante 11 ciclos del reloj, como se muestra en la
Tabla 1.1. Los valores de w se suponen arbitrariamente; los valores de z corresponden a
nuestra especificación. Estas secuencias de valores de entrada y salida indican que para un
valor de entrada, la salida puede ser 0 o 1. Por ejemplo, w=0 durante los ciclos del reloj t2 y t5,
pero z=0 durante t2 y z=1 durante t5. De modo similar, w=1 durante t1 y t8, pero z=0 durante t1
y z=1 durante t8. Esto significa que z no está determinada sólo por el valor presente en w, así
que debe haber diferentes estados en el circuito que determinen el valor de z.
DIAGRAMA DE ESTADO
El primer paso en el diseño de una máquina de estado finito consiste en determinar cuántos
estados se necesitan y cuáles transiciones son posibles de un estado a otro. No hay un
procedimiento determinado para esta tarea.
Ciclo de reloj t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
El diseñador debe pensar detenidamente en lo que la máquina debe hacer. Una buena forma de
comenzar es elegir un estado en particular como estado inicial; éste es el estado en el que debe
entrar el circuito cuando se encienda por primera vez o cuando se le aplique una señal reset
(reinicio). Para nuestro ejemplo, supongamos que el estado inicial se llama estado A. Siempre
que la entrada w sea 0, el circuito no necesita hacer nada y, por tanto, cada flanco activo del
reloj debe dar como resultado que el circuito permanezca en el estado A. Cuando w se vuelve
igual a 1, la máquina debe reconocerlo y pasar a un estado distinto, al cual llamaremos estado
B. Esta transición se lleva a cabo en el siguiente flanco activo del reloj después que w se ha
vuelto igual a 1. En el estado B, igual que en el A, el circuito debe mantener el valor de la
salida z en 0, ya que aún no ha visto w=1 para dos ciclos del reloj consecutivos. Cuando se
D I S E Ñ O D I G I T A L C O N V H D L | 3
Tabla 1.1. Secuencias de señales de entrada y salida.
M Á Q U I N A S D E E S T A D O I T L A C
halla en el estado B, si w es 0 en el siguiente flanco activo del reloj el circuito debe regresar al
estado A. Sin embargo, si w =1 cuando se encuentra en el estado B el circuito debe cambiar a
un tercer estado, llamado C, y luego debe generar una salida z=1. El circuito ha de permanecer
en el estado C siempre que w=1 y debe seguir manteniendo z=1. Cuando w se vuelve 0, la
máquina tiene que moverse de regreso al estado A. Como la descripción anterior maneja todos
los valores posibles de la entrada w que la máquina puede encontrar en sus distintos estados,
se puede concluir que se necesitan tres estados para implementar la máquina deseada. Ahora
que se han determinado de manera informal las posibles transiciones entre los estados, se
describirá un procedimiento más formal para diseñar el circuito secuencial correspondiente. El
comportamiento de un circuito secuencial puede describirse de varias formas. El método
conceptualmente más simple es utilizar una representación gráfica en forma de un diagrama de
estado, que es una gráfica que representa los estados del circuito como nodos (círculos) y las
transiciones entre estados como arcos con dirección. El diagrama de estado de la Figura 1.2
define el comportamiento que corresponde a nuestra especificación.
Los estados A, B y C aparecen como nodos en el diagrama. El nodo A representa el estado
inicial y también el estado en el que entrará el circuito después que se aplique una entrada
w=0. En este estado la salida z debe ser 0, lo cual se indica como A/z=0 en el nodo. El circuito
debe permanecer en el estado A siempre que w=0, lo que se indica por medio de un arco con
D I S E Ñ O D I G I T A L C O N V H D L | 4
Figura 1.2. Diagrama de estado de un circuito secuencial simple.
M Á Q U I N A S D E E S T A D O I T L A C
una etiqueta w=0 que se origina y termina en este nodo. La primera ocurrencia de w=1
(después de la condición w=0) se registra al pasar del estado A al estado B. Esta transición se
indica en la gráfica por medio de un arco que se origina en A y termina en B. La etiqueta w=1
en este arco denota el valor de entrada que ocasiona la transición. En el estado B la salida
permanece en 0, lo cual se indica como B/z=0 en el nodo.
Cuando el circuito se halla en el estado B, cambiará al estado C si w aún es igual a 1 en el
siguiente flanco activo del reloj. En el estado C la salida z se vuelve igual a 1. Si w permanece
en 1 durante los ciclos subsiguientes del reloj, el circuito permanecerá en el estado C
manteniendo z=1. No obstante, si w se vuelve 0 cuando el circuito está ya sea en el estado B o
en el estado C, el siguiente flanco activo del reloj producirá una transición al estado A. En el
diagrama se indica que la entrada Reset se utiliza para forzar el circuito a entrar en el estado A,
lo cual es posible independientemente del estado en el que se encuentre el circuito.
Se podría tratar Reset simplemente como otra entrada al circuito y mostrar una transición de
cada estado al estado inicial A bajo el control de la entrada Reset. Esto complicaría el
diagrama de modo innecesario. Los estados de una máquina de estado fi nito se implementan
usando flip-flops. Como por lo general éstos tienen la capacidad reset, se puede suponer que la
entrada Reset se utiliza para establecer todos en 0 mediante tal capacidad. Se indicará esto
como se muestra en la Figura 1.2 para mantener los diagramas tan simples como sea posible.
TABLA DE ESTADO
Aun cuando el diagrama de estado brinda una descripción del comportamiento de un circuito
secuencial que es fácil de comprender, para proseguir con la implementación del circuito es
conveniente traducir la información contenida en el diagrama de estado en forma de tabla.
Esto se muestra la Tabla 1.2 la cual corresponde a la tabla de estado para el circuito
secuencial. Ahí se indican todas las transiciones de cada estado presente al estado siguiente
para los diferentes valores de la señal de entrada. Nótese que la salida z se especifica respecto
al estado presente, en concreto, el estado en el que se halla el circuito en el momento presente.
Obsérvese también que no se incluye la entrada Reset; en vez de ello se hizo la suposición
implícita de que el primer estado en la tabla es el estado inicial. Ahora se muestran los pasos
D I S E Ñ O D I G I T A L C O N V H D L | 5
M Á Q U I N A S D E E S T A D O I T L A C
de diseño que producirán el circuito final. Para explicar los conceptos de diseño básicos,
primero se sigue un procedimiento tradicional de realizar manualmente cada paso de diseño.
Estado presente Estado siguiente Salidazw=0 w=1
A A B 0B A C 0C A C 1
Luego se presenta una explicación de las técnicas de diseño automatizadas que usan
herramientas de diseño asistido por computadora (CAD).
ASIGNACION DE ESTADOS
La Tabla 1.2 define los tres estados en términos de las letras A, B y C. Cuando se implementa
en un circuito lógico, cada estado se representa por medio de una valoración (combinación de
valores) en particular de las variables de estado. Cada variable de estado puede implementarse
en forma de un flip-flop. Como deben producirse tres estados, basta utilizar dos variables de
estado. Sean estas variables y1 y y2. Ahora se puede adaptar el diagrama de bloque general de
la Figura 1.1 a nuestro ejemplo, como se muestra en la Figura 1.3, para indicar la estructura
del circuito que implementa la máquina de estado finito buscada. Dos flip-flops representan
las variables de estado.
A partir de la especificación de la Figura 1.2 y la Tabla 1.2, la salida z está determinada sólo
por el estado presente del circuito. Por tanto, el diagrama de bloque de la Figura 1.3 muestra
que z es una función sólo de y1 y y2; este diseño es más del tipo Moore. Es necesario diseñar un
circuito combinacional que utilice y1 y y2 como señales de entrada y que genere una señal de
salida correcta z para todas las combinaciones posibles de estas entradas.
Las señales y1 y y2 también se alimentan de regreso en el circuito combinacional que determina
el siguiente estado de la FSM.
D I S E Ñ O D I G I T A L C O N V H D L | 6
Tabla 1.2. Tabla de estado para el circuito secuencial de la Figura 1.2
M Á Q U I N A S D E E S T A D O I T L A C
Este circuito también utiliza la señal de entrada principal w. Sus salidas son las dos señales, Y1
y Y2, que se emplean para establecer el estado de los flip-flops. Cada flanco activo del reloj
hará que los flip-flops cambien su estado a los valores de Y1 y Y2en ese momento. Por
consiguiente, Y1 y Y2 se llaman variables del estado siguiente y y1 y y2 variables del estado
presente. Debemos diseñar un circuito combinacional con entradas w, y1 y y2 tales que, para
todas las combinaciones de estas entradas, las salidas Y1 y Y2 ocasionarán que la máquina pase
al estado siguiente que satisface la especificación. El paso siguiente en el proceso de diseño
consiste en crear una tabla de verdad que defina este circuito, así como el circuito que genera
z.
Para producir la tabla de verdad deseada, asignamos una combinación específica de las
variables y1 y y2 para cada estado. Una asignación posible se da en la Tabla 1.3, donde los
estados A, B y C se representan por medio de y1y2 =00, 01 y 10, respectivamente. La cuarta
combinación, y2 y1=11, no se necesita en este caso.
El tipo de tabla dado en la Tabla 1.3 suele llamarse tabla de asignación de estados. Esta tabla
puede servir directamente como una tabla de verdad para la salida z con las entradas y1 y y2.
Aun cuando para las funciones del estado siguiente Y1 y Y2 la tabla no posee la apariencia de
una tabla de verdad normal, porque hay dos columnas separadas en la tabla para cada valor de
D I S E Ñ O D I G I T A L C O N V H D L | 7
Figura 1.3. Un circuito secuencial general con la entrada w, la salida z y dos flip-flops
M Á Q U I N A S D E E S T A D O I T L A C
w, es evidente que la tabla incluye toda la información que define las funciones del estado
siguiente en términos de las combinaciones de las entradas w, y1 y y2.
Estado presentey1 y y2
Estado siguiente Salida zw=0 w=1
Y2Y1 Y2Y1
ABC
00 00 01 001 00 10 010 00 10 111 dd dd d
ELECCIÓN DE FLIP-FLOPS Y DERIVACIÓN DE LAS EXPRESIONES DE ESTADO
SIGUIENTE Y DE SALIDA
A partir de la tabla de asignación de estados anterior se pueden derivar las expresiones lógicas
de las funciones del estado siguiente y de la salida. Pero primero se debe decidir el tipo de
flip-flops que se utilizarán en el circuito. La opción más sencilla es usar flip-flops tipo D, pues
en este caso los valores de Y1 y Y2 simplemente se registran en los flip-flops para que se
vuelvan los nuevos valores de y1 y y2. En otras palabras, si las entradas a los flip-flops se
llaman D1 y D2, entonces estas señales son las mismas que Y1 y Y2.
Las expresiones lógicas requeridas pueden deducirse usando mapas de Karnaugh, quedando de
la siguiente forma
Puesto que D1=Y1 y D2=Y2, el circuito lógico correspondiente a las expresiones anteriores se
implementa como se muestra en la Figura 1.4. Obsérvese que se incluye una señal de reloj y
D I S E Ñ O D I G I T A L C O N V H D L | 8
Tabla 1.3. Tabla de asignación de estados para el circuito secuencial de la Tabla 1.2
M Á Q U I N A S D E E S T A D O I T L A C
que el circuito se proporciona con una capacidad reset activa en nivel bajo. Conectar la entrada
clear de los flip-flops a una señal Resetn externa, como se muestra en la figura, brinda una
forma sencilla de forzar a que el circuito entre en un estado conocido. Si aplicamos la señal
Resetn=0 al circuito, entonces los dos flip-flops se borrarán, poniendo la FSM en el estado
y2y1= 00.
DIAGRAMA DE TIEMPO
Para comprender cabalmente la operación del circuito consideremos su diagrama de tiempo
presentado en la Figura 1.5. En el diagrama se describen las formas de onda de las señales que
corresponden a las secuencias de valores de la Tabla 1.1.
Como estamos utilizando flip-flops disparados por el flanco positivo, todos los cambios en las
señales ocurren poco tiempo después del flanco positivo del reloj. La cantidad de demora del
flanco del reloj depende de los retrasos de propagación a través de los flip-flops. Obsérvese
que la señal de entrada w también se muestra para cambiar ligeramente después del flanco
activo del reloj. Esta suposición es buena porque en un sistema digital típico una entrada como
w sería sólo una salida de otro circuito sincronizado por el mismo reloj.
D I S E Ñ O D I G I T A L C O N V H D L | 9
Figura 1.4. Implementación final del circuito secuencial.
M Á Q U I N A S D E E S T A D O I T L A C
Un aspecto clave que ha de notarse es que aun cuando w cambia poco tiempo después del
flanco activo del reloj y, por tanto, su valor es igual a 1 (o a 0) para casi todo el ciclo de reloj,
no ocurrirá ningún cambio en el circuito hasta el comienzo del siguiente ciclo de reloj cuando
el flanco positivo haga que los flip-flops cambien de estado. Por ende, el valor de w debe ser
igual a 1 para dos ciclos de reloj si el circuito va a alcanzar el estado C y a generar la salida
z=1.
MODELO DE ESTADO TIPO MEALY
El ejemplo introductorio fue un circuito secuencial en el que cada estado tenía valores
específicos de las señales de salida asociadas con él. Como se explicó al principio del presente
trabajo, se dice que estas máquinas de estado finito corresponden al tipo Moore. Ahora se
explorará el concepto de máquinas tipo Mealy en las que los valores de salida se generan con
base tanto en el estado del circuito como en los valores presentes en las entradas. Esto brinda
mayor flexibilidad en el diseño de circuitos secuenciales. Se presentaran las máquinas tipo
Mealy usando una versión un tanto modificada de un ejemplo anterior.
D I S E Ñ O D I G I T A L C O N V H D L | 10
Figura 1.5. Diagrama de tiempo para el circuito de la Figura 1.4.
M Á Q U I N A S D E E S T A D O I T L A C
La esencia del primer circuito secuencial presentado es generar la salida z=1 siempre que una
segunda ocurrencia de la entrada w=1 se detecte en ciclos del reloj consecutivos. La
especificación indica que la salida z debe ser igual a 1 en el ciclo del reloj que sigue a la
detección de la segunda ocurrencia de w=1. Supóngase ahora que se elimina este requisito y se
especifica ahora que la salida z debe ser igual a 1 en el mismo ciclo del reloj cuando se detecta
la segunda ocurrencia de w=1. Por tanto, una secuencia de entrada-salida adecuada puede ser
como se muestra en la Tabla 1.4. Para ver cómo se puede producir el comportamiento dado en
esta tabla se comienza seleccionando un estado inicial, A. Siempre que w=0, la máquina debe
permanecer en el estado A, produciendo la salida z=0. Cuando w=1, la máquina debe pasar a
un estado nuevo, B, para registrar el hecho de que ha ocurrido una entrada igual a 1.
Ciclo de reloj t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 1 0 0 1 1 0 0
Si w aún es igual a 1 cuando la máquina está en el estado B, lo cual ocurre si w=1 durante al
menos dos ciclos consecutivos de reloj, la máquina debe permanecer en el estado B y producir
una salida z=1. En cuanto w se vuelve 0, z debe volverse 0 de inmediato y la máquina debe
regresar al estado A en el siguiente flanco activo del reloj. Por ende, el comportamiento
especificado en la Tabla 1.4 puede lograrse con una máquina de dos estados, la cual tiene un
diagrama de estado como el que aparece en la Figura 1.6. Sólo se requieren dos estados porque
hemos permitido que el valor de salida dependa del valor presente en la entrada así como del
estado presente de la máquina. El diagrama indica que si la máquina se halla en el estado A,
seguirá en él si w=0 y la salida será 0. Esto se señala mediante un arco con la etiqueta
w= 0/z=0. Cuando w se vuelve 1, la salida permanece en 0 hasta que la máquina pasa al estado
B en el siguiente flanco activo del reloj. Esto se denota por medio de un arco de A a B con la
etiqueta w=1/z=0. En el estado B la salida será 1 si w=1, y la máquina permanecerá en el
estado B, como se indica con la etiqueta w=1/z=1 en el arco correspondiente. Sin embargo, si
D I S E Ñ O D I G I T A L C O N V H D L | 11
Tabla 1.4. Secuencias de señales de entrada y salida (ejemplo 2).
M Á Q U I N A S D E E S T A D O I T L A C
w=0 en el estado B, entonces la salida será 0 y una transición al estado A ocurrirá en el
siguiente flanco activo del reloj.
Un aspecto importante que debe comprenderse es que durante el ciclo de reloj actual el valor
de salida corresponde a la etiqueta en el arco que proviene del nodo del estado presente.
Podemos implementar la FSM de la Figura 1.6 usando los mismos pasos de diseño que en el
ejemplo anterior. La tabla de estado se muestra en la Tabla 1.5. En ella se indica que la salida z
depende del valor presente en la entrada w y no sólo del estado presente.
Estado presente Estado siguiente Salida z
w=0 w=1 w=0 w=1A A B 0 0B A B 0 1
La Tabla 1.6 proporciona la tabla de asignación de estados. Como sólo hay dos estados, es
suficiente utilizar una sola variable de estado, y. Si suponemos que y se produce con un flip-
flop D, las expresiones requeridas de estado siguiente y de salida son
D I S E Ñ O D I G I T A L C O N V H D L | 12
Figura 1.6. Diagrama de estado de una FSM que realiza la tarea de la Tabla 1.4.
Tabla 1.5. Secuencias de señales de entrada y salida (ejemplo 2).
M Á Q U I N A S D E E S T A D O I T L A C
El circuito resultante se presenta en la Figura 1.7 junto con un diagrama de tiempo el cual se
presenta en la Figura 1.8. Este último corresponde a las secuencias de entrada-salida de la
Tabla 1.4.
Estado presente Estado siguiente Salida z
w=0 w=1 w=0 w=1y Y Y z z
AB
0 0 1 0 11 0 1 0 1
La mayor flexibilidad de las FSM tipo Mealy a menudo desemboca en la realización de un
circuito más simple.
D I S E Ñ O D I G I T A L C O N V H D L | 13
Tabla 1.6. Tabla de asignación de estados para la FSM de la Tabla 1.4
Figura 1.7. Implementación de la máquina de estado finito de la Tabla 1.5.
M Á Q U I N A S D E E S T A D O I T L A C
DISEÑO DE MÁQUINAS DE ESTADO FINITO CON HERRAMIENTAS (CAD)
Se dispone de herramientas CAD muy modernas para el diseño de máquinas de estado fi nito y
las presentamos en esta sección. Una forma rudimentaria de emplear tales herramientas para el
diseño de una FSM podría ser como sigue: el diseñador usa las técnicas manuales descritas
antes para derivar un circuito con flip-flops y compuertas lógicas a partir de un diagrama de
estado. Este circuito se introduce en el sistema CAD trazando un diagrama esquemático o
escribiendo código estructural en lenguaje de descripción de hardware (HDL, Hardware
Description Language). El diseñador utiliza entonces el sistema CAD para simular el
comportamiento del circuito y las herramientas CAD para implementar en forma automática el
circuito en un chip, por ejemplo en un PLD.
Resulta tedioso sintetizar manualmente un circuito a partir de un diagrama de estado. Como
las herramientas CAD se diseñaron para evitar esa tarea, se han desarrollado formas más
atractivas de utilizarlas para el diseño de FSM. Un mejor enfoque consiste en introducir
directamente el diagrama de estado en el sistema CAD y realizar todo el proceso de síntesis de
forma automática.
Las herramientas CAD soportan este método en dos formas principales. Otro enfoque radica
en permitir al diseñador trazar el diagrama de estado utilizando una herramienta gráfica
parecida a la herramienta de captura esquemática. El diseñador dibuja círculos para
D I S E Ñ O D I G I T A L C O N V H D L | 14
Figura 1.8. Diagrama de tiempo de la máquina de estado finito de la Figura 1.6.
M Á Q U I N A S D E E S T A D O I T L A C
representar los estados y arcos para representar las transiciones de un estado a otro, e indica
las salidas que la máquina debe generar. El enfoque más popular consiste en utilizar HDL para
escribir código que represente el diagrama de estado, como se describe enseguida.
Muchos HDL proveen constructores que permiten al diseñador representar un diagrama de
estado. Para mostrar cómo se hace esto, se proporcionará el código de VHDL que representa
la máquina simple diseñada manualmente en el primer ejemplo.
CÓDIGO DE VHDL PARA FSM TIPO MOORE
VHDL no define una manera estándar de describir una máquina de estado finito. Por tanto,
cuanto nos apeguemos a la sintaxis de VDHL requerida, habrá más de una forma de describir
una FSM. En la Figura 1.9 se presenta un ejemplo de código de VHDL para la FSM de la
Figura 1.2. En aras de facilitar la explicación, las líneas de código están numeradas en el lado
izquierdo. En las líneas 21 a 26 se declara una entidad llamada simple, que tiene puertos de
entrada Clock, Resetn y w, y un puerto de salida, z. En la línea 27 se usa el nombre Behavior
para el cuerpo de arquitectura, pero desde luego en su lugar podría utilizarse cualquier nombre
válido en VHDL. En la línea 28 se introduce la palabra reservada TYPE, que es una función
de VHDL que nos permite crear un tipo de señal definido por el usuario. El nuevo tipo de
señal se llama State_type, y el código especifica que una señal de este tipo puede tener tres
valores posibles: A, B o C. En la línea 29 se define una señal llamada y que es del tipo
State_type. La señal y se usa en el cuerpo de arquitectura para representar las salidas de los
flip-flops que implementan los estados de la FSM. El código no especifica el número de bits
representado por y. En vez de ello, indica que y puede tener los tres valores simbólicos A, B y
C. Esto significa que no hemos especificado el número de flip-flops de estado que deben
utilizarse para la FSM. Como veremos enseguida, el compilador de VHDL elige de forma
automática un número apropiado de flip-flops de estado cuando se sintetiza un circuito para
implementar la máquina.
También elige la asignación de estado para los estados A, B y C. Algunos sistemas CAD,
como Quartus II, suponen que el primer estado enumerado en la instrucción TYPE (línea 28)
es el estado reset para la máquina. La asignación de estado que tiene todas las salidas de flip-
D I S E Ñ O D I G I T A L C O N V H D L | 15
M Á Q U I N A S D E E S T A D O I T L A C
flop iguales a 0 se utiliza para este estado. Más adelante en esta sección mostraremos cómo es
posible especificar manualmente la codificación de estados en el código de VHDL si así se
desea.
Una vez definida una señal para representar los flip-flops de estado, el siguiente paso consiste
en especificar las transiciones entre estados. En la Figura 1.9 se presenta una forma de
describir el diagrama de estado; esto se representa por medio del proceso de las líneas 31 a 57.
D I S E Ñ O D I G I T A L C O N V H D L | 16
Figura 1.9. Código de VHDL para la FSM de la Figura 1.2.
M Á Q U I N A S D E E S T A D O I T L A C
La instrucción PROCESS describe la máquina de estado fi nito como un circuito secuencial.
Las señales utilizadas por el proceso son Clock, Resetn, w y y, y la única señal modificada por
el proceso es y. Las señales de entrada que pueden hacer que el proceso cambie la señal y son
Clock y Resetn; por consiguiente, aparecen en la lista de sensibilidad. Nótese que w no está
incluida en esa lista, ya que un cambio en su valor no puede afectar a y hasta que ocurre un
cambio en la señal Clock.
En las líneas 33 y 34 se especifica que la máquina debe entrar en el estado A, el estado reset, si
Resetn=0. Puesto que la condición para la instrucción IF no depende de la señal de reloj, el
estado reset es asíncrono, razón por la que Resetn se incluye en la lista de sensibilidad en la
línea 31.
Cuando la señal reset no se válida, la instrucción ELSIF en la línea 35 especifica que el
circuito espera el flanco positivo de la señal de reloj (Clock). El comportamiento de y se
define por medio de la instrucción CASE de las líneas 36 a 55. Corresponde al diagrama de
estado de la Figura 1.2. Como la instrucción CASE está dentro de la instrucción ELSIF,
cualquier cambio en y sólo puede ocurrir como resultado de un flanco positivo del reloj. En
otras palabras, la condición ELSIF implica que y debe implementarse como la salida de uno o
más flip-flops. Cada cláusula WHEN en la instrucción CASE representa un estado de la
máquina. Por ejemplo, la cláusula WHEN en las líneas 37 a 42 describe el comportamiento de
la máquina cuando se halla en el estado A. Según el principio de la instrucción IF en la línea
38, cuando la FSM se encuentra en el estado A, si w=0 la máquina debe permanecer en el
estado A; pero si w=1, debe cambiar al estado B. Las cláusulas WHEN en la instrucción
CASE corresponden exactamente al diagrama de estado de la Figura 1.9. La parte final de la
descripción de la máquina de estado aparece en la línea 58. Especifica que si la máquina se
encuentra en el estado C, entonces la salida z debe ser 1; de lo contrario, z debe ser 0.
ESPECIFICACIÓN DE FSM TIPO MEALY CON VHDL
Una FSM tipo Mealy puede especificarse de una manera similar a una FSM tipo Moore. En la
Figura 1.10 se proporciona el código de VHDL completo para la FSM de la Figura 1.6. Las
transiciones de estado se describen de la misma forma que en nuestro ejemplo de VHDL
D I S E Ñ O D I G I T A L C O N V H D L | 17
M Á Q U I N A S D E E S T A D O I T L A C
original de la Figura 1.9. La señal y representa los flip-flops de estado y State_type especifica
que y puede tener los valores A y B. Comparado con el código de la Figura 1.9, la principal
diferencia en el caso de una FSM tipo Mealy es el modo en que se escribe el código para la
salida.
D I S E Ñ O D I G I T A L C O N V H D L | 18
Figura 1.10. Código de VHDL para la FSM de la Figura 1.6.
M Á Q U I N A S D E E S T A D O I T L A C
En la Figura 1.10 la salida z se define con una instrucción CASE. Establece que cuando la
FSM se halla en el estado A, z debe ser 0, pero cuando se encuentra en el estado B, z debe
tomar el valor de w. Esta instrucción CASE describe de manera apropiada la lógica necesaria
para z, pero tal vez no sea evidente por qué se usa una segunda instrucción CASE en el código
en vez de especificar el valor de z dentro de la instrucción CASE que define las transiciones
de estado. La razón es que la instrucción CASE para las transiciones de estado está anidada
dentro de la instrucción IF que espera que ocurra un flanco del reloj. Por consiguiente, si
colocamos el código para z dentro de esta instrucción CASE, entonces el valor de z sólo
podría cambiar como resultado de un flanco del reloj. Esto no satisface los requisitos de la
FSM tipo Mealy, pues el valor de z debe depender no sólo del estado de la máquina sino
también de la entrada w.
CONCLUSIONES
En el siguiente texto se consiguió discernir entre las dos máquinas de estado a las que se
refiere este texto, se abstrajeron los conceptos de diagrama y tabla de estado un circuito
secuencial como una FSM, además de que se reafirmaron las bases para el diseño de circuitos
secuenciales(máquinas de estado).
BIBLOGRAFÍA:
Brown, Stephen y Vranesic, Zvonko Fundamentos de lógica digital con diseño VHDL,
segunda edición, editorial Mc Graw Hill.
Tocci, Ronald J. Sistemas digitales principios y aplicaciones, décima edición, Editorial
Prenctice Hall.
Pong P. Chu, “FPGA Prototyping by VHDL Examples: Xilinx Spartan 3-E”, primera edición,
Ed Wiley & Sons, 2008.
Floyd Thomas L; Fundamentos de sistemas digitales, novena edición, Editorial Pearson
Educación, México 2006.
Morris Mano, M., Diseño Digital, Tercera edición, Pearson Educación, México 2003.
D I S E Ñ O D I G I T A L C O N V H D L | 19
top related