Está en la página 1de 8

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

7.
7.1.

Pr actica IV - M aquina de estados finitos


Alcances

Esta pr actica presenta la implementaci on de una m aquina de estados finitos, desde el diagrama de estados hasta el listado de pasos para lograr la codificaci on en VHDL. Se presenta una nueva sentencia secuencial, la sentencia case. Adem as, se enlista el c odigo del banco de pruebas y su correspondiente simulaci on funcional.

7.2.

Sentencia case

La sentencia case es una sentencia secuencial al igual que la sentencia if. Es usada para seleccionar de entre varias alternativas una lista de sentencias secuenciales a ejecutarse. La sentencia case es similar a la sentencia switch del lenguaje de programaci on C. Es ideal para implementar decodificadores o m aquinas de estados finitos. La siguiente plantilla muestra la codificaci on en VHDL de la sentencia case. Es importante se~ nalar que la sentencia case debe usarse dentro de un proceso concurrente, as mismo, el proceso se encuentra declarado dentro de una arquitectura.
case expresion is when alternativa_1 = > sentencias_secuenciales ; when alternativa_2 = > sentencias_secuenciales ; when alternativa_N = > sentencias_secuenciales ; when others = > sentencias_secuenciales ; end case ;

7.3.

Diagrama de estados

Las m aquinas de estados son circuitos secuenciales usados como unidades de control en los dise~ nos digitales. Las m aquinas de estados finitos son usualmente representadas con un diagrama de estados como el de la figura 12. Cada uno de los estados que integran la unidad de control, es representado por un c rculo que incluye dentro, el nombre del estado. La figura 12 representa el diagrama de estados de una unidad de control para lectura y escritura de memoria; esta m aquina de estados tienen 4 estados, los estados S0, S1, S2 y S3. El diagrama de estados tambi en debe contener todas las transiciones posibles entre los estados, estas transiciones son representadas con l neas terminadas en flecha que indican el origen, sentido y destino de las transiciones. Las transiciones son activadas por el valor l ogico que tengan ciertas se~ nales dentro del control.

Copyright 2013 Eduardo Rodr guez Palacios

29

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

La m aquina de estados debe especificar cu al es el estado predefinido o de inicializaci on cuando es aplicada la se~ nal de restauraci on. La se~ nal de restauraci on es representada con un tri angulo. En la figura 12, la se~ nal de restauraci on es activa en alto, cuando rst = 1, entonces la m aquina de estados es inicializada en el estado S0. El estado S0 representa el estado de espera de la unidad de control. Una vez en el estado S0, la unidad de control se mantendr a en ese estado mientras la se~ nal de inicio start se mantenga en bajo, start = 0. La se~ nal de inicio start marcar a el inicio de una posible lectura o escritura por la unidad de control cuando su valor est e en alto. Cuando start = 1 y rw = 1 la m aquina de estados pasa del estado de espera S0 al estado de lectura S1. El estado de lectura S1 se mantendr a mientras la se~ nal last se mantenga en bajo. Las se~ nal last pasa al estado l ogico alto unicamente cuando se han terminado de leer todos los datos de la memoria, es ese momento, la m aquina de estados pasa del estado de lectura S1 al estado de finalizaci on S3.

Figura 12 : Diagrama de estados finitos.

El estado de finalizaci on S3 no tiene condici on alguna para pasar autom aticamente al estado de espera S0. Una vez en S0, cuando start = 1 y rw = 0 la m aquina de estados pasa del estado de espera al estado de escritura S2. Mientras last = 0, la unidad de control seguir a en el estado de escritura, cuando last = 1, se har a la transici on del estado de escritura S2 al estado de finalizaci on S3. El estado de finalizaci on durar a solo un ciclo de reloj para pasar de nuevo al estado de espera S0. La m aquina de estados de la figura 12 tiene como se~ nales de salida a las se~ nales flagr, flagw y done. Dichas se~ nales de salida dependen unicamente

Copyright 2013 Eduardo Rodr guez Palacios

30

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

del valor actual del estado en la unidad de control. Para el estado de espera S0, f lagr = f lagw = done = 0. En el estado de lectura S1, la se~ nal de bandera de lectura flagr se encuentra en alto, f lagr = 1, mientras f lagw = done = 0. En el estado de escritura S2, la se~ nal de bandera de escritura flagw se encuentra en alto, f lagw = 1, mientras f lagr = done = 0. En el estado de finalizaci on, la se~ nal para indicar el fin de la lectura o escritura done se encuentra en alto, done = 1, mientras f lagr = f lagw = 0. Las m aquinas de estados finitos donde las se~ nales de salida dependen unicamente del valor actual del estado, son m aquinas de estados finitos tipo Moore. Las m aquinas de estados finitos donde las se~ nales de salida dependen del valor actual del estado y de las se~ nales de entrada para transici on, son m aquinas de estados finitos tipo Mealy. La unidad de control mostrada en la figura 12 es una m aquina de estados tipo Moore. En resumen, para obtener el diagrama de estados de una m aquina de estados, seguir los siguientes pasos. 1. Establecer cada uno de los estados, dibujando cada uno de ellos con un c rculo, incluyendo su correspondiente nombre adentro. 2. Establecer todas las transiciones entre los estados, as como los valores de las se~ nales de entrada que los activan. Dibujar las transiciones usando l neas terminadas en flecha. 3. Establecer el estado de inicializaci on cuando est a presente la se~ nal de restauraci on. Usar un tri angulo para representar el inicio de una restauraci on. 4. Asignar los valores de todas las se~ nales de salida dentro de los estados previamente definidos.

7.4.

Diagrama a bloques

La figura 13 muestra el diagrama a bloques de la m aquina de estados para control de lectura y escritura de memoria. Al ser un circuito secuencial, incluye las se~ nales de restauraci on rst y reloj clk. Tambi en se incluyen las se~ nales de entrada para transici on de estados start, rw y last ; todas de 1 bit. Finalmente se tienen las se~ nales de salida flagr, flagw y done.

Figura 13 : Puertos de la m aquina de estados finitos.

Copyright 2013 Eduardo Rodr guez Palacios

31

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

7.5.

C odigo VHDL

El c odigo 12 incluye la descripci on de la entidad de la m aquina de estados de la l nea 24 a la 30. Como lo muestra el diagrama a bloques de la figura 13, la entidad incluye 5 se~ nales de entrada de 1 bit: rst, clk, start, rw y last. Tambi en incluye 3 salidas de 1 bit: flagr,flagw y done.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ---------------********************************************************************* Archivo : m aq u in a_ e s t a d os . vhd Proyecto : Practica 4 Descripcion : Maquina de estados finitos . Fecha : mayo 2013 Copyright 2013 Eduardo Rodriguez Palacios --------------------------------------------------------------------This program is free software : you can redistribute it and / or modify it under the terms of the GNU General Public License as published by the Free Software Foundation , either version 3 of the License , or ( at your option ) any later version . This program is distributed in the hope that it will be useful , but WITHOUT ANY WARRANTY ; without even the implied warranty of M E RC HA N T A B I LI TY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for more details .

-- You should have received a copy of the GNU General Public License -- along with this program . If not , see < http :// www . gnu . org / licenses / >. -- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * library ieee ; use ieee . s t d_ log ic_ 116 4 . all ; entity m aq u in a_ e s t a d os is port ( rst , clk : in std_logic ; start , rw , last : in std_logic ; flagr , flagw , done : out std_logic ); end entity ;

C odigo 12 : M aquina de estados finitos.

El c odigo 13 incluye la descripci on de la arquitectura de la m aquina de estados de la l nea 32 a la 80. La l nea 32 declara a la arquitectura de nombre nea 33 declara un nuevo funcional asociada a la entidad maquina estados. La l tipo de dato tipo estado con los valores S0, S1, S2 y S3; que corresponden a los posibles estados de la unidad de control. La l nea 34 declara dos se~ nales internas del tipo tipo estado, estado actual y estado siguiente. Las l neas 36 a 70 declaran un proceso concurrente cuya lista de sensitividad incluye a las se~ nales start, rw, last y estado actual. Este proceso describe todas y cada una de las transiciones entre los estados S0, S1, S2 y S3. El valor del estado siguiente depende del estado actual de la unidad de nea 41 usa una sentencia case control y de las entradas start, rw y last. La l para describir la transici on de los estados, usando como expresi on el valor de la se~ nal estado actual. Haciendo uso del diagrama de estados de la figura 12. Cuando el estado actual es S0, l nea 42, si start = 0 el estado siguiente seguir a siendo S0, l neas 43 y 44. Si start = 1 y rw = 1 el estado siguiente ser a S1 (lectura), l neas 45 y 46. Si start = 1 y rw = 0 el estado siguiente ser a S2 (escritura),

Copyright 2013 Eduardo Rodr guez Palacios

32

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

l neas 47 y 48. Cuando el estado actual es S1 (lectura), l nea 50, si last = 0 el estado siguiente seguir a siendo de lectura, l neas 52 y 53. Si last = 1 el estado siguiente ser a S3 (finalizaci on), l neas 54 y 55. Cuando el estado actual es S2 (escritura), l nea 57, si last = 0 el estado siguiente seguir a siendo de escritura, l neas 59 y 60. Si last = 1 el estado siguiente ser a S3 (finalizaci on), l neas 61 y 62.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 architecture funcional of m aq ui n a _ e s ta do s is type tipo_estado is ( S0 , S1 , S2 , S3 ); signal estado_actual , e s t a d o _s i g u i e n t e : tipo_estado ; begin process ( start , rw , last , es tado_act ual ) begin flagr <= 0 ; flagw <= 0 ; done <= 0 ; case estad o_a ctu al is when S0 = > if ( start = 0 ) then estado_siguiente <= S0 ; elsif ( start = 1 and rw = 1 ) then estado_siguiente <= S1 ; elsif ( start = 1 and rw = 0 ) then estado_siguiente <= S2 ; end if ; when S1 = > flagr <= 1 ; if ( last = 0 ) then estado_siguiente <= S1 ; else estado_siguiente <= S3 ; end if ; when S2 = > flagw <= 1 ; if ( last = 0 ) then estado_siguiente <= S2 ; else estado_siguiente <= S3 ; end if ; when S3 = > done <= 1 ; estado_siguiente <= S0 ; when others = > estado_siguiente <= S0 ; end case ; end process ; process ( rst , clk ) begin if ( rst = 1 ) then estado_actual <= S0 ; elsif ( clk = 1 and clk event ) then estado_actual <= e s t a d o _s i g u i e n t e ; end if ; end process ; end architecture ;

C odigo 13 : M aquina de estados finitos (cont).

Cuando el estado actual es S3 (finalizaci on), l nea 64, el estado siguiente siempre es S0 (espera), independientemente de las se~ nales de control de

Copyright 2013 Eduardo Rodr guez Palacios

33

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

entrada, l nea 66. Cuando ocurran otros estados no definidos, el estado por defecto es S0 (espera), l neas 67 y 68. Los valores de las se~ nales de salida de la m aquina de estados tambi en est an definidos en el primero proceso de la arquitectura. Las l neas 38 a 40 establecen el valor por defecto de las se~ nales de salida, f lagr = 0, f lagw = 0 y done = 0. Como en el estado de espera S0, las se~ nales de salida tienen los mismos valores que los valores por defecto, la alternativa de la l nea 42 no hace ning un cambio. En el estado de lectura S1, la bandera ogico alto, mientras que las se~ nales flagw y done tienen flagr tiene un valor l los mismos valores por defecto; la l nea 51 asigna f lagr = 1 para cumplir este requerimiento. ogico alto, En el estado de escritura S2, la bandera flagw tiene un valor l mientras que las se~ nales flagr y done tienen los mismos valores por defecto; la l nea 58 asigna f lagw = 1 para cumplir este requerimiento. El estado S3 ogico alto y mantener las otras necesita asignar a la se~ nal done el valor l se~ nales de salida con los valores por defecto, la l nea 65 hace el trabajo. Para cualquier otro estado no definido, las se~ nales de salida tendr an los mismos valores por defecto. Las l neas 72 a 79 declaran un proceso concurrente para definir la restauraci on as ncrona, cuando rst = 1 el estado por defecto es S0. Las l neas 76 y 77 sincronizan el funcionamiento de la m aquina de estados con la se~ nal de flanco de subida de reloj, asignando a la se~ nal del estado actual el valor del estado siguiente obtenido en el proceso de la sentencia case. La descripci on VHDL de la m aquina de estados finitos es f acil, cuando se cuenta con un correcto diagrama de estados. De manera general, para m aquinas de estado tipo Moore, la codificaci on VHDL incluir a dos procesos concurrentes; el primero para describir las transiciones de los estados y los valores de las se~ nales de salida, y el segundo para describir el estado por defecto por restauraci on as como la sincron a con el reloj de la unidad de control.

7.6.

Banco de pruebas

El banco de pruebas declara las se~ nales internas a usar para interconectar el componente a probar en las l neas 28 a 30. Declara el tipo de componente neas 32 a 38. En la l nea 40 declara la a probar maquina estados en las l constante medio periodo de tipo time inicializada a 500ns. Las l neas 42 y 43 mapean el componente tb del tipo maquina estados a las se~ nales internas descritas anteriormente. Las l neas 45 a 49 generan la se~ nal odo de 1us. Las l neas 51 a 54 generan las se~ nales peri odica clk con un per no peri odicas de restauraci on rst, inicio de lectura-escritura start, bandera de lectura o escritura rw y bandera de fin de lectura-escritura last usando asignaciones concurrentes.

Copyright 2013 Eduardo Rodr guez Palacios

34

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

----------------

********************************************************************* Archivo : t b _ m a q u i n a _ e s t a d o s . vhd Proyecto : Practica 4 Descripcion : Banco de pruebas de la maquina de estados finitos . Fecha : mayo 2013 Copyright 2013 Eduardo Rodriguez Palacios --------------------------------------------------------------------This program is free software : you can redistribute it and / or modify it under the terms of the GNU General Public License as published by the Free Software Foundation , either version 3 of the License , or ( at your option ) any later version . This program is distributed in the hope that it will be useful , but WITHOUT ANY WARRANTY ; without even the implied warranty of M E RC HA N T A B I LI TY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for more details .

-- You should have received a copy of the GNU General Public License -- along with this program . If not , see < http :// www . gnu . org / licenses / >. -- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * library ieee ; use ieee . s t d_ log ic_ 116 4 . all ; entity t b _ m a q u i n a _ e s t a d o s is end entity ; architecture t b _ m a q u i n a _ e s t a d o s of t b _ m a q u i n a _ e s t a d o s is signal rst , clk : std_logic ; signal start , rw , last : std_logic ; signal flagr , flagw , done : std_logic ; component m a q u in a_ e st a d o s is port ( rst , clk : in std_logic ; start , rw , last : in std_logic ; flagr , flagw , done : out std_logic ); end component ; constant m edi o_p eri odo : time := 500 ns ; begin tb : ma q u i n a _e st a do s port map ( rst , clk , start , rw , last , flagr , flagw , done ); process_clk : process begin clk <= 0 ; wait for medio_pe rio do ; clk <= 1 ; wait for medio_pe rio do ; end process ; rst <= 0 , 1 start <= 0 , 1 rw <= 1 , 0 last <= 0 , 1 end architecture ; after after after after 2 us , 0 after 4 us ; 7 us , 0 after 9 us , 1 after 35 us , 0 after 37 us ; 30 us ; 25 us , 0 after 27 us , 1 after 40 us , 0 after 42 us ;

C odigo 14 : Test-bench de la m aquina de estados finitos.

La figura 14 muestra el resultado de la simulaci on funcional de la unidad de control para lectura y escritura de memorias. Se pueden visualizar los valores en l ogico alto de las se~ nales de salida flagr, flagw y done correspondientes a los estados S1 (lectura), S2 (escritura) y S3 (finalizaci on). La se~ nal rst inicializa la m aquina de estados, las se~ nales start, rw y last definen la transici on entre los estados y la se~ nal clk sincroniza todos los eventos.

Copyright 2013 Eduardo Rodr guez Palacios

35

Dise~ no Digital con VHDL - Instituto Tecnol ogico de Puebla

Figura 14 : Simulaci on de la m aquina de estados.

7.7.

Trabajo sugerido

Modificar el c odigo que describe a la m aquina de estados y su respectivo banco de pruebas, para incluir el estado actual de la m aquina de estados en la simulaci on. Desplegar el estado actual como un valor binario, 00 para S0, 01 para S1, 10 para S2 y 11 para S3. Simular el dise~ no nuevamente para verificar los resultados.

Copyright 2013 Eduardo Rodr guez Palacios

36