Altera Cyclone III FPGA Starter KIT V2
Transcript of Altera Cyclone III FPGA Starter KIT V2
Altera
Cyclone III
FPGA Starter
KIT
EP3C25F324C6NES
Adrián Escolar
Pablo González
David Zubiaga
ÍNDICE
1.- Introducción
1.1.- Características Altera Cyclone III Starter Kit
1.2.- Herramientas utilizadas
1.3.- Objetivos del proyecto
2.- Proceso para la realización del proyecto
3.- Resultados obtenidos
Contenido del CD:
- Fotos y vídeos de los proyectos
- Archivos de los 3 proyectos
1.- Introducción
La placa Altera Cyclone III del starter kit que nos ha tocado es una placa muy
básica (ya que sólo contiene 4 botones y 4 LEDS) por lo que no ofrecía grandes
opciones a la hora de diseñar programas. Por ello hemos realizado 3 programas
diferentes en los que sólo se utilizan los LED’s y los botones de la placa.
1.1.- Características Altera Cyclone III Starter Kit
- 256 Mbits memoria DDR SDRAM
- 1 Mbyte memoria SRAM sincrona
- 16 Mbytes memoria Flash
- Oscilador de reloj de 50 Mhz
- 6 botones (4 para el usuario)
- 7 LED’s (4 para el usuario)
- Conector HSMC
- Cable USB para cargar programas
- Alimentador de corriente
1.2.- Herramientas utilizadas
- Odenador ( S.O Windows 7 Ultimate 64bits)
- Quartus II web edition version 8.0 build 215
- Controladores Altera
- Placa Altera Cyclone III EP3C25F324C6NES
- Foro de altera para resolver dudas
1.3.- Objetivos del proyecto
- Entender como funcionan las placas FPGA
- Ver la diferencia entre un procesador y una placa FPGA
- Entender el funcionamiento de las arquitecturas paralelas
- Aprender a programar en VHDL
2.- Proceso para la realización del proyecto
En primer lugar, valoramos las opciones que nos ofrecía la placa para poder
pensar así en el diseño final de los programas del proyecto.
Después instalamos el quartus II web edition así como todos los programas que venían
en el CD que incluía el Kit. Una vez instalado, realizamos los pasos descritos en el
manual de la placa para comprobar de esta forma su correcto funcionamiento.
El funcionamiento no era el deseado ya que el ordenador no reconocía la placa porque
el controlador no se había instalado. Tras buscar el controlador de forma manual e
intentar instalarlo, no se instalaba con éxito ya que no estaba firmado digitalmente. Para
solucionarlo, cada vez que conectamos la placa al ordenador, tenemos que iniciarlo en
modo de prueba. Ahora ya con el controlador instalado, pudimos verificar que el
funcionamiento de la placa era correcto.
Tras esto, buscamos documentación acerca del lenguaje VHDL y vimos varios ejemplos
de programas implementados en este lenguaje. Una vez entendido el funcionamiento del
lenguaje, intentamos implementar el ejercicio más sencillo de los que habíamos
pensado.
No tuvimos éxito en su implementación: múltiples errores de novato a la hora de
escribir código (lista de sensibilidad en los procesos, modificación de señales de
entrada, bucles infinitos con while y for, lógica inversa etc.), nula asignación de pines,
problemas de compilación imposibles de entender sin buscar acerca de ellos en internet
y desconocimiento de funciones para capturar las pulsaciones de un botón.
Tras tres semanas depurando el código del programa y haciendo ya una correcta
asignación de los pines, nos fallaba la actualización de una variable entera al pulsar el
boton1, por ello pedimos ayuda al profesor que nos explicó una posible solución.
Probamos la solución del profesor pero seguía sin funcionar, y tras alguna modificación
en la solución del profesor por fin conseguimos que funcionara.
De esta forma, el programa llamado “fichero2” estaba funcionando correctamente y
realizaba lo que queríamos.
Después realizamos los otros dos programas que habíamos pensado (fichero1 y
fichero3) sin ningún tipo de problema y en apenas tres horas.
Tras comprobar el correcto funcionamiento de todos ellos y realizar algún pequeño
cambio para mejorar el funcionamiento de los programas, empezamos a hacer este
informe.
A continuación se muestra como se ha realizado cada parte del proyecto
utilizando el software quartus II web edition mediante capturas de pantalla.
- Creación de un nuevo proyecto
- Después se ha creado un nuevo fichero VHDL en el proyecto para
introducir el código del programa.
- Tras haber escrito el código del programa en lenguaje VHDL, se
comprueba que no tiene ningún error sintáctico.
- Si el código está escrito correctamente se muestra un mensaje
diciendo que lo está, en caso contrario se muestran la líneas en las
que puede haber fallos.
- Una vez comprobada la sintaxis del código, se procede a la
asignación de pines mediante la opción Pin Planner.
- Se realiza la asignación a cada variable lógica creada en el programa
y utilizando como referencia para saber la función de cada Pin el
manual de la placa FPGA.
- Antes de compilar hay que asegurarse que la entidad del proyecto
está situada como la más alta ya que sino puede que el proyecto trate
de compilar con otro fichero de código.
- Tras realizar todo esto se generan todos los archivos de proyecto
mediante la compilación utilizando la función Start Compilation
- Una vez realizada la compilación de forma exitosa se mostrará este
mensaje
- El proyecto ya se puede volcar en la placa aunque es conveniente
hacer una simulación antes.
Tras haber instalado los drivers (al estar sin firmar es necesario
iniciar el sistema a modo de prueba de errores) y haber encendido la
placa, se vuelca el proyecto mediante la función Programmer
- Aparecerá por defecto el archivo sof del proyecto que deseamos
volcar y estará tildada la opción Program/Configure por lo que sólo
habrá que darle a start para cargarlo. Una vez cargado la barra de
progreso se volverá azul y mostrará 100%
NOTA: No se muestra un proyecto volcado debido a que ya no
disponemos de la placa
3.- Resultados obtenidos
Empezaremos con la explicación de fichero2 por ser el primero que
realizamos y por las similitudes entre el fichero1 y fichero3
- Fichero2
La funcionalidad de este programa consiste en introducir mediante cada
pulsación de BUTTON1, un número en base 10 comprendido entre 0 y 15 que se
representará en binario mediante los LED’s 1,2,3 y 4 siendo 1 encendido y 0
apagado.
Una vez introducido el número deseado, se podrá saber si el número es múltiplo
de 2, 3 o 5 pulsando los botones 2, 3 y 4 respectivamente. En caso de serlo, los
LED’s representarán el número del que es múltiplo en binario y se apagarán si
no lo son.
Ejemplo: las fotos de debajo representan el funcionamiento del programa
habiendo introducido el número 6
- Fichero1
La funcionalidad de este programa consiste en realizar secuencias de luces
mediante los LED’s dependiendo del botón que se esté pulsando:
- Boton 1, secuencia de LED1 a LED4
- Boton 2, secuencia de LED4 a LED1
- Boton3, secuencia de LED’s 1, 3, 2, 4
- Boton4, parpadeo intermitente de los 4 LED’s al mismo tiempo
Se muestra su funcionamiento en video1 de la carpeta videos del CD
- Fichero3
La funcionalidad de este programa consiste en realizar secuencias de luces
mediante los LED’s dependiendo del botón que se esté pulsando:
- Boton 1, secuencia de 0 a 15 representada en binario por los LEDS
- Boton 2, secuencia de 15 a 0 representada en binario por los LEDS
- Boton3, se encienden de uno en uno los LEDS desde LED1 hasta LED4
y se apagan de uno en uno desde LED4 hasta LED1
- Boton4, se encienden de uno en uno los LEDS desde LED1 hasta LED4
y se apagan de uno en uno desde LED4 hasta LED1
Se muestra el funcionamiento de cada uno de los botones de los programas
fichero1 y fichero3 en la carpeta Videos del CD.