En efecto hemos visto soluciones muy ingeniosas usando tal vez medios humildes como por ejemplo cartón y leds para construir un reloj digital «gigante», pero la idea de Leon van den Beukel ha sido llegar aun mas lejos pues sustituye todos los leds convencionales usados en proyectos convencionales por tiras de leds RGB direccionables del tipo WS2812B .
Ademas por si fuese poso también ha creado una versión impresa en 3D para albergar todo usando como placa de control una placa Arduino nano al que se ha conectado un modulo bluetooth para sincronizarlo con un smartphone gracias a una aplicación personalizada que se conecta de forma inalámbrica al reloj a través de dicho modulo Bluetooth y de este modo puedo personalizar el reloj.
Para cortar algunas piezas, el autor también ha usado una máquina CNC casera.
Los componentes usados en este diseño son:
Arduino Nano (puede comprarse por unos 3€)
Módulo Bluetooth: HC-05(unos 8,5€)
Reloj de tiempo real: DS3231(unos 7€)
Tira de LED: WS2812B 1 metro 30 RGB LED(unos 28€)
Sensor de temperatura y humedad: DHT11(unos 3€)
Esta es el esquema del reloj digital casero propuesto donde ya se aprecian la conexiones:
Del sensor de temperatura DHT11, el cual se ha conectado al pin D2 junto la típica resistencia de 10k entre la salida de datos y VCC
El modulo de bluetooh conectado a los pines D5(tx) y D6(rx) sin omitir la alimentación de vcc y gnd. El pin de RV también lleva una resistencia de 1k en serie y otra de 2.2k entre este y masa para atenuar la señal del modulo
La tira de leds conectado a D8 por medio de una resistencia en serie de 330 ohmios sin omitir la alimentación de vcc y gnd
El modulo de tiempo real conectado a los pines analógicos A4 y A2 sin omitir la alimentación de vcc y gnd
La alimentación de todo el conjunto de 5v DC
Por cierto si se esta preguntando por el orden de colocación de los leds , tenga en cuenta que ha usado 29 leds RGB para los 4 dígitos y los dos puntos, colocándoles de modo que compongan 4 cifras en código de 7 segmentos conectando cada led entre si respetando la alimentación y encadenando el pin de datos pore medio de sus pines de entrada y salida
Esta es la configuración del orden de los leds RGB empleada por el autor:
Para el control del reloj puede descargar la aplicación Bluetooth Digital Clock App para Android desde Play Story aquí: hhttps://play.google.com/store/apps/details?id=nl.leonvandenbeukel.BTDigitalClockApp
Realmente las FPGA’s o matriz de puertas programables (del inglés field-programmable gate array) no son un invento reciente pues fueron inventadas ya hace unos años allá por el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-fundadores de Xilinx.
Esencialmente internamente están formadas por una enorme matriz compuesta por un gran número de pequeños bloques formados por puertas lógicas y biestables síncronos (de hecho del orden de cientos de miles hasta millones de ellas según el modelo) y justo en la intersección de esos hay conmutadores digitales que son los que precisamente se configuran modificando la matriz de conexiones para realizar una determinad tarea tal y como se haría con un circuito digital
Estos bloques individuales están constituidos por elementos lógicos como puertas AND,OR,NOR que les permiten adoptar distintas funciones de transferencia.
El inter-conexionado de una FPGA por tanto esta cero cuando esta está sin configurar, de modo que necesitamos habilitar e puentes de conexiones en determinadas partes y en otras deshabilitarlas , función que hacemos mandándole una ráfaga de bits ( o bit stream )
Juntos, los distintos bloques, unidos por las conexiones que programamos, hacen que físicamente se constituya un circuito digital, de forma similar a como haríamos en una placa de prototipos (protobard) con elementos discretos por ejemplo de la serie c-mos y con mucho cableado físico sujeto a errores y poca fiabilidad.
Estos arreglos de matrices con cientos de miles hasta millones de puertas programables sencillas como AND,OR,NOR y biestables , nos dan una gran ventaja a la hora de implementar un circuito lógico pues en vez de invertir en conexiones físicas susceptibles de fallar , es mucho mas eficiente realizarlo con una FPGA donde pueden estar todas estas puertas pero incluidas en un chip pequeño, el cual lo configuraremos para realizar esas conexiones programando las compuertas para un determinado fin , y cuando ya no sea necesario es posible reprogramarlo para otro cometido
Como vemos la enorme libertad en la interjección de dichos bloques confiere a las FPGA una gran flexibilidad y versatilidad que llega hasta tal punto que incluso son capaces de emular microprocesadores de varios núcleos ( en función del tipo de FPGA) ,
Hay proyectos de pequeños procesadores que pueden ser configurados en un FPGA. Ejemplos son MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de código abierto LatticeMicro32 y LatticeMicro8. !Incluso existen proyectos para emular procesadores históricos en FPGA, como el famos procesador del Apollo 11 Guidance Computer que llevo el hombre a la Luna.
Todo esto pues puede explicar porque se están poniendo de moda pues permiten sobre una misma pastillas realizar diferentes circuitos que incluso pueden ser actualizados para mejorar su rendimiento su necesidad de cambiar el hardware
Un aspecto a destacar es dado que su funcionamiento es básicamente cableado permite velocidades altisimas de reloj desde Mhz hasta Ghz, pudiendo hacer procesamiento de señales de alta frecuencia así como construir circuitos muy rápidos por lo que vemos ninguna de las placas qeu hay en el mercado como por ejemplo Ardiuino se aproximan a las FPGA’s
Algunos de los principales fabricantes son Xilinx, Altera (comprado por Intel en 2015), MicroSem, Lattice Semiconductor o Atmel, pero recientemente otros grandes players como Arduino también han entrado en este lucrativo negocio del hardware con el modeloMKR Visor basada en un chip de Intel , el modelo Cyclone 10CL016j,
Programación
Los FPGA no se “programan” en el sentido estricto como estamos familiarizados usando lenguaje como Processing C, C++, Python,etc pues usan HDL ( Hardware Description Language. ) ,es decir un tipo diferente de lenguaje descriptivo usado también en el diseño de chips y SoC
Para empeorar las cosas una de las claras desventajas de las FPGA es que estos lenguajes HDL son especificos para cada FPGA por lo que cada fabricante diseña su propia forma de hacer síntesis sobre esta
Los lenguajes HDL tienen una curva de aprendizaje grande debido a que tiene un grado de abstracción muy bajo pues piensese que describen diseños de circuitos digitales de modo que los fabricantes proporcionan herramientas comerciales para programar sus propios FPGA. Estas herramientas no son gratuitas, o lo son sólo para algunos modelos de FPGA del fabricante y como vemos están unidos a la arquitectura de un único fabricante.
Con el desarrollo de los FPGA han aparecido otros lenguajes que permiten un mayor nivel de abstracción, similar a C, Java, Matlab. ejemplo son System-C, Handel-C, Impulse-C, Forge, entre otros.
Con la evolución en el desarrollo de las FPGA también han aparecido herramientas centradas en la programación gráfica de las FPGA, como LabVIEW FPGA, o el proyecto Open Source IceStudio desarrollado por Jesús Arroyo Torrens.
Afortunadamente hace unos años hubo un investigador proveniente de la docencia llamado Clifford Wolf que tras un hercúleo trabajo de ingeniería inversa con su proyecto ice storm a lo largo de tres años. que liberó un modelo de FPGA de Lattice Semiconductor (el modelo iCE40 LP/HX 1K/4K/8K, ) publicando en la comunidad Open Hardware su diseño y método de programación , así que hay buenas noticias sobre esa desventaja que existía de programar la FPGA’s pues es posible programar algunos modelos con herramientas abiertas
El coste
Como hemos visto , los lenguajes con los que se configuran ka FPGA dificultaban su uso ,pero tras la liberación del modelo de Lattice se camina hacia herramientas abiertas asi que uno de os grandes escollos que deben superar el coste pues e todavía las FPGA’s tienen un costo muy elevado sobre los microcontroladores pues un microcontrolador arduino clónico lo podemos conseguir por menos de 10 € , y lamentablemente una FPGA es imposible conseguirla por ese precio pero poco a poco esto esta cambiando con placas que vamos a ver a continuación
El precio de una FPGA puede estar en el rango de 20 a 80€ como vemos muchísimo más caro que un Arduino Nano (16Mhz) o un STM32 (160Mhz) que podemos comprar por 1.5€, un Node Mcu ESP8266 (160Mhz + WiFi) que podemos comprar por 3.5€ o incluso, son mucho más caros que una Orange Pi (Quad 800 Mhz + WiFi), que podemos encontrar por unos 20€.
Placa Arduino MKR Vidor 400
El Arduino MKR Vidor 4000 es una nueva clase de desarrollo que combina el alto rendimiento y flexibilidad de una FPGA con la facilidad de uso del Arduino en un pequeño factor de forma que es el rasgo distintivo de la familia MKR
Esta placa contiene el microcontrolador SAMD21 de Microchip y un Ciclón 10 FPGA ( de INTEL) y cuenta con 8 MB SDRAM, 2 Mbyte QSPI Flash (1MB para las aplicaciones de usuario), conector Micro HDMi de alta definiciónI, conector de la cámara MIPI, Wifi alimentado por el módulo de U-BLOX NINA W102, la clásica interfaz MKR en que todos los pernos están conducido por SAMD21 y FPGA y un conector Mini-PCI Express con hasta 25 pines programables del usuario.
El FPGA contiene elementos de la lógica de 16K, 504Kbit de RAM integrado y multiplicadores de 18 x 18 bits HW 56 para DSP de alta velocidad; Cada pin puede cambiar a más de 150 MHz y puede ser configurado para funciones tales como UARTs, SPI (Q), alta resolución / alta frecuencia PWM, encoder de cuadratura, I2C, I2S, Sigma Delta DAC, etcetera. A bordo de FPGA puede también utilizarse para alta velocidad operaciones de DSP para el procesamiento de audio y video.
El Arduino MKR Vidor 4000 puede ser programado usando el Software de Arduino (IDE), y ejecutar tanto online como offline
IceZUM Alhambra
La IceZUM Alhambra incluye una FPGA iCE40 del fabricante Lattice Semiconductor, cuyo diseño y método de programación fue liberado por Clifford Wolf tras un hercúleo trabajo de ingeniería inversa a lo largo de tres años.
La placa de desarrollo IceZUM Alhambra se desarrolló originalmente en BQlabs y ha sido diseñada por Eladio Delgado en colaboración con Juan González, siempre con la idea de que pudiera ser utilizada en educación.
La placa se puede adquirir a través del grupo #FPGA-Wars que conforma la comunidad en torno a esta placa lanzando tiradas cortas conforme los usuarios se van apuntando. De momento tiene un coste de 65 euros, con una calidad excepcional y todos los controles de calidad gracias al trabajo de Eladio Delgado pero es de suponer que cuando se fabrique a mayor escala podrá bajar el precio.(al ser hardware libre… en principio cualquiera puede lanzarse a su fabricación.) Tambiédsiponen una IceZUM Alhambra “peregrina” que se va enviando de unas personas a otras para que la puedan probar( esto esta en el grupo #FPGA-Wars.)
Para modificar las conexiones internas de una FPGA se utilizan lenguajes de descripción hardware. Para la IceZUM Alhambra dado su carácter libre y abierto se utiliza Verilog, lenguaje de descripción hardware abierto y podríamos decir que estándar hoy en día.
Pero la maravilla que seguro ayudará a que estudiantes puedan entender mejor el diseño de circuitos digitales se llama Icestudio, creación de Jesús Arroyo y que me atrevo a comparar con lo que ha supuesto Scratch a la programación.
Con Icestudio en vez de utilizar código de descripción hardware diseñamos directamente, gráficamente, el circuito combinacional. Es seguro que con Icestudio se podrá introducir a la electrónica digital a alumnos cada vez más jóvenes.
BQ patrocinó el proyecto conjunto de la IceZUM Alhambra junto con Icestudio y Apio en sus inicios a lo largo de 2016 y ahora el proyecto avanza gracias a sus creadores con el apoyo de la comunidad gracias a su concepto abierto y colaborativo.
El proyecto IceStorm es un toolkit (formado por IceStorm Tools + Archne-pnr + Yosys) que permite la creación del bitstream necesario para programar un FPGA iCE40 con herramientas open Source.
El trabajo de Clifford se realizó un IceStick, una placa de desarrollo con un FPGA iCE40, por su bajo coste y pequeñas características técnicas, que permitían el trabajo de ingeniería inversa.
el proyecto IceStorm y el Lattice ICE fue el inicio de una revolución en el campo de las FPGA similar a la que empezó Arduino con los procesadores AVR de Atmel, y que ha permitido poner al alcance de los usuarios domésticos pues el resro de FPGA’s requieren inversiones elevadisimas tanto en hw como en sw.
Para terminar , podemos ver un a ver un sencillo ejemplo de como configurar (Programar) un FPGA de forma fácil usando Icestudio (HDL) y la ICE40 icestick de lattice, para configurar una alarma de incendios en https://youtu.be/YFQeNDnbNSY
Debe estar conectado para enviar un comentario.