Vídeo 2: ¡Poniendo en marcha Icestudio! - Obijuan/digital-electronics-with-open-FPGAs-tutorial GitHub Wiki

Click to see the youtube video

Haz click en la imagen para ver el vídeo en Youtube

Descripción

Aprenderemos a Instalar la herramienta Icestudio, que es la que usaremos en estos tutoriales para crear los circuitos digitales y sintetizarlos en una FPGA libre. Cargaremos un circuito "hola mundo", que enciende un led, en la placa Icezum Alhambra para comprobar que está todo funcionando correctamente

Contenido

Sobre Icestudio

Icestudio es una herramienta para diseño y síntesis de circuitos digitales en FPGAs libres, creada por Jesús Arroyo. Está programada en nodejs. Es software libre y multiplataforma. Corre en los sistemas GNU/Linux, Mac OS y Windows

Jesús fue el creador también del escáner 3D libre Ciclop y del software de escaneado 3D Horus

Instalación de Icestudio

Para poner en marcha Icestudio hay que seguir los siguientes pasos

Paso 1: Descarga del Instalador de Icestudio

  • Pinchamos en una opción de la parte superior, donde pone Releases

y nos aparecen todas las versiones de Icestudio que hay liberadas hasta el momento. La primera que nos aparece es la última liberada, que al día de hacer este tutorial es la versión 0.3.1

Nos desplazamos hacia abajo hasta llegar a la zona de Descargas, donde están los paquetes de Icestudio para los diferentes sistemas operativos

En los ordenadores actuales, lo normal es que sean de 64 bits. Según nuestro sistema operativo descargamos alguno de los siguientes ficheros:

Fichero a descargar Plataforma Descripción
icestudio-0.5.0-linux64.AppImage GNU/Linux, 64-bits Appimage ejecutable
icestudio-0.5.0-win64.exe Windows 10, 8, 7, 64-bits Instalador (Archivo ejecutable)
icestudio-0.5.0-osx64.dmg Mac OSX-64 Instalador para mac

Si lo que tenemos es un ordenador de 32 bits, nos descargamos estos ficheros para nuestra plataforma

Fichero a descargar Plataforma Descripción
icestudio-0.5.0-linux32.AppImage GNU/Linux, 32-bits Appimage ejecutable
icestudio-0.5.0-win32.exe Windows 10, 8, 7, 32-bits Instalador (Archivo ejecutable)
cestudio-0.5.0-osx32.zip Instalador para mac Mac OSX-32 bits

Paso 2: Ejecutar el instalador

Esta operación depende de nuestra plataforma

GNU/Linux

Antes de arrancar Icestudio debemos instalar sus dependencias: python2.7 y xclip. Para el caso de Ubuntu, abrimos un terminal y escribrimos lo siguiente:

sudo apt-get install python2.7 xclip

Ahora sólo tenemos que ir la carpeta donde hemos descargado el instalador, desde el navegador de archivos

Nos ponemos encima del archivo y le damos al botón derecho de ratón

Pinchamos en propiedades. Se nos abre una ventana nueva

Pinchamos en la pestaña Permisos

y activamos la casilla que pone Permitir la ejecución del programa

Cerramos la ventana y hacemos doble click en el instalador. Se nos abrirá directamente Icestudio

Los usuarios avanzados lo harán directamente con estos comandos:

chmod +x icestudio-0.5.0-linux64.AppImage
./icestudio-0.5.0-linux64.AppImage

NOTA sobre Ubuntu 18.04

Algunos usuarios de ubuntu han reportado que siguen todos los pasos y no les arranca Icestudio. En ese caso, probar a instalarlo desde la consola (modo avanzado) para descubrir cuál es el mensaje de error que aparece. El siguiente error le ha aparecido a algunos usuarios

error: ./icestudio: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory

Es debido a que la biblioteca ligconf-2-4 no está instalada. En principio se debería haber instalado con Ubuntu, pero por la razón que sea no lo está. Se soluciona ejecutando este comando:

sudo apt install libgconf-2-4

NOTA sobre ubuntu 20.04

Si al instalar la toolchain desde icestuio aparece un recuadro rojo, con el error: "ModuleNotFoundError: No module named 'distutils.spawn'

haz lo siguiente:

  • Cierra icestudio
  • Instala el paquete python3-distutil:
sudo apt install python3-distutils
  • Arranca icestudio
  • Instala la toolchain: Herramientas/Toolchain/Instalar

NOTA sobre Linux Mint

Miguel Grassi ha reportado este error:

ftdi_usb_get_strings failed: -4 (libusb_open() failed)

Para que funcione Icestudio es necesario que nuesro usuario pertenezca al grupo plugdev. En distribuciones como Ubuntu esto ya viene configurado, pero en el caso de Linux Mint lo tenemos que hacer nosotros. La solución es abrir un terminal y escribir este comando:

sudo usermod -a -G plugdev usuario

Donde "usuario" es el login de usuario. Después habrá que reiniciar el sistema para que tenga efecto

Windows

Mostraremos los pantallazos para Windows 10, aunque el proceso es similar para los windows anteriores. Una vez descargado el instalador lo ejecutamos, haciendo doble click en el archivo descargado en el paso 1. Dependiendo de los antivirus que tengamos instalados, podrán salir varias ventanas de advertencia:

No les hacemos caso y le damos a Ejecutar de todas maneras (Run Anyway). Aún así, nos puede saltar alguna más:

En este caso pinchamos en , para indicar que permitimos que el instalador haga cambios

Se nos abre el instalador y le damos a Siguiente. El instalador detecta automáticamente si tenemos instalado Python 2.7. Si no lo está, se procede a su instalación, y luego a la de Icestudio

A continuación indicamos el directorio donde instalador Icestudio. En caso de duda usar el que viene por defecto. Pinchamos en Install

Comienza la instalación. El procesaso durará unos minutos. Una vez acabado nos aparecerá esta pantalla:

Pinchamos en Finalizar. Hemos acabado la primera parte de la instalación. Se nos abre Icestudio y nos aparecerá una ventana como esta

Mac

Lo primero es instalar python 2.7 si no lo tenemos ya. Los instaladores se encentran en este enlace

También necesitamos instalar Howbrew, que es un instalador de paquetes para MAC. Se instala fácilmente siguiendo las instrucciones en su web

A continuación nos vamos al directorio donde hemos descargado el instalador de Icestudio

Pinchamos en el instalador .dmg para abrirlo

y al cabo de unos segundos nos aparecerá la pantalla de bienvenida

y se empiezan a copiar los archivos a la carpeta de aplicaciones

Al finalizar podemos ver Icestudio entre las aplicaciones instaladas

Lo abrimos para comprobar que está todo ok

Nos aparecerá una advertencia indicando que es un software que no conocen y que si estamos seguro de que lo queremos abrir. Pinchamos en open

Al cabo de unos segundos nos debe aparecer una pantalla como esta, con icestudio abierto

Paso 3: Configurar el idioma

Arrancamos icestudio. Lo primero que haremos será configurar el idioma. Nos vamos al menú Edit/Preferences/Language y seleccionamos el idoma que queramos. Yo lo voy a poner en castellano (pinchando en Spanish), pero se puede poner en Gallego, Euskera, Catalán y Francés

Nos aparecerá otra vez la ventana principal, pero con los textos cambiados a nuestro idioma

Paso 4: Instalar la toolchain

Ya podemos abrir ejemplos y modficarlos, pero todavía no podemos sintetizarlos en la FPGA porque hay que instalar las herramientas (La Toolchain). Para hacerlo nos vamos a Herramientas/Toolchain/Instalar

Comienza su instalación. Nos aparecerá una ventana con una barra de progreso. Este proceso puede durar unos minutos

Al terminar, nos aparecerá una notificación verde en la parte inferior derecha de la pantalla indicando que la toolchain está instalada. Debajo aparece otra para indicarnos que pinchemos ahí para instalar los drivers

Paso 5: Instalar los drivers

En este estado en que estamos, ya podemos sintetizar circuitos con Icestudio (se generará el bitstream), sin embargo todavía no los podemos descargar en la placa con la FPGA libres. Para hacerlo hay que habilitar los drivers

Nos vamos a la opción del menú Herramientas/Drivers/Habilitar. Según nuestra plataforma, el proceso de habilitación será diferente

Habilitación del driver en GNU/Linux

En las plataformas GNU/Linux el driver ya está integrado en el propio kernel, por lo que el proceso será muy rápido. Al darle a la opción de habilitar el driver nos aparecerá una ventana para pedirnos la clave del usuario para tener permisos para instalar el driver

Y en unos segundos nos aparece la notificación de que el driver está habilitado

Finalmente hay que desconectar la placa y volverla a conectar. ¡Ya tenemos nuestro icestudio listo para trabajar!

Habilitación del driver en Mac OS

El proceso es el mismo que para GNU/Linux. Hay que pinchar en Herramientas/Drivers/Habilitar. En unos segundos se finaliza el proceso, y deberá aparecer una notificación en verde en la parte inferior derecha

Habilitación/Instalación del driver en Windows

Con la placa de la FPGA conectada, pinchamos en la opción Herramientas/Drivers/Habilitar nos aparecerá una ventana con los pasos a seguir

La gestión de los drivers en Windows siempre es un reto. Con icestudio suele funcionar a la primera, sin embargo, algunos usuarios han reportado que les ha costado encontrar la combinación exacta de controlador/usb necesarios para que les funcione bien. Pero al final se consigue. No te preocupes si no te funciona a la primera

El proceso de instalación para el driver de otras placas con FPGA que tengan también un chip FTDI, es el mismo que para la Icezum Alhambra. Por ejemplo la Icestick

Importante: Es necesario tener permisos de administración para la instalación del driver

1.Conectar la placa de la FPGA al USB

En windows se recomienda que la placa esté conectada un USB 2.0 si es posible. Una opción que funciona muy bien es conectar un hub usb 2.0 y conectar la placa a través de él

2.Seleccionar el driver

Pinchamos en el botón OK. Icestudio lanzará la aplicación Zadig (que se ha instalado con Icestudio). Es la que nos permite instalar el driver de la FPGA. Aparecerá una ventana como la siguiente

Pulsamos en el desplegable superior y seleccionamos la opción IceZUM Alhambra v.1 - Bxx (Interface 0)

¡OJo! Es muy importante que sea el que pone (Interface 0)

El deplegable se cerrará y nos aparecerá lo que hemos seleccionado. En la casilla que está encima del boton de "Replace driver" debemos seleccionar el driver libusK (es muy probable que sea el que aparece por defecto), pero si no, lo seleccionamos con las flechas

Ahora apretamos Replace driver y comienza la instalación del driver

En unos segundos nos aparecerá el mensaje de que se ha instalado correctamente

Pinchamos en Close para cerrarla

y este es el aspecto de Zadig una vez instalado el driver. Ya podemos cerrar la ventana

3. Desconectar y conectar la placa

En la parte inferior derecha de icestudio nos aparecerá una notificación para recordarnos que debemos desconetar la placa y volver a conectarla, para que el driver funcione correctamente

¡¡¡IMPORTANTE!!! El driver se ha instalado en el USB donde estaba conectada la placa. Hay que conectarla en el mismo USB

Si se quiere usar la placa en otro USB diferente, habrá que volver a instalar el driver en ese USB

Paso 6: Cargar el circuito "hola mundo"

Ya lo tenemos todo listo. El último paso es comprobar que podemos cargar un circuito de ejemplo en la FPGA. ¡Es el momento de la verdad!. Abrimos el ejemplo "01.Un LED" desde el menú Archivo/Ejemplos/1.Básico

Nos aparecerá el circuito en el centro de la pantalla, y una notificación verde en la parte inferior derecha indicando que se han abierto correctamente

Lo cargamos en la placa dándole a la opción Herramientas/Cargar

Nos aparece una notificación indicando que comienza la carga

y a los pocos segundos el proceso habrá concluido, y si todo ha ido bien, aparecerá una notificación verde en la esquina inferior derecha indicando que la carga se ha realizado correctamente. Adicionalmente aparecerá otra notificación con la cantidad de recursos de la FPGA ocupados por el circuito hola mundo. En los siguientes tutoriales explicará esto con más detalle

En la placa veremos cómo el LED0 está encendido (verde) y el resto apagados:

¡Enhorabuena! Acabas de sintetizar y probar tu primer circuito en una FPGA libre

Resolución de problemas

Estos son los errores más comunes y las posibles soluciones

Placa Icezum Alhambra no detectada

Al cargar el programa "hola mundo" nos aparece este mensaje de error

Este mensaje aparece por estos motivos:

  1. La placa NO está conectada al USB. Por despiste se nos ha olvidado conectarla, o la hemos conectado a un hub USB que no está conectado al ordenador. Solución: Conectar la placa y volver a cargar

  2. La placa NO está correctamente conectada por el USB. Desconectarla y volverla a conectar. Asegurarse que se hace buen contacto por ambas partes: el lado del Ordenador y el lado de la FPGA

  3. El cable usado no es de datos. Algunos cables USB - microUSB son sólo para cargar los móviles u otros dispositivos, y no tienen los hilos de datos. Solución: Usar el cable para conectar un móvil al PC y comprobar si desde el ordenador se detecta el móvil y se pueden transferir datos. Con esto verificamos si el cable es correcto

  4. Problemas con el driver. El driver no está correctamente instalado, o hace conflicto con algún otro controlador. Esto sucede en algunas máquinas Windows. Para solucionar el problema prueba alguna de las siguientes opciones:

    • Asegúrate de que has conectado la placa en el mismo USB donde instalaste el driver. En windows los controladores se instalan para un USB concreto (en los sistemas Linux/Mac son válidos para cualquiera)
    • Enchufa la placa en otro USB, a ser posible USB 2.0. Vuelve a instalar el driver para ese USB y prueba otra vez la carga. Iterar hasta encontrar un USB donde funcione correctamente. En algunos windows ha funciona a la tercera o cuarta. Una vez que funciona, ya lo hace siempre
    • Si el problema persiste, conecta la placa a través de un hub USB 2.0 y vuelve a instalar el driver. Esto suele funcionar bastante bien
  5. El problema persiste. Si has probado todo lo anterior pero no consigues que funcione, envíanos un correo a la Lista de FPGAwars, dando todos los detalles que puedas, para que entre todos te echemos una mano

Ejercicios propuestos (6 BitPoints)

  • Ejercicio 1: Instalar Icestudio. Abrir el ejemplo 01.LEDON y sintetizarlo con Herramientas/Sintetizar. Aunque no tengáis placa física lo podéis hacer. Enviar el pantallazo en el que aparece la notificación verde de que se ha sintetizado bien por twitter o G+, con mención a @Obijuan_cube. Valor: 1 BitPoint

  • Ejercicio 2: Conectar la placa y cargar el ejemplo 01.LEDON. Enviar el pantallazo de que la carga se ha realizado correctamente y una foto de la placa con el LED0 encendido, por Twitter o G+, con mención a @Obijuan_cube. Valor: 2 Bitpoins (uno por cada pantallazo)

  • Ejercicio 3: Enviar los 3 pantallazos anteriores al repositorio de entregas del Github, en el directorio Tutorial-2 y la carpeta con vuestro nombre. Valor: 3 BitPoints (Uno por cada pantallazo)

Ejercicios entregados

Alberto Valero

|

Diego Lale

Miquel Servera

Autor

Licencia

Créditos y agradecimientos

  • Clifford Wolf es el Ingeniero Austriaco al que le debemos la aparición de las FPGAs libres. Todo este tutorial,y todas las herramientas creadas a su alrededor no habrían sido posibles sin su gran aportación: El proyecto Icestorm. ¡Muchas gracias!
  • Jesús Arroyo es el creador de Icestudio y su desarrollador principal. Gracias a su talento está consiguiendo que cientos de personas puedan acceder al desarrollo de circuitos digitales, de una forma muy sencilla. ¡Muchas gracias!
  • Eladio Delgado, es el diseñador de la placa IceZum Alhambra. Y el encargado de la gestión de la fabricación de la placa. Todo lo dirige desde su Rural Workshop en Pinos del Valle (Granada) ¡Muchas gracias!
  • Andrés Prieto-Moreno, por todos los pantallazos de Icestudio en Windows 10 y Mac. ¡Muchas gracias!

Enlaces

FAQs

  • **Al ejecutar Icestudio obtengo el siguiente "error: ./icestudio: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory". ¿Cómo lo soluciono?

Es debido a que la biblioteca ligconf-2-4 no está instalada. En principio se debería haber instalado con Ubuntu, pero varios usuarios han reportado este problema. Se soluciona ejecutando este comando:

sudo apt install libgconf-2-4
  • ¿Dónde puedo conseguir la placa Icezum Alhambra?

Pueden conseguir una desde Alhambrabits

  • ¿Cómo aprendo a manejar github?

Hay mucha información en internet. En su momento hice este Tutorial: Github y FreeCAD para enseñar a manejarlo. Los ejemplos están hechos con ficheros de FreeCAD, sin embargo, lo que se enseña es genérico. También vale para las entregas de los ejercicios del tutorial de Electrónica digital para makers