sábado, 29 de junio de 2013

Contador de anillo con VHDL en Basys 2

EJERCICIO: Solo uno de los 8 leds disponibles en la tarjeta Basys 2 debe encender  cada segundo en una secuencia  contador de anillo.

Solución: 

1).Creamos nuevo proyecto: contador_de_anillo y guardamos en la carpeta apropiada efectuando la debida configuración de acuerdo a las propiedades del proyecto y características de la FPGA.

2) Como nueva fuente trabajamos el código en VHDL creando el archivo contadordeanillo.vhd

3) Se chequea sintasis y luego se efectúa la síntesis.Para este caso no efectuamos la simulación.

4) Asignamos pines en User Constraints ---> Floorplan Area / IO / Logic- Post-Synthesis

El reloj de 50 Mhz está localizado en el pin B8 de la tarjeta Basys 2.Para los LEDS vienen marcados en la tarjeta.

5) Implementamos el diseño, se genera el archivo de programación y se configura el dispositivo en la tarjeta.

6) Antes de alimentar la tarjeta  y programar la FPGA es conveniente en el Resúmen del Diseño de la FPGA  (FPGA Design Summary)  verificar que los pines del reloj y de los LEDs están todos correctos.


Para esto se da click en View Design Summary, luego en Pinout Report y por último en Signal Name.

5) Se alimenta la tarjeta a través del conector USB. Se llama el programa ADEPT y se busca y se programa la FPGA con el archivo contadordeanillo.bit. Se dice Si a las advertencias.

El led rojo titila indicando que se está efectuando la programación y en el mensaje de la ventana de Digilent Adept debe indicarse que la programación se ha efectuado exitosamente (Programming Successful).

Compuertas lógicas en Basys 2 con VHDL

EJERCICIO: Utilizando dos Switches se dan valores binarios a las entradas X,Y y se generan las diferentes compuertas lógicas para ser visualizadas en los leds de la tarjeta Basys 2.

Vamos a indicar los pasos básicos sin entrar en detalle. Si el lector requiere paso a paso las indicaciones se sugiere previamente  estudiar los laboratorios con la tarjeta Spartan 3E explicados en  entradas anteriores del blog para que adquiera habilidad en el manejo del software Xilinx ISE 10.1

1). Primero cerramos el proyecto existente en el navegador de Xilinx 10.1 y creamos un nuevo proyecto que vamos a guardar en una carpeta que previamente se ha creado para trabajar con Basys 2.
El proyecto lo llamamos compuertas  e indicamos  como HDL el tipo de nivel superior de fuente   en el que se van a trabajar las compuertas lógicas.

Indicamos las propiedades  del proyecto  y las características propias de la FPGA de la tarjeta basys 2:


2). Creamos como nueva fuente un módulo VHDL para indicar el programa respectivo:

 3). Se efectúa la síntesis del circuito para compilar el archivo VHDL después de haber chequeado su sintásis.

 4),  Se hace ahora la simulación respectiva:
5).. Se efectúa la asignación de pines y luego editamos el archivo compuertas.ucf para verificar que está correcto.



6).estando el circuito sintetizado y simulado, se procede a implementar el diseño, generar el archivo de programación y configurar la FPGA en la tarjeta Basys 2, tendiente a generar el archivo compuertas.bit, que es el objetivo final.  En las FPGA el archivo .bit es el equivalente al archivo .JED para programar  las GAL:

7) Se conecta el cable  USB que alimenta y permite la programación de la FPGA de la tarjeta Basys 2.
Abrimos el software ADEPT de la empresa Digilent, fabricante de la tarjeta.
Con Browse  buscamos el archivo compuertas.bit en la carpeta donde guardamos el proyecto.
Damos Si  en la advertencia que aparece.
Se da click en program, y si nuevamente a la ventana con adevertencia, y la tarjeta debe funcionar perfectamente despues de titilar brevemente el led rojo, indicativo de que la programación ha sido exitosa.
En Adept  debe aparecer en la parte de abajo un mensaje indicando que la programación de la FPGA se ha efectuado satisfactoriamente.
 Mediante Adept se puede chequear el correcto funcionamiento de la tarjeta con un test de prueba.

 Se muestra en tiempo real que switches o pulsadores se accionan.Los displays de 7 segmentos muestran un contador en hexadecimal desde 0000 hasta FFFF (4 dígitos unificados)

Después de realizado el test de prueba se requiere volver a grabar la FPGA para que vuelva a funcionar.
Si se desenergiza se pierde la programación.Ello es debido a que las LUTS (tablas de búsqueda) de la FPGA se efectúan sobre memorias RAM volátiles. Si se desea que el programa perdure aun cuando se quite  la alimentación hay que grabarlo en la memoria PROM Flash que dispone la tarjeta junto con la FPGA.