Sobre mi.

Mi foto
Santander, CANTABRIA, Spain
Bienvenido a mi Blog, soy César Zazo Serrano y os mostraré las actividades realizadas durante el curso 2012/2013 en la asignatura de desarrollo y construcción de prototipos electrónicos que imparte nuestro profesor Don José Luis Del Val en el Centro Integrado De Formación Profesional Nº1 situado en Peñacastillo.

domingo, 9 de diciembre de 2012

MAQUINA ROTATIVA MEALY


En la siguiente entrada vamos a realizar un ejercicio de CPLD´s cuya finalidad es realizar el estudio de la creación de un símbolo a partir de un módulo basado en una maquina de estados  tipo Mealy.

Una máquina de estados se puede definir, 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.


En un circuito secuencial existen:

 ‘n’ variables de entrada. -> 2n estados de entrada
 ‘m’ variables de memoria. -> 2m estados internos
 ‘p’ variables de salida. -> 2p estados de salida

A las máquinas de estados se las conoce como autómatas finitos.

Vamos a seguir los siguientes pasos:
1.   
      Escribir las condiciones de transición y las acciones de los estados, en un lenguaje de sintaxis independiente.

2.    Exportar el diagrama a un lenguaje VHDL, Verilog o ABEL

3.    Sintetizar el fichero HDL resultante para crear un netlist o macro que podamos utilizar en nuestro esquemático.


El enunciado es el siguiente:

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

El disco solidario del tambor lleva un saliente para actuar sobre el contacto (a).

El pulsador (b) (botón de impulsos) da comienzo al ciclo.

1) Estado inicial (reposo) a=1, b=0, M=0.
2) (b) es accionado y después desaccionado rápidamente (impulso) -> M=1.
3) Cuando el disco ha dado una vuelta, (a) es accionado por el saliente y el disco se para.



Comenzaremos realizando un análisis del desarrollo mediante el diagrama de flujo síncrono que será utilizado en el diseño gráfico  principal.

La Tabla de estados enumerará los posibles estados de la máquina, los cuales no han de ser confundidos con los estados internos que se necesitarán para registrar todo el proceso secuencial.

En nuestro caso será el siguiente:

Estado    b       a      M    
0               0       1       0
1               1       1       1
2               0       1       1
3               0       0       1
4               1       0       1
5               1       1       0

El 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.

Ahora vamos a proceder a realizar el diseño de especificación del ejercicio utilizando un lenguaje de representación gráfico por medio de la herramienta gráfica integrada en ISE conocida como ECS que ya hemos utilizado en anteriores ejercicios.

Realizaremos el siguiente esquema:



Comenzaremos creando un nuevo proyecto  y añadiremos una nueva fuente esquemática.

Añadiremos además una nueva fuente de estado de diagramas (state diagram) abriéndose la herramienta StateCAD.

Vamos a añadir los puertos de entrada y de salida de la máquina, para lo cual entraremos en Options à Variable.



En la ventana que se nos abre vemos que por defecto existe la entrada de reloj.

Los demás 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’.

Una vez finalizado pulsamos OK y comenzamos con el diseño del autómata.

Comenzaremos añadiendo los estados, en este caso 6 estados que son todos los posibles.



Ahora dibujaremos las transiciones tal y como nos indica el diagrama de flujo definido al comienzo




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 trabajaen alto activo).

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:



Definiremos las condiciones de entrada--condición y los valores de salida--outputs:



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

Se nos abrirá una nueva ventana en la cual podemos simular los estados modificando las variables existentes.
Comenzaremos dándole un reset al autómata, observando que el estado que se nos pone de color amarillo es el estado 0 y la transición del reset por la que ha pasado se pone en color verde.





Para pasar al siguiente estado, deberemos pinchar en las entradas a modificar, en este caso tanto a como b y pulsaremos el botón cycle para que pase un ciclo de trabajo y aparezca el nuevo estado.



Una vez verificado el funcionamiento generamos el código del autómata en VHDL haciendo clic en ‘Generate HDL’.



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.




Cuando voy a crear el símbolo del esquemático me da error

No hay comentarios:

Publicar un comentario