FPGA's, como si los micros no fueran suficiente...

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Mensaje
Autor
Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#11 Mensaje por Anilandro »

Siguiendo con el tema de la programación de esta placa Altera Cyclone II y una vez guardado el archivo gráfico o de esquema en formato .bdf, pasaremos a asignar los pines, compilar el archivo y cargar el resultado en la placa.

En la asignación de pines físicos aprovecharemos para añadir una opción que no está activada por defecto. Se trata de la "Weak PULL-UP Resistor", que como su nombre indica nos permitirá en el caso de la entrada del pulsador, activar una resistencia PULL-UP, evitando tener que conectarla exteriormente.

ASIGNAR PINES
01 ) Asignamos pines a las entradas y salidas. Vamos a "Assignments" > "Pin Planner", se abre la ventana...
02 ) Click derecho sobre la ventana de columnas > "Customize Colums" > "Weak PULL-UP Resistor" > ">" > "OK". Observamos que ha aparecido una nueva columna "Weak PULL-UP Resistor" que permitirá polarizar las entradas. El valor por defecto de "Weak PULL-UP Resistor" es "OFF"
03 ) En "Node Name" aparecen los nombres que hemos asignado a los pines, y en "Direction" si son entradas o salidas...
04 ) Damos doble click sobre "Location" de la primera fila, y del desplegable le asignamos el pin, a "LED3" el "pin3", a "LED7" el "pin7" y a "LED9" el "pin9"...
05 ) Seleccionamos la fila de la entrada "Pulsador" y del desplegable le asignamos el "pin144"
06 ) Como la entrada va un pulsador que conecta con masa, a esta le activaremos la resistencia PULL-UP en "ON"
07 ) Vamos a "File" > "Save All" para guardar los cambios.

==================================================================

Lo siguiente será compilar para obtener el archivo de configuración de hardware que cargaremos en la placa.

COMPILAR ARCHIVO
01 ) Seguidamente compilaremos el archivo. Vamos a "Processing" > "Star Compilation", o pulsamos botón ">"
02 ) Se generará el informe, puede haber errores o advertencias. Si tenemos suerte solamente advertencias no importantes que permitirán acabar el proceso. Los errores en cambio lo interrumpen y debemos solucionarlos forzosamente antes de continuar. Los mensajes indican el motivo de las incidencias, pero en este nivel de experiencia el significado de las explicaciones a veces no estará demasiado claro.
03 ) En todo caso deberemos repetir la compilación las veces necesarias para que finalice el proceso.
04 ) Si todo va bien en la carpeta de proyecto se generarán varios archivos, entre ellos uno de extensión ".sof" y otro de extensión ".pof", que nos servirán a continuación.

==================================================================

Hay dos formas de cargar el "programa" en la placa, en RAM, donde permanecerá hasta que se retire la alimentación, aunque luego se perderá, o en memoria permanente, que se recargará de forma automática cada vez que se reinicie la placa. En las primeras pruebas es interesante hacerlo en RAM, y cuando ya tengamos el programa depurado, cargarlo definitivamente en EEPROM (o Flash, no estoy seguro)

PROGRAMACIÓN DE LA RAM DE LA FPGA A TRAVÉS DE JTAG
01 ) Vamos a "Tools" > "Progammer" o el icono correspondiente, se abre ventana de programación...
02 ) En "Hardware Setup", si hemos instalado bien el driver aparecerá "USB-Blaster [USB-0]"...
03 ) En "Mode" elegiremos "JTAG"
04 ) En "File" debe haber el nombre del fichero de extensión ".sof"...
05 ) Pulsamos "Start", y si todo va bien en "Progress" aparece en verde "100% (Successfull)"
06 ) Y en este momento ya debe estar funcionando la placa FPGA, pero al estar en RAM si se corta la alimentación se pierde el programa...

==================================================================

...Esta opción me dio algún quebradero de cabeza, porque sencillamente la seleccionabas, elegías el archivo de extensión .pof pero no podía pasar de aquí, muchas opciones seguían deshabilitadas. Finalmente me di cuenta que la casilla de verificación de "Program/Configure" no estaba habilitada por defecto, y era necesaria para seguir con el proceso.

PROGRAMACIÓN DE LA EEPROM DE LA FPGA A TRAVÉS DE ASP
01 ) Desconectamos el conector de JTAG y lo conectamos en el conector ASP.
02 ) En "Progammer" > "Mode" > "Active Serial Programming"
03 ) Damos doble click bajo la columna "File"
04 ) Se abre ventana del proyecto y aparece el fichero de de extensión ".pof", lo abrimos y aparece en la ventana de "Programmer"
05 ) Observamos como los botones de la parte izquierda están deshabilitados
06 ) Marcamos al menos la opción "Program/Configure", también podemos marcar "Verify" ("Blank Check" no sé que és)
07 ) Ahora ya se activan algunos botones, como el "Start". Lo pulsamos y observamos la barra verde de "Progress" hasta el "100%(Successful)"
08 ) En este momento, si quitamos la alimentación y la volvemos a dar, la placa ya arrancará siempre el mismo programa.

Continuará...

Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#12 Mensaje por Anilandro »

Acabo de encontrar otra placa de desarrollo tipo FPGA realmente interesante, se trata de la "Intel Altera Cyclone IV FPGA development board EP4CE1022C8N with VGA display port."

Imagen


Sus características son muy superiores a la familia Cyclone II, en concreto el chip EP4CE10E22C8N contiene 10.320 elementos lógicos, 414 Kb de memoria embebida, 2 PPL's, 10 relojes. Además la placa incorpora una serie de elementos auxiliares para realizar prácticas o utilizarla en proyectos, como son 20 pines de entradas/salidas, un display de 8 dígitos del tipo 7 segmentos, un zumbador, cuatro pulsadores, un conmutador-selector DIP de 8 bits, 12 LED's. Comunicación serie 232, dos puertos PS/2, conector base VGA, interfaces para pantallas LCD del tipo 1602 (alfanumérico) y 12864 (de alta resolución 128x64), etc

...Y todo ello sólo cuesta unos 34 $ incluyendo el programador USB Blaster y el envío. Así que la he pedido. Ahora a esperar un mes a recibirla...

EP4CE10E22C8N chip
JTAG interface , download SOF or .JIC
50MHZ active crystal
4 key input
5V to 3.3V chip AMS1117-3.3
5V power supply with switch
20 PIN IO leads
12-bit LED light-emitting diode
8-bit LED seven segment
Buzzer (for sound experimental)
MAX232 serial communication circuit board
Dual PS / 2 keyboard port (do PS / 2 keyboard test)
1602LCD character LCD interface
12864LCD LCD interface
VGA display connector
1X 8 swich

Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#13 Mensaje por baldo »

hace unos dias me llego una fpga como la tuya.
por suerte vino sin cable para programar.
"por suerte", por que es lo que me faltaba liarme ahora con el aparatito.

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#14 Mensaje por Anilandro »

Je, je... :)

Además, si lo pides ahora tendrás casi un mes antes de que llegue...

Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#15 Mensaje por Anilandro »

Ya recibí la placa Intel-Altera Cyclone IV. El chip FPGA es el EP4CE6E22C8N con 6.272 elementos lógicos, 270 Kb internos, 2 PLL's, y aparte la placa lleva una memoria flash M25P16 de 16 Mb, un controlador I2C AT24C04 y un reloj de 50 Mhz...

Pero una cosa es la placa y la otra la documentación para comenzar a manejarla. En el siguiente enlace se puede bajar un archivo comprimido con características, esquemas, distribución de pines y ejemplos en VHDL y Verilog... https://t.co/7f6KJBOkJy

Imagen

Imagen


Saludos...
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#16 Mensaje por Anilandro »

En el caso de esta placa con el Cyclone IV es algo más complejo grabar la memoria flash para que el programa no se pierda al desconectar la alimentación. Esta placa sólo tiene conector JTAG y para conseguirlo deberemos crear un archivo de extensión ".jic" (JTAG Indirect Configuration). El proceso es el siguiente:

Imagen


Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#17 Mensaje por Anilandro »

Este entorno propietario Quartus II me recuerda la filosofía del complejo Keil de la MiniSTM32. Para aprender un nuevo entorno siempre me ha ido bien utilizar ejemplos, un 40% de teoría y el resto de práctica. Encuentro bastantes ejercicios y cargo algunos, aprovechando para modificarlos para entender mejor el comportamiento de las sentencias...

De todas formas, el Quartus tiene tantas opciones, procedimientos, programas embebidos y variedad de archivos distintos, que la mayoría de las veces no sabes que seleccionar o qué procedimiento seguir. Las dos placas Altera son perfectas para aprender, especialmente ésta última poe los accesorios que incluye, pero el IDE definitivamente no.

Como también he recibido la Alhambra II, voy a cargar el IDE correspondiente, el Icestudio, de software libre, que permite programar una quincena de placas cuyas FPGA han sido "hackeadas", ya que originalmente todos estos chips y su funcionamiento estaban cerrados a cal y canto por los respectivos fabricantes.

El archivo de instalación de Icestudio en versión estable 0.33 lo encuentro en la web AlambraBits, el fabricante de la placa. Lo instalo sin problemas. Ocupa poco más de 150 Megas instalado y el aspecto de simplicidad recuerda el IDE de Arduino... Instalar los drivers FTDI de la placa fue algo más complejo, pero al final salió andando.

El Icestudio contiene ejemplos y algunos bloques básicos predefinidos, aunque hay diversas colecciones de bloques libres que pueden cargarse...

Imagen


Uno de mis primeros programas enciende los 8 leds de la placa como si fuera un contador binario. Para ello simplemente ataco los led con pre-scalers de valor binario ascendente, que toman la señal del reloj de 50 Mhz de la placa...

Saludos...
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#18 Mensaje por Anilandro »

Poco a poco voy cogiendo el quit al Icestudio, mi primer proyecto ha sido crear un bloque que imita el funcionamiento del popular contador decimal 4017, que durante años he utilizado en montajes. Un ejemplo de uso sería encender secuencialmente los 8 LEDs de la Alhambra II:

Imagen


Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#19 Mensaje por Anilandro »

El interior del bloque puede parecer un poco caótico por el complejo cableado entre las salidas digitales del contador, sus invertidas, y las puertas AND selectoras para que convierta de binario a decimal... tal vez hay maneras de clarificarlo, ya lo miraré otro día...

Imagen


Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: FPGA's, como si los micros no fueran suficiente...

#20 Mensaje por Anilandro »

Este módulo permite además limitar el conteo entre 0-9, si unimos la salida siguiente el reset (rst). En la imagen hemos limitado el conteo de 0-7, para que coincida con la iluminación secuencial de los 8 leds de la placa Alhambra II...

Imagen

Saludos...
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados