DemoIceZumAlhambra
No description available
Install / Use
/learn @javacasm/DemoIceZumAlhambraREADME
Demo IceZum Alhambra
@javacasm para la OSL
29 de noviembre de 2016


IceZum Alhambra

Es una placa totalmente libre (Open Hardware) que incluye una FPGA en un formato totalmente compatible con Arduino
Orígenes
-
Juan Gonzalez (Obijuan)
-
Eladio Delgado: diseñador y constructor de la placa
-
Jesús Arroyo: desarrollador del software
-
En sus inicios fue un proyecto financiado por bq
(Historia)
¿FPGA?

¿Qué es una FPGA?
(Del Capítulo 0 de Tutorial de @Obijuan sobre Verilog)
"Las FPGAs son unos chips "en blanco" que nos permiten configurarlos para crear dentro de ellos nuestros propios circuitos digitales. ¡Si! ¡Con las FPGAs estamos creando hardware!

Los circuitos se describen usando un Lenguaje de Descripción de Hardware (HDL) como Verilog o VHDL. A partir de ellos se genera un bitstream que describe las uniones entre los elementos usados.
Llamamos síntesis a todo el proceso que nos lleva desde el diseño en código fuente hasta la configuración de la FPGA. Estas son las fases:

1 Síntesis: La herramienta de síntesis infiere los elementos hardware básicos a partir de su descripción, y obtiene un fichero netlist que describe las uniones entre ellos. Esta fase no depende de la FPGA a usar
2 Emplazado y rutado. Los componentes del netlist se hacen corresponder con los elementos físicos de la FPGA, se determina su colocación y se realiza el rutado. Toda la información de configuración de la FPGA se condensa en el bitstream. Esta fase sí depende del modelo concreto de FPGA que se disponga
¿Para qué se utilizan las FPGAs?
Nos permiten sustituir a muchos circuitos digitales discretos necesarios en dispositivos.
Apple usa FPGAs en su iPhone posiblemente para sustituir a docenas de componentes.
Podemos modificar el comportamiento de una FPGA cambiando su bitstream, por tanto podríamos resolver errores y aportar mejoras a un diseño hardware.
Comparación con un procesador Von Newman
-
Con una FPGA podemos crear un procesador donde configuremos la cantidad de RAM, la cantidad de I/O, número de UART, incluso modificarlos si es necesarios
-
Piensa en un programa Arduino que reproduce un sonido. Ahora intenta hacer un programa que reproduzca 2 sonidos a la vez, o tres... con una FPGA basta con copiar+pegar el hardware
-
Facilitan enórmemente la paralelización del hardware.
-
Encoder para 1 rueda: programación vía interrupciones, necesitamos 2 entradas con interrupción. Si ahora necesitamos 4....
"Las FPGAs son las impresoras 3D de los circuitos digitales"
Un poco de historia
Hasta hace poco la única forma de trabajar con una FPGA era usando el sortware que proporcionaba el fabricante.
En mayo de 2015 ocurrió un hito histórico: se tuvieron por primera vez todas las herramientas necesarias para generar el bitstream a partir de código en Verilog usando sólo software libre, gracias al proyecto icestorm, liderado por Clifford Wolf. A partir de ese momento,ya tenemos herramientas que pertenecen al patrimonio tecnológico de la humanidad para trabajar con FPGAs, y poder desarrollar hardware usando sólo herramientas de este patrimonio
Actualmente sólo se pueden usar las FPGAs de Lattice de la familia ICE40
Las herramientas del proyecto Icestorm
Las herramientas libres para trabajar con las FPGAs de lattice son las siguientes:
Sintetizador: Yosys (Repo en github) Place & route: Arachne-pnr (en github) Utilidades y descarga en FPGA: Proyecto icestorm
En la siguiente figura se muestran las diferentes herramientas usadas en las etapas, y las extensiones de los archivos que se van generando:

Se parte de los ficheros fuente en verilog (.v). Usando el sintetizador Yosys, se generan los ficheros netlist (.blif). El emplazado y rutado se realiza con arachne-pnr, generándose el bitstream en formato ascii (.txt). Con icepack se crea el bitstream binario (.bin) que finalmente se envía a la FPGA con iceprog
Descripción de la ICEZum Alhambra


-
FPGA development board (iCE40HX1K-TQ144 from lattice)
-
Open hardware
-
Compatible with the opensource icestorm toolchain
-
Arduino like board: similar pinout than Arduino one / BQ zum.
-
You can Reuse most of available shields
-
Control your robots / printbots from an FPGA
-
12 MHZ MEMS oscillator
-
ON/OFF switch (turn off your mobile robot easily)
-
Input power voltage: 6 - 17v
-
Max input current: 3A (Perfect for powering your robots)
-
20 Input/output 5v pins
-
8 Input/Output 3.3V pins
-
USB micro-B connector for programming the FPGA from the PC (same than zum board)
-
FTDI 2232H USB device allows FPGA programming and UART interface to a PC
-
Reset pushbutton
-
8 general purpose leds (user leds)
-
2 general purpose pushbuttons
-
4 analogue inputs though I2C bus

¿Cómo funciona?
Las FPGAs pierden su configuración (bitstream) cada vez que se apagan.
Cuando escribimos el bitstream, este se almacena en una memoria ¿RAM flash? y desde ahí cada vez que se resetea se envía a la FPGA
Placas






Uso
Herramientas

Podemos elegir entre usar Verilog o un diseño visual, entre usar heramientas de bajo nivel o trabajar a un nivel más alto.
Apio

Paquete python que utiliza las herramientas Icestorm
sudo pip install -U apio
(si no tenemos instalado pip ... sudo apt install python-pip) (instalación global, se puede hacer también local con virtualenv)
Apio incluye sus propios drivers del chip FTDI, necesarios para su buen funcionamiento. Para activarlos
sudo apio drivers --enable
Ahora instalamos la toolchain necesaria
apio install -all
Ya lo tenemos listo para hacer cualquier operación
Creamos un nuevo proyecto:
apio examples -d leds
cd leds
Ahora creamos la configuración para nuestra placa
apio init --board icezum
Comprobamos que el proyecto está ok
apio verify
Si tenemos instalado algún simulador (GTKWave)
apio sim
Cuando estemos conformes con el resultado, sintetizamos el bitstream
apio build
Y lo enviamos a la placa con
apio upload
Apio IDE
Se trata de un paquete de Atom que permite integrar Apio en PlatformIDE
Una vez instalado Apio, instalamos Atom
Después instalamos el paquete Apio-ide que configuramos para que encuentre a Apio
ICEStudio

Descargarmos la última release
Ejemplos
Ejemplos
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
Security Score
Audited on Oct 3, 2017
