FPGA
Electrónica digital para makers con FPGAs libres
Grupo I
Serie de micro-tutoriales para aprender electrónica digital usando FPGAs libres
Tutorial 1: Electrónica digital para todos
Tutorial 2: ¡Poniendo en marcha Icestudio!
Tutorial 3: La Icezum Alhambra y otras placas con FPGAs libres
Las herramientas que usaremos en estos tutoriales son Icestudio y la placa Icezum Alhambra. Pero existen otras placas con FPGAs libres que se están desarrollando en la comunidad. La icezum Alhambra es una placa libre, y puedes ver sus tripas usando herramientas libres como Kicad. También puedes ver cómo están hechos sus componentes 3D y sus accesorios, con Freecad. Es importante ser conscientes de lo que implican las tecnologías libres: ¡Acceso total a sus planos! ¡Esto nos da un inmenso poder! Las empresas van y vienen, y con ellas sus productos. Pero lo libre permanece
Haremos nuestro primer circuito desde cero, en Icestudio, y lo sintetizaremos en la FPGA para probarlo. Será muy sencillo: el circuito simplemente enciende el LED 7, pero nos servirá de ejemplo para comprender el concepto de Bit y tener mayor intuición de cómo se mapea el circuito en la FPGA
Las colecciones contienen bloques y ejemplos. Aprenderemos a instalarlas y usarlas. Haremos el circuito "hola mundo" que ya conocemos pero con una colección nueva, y lo documentaremos usando el bloque información
En hardware las cosas van en paralelo. Los circuitos independientes funcionan en paralelo, lo que nos permite crearlos de manera aislada y luego juntarlo para que funcionen a la vez (Superposición). Aprenderemos cómo podemos hacer parpadear bits a diferentes velocidades mediante el bombeo de bits
Los circuitos digitales realizan tres operaciones con los bits: transporte, almacenamiento y manipulación. Veremos un ejemplo de manipulación sencilla usando la puerta lógica NOT, con la que haremos que dos leds parpadeen alternativamente
La icezum Alhambra dispone de un total de 32 pines de E/S repartidos en diferentes conectores. Aprenderemos a conectar LEDs externos a los pines de 3.3V de la FPGA y cómo hacerlos parpadear desde circuitos en Icestudio. Veremos cómo hacer distintos tipos de circuitos físicos para colocar estos LEDs
Los bits se introducen en los circuitos digitales a través de sus entradas. Veremos cómo meter bits mediante los pulsadores internos de la Icezum Alhmabra, y haremos circuitos sencillos con entradas y salidas
Empezaremos a manejar servos. Son actuadores cuyo eje de salida se puede fijar a una posición concreta. Se usan mucho en robots educativos, para implementar pinzas o articulaciones. Se presenta el controlador más simple para moverlos: El servoBit, que permite posicionar el servo en dos posiciones, según el bit recibido por su entrada
Grupo II
La puerta lógica AND nos permite hacer manipulaciones de bits. Aprenderemos su funcionamiento y la utilizaremos para habilitar / deshabilitar señales
Utilizaremos interruptores y pulsadores externos para introducir bits en nuestros circuitos digitales. Aprenderemos las diferentes formas de conexión, y construiremos paneles de control con ellos
Conectaremos a nuestros circuitos LEDs externos a los pines de 5v, para incorporarlos a nuestros papeles. También añadiremos zumbadores, con los que podremos crear sonidos
Los multiplexores nos permite combinar circuitos que usan las mismas salidas. Veremos el funcionamiento de dos tipos: los multiplexores 2:1 y los 4:1
VIDEO 15: Servos de rotación continua
Aprenderemos a manejar los servos de rotación contínua, modelo SM-4303R, con el controlador MotorBit. Y esto nos permitirá construir nuestro primer robot móvil: el icebot 0.1. Usaremos circuitos digitales sencillos para mover el robot
Los sensores de infrarrojos nos permiten detectar objetos a corta distancia. Aprenderemos a manejarlos y los usaremos para dotar al robot icebot de su primer comportamiento reactivo
VIDEO 17: Puertas lógicas: OR
La puerta lógica OR nos permite hacer manipulaciones de bits. Aprenderemos su funcionamiento y la utilizaremos para combinar señales. Con esto ya conocemos las tres puertas lógicas básicas: AND, OR y NOT, que nos permiten crear cualquier otra función lógica, por muy complicada que sea
VIDEO 18: Bloques con parámetros
Hasta ahora hemos utilizado bloques específicos que hacían una función concreta. Aprenderemos a usar los bloques genéricos, que nos permiten crear bloques específicos mediante la asignación de valores a sus parámetros. Lo aplicaremos al manejo de tres nuevos componentes paramétricos: el corazon, el servobit y el motorbit. Esto nos permitirá fijar la frecuencia, el periodo, el ángulo del servo o la velocidad a valores diferentes de los establecidos por defecto
Los circuitos combinaciones son los que nos permiten realizar manipulaciones de los bits. Se caracterizan porque sólo manipulan bits, pero no los almacenan. No tienen memoria. Quedan totalmente definidos por su tabla de verdad. Empezaremos estudiando los circuitos combinacionales de varias entradas y una salida, y cómo los podemos implementar fácilmente a partir de su tabla de verdad usando los bloques memory de Icestudio 0.3.3-beta o superiorom/watch?v=boSUklCva0A
Hasta ahora hemos hecho circuitos que trataban con los bits de manera aislada. Con circuitos más complejos, es mejor agrupar los cables en buses, y tratar la información como números, en vez de bits aislados. Aprenderemos a crear buses, agrupar entradas y salidas, y utilizar componentes cuyas entradas y salidas son números
Grupo III
Los circuitos que hemos creado utilizan bloques. Aprenderemos a crear nuestros propios bloques, utilizando los que ya conocemos. Esto nos permitirá ocultar la complejidad y así crear circuitos más potentes, usando diseño jerárquico
Aprenderemos a construir circuitos combinacionales de varias salidas, y veremos de ejemplo de manejo del robot icebot con los pulsadores, así como la reproducción de secuencias en los LEDs. Para crear bloques combinacionales a partir de tablas de verdad, con las entradas y salidas que queramos, utilizaremos la Fábrica de bloques de Icestudio (IceFactory)
Las colecciones de Icestudio nos permiten organizar los bloques y los ejemplos. Con ellas podemos estructurar lo que queremos enseñar, mostrando sólo lo que es relevante. Aprenderemos a modificarlas y crearlas desde cero
Los displays de 7 segmentos permiten que nuestros circuitos, que internamente trabajan en binario, muestren información en dígitos decimales, que son legibles por los humanos. Para manejarlos simplemente hay que saber encender LEDs y saber hacer circuitos combinacionales a partir de tablas de verdad
Para almacenar los bits necesitamos un nuevo componente: el biestable. Con estos elementos, nuestros circuitos pueden recordar eventos ocurridos en el pasado, y no sólo en el presente. Haremos ejemplos de uso de biestables en circuitos simples, para ganar intuición sobre cómo utiliarlos
En los circuitos se tiene noción del tiempo gracias al reloj del sistema. Mediante los temporizadores podemos medir el tiempo, realizar acciones y propagar eventos. Veremos como combinar estos elementos para realizar pequeños automatismos. Empezamos a vislumbrar la potencia de los circuitos secuenciales
Los contadores son unos componentes fundamentales, importantísimos en electrónica digital. Aprenderemos el funcionamiento de los contadores ascendentes, y los usaremos para contar eventos, medir tiempo y recorrer tablas
Nuestros circuitos manipulan datos, que típicamente se almacenan los biestables tipo D. Los podemos conectar de diferentes maneras para realizar operaciones aritméticas y conversiones de paralelo a serie y vice-versa, que se usan mucho en los controladores de acceso a periféricos. También aprenderemos a usar los biestables de cambio, o tipo T, con los que podemos convertir los pulsadores en interruptores
Tutorial 29: Registros y comparadores. Parte I: Registros
Los registros nos permiten almacenar números de varios bits en nuestros circuitos, y transmitirlos de un circuito a otro en paralelo o en Serie. Veremos ejemplos de comunicación entre el Arduino y la FPGA, usando comunicaciones serie síncronas. Gracias a los comparadores, podemos tomar decisiones dependiendo de los valores almacenados en los registros.
Último vídeo de la Temporada I. Haremos un repaso de lo que ha avanzado el ecosistema de las FPGAs libres durante este año. Han aparecido muchas placas, y las herramientas siguen evolucionando para soportar más modelos de FPGAs. Como ejemplo de la colección Jedi, veremos cómo usar el conversor analógico-digital
Tutorial 30 (12 Partes)
Tutorial 30: Puerto serie. Parte I: Puesta en marcha
El puerto serie nos abre la posibilidad de comunicar el PC y el móvil con nuestros circuitos en la FPGA. Aprenderemos a usar el transmisor y receptor serie, sus fundamentos internos y veremos ejemplos de aplicación
Tutorial 30: Puerto serie. Parte II: Transmisor de 8 bits
Tutorial 30: Puerto serie. Parte III: Transmisor serie de múltiples caracteres
Tutorial 30: Puerto serie. Parte IV: Funcionamiento del transmisor múltiple
Tutorial 30: Puerto serie. Parte V: Funcionamiento del transmisor de 8 bits
Tutorial 30: Puerto serie. Parte VI: Receptor serie
Tutorial 30: Puerto serie. Parte VII: Funcionamiento del receptor serie
Tutorial 30: Puerto serie. Parte VIII: Combinando transmisor y receptor
Tutorial 30: Puerto serie. Parte IX: Aplicación. Comunición Arduino-FPGA
Tutorial 30: Puerto serie. Parte X: Aplicación 2. Comunicación de nuestros programas en el PC con la FPGA
Tutorial 30: Puerto serie. Parte XI: Aplicación 3. Comunicación Bluetooth-serie
Tutorial 30: Puerto serie. Parte XII: Ejercicios propuestos