[iCEblink40] Configuración Windows para hacer funcionar una Iceblink40-HX1K con herramientas libres.

398 views
Skip to first unread message

Democrito

unread,
Oct 30, 2016, 2:52:44 AM10/30/16
to FPGA-WARS: explorando el lado libre
Este post se debe gracias a la gente que participó en este hilo de información del tema que aquí se trata, pero enfocado para Windows y siempre con herramientas libres.



Para poder trabajar con la tarjeta iCEblink40-HX1K con herramientas libres en Windows, tenemos que hacer lo siguiente:

Lo primero es tener instalado y funcionando correctamente icestudio, eso significa que pueda "verificar" y "construir" el esquema electrónico (o en verilog a través de apio) que hayamos diseñado, pero para subir el bitstream lo haremos indirectamente porque la Iceblick no tiene FTDI.

Lo siguiente es configurar Windows para reconocer la tarjeta iceblick40:

1.) Ejecutar Zadig y meter el driver para la iceblick40, que sería en este caso el driver: "libusb-win32".
2.) Instalar python 3.3.0 (Lo verás hacia el final de esa página.)
3.) Ahora has de instalar pyusb (lo he adjuntado a este post). Hazlo abriendo un terminal (una ventanita tipo msdos) y has de ir al directorio donde tengas "pyusb". Allí escribes lo siguiente: "python setup.py install". Es necesario estar presente en ese directorio, si no no funcionará. He probado a tratar de instalarlo dando la ubicación a python (python33 queda por defecto), pero al parecer hay algún problema con las barras '\' (esto es una suposición mía, desconozco la razón real) y por eso es mejor hacer este paso en el mismo directorio que está pyusb. Si no me explico bien me lo decís.

Nota: Tendrás dos pythons, el python27 (para icestudio/Apio) y el python33 (para poder usar iceburn).
Las variables de entorno me quedan así en el path: C:\Python33\;C:\Python27\;C:\Python27\Scripts;... En principio no hay conflictos entre ellos, especialmente si primero instalaste python27 para icestudio/Apio, aunque te quedará por defecto python33.

Lo principal ya está hecho.

Ahora extrae la carpeta Works que está dentro del zip del mismo nombre.

Vamos a hacer una primera prueba con un ejemplo que he puesto dentro de la carpeta Works, sólo has de hacer doble clic sobre el fichero "ICEBURN.bat" y se ha de cargar ese ejemplo en tu iceblink (es un cambio de brillo de los 4 leds que tiene la iceblink usando la técnica PWM). "ICEBURN.bat" es un fichero con comandos dentro, y lo que hace es automatizarlo todo: pilla el .v y el .pcf y lo sintetiza y después lo sube a tu iceblink.

Cuando quieras hacer otro proyecto has de eliminar el .v y .pcf para dar cabida al siguiente proyecto, es decir, el correspondiente .v y .pcf del nuevo proyecto.

En mi caso personal uso icestudio (icestudio tiene Apio integrado). Eso significa que cuando ya tengo un diseño y he verificado (verify & build) y que todo está correcto, entonces exporto los ficheros .v (verilog) y .pcf (pinout) a la carpeta "Works". Antes de exportar elijo la tarjeta "Go board" en icestudio porque tiene el chip VQ100, aunque cambia la direcciones (por ser otro tipo de placa entrenadora) de los leds, pulsadores y señal de clock entre otras cosas, esto lo modifico editando el fichero .pcf, es decir, cambiando la direcciones donde se encuentra los pines que se utiliza en la iceblink40: clk=13, d1=59, d2=56, d3=53, d4=51. Esto lo tendrás que hacer justo después de exportar los archivos .v y .pcf de icestudio/apio. Se necesita experiencias previas en este tema... Pregúntanos aquí y te guiaremos si ese es tu caso.

Fin.

Post Data: Adjunto un fichero sin extensión, porque de otra manera no me deja enviar este mensaje. Cuando lo descargues ponle la extensión .zip. Dentro contiene dos carpetas: Works y pyusb.






Works_y_pyusb

Democrito

unread,
Oct 30, 2016, 3:33:45 AM10/30/16
to FPGA-WARS: explorando el lado libre
Un par de vídeos con los ejemplos de KITT y PWM:


KITT: https://www.youtube.com/watch?v=jlMTcGu5U6Y (un poco lentorro, pero, en fin...)

Obijuan

unread,
Oct 30, 2016, 3:39:52 AM10/30/16
to FPGA-WARS: explorando el lado libre
WOW!!!!  Genial contribución Demócrito!!!!!! plas! plas! plas!

¡Muchas gracias! :-)

Democrito

unread,
Oct 30, 2016, 3:51:51 AM10/30/16
to FPGA-WARS: explorando el lado libre
Y otro vídeo más, un PWM con efecto rebote.

Jesús Arroyo

unread,
Oct 30, 2016, 3:56:02 AM10/30/16
to fpga-wars-explora...@googlegroups.com

Genial! , pues continuamos en este hilo.

Como comenté en el hilo anterior si alguno se anima a crear el pinout de la placa para Icestudio puede tomar como referencia estos pcfs https://github.com/FPGAwars/icestudio/tree/develop/app/resources/boards. El json se genera desde el script de Python.

Estoy analizando cómo simplificar la instalación de los drivers desde Icestudio y es muy interesante tener en cuenta nuevas placas que requieren drivers distintos.

También si alguno se anima a añadir esta placa para apio deberá editar el fichero boards.json con la información de la placa y añadir un nuevo programador llamado iceburn en el fichero Sconstruct: https://github.com/FPGAwars/apio/tree/develop/apio/resources. (en el futuro modificare esto para que solo sea necesario modificar el fichero boards.json)

Aprovecho para volver a agradecer a Demócrito su trabajo de investigación. Muchas gracias!

Un saludo.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGA-WARS: explorando el lado libre" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/c78de225-e8b3-46e2-8fa5-9f22040b6df1%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Democrito

unread,
Oct 30, 2016, 2:05:15 PM10/30/16
to FPGA-WARS: explorando el lado libre
La carpeta Works (carpeta de trabajos; no soy muy original creando nombres...) en principio la puedes colocar en cualquier parte de tu ordenador (y funcionará bien), es decir, en cualquier lugar del árbol de directorios, pero tiene una condición y es que los nombres de los directorios (o carpetas) que los precede no contengan espacios (y supongo que tampoco símbolos demasiado raros). Sí acepta el guión bajo _ y el guión medio - y el punto.

Esto se debe a que Iceburn (un programita de python) no acepta los espacios como dirección de ubicación. Pongo varios ejemplos para que se vea mejor la idea:

Correcto ------> (Por ejemplo: poner esa carpeta en el escritorio.):
C:\Users\Democrito\Desktop\Works


Incorrecto ------> (Por ejemplo: poner esa carpeta en "Mis documentos", lleva un espacio el nombre de esa carpeta.):
C:\Users\Democrito\Desktop\Mis documentos\Works

Correcto ------> (Por ejemplo: poner esa carpeta con nombres compuestos separado con guiones bajos y/o medios.)
C:\Users\Democrito\Desktop\Mis_proyectos_favoritos\Works
C:\Users\Democrito\Desktop\Mis-proyectos-favoritos\Works

También acepta el punto como separador.

C:\Users\Estromatolito\Desktop\Mis.proyectos.favoritos\Works

Democrito

unread,
Oct 31, 2016, 10:26:12 AM10/31/16
to FPGA-WARS: explorando el lado libre
Confirmo que ha funcionado en un tercer ordenador, éste tiene windows 7. Faltaría probar en windows 10.

Si alguno de los que están colaborando para desarrollar icestudio/apio quiere la tarjeta se la puedo prestar.

Saludos.

Democrito

unread,
Nov 5, 2016, 12:42:07 PM11/5/16
to FPGA-WARS: explorando el lado libre
Hola Jesús,

acabo de hacer el .pcf y .json de la iCEblin40 para que le eches un vistazo y si lo ves bien se podría subir a este apartado, aunque no sé si es necesario algo más. Lo he hecho todo a mano, lo he repasado y creo que está correcto.

Explico la razón de los nombres que he puesto a los pines de cada puerto.

Los puertos tienen nombre: J1, J2, J3, J4, J5, J6, J11 y J12. Y los hay verticales y horizontales. Tomemos por ejemplo el puerto J2 (es horizontal), los pines de arriba de ese puerto se llaman (de derecha a izquierda, para respetar el comienzo de la patilla 1 de ese puerto) J2U1, J2U2, J2U3... hasta J2U8; donde la 'U' significa "Up". Para los pines de abajo es lo mismo pero cambiando la 'U' por una 'D' (de Down). En todos los puerto dobles horizontales esa es la lógica.

En puertos dobles verticales es lo mismo. Se respeta el comienzo (marcado como '1') de ese puerto y se va llamando a los pines con el nombre del puerto y el número de pin, pero si es doble, esta vez en vez de 'U' ó 'D', lo he cambiado por 'R' y 'L' (derecha e izquierza en inglés).

A todo esto hay una excepción y no ha sido por capricho, me refiero al puerto J5, pero si fuera necesario lo cambiaría, y es que en la propia serigrafía de la placa tienen nombre los pines (en el gráfico de arriba salen pequeños y borroso), y los he llamado como pone en la propia serigrafía de la placa: D0, D1, D2... hasta D11.

Adjunto json y pcf.

Saludos!
iCEblink40.pcf
iCEblink40.json

Democrito

unread,
Nov 5, 2016, 12:55:12 PM11/5/16
to FPGA-WARS: explorando el lado libre
Un momento, que me acabo de dar cuenta de una cosa. Acabo de descubrir el programita python que traduce el pcf a json y veo que no acepta los '#' si no es al comienzo de línea.

Voy a modificarlo para que no haya problemas.

En otro post adjunto los nuevo json y pcf.
Message has been deleted

Democrito

unread,
Nov 5, 2016, 1:20:20 PM11/5/16
to FPGA-WARS: explorando el lado libre
En fin, hoy no es mi día! También hay que eliminar los espacios que sobra después del retorno de carro...

Democrito

unread,
Nov 5, 2016, 1:32:11 PM11/5/16
to FPGA-WARS: explorando el lado libre
Dicen que a la tercera va a la vencida, no?

Vuelvo a adjuntar json y pcf. Lo he revisado minuciosamente y todo parece correcto.

Saludos.
iCEblink40.json
iCEblink40.pcf

Jesús Arroyo

unread,
Nov 7, 2016, 6:49:45 AM11/7/16
to FPGAwars: explorando el lado libre
Hola Demócrito,

Genial trabajo!

Acabo de modificar el script de generación para que sea compatible con tu PCF inicial. Una vez generado si quieres haz un pull request a icestudio. Para ello utiliza el nombre iCEblink40-HX1K. Como en la iCE40-HX8K, puesto que existe un modelo de esa placa que es LP. Puesto que aún no está soportada en apio, añade los ficheros pcf y json a un directorio nuevo app/resources/boards/_future.

Ahora quedaría el paso de integrarla en Apio. En principio es una tarea semi-compleja. Sería necesario.
    • Contribuir al proyecto iceBurn para hacerlo compatible con Python 2 y Python 3 completo
    • Añadir también al proyecto un fichero setup.py para que pueda ser publicable en pypi
    • Probar en Linux, Mac y Windows de forma separada para ver qué problemas / drivers necesarios etc, aparecen en cada caso
    • Una vez publicado en pypi, incluir iceburn en las dependencias de Apio
    • Modificar el fichero de apio resources/boards.json para añadir la placa
    • Ajustar la configuración de drivers si fuera necesario

    Si alguno se anima con alguno de estos pasos que lo vaya publicando en la lista. Así paso a paso podremos integrar esta nueva placa. También lo bueno es que preparamos el terreño para incluir placas sin FTDI y con distintos drivers.


    Gracias de antemano a todos.


    Un saludo.

    Democrito

    unread,
    Nov 7, 2016, 5:23:19 PM11/7/16
    to FPGAwars: explorando el lado libre
    Hola Jesús,

    se generó (con el generate.py nuevo) el .json perfectamente!

    Lo de subir los pcf y json de la iceblink-40hx1k me he hecho un poco de lío, pero creo que al final lo he conseguido. Puse esos dos ficheros en la carpeta "icestudio/.../boards/_future" como me indicaste. Hice el pull requests. Si no vieras ningún pull requests mío (Democrito) entonces es que en algo he fallado. Si así fuese dime algo, por si he de volver a intentarlo.

    Saludos y gracias!

    Jesús Arroyo

    unread,
    Nov 9, 2016, 6:31:08 AM11/9/16
    to FPGAwars: explorando el lado libre
    Hola Demócrito.

    Sigue los pasos que te indico en GitHub para sincronizar el pull request.

    Democrito

    unread,
    Nov 9, 2016, 12:21:53 PM11/9/16
    to FPGAwars: explorando el lado libre
    Hola Jesús,
    acabo de seguir los pasos del github. Menos la primera línea, todo lo demás me lo ha ido aceptando.
    Cuando puedas, dime si está bien y te aparece el tema. Hice un nuevo pull request.
    Saludos!

    Eneko Montero

    unread,
    Jul 30, 2017, 9:12:04 AM7/30/17
    to FPGAwars: explorando el lado libre
    Hola,

    He probado el programa en Windows 10 con la ICEblink40-HX1K y funciona: https://www.youtube.com/edit?video_id=vBDJm4OOTJ0&video_referrer=watch

    Aún así he tenido que hacer un par de cambios respecto a los pasos originales, los dejo por aquí para que quede constancia.

    1. Como ya tenía python2.7 instalado, y es el que tengo por defecto, al instalar pyusb no se me instalaban en la nueva localización correspondiente a python 3.6, sino que se me instalaban en la que ya lo tenía:
    running install
    running build
    running build_py
    running install_lib
    running install_egg_info
    Removing C:\Python27\Lib\site-packages\pyusb-1.0.0-py2.7.egg-info
    Writing C:\Python27\Lib\site-packages\pyusb-1.0.0-py2.7.egg-info

    La solución ha sido copiar la carpeta "usb" y el fichero "pyusb-1.0.0-py2.7.egg-info" que se encontraban en la ruta "C:\Python27\Lib\site-packages" en la nueva ruta correspondiente a Python 3.

    2. Al ejecutar desde la línea de comandos el comando python, por defecto se ejecuta python2.7. En mi caso, para ejecutar python3.6 tengo que usar el comnado py. Por tanto, en el fichero ICEBURN.bat, he modificado la segunda línea para que quede:
    py  %~d0%~p0iceBurn\iCEburn.py -e -v -w  %~d0%~p0hardware.bin

    Muchas gracias por la aportación Demócrito!

    Un saludo,
    Eneko Montero

    Democrito

    unread,
    Jul 30, 2017, 2:57:05 PM7/30/17
    to FPGAwars: explorando el lado libre
    Hola Eneko,

    Ha pasado muchos meses desde que estuve probando la Iceblink y hace unas pocas semanas puse el portátil a cero, como cuando formateas e instalas de nuevo Windows (8.1 en mi caso).

    He probado las instrucciones que publiqué en el primer post y no me ha funcionado a la primera, ni a la segunda, y tampoco a la tercera, que dicen que va a la vencida!

    Me he encontrado con lo siguiente:

    1.) Yo sólo utilizo Icestudio, lo de manejar Apio a través de comandos no lo tenía instalado, entonces hice la instalación de Apio como antiguamente; en una ventanita o terminal tipo MSDOS ejecuté los comandos siguientes:

    pip install -U apio
    python -m pip install --upgrade pip (este comando creo que a día de hoy ya no es necesario, pero por si las moscas...)
    apio install --all

    2.) Ahora viene la instalación de Python 3.x en el caso de que no se tenga instalada. Aquí es donde yo me lie en el primer post, porque al instalar Pyhton 33 (o superior), durante la instalación te da la opción de añadir el "Path" para esa versión, y así lo hice, entonces por defecto (espero no equivocarme en lo que digo, estirarme las orejas si no es así) se me ejecutaba la versión de Python correcta.

    Dentro de la carpeta o directorio de PyUSB, cuando hice: "python setup.py install" como en mi caso el "Path" indicaba al Python 3.x no tuve problemas y se instaló donde debía, pero si por defecto se ejecuta la versión Python 2.x entonces lo hace en el lugar equivocado (en la versión de Python 2.x). Así que efectivamente Eneko, al copiar (o mover) la carpeta USB al Python 3.x se corrige ese problema.

    3.) Resuelto los líos de versiones, en el fichero "ICEBURN.bat" se podría añadir una especificación para ejecutar la versión Python correcta. Pongo en negrita la línea añadida, que es la dirección donde yo tengo instalado Python 3.x, así nos evitamos problemas con las versiones y se ejecutará la correcta.

    apio build --fpga iCE40-HX1K-VQ100
    cd C:\Python33
    python  %~d0%~p0iceBurn\iCEburn.py -e -v -w  %~d0%~p0hardware.bin
    pause
    del *.asc
    del *.blif
    del *.bin
    del *.history
    del *.dblite


    Lo siguiente es ejecutar el fichero .bat y eso es todo. Doy por hecho que con anterioridad se hizo lo de meter el driver "libusb-win32" a través de Zadig.

    Gracias por tus comentarios y correcciones, de otra manera no lo habría probado!

    Saludos!


    Message has been deleted

    Democrito

    unread,
    Sep 4, 2017, 9:16:18 PM9/4/17
    to FPGAwars: explorando el lado libre
    ¡Hola!.

    He tomado un ejemplo que publicó Salvador Eduardo Tropea sobre los Cap-Sense de la Kefir, y como la Iceblink tb los lleva me di a la tarea de intentar un ejemplo que se encuentra aquí:
    y hacerlo funcionar en la Iceblink.

    Lo he conseguido y adjunto un zip con todo lo necesario. Dejo un vídeo de ejemplo: https://youtu.be/f9PJJatdQRw

    Saludos!

    PD: ¡Gracias Salvador!
    Iceblink_cap_sense.zip
    Reply all
    Reply to author
    Forward
    0 new messages