miércoles, 2 de noviembre de 2011

Creación de un símbolo mediante VHDL


Vamos a crear un contador binario decodificado a BCD 7 segmentos. El descodificador lo vamos a crear en VHDL ayudándonos de las plantillas.

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.


Creación del componente en VHDL:

Para crear el componente en VHDL añadimos un nuevo fichero fuente VHDL Module.


Se nos abre una ventana en la que colocamos los buses de entrada y salida. Llamamos LED con 7 salidas, y un bus de 4 entradas HEX. Este nombre se le damos porque ya existe en ISE esta línea de código creada.


Se nos abrirá una ventana con la plantilla de código creada.


A esta plantilla la debemos agregar la línea de código del decodificador. Existe en ISE una plantilla con su línea de código y la podemos encontrar en la bombilla de nuestra barra de tareas:


Lo copiamos y pegamos en nuestra línea de código cambiando las salidas, ya que nuestro display es de cátodo común.


Podemos compilar el código en busca de errores, en la ventana processes.


Guardamos el documento y en la ventana processes generamos el símbolo para poder utilizarlo en el esquema.




Creación del esquema:

En el esquema principal:
- Colocamos un contador con un BUFG a la entrada del reloj que nos mejora el skew (llegada de señal de reloj a diferentes puntos en distintos tiempos).
- En la entrada “clear” del contador podemos poner un BUFGSR que nos unifica las entradas de reseteo a las que se lo pongamos. También nos mejora el skew. Esta entrada quedará asociada al pin 74.



- Añadimos el decodificador creado.
- Hemos colocado OBUF´s a las salidas del decodificador para que a la hora de simular sigan teniendo el mismo nombre que en el esquema.
- Creamos una línea para el bus.
- Añadimos las entradas de bus.
- Damos los nombres clave tanto al bus como a sus entradas.
- Ponemos etiquetas a todas las entradas y salidas de nuestro diseño y las ponemos las marcas.


 - Compilamos en busca de errores:




Simulación previa:

En la ventana Sources elegimos simulación previa 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).



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 generamos la simulación.


Podemos cambiar el tiempo de simulación y volver a simularlo con la siguiente herramienta:



Síntesis:

Hacemos la síntesis del esquema:


En View Technology Schematic podemos observar la representación esquemática del diseño:



Asignación de los pines:


Añadimos un nuevo archivo al proyecto de tipo: Implementation Constraints File


Hacemos doble clic al documento creado y se nos abrirá el PACE donde colocamos de forma gráfica los pines.



Translate y documentación: 

- Convertimos el esquemático en un lenguaje interno NGD. Haciendo doble clic en Translate.


- Generamos el archivo Fit y comprobamos que todo esté bien.



Simulación con los tiempos reales: 

En la ventana Sources seleccionamos Post-Fit Simulation.  En la ventana processes hacemos doble clic sobre Simulate Post-Fit Model.



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:


Colocamos los pines del JTAG y nos aseguramos que la tarjeta está en modo configuración.


Hacemos doble clic en program


Seleccionamos las siguientes opciones de programación:


Nos aparecerá un mensaje de que la programación a finalizado con éxito.


Finalmente cambiamos la tarjeta a modo ejecución y comprobamos su funcionamiento físico:

No hay comentarios:

Publicar un comentario