Inicio > CPLD's > Maquina de estados(Rotativa)

Maquina de estados(Rotativa)

14 noviembre, 2010
Maquina de estados

Maquina de estados


Antes que nada debemos tener muy claro una serie de conceptos para poder adentrarnos a lo que son las maquina de estados.

Una máquina de estados se puede definir, de forma elemental, como un dispositivo digital capaz de ser atravesado por una secuencia predeterminada de estados de una manera ordenada, de forma que el valor de su salida, en un instante determinado, no depende de los estados lógicos de las entradas, sino de la secuencia con que dichos estados se apliquen a las entradas.

ASPECTOS GENERALES SOBRE CIRCUITOS SECUENCIALES
Los circuitos secuenciales se caracterizan porque las variables de salida, en un determinado instante, dependen de las variables de entrada en ese mismo instante y de la historia del circuito (los estados anteriores por los que haya pasado). Son, por tanto, sistemas capaces de memorizar cierta información de lo sucedido con anterioridad a un determinado momento (historia pasada por el circuito), y utilizar esta información conjuntamente con una combinación lógica de sus entradas de datos para determinar el futuro estado del sistema.

Modelo Moore y Mealy

REPRESENTACIÓN DE LOS AUTÓMATAS
Las dos realizaciones básicas de los autómatas finitos son las máquinas de Mealy y de Moore, que a su vez, pueden ser síncronas o asíncronas.

Para representar el comportamiento de los circuitos secuenciales se utilizan:

  • Tablas de estados o tablas de transición (en un formato similar a las tablas de verdad).
  • Grafos (también conocidos como diagramas de estados), donde aparecen los diferentes estados (que son finitos) y las funciones de transición de las salidas para cada combinación de las entradas (que también son finitas).

Estas tablas y grafos difieren dependiendo de si se trata de un autómata o máquina de Mealy o de Moore. Toda máquina de Moore se puede transformar en una máquina de Mealy y viceversa.

AUTOMATA DE  MEALY
En una máquina Mealy, las salidas pueden cambiar si cambian las entradas y ello sin necesidad de que se produzca un pulso en el bloque de registros.

Diagrama de flujo del automata Mealy

AUTOMATA DE  MOORE
La máquina Moore es un caso particular de máquina Mealy, en la que las salidas dependen exclusivamente del estado interno y no de las entradas.

Por ello, en una máquina Moore, si alguna entrada cambia, las salidas no cambian al menos hasta que no aparezca un pulso de reloj que origine un cambio en los estados internos (elementos de memoria). Un ejemplo de máquina Moore lo constituye un contador.

Diagrama de flujo del automata Moore

Diagrama de flujo del automata Moore

Visto estos pequeños conceptos pero basicos para el desarrollo de maquina de estados, podemos comenzar con el primer ejemplo.

Se desea proyectar el gobierno de un conmutador rotativo, que permite realizar un ciclo completo cuando el tambor haya efectuado una vuelta completa.

Maquina rotativa

Maquina rotativa

ANÁLISIS
La máquina se desarrollará mediante un diagrama de flujo de máquina Mealy síncrona que será transformado en un símbolo gráfico y éste, será utilizado en el diseño gráfico principal.

TABLA DE ESTADOS
En este punto se enumeran todos los posibles estados estables que va a poseer la máquina. Estos estados no deben confundirse con los estados internos que se van a necesitar para registrar todo el proceso secuencial.

Posibles estados de la maquina rotativa

Posibles estados de la maquina rotativa

DIAGRAMA DE FLUJO
Consiste en expresar gráficamente la secuencia del proceso, de la máquina rotativa, con sus estados inestables, estables y valores de salida. En sí, este diagrama es la solución del ejercicio.

Diagrama de flujo de la maquina rotativa

Diagrama de flujo de la maquina rotativa

Antes de empezar a diseñar una maquina de estados, debemos saber y entender bien,  que es lo que nos piden y la funcion de la maquina,  para elegir correctamente el tipo de automata que vamos a emplear(Moore o Mealy). Hecho esto, otro punto muy importante es crear una tabla con los posibles estados por los que va a pasar la maquina. Y por ultimo el diagrama de flujo para que nos ayude graficamente con nuestro diseño. Una vez que tengamos bien claro los pasos anteriores podemos empezar.

Creamos un nuevo proyecto configurando los parametros tales como el nombre “rotativa” y de tipo Schematic, luego configuramos Familia, Dispositivo, Encapsulado, Velocidad, Sintetizador, Simulador y Lenguaje de simulación. Luego añadimos una nueva fuente con el nombre “rotativa ” y de tipo Schematic.

Editor de esquemas

Editor de esquemas

Despues  añadimos un nuevo fichero fuente,  esta vez de tipo ‘State Diagram’, al cual le llamaremos ‘mrota’.

añadir nueva fuente

añadir nueva fuente

Se nos abre un programa de diseño gráfico de máquinas de estados llamado ‘StateCAD’.

Programa de diseño grafico de automatas

Programa de diseño grafico de automatas

Añadimos los puertos de entrada y de salida de la máquina. Para ello entramos en ‘Options-> Variable’

Añadir puertos de entrada y salida

Los puertos se añaden poniendo el nombre en el campo ‘Name’, configurando el tipo, el modo activo y si va a ser un pin o un nodo interno. Posteriormente hacemos clic en el botón ‘Add/Modify’.

Añadir puertosAñadimos los estados seleccionando el botón ‘Add State’ en la barra de herramientas y los ponemos en la hoja de diseño con un clic de ratón.

 

Añadir estados

Añadir estados

Dibujamos las transiciones, tal y como nos indica el diagrama de flujo definido al comienzo del ejercicio, seleccionando el botón ‘Add Transition’ en la barra de herramientas y llevando el ratón de un estado a otro.

 

Añadir transiciones

Añadir transiciones

Añadimos un ‘RESET’ al diseño seleccionando el botón ‘Add Reset’ en la barra de herramientas y lo situamos en el ‘ESTADO 0’. Una máquina de estados debe tener un ‘reset’ de forma que arranque en el estado correcto. El ‘reset’ puede trabajar en alto o bajo activo y ser asíncrono o síncrono (en nuestro caso es asíncrono y trabaja en alto activo).

 

Añadir un reset

Añadir un reset

EDITAR CONDICIONES

Damos valor a las ecuaciones de entradas y a las salidas. Poniendo el cursor encima de las transiciones y haciendo clic, con el botón izquierdo del ratón, se nos abrirá la siguiente ventana:

Aquí definiremos las condiciones de entrada (Condition) y los valores de la salida (Outputs). Como ejemplo, vamos a describir los pasos de la transición del ‘STATE0’ al ‘STATE0’. Definimos las condiciones de entrada, de cualquiera de las dos maneras que se muestran:

Los valores de salida podemos definirlos manualmente o con el botón ‘Output Wizard’. Una vez abierto elegimos la salida ‘M’ que nos ofrece el menú ‘DOUT’ y en ‘CONSTANT’ ponemos el valor deseado.

Las demás asignaciones las ponemos tal como indica el diagrama de flujo definido al comienzo del ejercicio.

VERIFICACION

Verificamos el correcto funcionamiento del autómata creando un ‘test bench’. Hacemos clic sobre el botón de State Bench’.

La simulación la comenzamos realizando un reset al autómata.

GENERAR CODIGO VHDL

El código VHDL se nos muestra en una ventana donde podemos observar como la entidad está formada por las entradas a, b, CLK, RESET y por la salida M. Esta entidad es, en sí, el componente que posteriormente generaremos.

Añadimos el fichero ‘ROTATIVA.vhd’ al proyecto y generamos el símbolo:

Seleccionamos el tipo de fuente ‘VHDL Design File’.

Generamos el símbolo del autómata.

SINTESIS DE LA ROTATIVA

Hacemos doble clic en el proceso ‘Synthesize-XST’ situado en la ventana de procesos y se nos efectúa la síntesis del autómata.

descargar memoria aqui

 

Anuncios
Categorías:CPLD's
A %d blogueros les gusta esto: