[PRESENTACION-DUDA] Iceblink e Icestorm

308 views
Skip to first unread message

Juan Lopez

unread,
Dec 16, 2015, 4:09:56 PM12/16/15
to FPGA-WARS: explorando el lado libre
Hola, me llamo Juan hice el salto hasta aquí desde CloneWars.

Gracias por la iniciativa, Obijuan.


Para empezar, como dice en el título, tengo la duda de si seria posible utilizar la placa Iceblink con el software Icestorm.
El FPGA es  iCE40LP1K

Link

Un Saludo

Carlos García

unread,
Dec 16, 2015, 5:28:22 PM12/16/15
to FPGA-WARS: explorando el lado libre
Hola Juan,

Por ahora creo que el proyecto únicamente soporta las HX1K-TQ144 y HX8K-CT256, no se cómo de difícil será mapear las herramientas a la que viene en placa Iceblink.

Saludos,
Carlos

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/e2dbe328-7052-4d39-9deb-b7222b4695cc%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Gonzalez Gomez

unread,
Dec 17, 2015, 2:05:10 AM12/17/15
to FPGA-WARS: explorando el lado libre
Hola Juan!  Bienvenido!

 De momento sólo están soportadas las dos FPGAs que menciona Carlos. Pero sé que Clifford (el autor de icestorm) está trabajando para ampliarlo a otras FPGAs tanto de lattice como de otros fabricante.  Justo ahora estamos en ese momento en el que se empieza a crear comunidad, y que entre todos vamos expandiendo las herramientas libres


Saludos, Obijuan

Juan Lopez

unread,
Dec 27, 2015, 9:15:36 AM12/27/15
to FPGA-WARS: explorando el lado libre
Gracias a los dos por las respuestas.
La placa, fue un regalo que me hicieron y nunca la había utilizado (no tengo ni idea de FPGAs) pero como por allá en los años 90 estudié Electrónica, me la regalaron y aquí la tengo.
Solo utilizo Linux, lo cual me llevaba a no poderla usar, y esta idea de Juan de hacer el grupo me hizo retomarla del cajón de los descartes.

Encontré este repositorio en github, por si alguien tiene el mismo problema, sirve para subir los binarios a esta placa.
La síntesis se puede hacer con el ICECUBE2 de Laticce.

Ahora a aprender Verilog ;)

Lo dicho, Gracias y un Saludo.

Juan López.

Obijuan

unread,
Dec 28, 2015, 5:18:04 AM12/28/15
to FPGA-WARS: explorando el lado libre
Hola,

  Veo en la transparencia 22 de la presentación de clifford en el CCC [1] que la tarjeta  iCEblink40HX1K [2] también está soportada, porque lleva la misma fpga que la icestick: la HX1K.  El modelo LP1K no está soportado todavía


[1] http://www.clifford.at/papers/2015/icestorm-flow/slides.pdf
[2] http://www.latticesemi.com/iceblink40-hx1k

Andrés Domínguez

unread,
Dec 28, 2015, 8:39:22 AM12/28/15
to FPGA-WARS: explorando el lado libre
On Monday, December 28, 2015 at 11:18:04 AM UTC+1, Obijuan wrote:
Hola,

  Veo en la transparencia 22 de la presentación de clifford en el CCC [1] que la tarjeta  iCEblink40HX1K [2] también está soportada, porque lleva la misma fpga que la icestick: la HX1K.  El modelo LP1K no está soportado todavía

Creo que la de Juan López es la iCEblink40LP1K[1]. Sin embargo, en la presentación Clifford dijo: "En teoría, la LP1K y la LP8K deberían funcionar, ya que se diferencian sólo en "timing" y el "bitstream" es totalmente idéntico." Así que Juán, creo que sería interesante que intentases hacer el fantástico curso de Obijuan y comprobar que funciona con tu placa (con una probabilidad muy baja, creo yo, de dañar la fpga). Después de todo, para que esté soportada oficialmente, alguien tiene que probarlo.


Andrés

Andrés Domínguez

unread,
Dec 28, 2015, 8:47:00 AM12/28/15
to FPGA-WARS: explorando el lado libre
Se me ha olvidado decir que la única limitación que tiene la LP1K en encapsulado 84 QFN, es que no tiene PLL, aunque creo recordar que en el curso de Obijuan no se utiliza. 

Otra diferencia es que tendrás que adaptar los pines de entrada y salida (que en tu caso probablemente serán dos coordenadas por ser BGA) y no tiene los mismos leds, quizá tengas que usar leds externos en pines accesibles en tu placa.

Andrés

Juan Gonzalez Gomez

unread,
Dec 28, 2015, 9:09:48 AM12/28/15
to FPGA-WARS: explorando el lado libre
Gracias Andrés!

 @Juan: La verdad es que sería genial que lo pudieses probar en el modelo LP1K :-)    Otra diferencia que veo en la placa es la frecuencia del reloj: es de 3.3Mhz y en la icestick es de 12Mhz. Los valores de los divisores serán diferentes pero no debería dar otros problemas

¿Te animas a ser el primero en probar las herramientas libres en una ICE40LP1K? :-)  Luego se lo reportamos a Clifford

Saludos, Obijuan

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Andrés Domínguez

unread,
Dec 28, 2015, 9:45:25 AM12/28/15
to FPGA-WARS: explorando el lado libre
On Monday, December 28, 2015 at 2:47:00 PM UTC+1, Andrés Domínguez wrote:
Se me ha olvidado decir que la única limitación que tiene la LP1K en encapsulado 84 QFN, es que no tiene PLL, aunque creo recordar que en el curso de Obijuan no se utiliza. 

Otra diferencia es que tendrás que adaptar los pines de entrada y salida (que en tu caso probablemente serán dos coordenadas por ser BGA) y no tiene los mismos leds, quizá tengas que usar leds externos en pines accesibles en tu placa.

Esto que he escrito es una tontería, QFN no es BGA, pero tendrás que mirar el nombre de pin es cada led o pin en la placa. Parece que los pines se llaman A o B más un número. Veo que tu placa tiene cuatro leds, el curso usa los cuatro rojos y el verde del icestick, pero el verde no se usa casi. Además tienes cuatro botones táctiles muy chulos que puedes usar para meter las entradas sin tener que conectar y desconectar cables.

Andrés

Juan Lopez

unread,
Dec 28, 2015, 10:18:47 AM12/28/15
to FPGA-WARS: explorando el lado libre
Hola de nuevo.

Andrés, una de las diferencias que tiene es el nombre de los pines, con lo cual al mapear los leds me tira el error "counter.pcf:1: fatal error: unknown pin `A29' on package `tq144' ".

Y la segunda diferencia es el usb que en vez de un FTDI-FT2232 tiene un atmel-90USB162, de ahí que para subir el archivo a la placa tenga que utilizar el IceBurn ,como habia dicho antes.

El curso si que lo estoy haciendo pero utilizando iCEcube2 ;) (propietario de Lattice) y el mencionado IceBurn, con lo cual tengo que mapear los 4 leds a los que tiene la placa.( va un poco mas lento, 3.33 Mz pero se puede subir a 333 Mz y bajar a 333 Kz con un jumper, que aún tengo que soldar. ).

Un saludo a los dos y gracias por el interés.
Juan


El miércoles, 16 de diciembre de 2015, 22:09:56 (UTC+1), Juan Lopez escribió:

Juan Lopez

unread,
Dec 28, 2015, 10:22:08 AM12/28/15
to FPGA-WARS: explorando el lado libre
RECTIFICO:

Donde puse 333 Mz es 33.3 Mz


El miércoles, 16 de diciembre de 2015, 22:09:56 (UTC+1), Juan Lopez escribió:

Juan Lopez

unread,
Dec 29, 2015, 12:09:40 PM12/29/15
to FPGA-WARS: explorando el lado libre
Hola de nuevo.

He hecho algunos avances y algunos ejemplos del curso ya me compilan (malditas vacaciones jeje).
Investigando Icestorm vi la carpeta "icefuzz/pinloc" con unos scripts dentro, con lo cual me puse a "fozar" ;) en ellas y creé un archivo de pines para este Fpga (seguro que está mal o incompleto ).
Después cambié y creé algunos archivos y ahora el icestorm ,yosys y aracne-pnr aúnque COJOS ya sintetizan el código,

Todo esto a base de PRUEVA-ERROR (y utilixando mucho el Meld para las comparaciones), ¡¡ yo no sé programación !!.

Adjunto los archivos que cambié.

Aún me falta comprender todo lo que hacen los scripts de python en icefuzz, pero es un primer paso, y si a alguien le viene bien Esto es Open Hardware Y Open software.

Un Saludo.

Juan López





El miércoles, 16 de diciembre de 2015, 22:09:56 (UTC+1), Juan Lopez escribió:
chipdb-1k.txt
icebox.py
icecube2.sh
pinloc-1k-qn84.sh
pins-qn84-icebox-añadir.txt
Message has been deleted

Juan Lopez

unread,
Dec 29, 2015, 12:17:10 PM12/29/15
to FPGA-WARS: explorando el lado libre
Perdón perdón "PRUEVA-ERROR".
Por Dios ,No me lo toméis a mal.
Ahora no sé rectificarlo.


El miércoles, 16 de diciembre de 2015, 22:09:56 (UTC+1), Juan Lopez escribió:

Barkalez

unread,
Dec 29, 2015, 2:10:25 PM12/29/15
to FPGA-WARS: explorando el lado libre
Tranquilo, fallo tenemos todos :) lo importante es que tienes entusiasmo y eso despierta el mio. Gracias

Andrés Domínguez

unread,
Dec 29, 2015, 5:15:50 PM12/29/15
to FPGA-WARS: explorando el lado libre
Muy bien!
Yo estaba también mirándolo y te iba a mandar unas pruebas. Lo tuyo tiene muy buena pinta, algunas cosas:

1- Para integrarlo correctamente en icestorm tienes que mantenerlo todo genérico, para que genere todo bien en todas las FPGA. Por ejemplo, en icecube.sh tienes que meter el caso de tu FPGA dentro del case que existe, no crear uno nuevo.

case "${ICEDEV:-hx1k-tq144}" in
        hx1k-cb132)
                iCEPACKAGE="CB132"
                iCE40DEV="iCE40HX1K"
                ;;
        hx1k-vq100)
                iCEPACKAGE="VQ100"
                iCE40DEV="iCE40HX1K"
                ;;
        hx1k-tq144)
                iCEPACKAGE="TQ144"
                iCE40DEV="iCE40HX1K"
                ;;
        hx8k-cm225)
                iCEPACKAGE="CM225"
                iCE40DEV="iCE40HX8K"
                ;;
        hx8k-ct256)
                iCEPACKAGE="CT256"
                iCE40DEV="iCE40HX8K"
                ;;
        hx8k-cb132)
                iCEPACKAGE="CB132"
                iCE40DEV="iCE40HX8K"
                ;;
        lp1k-qn84)
                iCEPACKAGE="QN84"
                iCE40DEV="iCE40LP1K"
                ;;
        *)
                echo "ERROR: Invalid \$ICEDEV device config '$ICEDEV'."
                exit 1

${ICEDEV:-hx1k-tq144} significa que utilice el valor de ICEDEV si está asignada y no es nula, o hx1k-tq144 en otro caso.
Asignar el valor de ICEDEV para tu FPGA y luego ejecutar icecube.sh lo haces en pinloc-1k-qn84.sh

2- No crees tus propios scripts, usa icecube.sh, no icecube2.sh. No te preocupe romper nada, para eso está el control de versiones.
si creas el script icecube.sh como explico en (1) puedes llamar al escript genérico en pinloc-1k-qn84.sh:

echo " ICEDEV=lp1k-qn84 bash ../icecube.sh ${id} > ${id}.log 2>&1"

3- ¿Como has creado la variable pins en pinloc-1k-qn84.sh?

pins="
A1  B1  A2  B2  A3  B3  A4  B4  A5  B5  A8  A9  B7  A10 B8  A11 B9  A12
A13 B10 B11 A14 B12 A16 B13 B14 A19 B15 A20 B17 A22 A23 B18 B19 A25 A26
B20 B21 A27 A29 B22 B23 A31 B24 A32 A33 A34 B26 A35 B27 A38 B29 A39 B30
A40 B31 A41 A43 B32 A44 A45 B34 A46 B35 A47 B36 A48  
"
4- ¿Los cambios en icebox.py los has hecho a mano? ¿Con los datos que te ha generado en el fichero chipdb-1k.txt?
    ¿El fichero pins-qn84-icebox-añadir.txt lo has creado tú? Si es así, ¿para qué?

5- Cuando dices que "aúnque COJOS ya sintetizan el código", ¿qué falla?

Enhorabuena, buen trabajo, en cuanto lo pongas todo bonito y lo pruebes deberías contactar con clifford para que suba tus cambios al repositorio.

Respecto a  subir el bitstream a la fpga, sí, parece que tienes razón y iceprog sólo funciona con el ftdi. Quizá cuando dice que tu la iceblink está soportada se refiera a todo icestorm menos iceprog (o quizá tenga el cambios locales que no haya subido al repositorio).

Un saludo,

Andrés

Juan Gonzalez Gomez

unread,
Dec 30, 2015, 2:25:02 AM12/30/15
to FPGA-WARS: explorando el lado libre
Estaría genial que abrieses un issue en icestorm indicando que se quiere dar soporte a la FPGA lp1k-qn84. En el propio issue puedes discutir con clifforwd los detalles. Luego sólo es cuestión de ir mandando pull request y que clifford los vaya revisando / aceptando.

   Te animo a que te pongas con ello. Es la manera de que tu trabajo repercuta rápidamente en toda la comunidad

Gracias por el trabajo :-)

Saludos, Obijuan

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Juan Lopez

unread,
Dec 30, 2015, 5:42:04 AM12/30/15
to FPGA-WARS: explorando el lado libre
Bueno, vamos por partes.

He cambiado el script como me dijo Andres y funciona bien (GRACIAS).

El script "pinloc-1k-qn84.sh" lo he creado yo, estudiando los otros que hay y con la tabla de pins de LATTICE (como ya he dicho, programación 0 ),de hay que usase Meld para comparar archivos.
Así que por eso digo que puede estar incompleto.
También me fijé en un pull-request antiguo que hay en el "Github".De ahí saque que los pines no conectados, los GND y los de alimentación no son necesarios en la tabla (espero que sea así como se crea, es solo INTUICIÓN DE VIEJO ;) ).

El archivo "pins.***** .añadir.txt", fue creado a partir del archivo de pins que crea el "pinloc" solo para comparación y "copy & paste" en el iceBox.

Digo lo de "COJOS" porque sintetizando el ejemplo que viene con la placa el aracne-pnr me da errores, (¿faltarán mapas? en el iceBox hay mas)

Juan, gracias por el interés, pero el Github me viene grande, (""llevo años trabajando en otros oficios que no tienen que ver con esto", es solo un hobby"), aparte de que mi inglés es muy pobre, pero no tendría ningún inconveniente en explicar los pasos que llevo dados.

Postdata.
Me perdí tu cursillo de Github

Obijuan

unread,
Dec 30, 2015, 6:20:09 AM12/30/15
to FPGA-WARS: explorando el lado libre
Hola Juan!

  No te preocupes, estamos aquí para echarte una mano. Es importante que pongas tú las issues y hagas tú los pull request para que quede constancia de que el trabajo es tuyo.

  Yo te ayudo en todo lo que necesites. Ampliar icestorm para soportar un modelo nuevo de FPGA es algo muy grande! y que lo estemos haciendo desde aquí me parece alucinante. ¡Estamos en la brecha!  :-)

Andrés Domínguez

unread,
Dec 30, 2015, 7:55:36 AM12/30/15
to FPGA-WARS: explorando el lado libre
On Wednesday, December 30, 2015 at 11:42:04 AM UTC+1, Juan Lopez wrote:

Digo lo de "COJOS" porque sintetizando el ejemplo que viene con la placa el aracne-pnr me da errores, (¿faltarán mapas? en el iceBox hay mas)

¿Qué errores te da? ¿Cuando ejecutas  arachne-pnr le pasas como parámetro el empaquetado? Por ejemplo:

arachne-pnr -d 1k -P qn84 -p mifichero.pcf mifichero.blif -o mifichero.txt

Si no, el programa asume que el empequetado es tq144 al leer chipdb-1k.bin y te coge los pines para tq144. No creo que haya otro problema más que éste o que TILE_X TILE_Y PIO_NUM en la lista de pines para qn84 en chipdb-1k.txt sean incorrectos (aunque con lo poco que aún entiendo el sistema no estoy seguro). Seguramente en el futuro habrá que configurar correctamente los timings para lp1k, probablemente ahora no sea importante, ya que según entendí a clifford el control del timing aún no está muy avanzado en arachne-pnr. Puedes hacer los capítulos 1, 2 y 3 del curso de obijuan, probando con diferentes pines y leds.

Juan, gracias por el interés, pero el Github me viene grande, (""llevo años trabajando en otros oficios que no tienen que ver con esto", es solo un hobby"), aparte de que mi inglés es muy pobre, pero no tendría ningún inconveniente en explicar los pasos que llevo dados.

Lo que tienes que hacer con github es menos trabajo del que ya has hecho hasta ahora :). Respecto al inglés, entiendo el problema, pero no te creas que todo el mundo que contribuye a proyectos libres tiene inglés de Cambridge. Si no tienes por ahí nadie que te ayude con el inglés, puedes escribir aquí lo que quieres decir y te ayudamos.

Postdata.
Me perdí tu cursillo de Github

Github, openscad, freecad, imprisión 3d... es un lujo la de material de calidad que ha creado en español. Ahora mismo el único tutorial para yosys/arachne-pnr/icestorm es el de obijuan (por cierto Juan, si quieres puedo echarte una mano para traducir el tutorial).

Andrés

Juan Lopez

unread,
Dec 30, 2015, 9:29:06 AM12/30/15
to FPGA-WARS: explorando el lado libre
Este es el error que da el aracne-pnr, y si, tengo configurado el aracne con el encapsulado.

read_chipdb +/share/arachne-pnr/chipdb-1k.bin...
  supported packages: qn84, tq144, vq100
read_blif iCEblink40-lp1k_preloaded.blif...
iCEblink40-lp1k_preloaded.blif:2186: fatal error: toplevel inout port 'BTN1' not connected to SB_IO PACKAGE_PIN

También he sacado un log del yosys con algunos errores, puede que de ahí el mensaje posterior de aracne-pnr.

Adjunto el código y el log.

;) Se me aumontona el trabajo con los microtutoriles del "github" de Obijuan JAJA.

Un Saludo y gracias por el interés.

Juan.
iCEblink40-lp1k_preloaded.v
sintesis.log

Andrés Domínguez

unread,
Dec 30, 2015, 10:57:18 AM12/30/15
to FPGA-WARS: explorando el lado libre
On Wednesday, December 30, 2015 at 3:29:06 PM UTC+1, Juan Lopez wrote:
Este es el error que da el aracne-pnr, y si, tengo configurado el aracne con el encapsulado.

read_chipdb +/share/arachne-pnr/chipdb-1k.bin...
  supported packages: qn84, tq144, vq100
read_blif iCEblink40-lp1k_preloaded.blif...
iCEblink40-lp1k_preloaded.blif:2186: fatal error: toplevel inout port 'BTN1' not connected to SB_IO PACKAGE_PIN

Deberías probar con un ejemplo más sencillo, como el capítulo 1 del curso, que saca una salida por
un led. No has mandado el fichero iCEblink40-lp1k_preloaded.pcf, así que no sé si en el está bien
especificado el pin BTN1.

La buena noticia es que el primer pin no ha fallado (input  CLK_3P3_MHZ) y la mala que ha fallado
el segundo (inout  BTN1). Una de las diferencias es que uno es "input" y el otro "inout".

Sería mejor que hicieses las pruebas con el capítulo 1 (utiliza un output) y el 3 (un input y un output).
Usa los pines con LEDs de tu placa (A29, B20, B19, A25) y un pin normal conectandolo a GND o
3.3 V. Cuanto más sencillo y más probado con arachne-prn esté el ejemplo mejor. Si te fallan esos
ejemplos creo que habría que dudar de que la asignación de TILE_X, TILE_Y y PIO_NUM esté bien en chipdb-1k.txt.

Andrés

Juan Lopez

unread,
Dec 30, 2015, 11:11:43 AM12/30/15
to FPGA-WARS: explorando el lado libre
Aquí esta uno de los ejemplos del curso de Obijuan.

*Pines soldados y la frecuencia a 33.3Mz
*Archivo pcf cambiado.
*Makefile adaptado.
Síntesis aparentemente BIEN.

El ejemplo es el T16-countsec ( si ya se que con esta frecuencia no cuenta segundos).

Un saludo.
countsec.pcf
Makefile
iCEbink.mp4

Juan Gonzalez Gomez

unread,
Dec 30, 2015, 11:25:47 AM12/30/15
to FPGA-WARS: explorando el lado libre
ueeeeeeeee  qué buenas noticias!!!!!!!  :-)    Genial!!!!!!!

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Juan Lopez

unread,
Dec 30, 2015, 12:43:54 PM12/30/15
to FPGA-WARS: explorando el lado libre
Registro de desplazamiento.

Por ahora los ejemplos simples funcionan.
Subo Maquefile y pcf adaptado.

 
El miércoles, 16 de diciembre de 2015, 22:09:56 (UTC+1), Juan Lopez escribió:
Registro-desplazamiento.mp4
Makefile
shift4.pcf

Juan Gonzalez Gomez

unread,
Dec 30, 2015, 1:27:56 PM12/30/15
to FPGA-WARS: explorando el lado libre
El 30 de diciembre de 2015, 13:55, Andrés Domínguez <andr...@gmail.com> escribió:

Github, openscad, freecad, imprisión 3d... es un lujo la de material de calidad que ha creado en español. Ahora mismo el único tutorial para yosys/arachne-pnr/icestorm es el de obijuan (por cierto Juan, si quieres puedo echarte una mano para traducir el tutorial).



Gracias Andres! Toda ayuda es bienvenida :-)  La traducción fue una idea de Jaime García. Él tuvo la iniciativa y empezó a modificar la wiki de github añadiendo las traducciones. El acceso a la wiki es público. Cualquiera con cuenta en github puede modificarla

Saludos, Obijuan

 

Juan Lopez

unread,
Dec 31, 2015, 4:55:08 AM12/31/15
to FPGA-WARS: explorando el lado libre
He hecho un pull request a Clifford (gracias Obijuan por los minitutoriales de github) link    
!Y me lo ha aceptado !
Ya tenemos soporte para iCE40LP1k!!!!!!.
Ahora esperemos que otros lo prueben, y no tenga errores.
Las pruebas que yo hice todas funcionan, tengo que aprender a manejar los botones capacitivos.


Un Saludo.

Juan.

Obijuan

unread,
Dec 31, 2015, 5:28:29 AM12/31/15
to FPGA-WARS: explorando el lado libre
uueeeeeeeeeeeee  Enhorabuena Juan!!!!!! :)  Si señor! Ese es el espíritu! Así es como se comparte y ayuda a los demás

Tu nombre quedará ya para siempre en la historia de icestorm  :-)

Este es el pull request, con la aceptación de clifford

https://github.com/cliffordwolf/icestorm/pull/22

Grande!!!

Vamos!!!!!!!!!

Carlos García

unread,
Feb 3, 2016, 2:28:34 PM2/3/16
to FPGA-WARS: explorando el lado libre

Hola Juan, ¿me puedes decir cómo haces para programar la iceBlink si no tiene FTDI?

Como ya no hay stock de la IceStick, en el club de robótica pensábamos comprar algunas IceBlinks en su lugar

Muchas gracias!
Saludos,
Carlos

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Carlos García

unread,
Feb 3, 2016, 3:38:04 PM2/3/16
to FPGA-WARS: explorando el lado libre
Vale, me respondo a mi mismo, perdón por el spam. Debí buscar más antes de preguntar:
https://github.com/cliffordwolf/icestorm/tree/master/examples/iceblink
Note, there are at least two similar looking versions of the iCEblink40 evaluation board:
-iCEblink40-HX1K
-iCEblink40-LP1K

This example assumes the iCEblink40-HX1K board.

The iCEblink40 boards have an on-board programmer with USB interface from Digilent.
You need iCEburn to program the FPGA via this interface (or the original vendor 
tools).
https://github.com/davidcarne/iceBurn
Probablemente nos compremos una de estas, y una de 8k para ir probándolas :P

spo...@gmail.com

unread,
Apr 14, 2016, 4:55:25 PM4/14/16
to FPGA-WARS: explorando el lado libre
Hola Carlos García,

¿Cómo te ha ido con esa placa (ICE40HX1K-BLINK-EVN)? Me compré una y me llegó ayer y todavía sigo peleándome. No me esperaba que tuviera un chip de Atmega (creo que emula un SPI-USB) en vez de la típica FTDI.

Mi intención era usar el Icestudio (desde Windows, es lo que conozco) porque no sé VHDL ni Verilog, pero se me da bien el diseño electrónico. Sin embargo, al no detectar un puerto con FTDI no puedo "construir" los diseños, y evidentemente menos todavía subirlo a la FPGA. Si al menos sacara el Bin del Icestudio podría intentar subirlo. También me he encontrado con una dicotomía y es que Icestudio necesita Python 2.7, e Iceburn necesita la versión Python 3.3.

Total, que me encuentro en un callejón sin salida y desearía saber si personas con la placa que he mencionado ha podido resolverlo de alguna manera, o hacer maniobras indirectas, usando como fuente del diseño el Icestudio.

Ahora mismo se me ocurre una idea un poco loca que probaré si consigo un FTDI y es conectarlo a la placa a través del jumper J11. Según parece los FTDI tb tiene salidas SPI además de las típicas RS232. Si lo consiguiese tendréis noticias mías otra vez.

Saludos a todos! 

Carlos García

unread,
Apr 14, 2016, 5:37:39 PM4/14/16
to FPGA-WARS: explorando el lado libre
Hola, pues al final solamente compramos la 8K, asi que ni idea!
De todos modos, es perfectamente posible tener esas dos versiones de python instaladas, solo tienes que ejecutar los scripts con los comandos python2 y python3 respectivamente

Seguro que se puede exportar el .bin desde el icestudio, o por lo menos saber el directorio en el que lo genera...

--
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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Democrito de Abdera

unread,
Apr 14, 2016, 5:44:13 PM4/14/16
to fpga-wars-explora...@googlegroups.com
Seguramente se puede. Para mí todo esto es nuevo y voy tropezando con todo!

Gracias por responder.
Message has been deleted

Democrito

unread,
Oct 29, 2016, 5:00:04 PM10/29/16
to FPGA-WARS: explorando el lado libre
Este mensaje es para agradecer a todos los que han participado en este hilo los comentarios y aportaciones que han hecho y también a Jesús Arroyo por toda la info y programas que comparte con todo el mundo. Gracias a vosotros he conseguido hacer funcionar una iCEblink40-HX1K en Windows.


iceBurn (de python) funciona también en Windows, lo que significa que no hace falta descargarse Icecube2 (ocupa 1,87GB en el disco duro!!! eso sin contar la necesaria conexión a Internet para que funcione y pedir una licencia gratuita) además de que Icecube "compila" de una manera particular si una conexión tiene más de dos nodos (ejemplo: una salida de un módulo ramificada a más de dos entradas de otros módulos), no logra que funcione correctamente y tenía que hacer algunas chapuzas (añadir puertas lógicas innecesarias para repartir esas ramificaciones de dos en dos).


He probado circuitos como KITT y PWM y me ha funcionado genial. Lo único que he tenido que hacer es elegir en icestudio la placa "Go Board" porque lleva el chip VQ100 al igual que la "iceblink40". Exporto los .v y .pcf a una carpeta concreta y edito el archivo .pcf para cambiar las direcciones de los pines, porque en la placa iceblink40 tiene otra configuración. Lo tengo automatizado el proceso de sintetizar (apio build --fpga iCE40-HX1K-VQ100) y el de subir el bitstream a la placa iceblink40 (con iceburn), y todo esto lo hace en unos pocos segundos.

En un post aparte crearé una entrada explicando el proceso por si alguien tiene esa placa y quiere trabajar con icestudio/apio.

Gracias de nuevo!!!


Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Democrito

unread,
Oct 29, 2016, 11:10:20 PM10/29/16
to FPGA-WARS: explorando el lado libre
He eliminado el post donde explicaba el proceso de instalación porque pese a que me funciona en un PC (W8) en otro no funciona (W7) y hasta saber qué sucede prefiero no dar dolores de cabeza a los demás si lo llegan a intentar.


Jesús Arroyo

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

Genial Demócrito!!! Brutal labor de investigación!! 0_0

Estoy preparando para hacer release de apio y icestudio, con mejoras interesantes con respecto a los drivers. Con toda esta información puedo integrar esta nueva placa en las herramientas!

Si alguno se anima a hacer el pinout para Icestudio se puede fijar en los pcfs aquí https://github.com/FPGAwars/icestudio/tree/develop/app/resources/boards (el json se genera automáticamente con el script de python)

Muchas gracias por esta contribución!. Es el primer paso además para las placas con FPGA conectadas sin chip FTDI.

Un saludo.

El 30/10/2016 02:31, "Democrito" <spo...@gmail.com> escribió:
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 llegando hacia el final de esa página.)
3.) Instalar pyusb en python 3.3.0 (está adjunto a este post zipeado, extrae la carpeta antes).Te pones en la carpeta de python33 y escribes: python C:\dirección_donde_esté_pyusb\setup.py install )

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

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 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.

PD: Voy a buscar alguna manera de adjuntar los zip. Si no, no me deja enviar este mensaje

--
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/7b667ccc-62f7-4216-ac77-3aacff2c5c31%40googlegroups.com.

Jesús Arroyo

unread,
Oct 30, 2016, 1:38:15 AM10/30/16
to fpga-wars-explora...@googlegroups.com

Ui acabo de ver la supresión de los posts (yo lo he respondido desde gmail). Si quieres Demócrito abre otro hilo con esa información para no mezclarlo con este y continuamos el desarrollo y la integración en el nuevo hilo.

Un saludo.

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.
Message has been deleted

Democrito

unread,
Oct 30, 2016, 2:31:07 AM10/30/16
to FPGA-WARS: explorando el lado libre
Hola Jesús,

sí, será mejor. Vuelvo a borrar y creo un nuevo tema.

Saludos!
Reply all
Reply to author
Forward
0 new messages