MÁQUINA ROTATIVA
Posted by discobolo100 en 30 diciembre, 2010
MÁQUINA ROTATIVA
ENUNCIADO
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.
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.
CREAR NUEVO PROYECTO
Desde ‘File->New Project’ configuramos los primeros parámetros del proyecto tal como el nombre ‘ROTATIVA’ y el tipo ‘Schematic’. Hacemos clic en ‘Siguiente’.
Configuramos Familia, Dispositivo, Encapsulado, Velocidad, Sintetizador, Simulador y Lenguaje de simulación.
AÑADIRNUEVAFUENTE
Vamos a añadir una fuente a nuestro proyecto, con el nombre de ‘ROTATIVA’, utilizando un lenguaje formal de presentación gráfico.
DIBUJAR EL ESQUEMA DEL AUTÓMATA
Se nos abre un programa de diseño gráfico de máquinas de estados llamado ‘StateCAD’.
AÑADIR PUERTOS DE ENTRADA/SALIDA DE LA MÁQUINA
Añadimos los puertos de entrada y de salida de la máquina. Para ello entramos 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’.
Pulsamos sobre ‘OK’ y comenzamos el diseño del autómata.
AÑADIR ESTADOS
Añ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 TRANSICIONES
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ñ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).
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.
Quedando al final una cosa así:
VERIFICACIÓN
Verificamos el correcto funcionamiento del autómata creando un ‘test bench’. Hacemos clic sobre el botón de
‘State Bench’.
Se nos abre un simulador de estados.
Si damos donde se marca con varios circulos rojos contenctricos el propio programa realizara paso a paso la maquina de estados y nos comunicara si hay algún error ahorrandonos así bastante tiempo.
Al cerrar el simulador que se nos habrio directamente se nos genera un codigo VHDL mediante una pantalla que nos sale y daremos a CLOSE para cerrarla, posteriormente guardaremos el “mota” y cerraremos el archivo.
El código que se nos crea es el siguiente:
Añadimos el fichero ‘MROTA.vhd’ al proyecto y generamos el símbolo:
1º.- Ejecutamos ‘Add Source’ y seleccionamos el fichero ‘MROTA.vhd’.
2º.- Seleccionamos el tipo de fuente ‘VHDL Design File’.
3º.- Generamos el símbolo del autómata.
AÑADIENDO COMPONENTES
Añadimos buffer de reloj, de GSR y el autómata.
CREAR EL FICHERO DE TEST BENCH WAVEFORM
La simulación funcional ya ha sido realizada con el programa StateBench, no obstante, si se desea se puede volver a crear un fichero test bench tal y como lo hemos venido realizando en ejercicios anteriores.
Por otra parte, el ‘StateBench’ generó un fichero de test ‘MROTA_TB.vhd’, el cual puede ser simulado directamente con ‘ModelSim’ tras haber sido previamente añadido al proyecto como tipo de fuente ‘VHDL Test Bench’.
Seguidamente, abrimos el proceso ‘Simulate Behavioral Model’ asociado a ‘MROTA_TB.vhd’.
SÍNTESIS DE LA MÁQUINA 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.
CREANDO RESTRICCIONES (*.UCF)
Crearemos un fichero de restricciones para la localización de pines.
Desde ‘Project->New Source’ añadimos una nueva fuente tipo ‘Implementation Constraints File’ con el nombre de ‘ROTATIVA’ y lo asociamos a la fuente ‘ROTATIVA’.
COLOCACIÓN (Translate)
Realiza todos los pasos necesarios para convertir los ficheros netlist de entrada, en un formato propietario NGD que utiliza una representación interna de la tecnología que se está empleando.
Para ejecutar la utilidad nos ponemos encima de ‘Translate’ y hacemos doble clic.
CONEXIONADO (Fit)
Fit mapea la lógica definida por el fichero NGD dentro de los recursos del CPLD, tal como células lógicas, I/OB’s y otros componentes. La salida del proceso es un fichero VM6 que representa físicamente el conexionado de los componentes en el CPLD.
Para ejecutar la utilidad nos ponemos encima de ‘Fit’ y hacemos doble clic.
Comprobamos que todo ha salido de forma correcta inspeccionando el informe ‘fitter report’.
Para terminar solo queda programar el dispositivo.
Dejo un link de descarga del ejercicio: http://www.megaupload.com/?d=M7IQPPUT
Responder