Vamos a crear una máquina de estados Mealy que nos represente el control de un tambor: al accionar un pulsador, el tambor gira 360º y se para mediante un final de carrera.
Esquema:Esta es su tabla de estados:
Creación de un nuevo proyecto:
Creamos un nuevo proyecto y seleccionamos esquemático.Seleccionamos las características de nuestro CPLD:
-Seleccionamos la familia del CPLD, XC9500 CPLDs.
-El modelo, XC9572.
-El encapsulado, PC84.
-La velocidad de trabajo del CPLD, -7.
-El sintetizador.
-El simulador.
-El lenguaje de programación, VHDL.
En la siguiente ventana añadimos el fichero fuente.
Seleccionamos schematic y damos nombre al archivo.
Aceptamos todos los apartados siguientes y se nos crea el proyecto.
Aceptamos todos los apartados siguientes y se nos crea el proyecto.
Creación del componente:
Se nos abrirá un subprograma llamado StateCAD donde creamos la máquina de estados.
En Options/ Variables añadimos los puertos de entrada y salida:
En Options/ Variables añadimos los puertos de entrada y salida:
- Escribimos el nombre.
- Seleccionamos el tipo: reloj, entrada o salida; la salida puede ser asíncrona (OUT:COM) o en nuestro caso síncrona (OUT:REG).
- Modo activo.
- Si va a ser un pin o un nodo.
Añadimos los estados con la herramienta Add State:
Añadimos las transiciones con la herramienta Add Transition, hay que tener en cuenta que cada transición lleva cuatro puntos para poder hacer las líneas curvas.
Añadimos el reset con la herramienta Add Reset:
Nos pregunta si queremos un reset asíncrono o síncrono, damos a si y nos crea un reset asíncrono.
Nos pregunta si queremos un reset asíncrono o síncrono, damos a si y nos crea un reset asíncrono.
Definimos las condiciones de entrada y salida haciendo doble clic sobre la transición. Nos aparece una ventana, en la parte superior escribimos las condiciones de entrada:
En la parte inferior escribimos el estado de la salida, tenemos un output wizard que nos ayuda a definirlo:
Tras poner todas las condiciones este debería ser el aspecto final:
Simulación previa:
Podemos probar el funcionamiento de nuestra máquina de estados creando un test bench.
Se nos abrirá el simulador de estado, podemos ir simulando estado a estado cambiando las entradas con doble clic y generando un pulso. Se nos ira poniendo en amarillo por el estado o transición que vallamos, y en verde por la que hayamos pasado.
Creación del esquema:
Generamos el código VHDL de la máquina en Generate HDL.
Añadimos el fichero creado a nuestro esquemático. En la ventana processes generamos el símbolo del decodificador para poder utilizarlo en el esquema principal del diseño. En la ventana Sources nos aparecerá la ruta del componente creado para poder utilizarle.
Colocamos el símbolo creado con sus buffers de reloj y de reset. Colocamos las etiquetas y las marcas.
Compilamos en busca de errores:
Síntesis:
En View Technology Schematic podemos observar como sería nuestra máquina de estados creada con puertas lógicas:
Asignación de los pines:
Hacemos doble clic al documento creado y se nos abrirá el PACE donde definimos los pines.
Translate y documentación:
Generamos el archivo Fit y comprobamos que todo esté bien.
Simulación tiempos reales:
En la ventana Sources elegimos simulación post-fit y añadimos un test bench waveform.
Elegimos la configuración del tiempo:
- Podemos elegir el tiempo que va a estar el reloj en 0 (clock low time) y en 1 (clock high time), en mi caso 100ns, con lo que tendremos un periodo de 200ns y un ciclo de trabajo del 50%.
- Podemos modificar el Offset (bloqueo de las entradas en el instante inicial).
- Por último modificamos el tiempo que va a durar la simulación (Initial Lenght of Test Bench).
- Podemos elegir el tiempo que va a estar el reloj en 0 (clock low time) y en 1 (clock high time), en mi caso 100ns, con lo que tendremos un periodo de 200ns y un ciclo de trabajo del 50%.
- Podemos modificar el Offset (bloqueo de las entradas en el instante inicial).
- Por último modificamos el tiempo que va a durar la simulación (Initial Lenght of Test Bench).
Nos aparecerá la ventana de simulación donde podemos dar valores a las entradas haciendo clic sobre la línea de la entrada. Podemos observar que no nos deja hacer cambios los primeros 100ns por la configuración del Offset.
En la ventana processes hacemos doble clic sobre Simulate Post-Fit Model y comprobamos la simulación:
Programación:
Por último generamos el archivo de programación .JED que le abriremos con el programa IMPACT.
Hacemos doble clic sobre Generate Programming File.
Abrimos el IMPACT, creamos un nuevo proyecto, escribimos el nombre y la dirección de la ruta:
Seleccionamos el modo de trabajo del JTAG, lo dejamos por defecto:
Añadimos el documento de programación .JED en Add Device:
Hacemos doble clic en program.
Seleccionamos las siguientes opciones de programación:
No hay comentarios:
Publicar un comentario