Capítulo 27: FPGA: La placa Alhambra II - Obijuan/videoblog GitHub Wiki
Vídeo
- Fecha: 2019/Mayo/02
Haz click en la imagen para ver el vídeo en Youtube
Descripción
Puesta en marcha de la placa con FPGA Alhambra-II, y carga de los primeros ejemplos para hacer parpadear un LED. También se muestra cómo conectar un LED y un pulsador externos
Contenido
- Ficha técnica
- Primera prueba: Conectando la placa
- Cargando el circuito "Hola mundo"
- Conversión de ejemplos desde la icezum Alhambra
- Conexión de un LED externo
- Conexión de un pulsador externo
- Ejemplo: conexión de un pulsador y un LED externos
- Descargas
- Autor
- Licencia
- Créditos y agradecimientos
- Enlaces
Ficha técnica
Ficha | |
---|---|
Nombre | Alhambra II |
Autor | Eladio Delgado |
Fabricante | Mareldem Technologies, Pinos del valle, Granada, España |
Donde conseguirla | Alhambrabits |
Precio | 50€ + IVA |
FPGA | ICE40Hx4K |
Frecuencia | 12Mhz |
Periféricos | 8 LEDs, 2 pulsadores, 4 canales A/D |
Observaciones | Hardware libre. Compatible Arduino |
Repositorio | https://github.com/FPGAwars/Alhambra-II-FPGA |
Es la evolución de la Icezum Alhambra. Los cambios más importantes de la Alhambra II con respecto a la anterior son (Más información en este hilo de FPGAwars):
- FPGA ice40HX4K, que es equivalente a una 8K. Podemos meter circuitos 8 veces mayores. En ella se pueden sintetizar fácilmente microprocesadores como el Latuino o el picorisv32
- GPIOs a 3.3V tolerante a 5V (como entrada acepta niveles entre 3.3 y 5V, como salida genera 3.3V)
- Alimentación por USB (dos conectores), hasta 4.8A, para alimentarla con power bank y tener más corriente para los servos
- Los pines de selección de bitstream para cold boot están accesibles en el GPIO
- Reguladores conmutados de 1A para las alimentaciones de 1.2 y 3.3V, lo que permitirá activar los PLLs y trabajar a velocidades mucho mayores.
- Pines analógicos integrados en los pines D0 a D3 (sólo 4 de los 6 pines del header son analógicos) para mayor compatibilidad con Arduino
- Pulsadores de usuario más cómodos de accionar (3 veces menos fuerza por unidad de superficie que los anteriores)
Primera prueba: Conectando la placa
La placa se alimenta mediante un conector micro-USB B, como el que tienen lo móviles. Tiene dos, uno principal para la conexión al PC y la descarga de circuitos. El segundo es para dar potencia adicional a los periféricos que conectemos
La placa viene de fábrica con un circuito de pruebas ya grabado, de forma que simplemente con conectarla al PC empezarán a lucir sus 8 LEDs. Este es el escenario:
En esta animación se muestra el funcionamiento. En cuanto se conecta el USB para alimentar la placa, los 8 LEDs se encienden y empiezan varíar su intensidad de luz de forma pulsante
Esto mismo se puede ver con más calidad en este vídeo de Youtube
Si apretamos el pulsador SW1, cambia la secuencia de los LEDs a la del Coche fantástico. Si volvemos a pulsar SW1 se cambia al modo de transmisión serie, en el que se envía una cadena por el puerto serie al PC, al apretar SW2. Al apretar otra vez SW1 pasamos al modo de recepción serie: todo lo recibido desde el PC se mostrará en los LEDs. Por último, si apretamos SW1 nuevamente volvemos al modo pulsante inicial
Si en el PC hemos abierto un terminal serie, a la velocidad de 115200 baudios, veremos la cadena de prueba transmitida y podremos enviar caracteres para probar la recepción. Para más información sobre el puerto serie puedes consultar el tutorial 30
Este circuito de pruebas está disponible en el repositorio de la alhambra II. Si quieres probarlo, asegúrate de tener instalada la última versión 0.4-dev nigthly (o superior) de Icestudio
Cargando el circuito "hola mundo"
Sintetizaremos y cargaremos un circuito que hace parpadear el LED 7 de la Alhambra II. Instalar la última versión de icestudio, que en el momento de haces este vído blog es la 0.4-dev nightly que puedes descargar de este enlace para Linux, Mac y Windows.
Las instrucciones de instalación están en el Tutorial 2. Realizar hasta el paso 3: Configuración del idioma. Icestudio usa por defecto la placa Icezum Alhambra, así que seleccionamos la Alhambra-II desde el menú Seleccionar/placa/Alhambra II
En la parte inferior derecha nos aparecerá el nombre de la placa seleccioada: Alhambra II
Continuamos con la instalación de Icestudio, siguiendo los pasos 4 y 5. El paso 6 lo hacemos con un circuito hola mundo preparado para la Alhambra II: Descarga este fichero Alhambra-II-hola-mundo-01.ice y ábrelo desde el menú Archivo/Abrir...
Nos aparecerá el siguiente circuito. Está formado por un corazón que bombea los bits 0 y 1 consecutivamente a un ritmo de una vez por segundo, hacia el pin de salida de la FPGA donde está conectado el LED7
Con la Alhambra II conectada al USB del PC, cargamos el circuito desde la opción Herramientas/cargar (o pulsamos las teclas Ctrl+u). El circuito se empieza a sintetizar y luego a cargar. Mientras se descarga se encederá el led naranja CFG. Al cabo de unos 5 segundos el LED7 comenzará a parpadear
En Icestudio nos aparecerá una notificación de color verde, en la parte inferior derecha indicando que la carga se ha realizado correctamente
En este vídeo se puede ver con más calidad el funcionamiento del hola mundo
Conversion de ejemplos desde la Icezum Alhambra
Actualmente hay muchos circuitos de ejemplo para la placa Icezum Alhambra. Por ejemplo todos los del tutorial de electrónica digital para makers con FPGAs libres. Si tenemos la Alhambra II es necesario realizar una conversión. Afortunadamente, desde la versión 0.4-dev Nightly, se hace automáticamente
Vamos a probarlo. Abrimos icestudio y seleccionamos la Alhambra II (si es que no la teníamos seleccionada ya) y cargamos el primer ejemplo que viene en la colección por defecto , desde la opción Archivo/ Ejemplos/1.Básicos/01.un LED. Es un ejemplo para la Icezm Alhambra, por lo que nos aparecerá un mensaje de aviso
Pinchamos en la opción de CONVERTIR y se nos cargará el circuito con los pines actualizados para la Alhambra-II
En esta animación se muestra el proceso completo. Nos aparece una notificación amarila informando de que si aparecen pines de Entrada/Salida vacíos, tendremos que asignarnos nosotros manualmente. No es el caso de este primer ejemplo, que se convierte sin problemas
Ahora lo cargamos en la placa como siempre (Herramientas/cargar o apretando las teclas ctrl+u). Este circuito hace que el LED0 permanezca encendido
Posibles errores
Si al abrir el ejemplo en vez de pulsar sobre la opción de Convertir pinchamos en CARGAR se nos abre también el ejemplo, pero la placa se cambia a la icezum Alhambra
Esto tiene el inconveniente de que si ahora cargamo el circuito, aparecerá un mensaje de error indicando que la placa no se ha detectado: Claro, lo que hay conectado es una Alhambra II, y NO una icezum Alhambra. Esto puede generar confusión
Conexión de un LED externo
La conexión de un LED externo en la Alhambra II es extremadamente fácil. La configuración más básica es pinchar el LED directamente, sin ninguna resistencia. En este ejemplo está conectado al pin D13 (y la otra pata a GND). Igual que con Arduino:
Este es el escenario real, con la Alhambra II conectada al PC y el LED verde pinchado entre D13 y GND
Hacemos parpadear el LED mediante este circuito, que conecta un corazón de 1Hz al pin D13, para bombear los bits 0 y 1 y cambiar el LED de estado periódicamente
Lo cargamos en la Alhambra II y lo probamos. Nuestro LED verde está parpadeando
Los LEDs externos los podemos colocar en una placa de entrenamiento, por si quieremos añadir una resistencia en serie o más componentes. Este es el mismo escenario anterior, pero el LED verde está en la protoboard, conectado al pin D13 y a GND mediante dos cables macho-hembra
Conexión de un pulsador externo
Los pulsadores los conectamos igual que con Arduino. En este ejemplo usamos una resistencia de pull-down típica de 4K7 ohm, conectada entre GND y la entrada D0. El pulsador conecta D0 con la alimentación de 5v. Este es el esquema:
También es posible utilizar las resistencias de pull-up internas de las salidas de la FPGA, pero eso lo veremos en otro cuaderno técnico más adelante. El montaje real es el siguiente:
Para probarlo usamos el siguiente circuito, que simplemente usa un cable para conectar la entrada del pulsador al LED0. Cada vez que se apriete se enciende el LED0
Lo cargamos en la Alhambra II y lo probamos
Ejemplo: Conexión de un pulsador y un LED externos
Como último ejemplo vamos a conectar un LED y un pulsador externos, en los pines D13 y D0 respectivamente. El conexionado es el siguiente:
Este es el escenario real, para hacer las pruebas
El circuito de pruebas es el mismo de antes: un cable para unir el pulsador con el LED, de forma que al apretar el botón se enciende el LED externo
(Alhambra-II-Pulsador-D0-LED-D13.ice)
Lo cargamos y lo probamos. ¡Conectar LEDs y pulsadores externos a la Alhambra II es muy muy fácil! :-)
Descargas
Fichero | Descripción |
---|---|
Alhambra-II-hola-mundo-01.ice | Ejemplo "Hola mundo" para la Alhambra II |
Alhambra-II-LED13.ice | Ejemplo de manejo de un LED externo (D13) |
Alhambra-II-Pulsador-D0.ice | Ejemplo de pulsador externo (D0) |
Alhambra-II-Pulsador-D0-LED-D13.ice | Ejemplo de pulsador y LED externos (D0 y D13) |
Autor
- Juan González-Gómez (Obijuan)
Licencia
Créditos y agradecimientos
- La plaza Alhambra II no se podría haber realizado sin la ayuada de toda la comunidad de FPGAwars y de todos los que nos habéis ayudado a financiarla. ¡Muchísimas gracias! :-)
- Jesús Arroyo es el autor original de Icestudio, la herramienta libre visual clave para el avance de las FPGAs libres, y su uso en la comunidad maker. ¡Muchas gracias! :-)
- Carlos Venegas (charli) es el creador de las versiones Nigtly Build de Icestudio y las mejoras en Icestudio para hacer fácil la conversión desde la Icezum Alhambra a la Alhambra II. ¡Muchas gracias!
- Eladio Delgado: Diseñador principal de la Alhambra II. ¡Muchísimas gracias!
- María Delgado: Creadora del pinout de la Alhambra II, en Inkscape y de los primeros prototipos de la placa. La fabricación sólo es posible gracias a ella. ¡Muchísimas gracias!
- Andrés Prieto-Moreno. Muchísimas gracias por toda tu ayuda con la financiación, la web y el sorpote técnico en USA