#fpgawars — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #fpgawars, aggregated by home.social.
-
Es el momento de comenzar el viaje hacia la implementación de las FPGAs de Xilinx en apio y Icestudio, para hacerlas accesibles a la gente
Hacer que las FPGAs sean fáciles de usar es difícil, pero merece la pena
Es el momento de acercar este patrimonio tecnológico de la humanidad a más gente
Voy a comenzar dando soporte a la placa Basys 3 (con una FPGA artix 7 de Xilinx) en Linux, incluyéndola en apio y Icestudio
Luego mac os y windows
¡Vaaamos!
https://groups.google.com/g/fpga-wars-explorando-el-lado-libre/c/7qGr08mPUE8
-
Así es el flujo de trabajo usando herramientas libres con la placa Basys3. Basta con editar el fichero verilog, ejecutar "make prog' y el diseño se sintetiza y se carga. Vemos cómo el LED se enciende
Las herramientas se instalan usando Nix
-
Ejemplo 37: Bola confinada en un recinto, rebotando en las paredes
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-37-bola-rebotando
-
Ejemplo 36: Movimiento de una bola (cuadrada) con teclas
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-36-vga_obj_mov2v
-
Ejemplo 35: Movimiento horizontal de una barra vertical con las teclas izquierda y derecha
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-35-vga_obj_movv
-
Poniendo en marcha la VGA de la Basys3, con herramientas libres
Ejemplo 31: vga_sync.v. ¡Pantalla verde!
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-31-vga_syncv
-
Ejemplo 29: Animación del mensaje HOLA
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-29-msg_anim2_autov
-
Saludos desde la placa Basys3 con FPGA Artix7 de Xilinx/AMD. Circuito sintetizado y cargado exclusivamente con HERRAMIENTAS LIBRES
Nunca llegué a pensar que tendríamos herramientas libres para las FPGAs de Xilinx... pero ya es una realidad. Queda camino por andar, pero estamos ahí! 😀
https://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-27-display_lettersv
-
Ejemplo 26: Mostrando números en los displays de 7 segmentos...
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#ejemplo-26-display_hex4v
-
Puesta en marcha de los displays de 7 segmentos. Encendido de los segmentos con los switches
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#display_switches
-
Probando los switches
¡Todos los sistemas activos! ¡Listos para el lanzamiento!
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#switches_leds
-
Movimiento de un LED partícula con gravedad. Con el pulsador se lanza la partícula, y por efecto de la gravedad cae y regresa al punto de partida
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#particle_gravity
-
Movimiento de la partícula-LED hacia la derecha e izquierda usando los pulsadores
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#cursor_buttons
-
¡Todos los pulsadores están operativos!
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#leds_buttons
-
Y por supuesto no puede faltar la secuencia del "coche fantástico", o del ojo del Cylon. Una placa no es válida hasta que se reproduzca esta secuencia 😂
#FPGAwarshttps://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#led_cylon
-
Otro ejemplo "Hola mundo". Envío de una secuencia de dos estados a los LEDs, a través de un multiplexor #FPGAwars
https://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#led_seq1
-
LED parpadeando en la Basys3, usando solo herramientas libres para la síntesis, rutado y carga. Esto marcha!! #FPGA #FPGAwars
https://github.com/Obijuan/Learn-Basys-3-board-OpenFPGA/wiki/LOG#blinky
-
También funciona con los móviles Android
Hardware real, configurado en la FPGA con sólo apretar un botón... así de fácil 🙂
Y por supuesto, sólo utilizando herramientas libres
-
FPGA-Retrohub: Prueba de concepto. Desde la tablet/movil se pueden cargar sistemas retros con sólo apretar un boton: ZX-spectrum, Amstrad-cpc, juego Defender o juego space invaders
La FPGA se reconfigura en pocos segudos
En este video en youtube lo puedes ver en acción:
-
FPGA-Retrohub: Prueba de concepto. Desde la tablet/movil se pueden cargar sistemas retros con sólo apretar un boton: ZX-spectrum, Amstrad-cpc, juego Defender o juego space invaders
La FPGA se reconfigura en pocos segudos
En este video en youtube lo puedes ver en acción:
-
FPGA-Retrohub: Prueba de concepto. Desde la tablet/movil se pueden cargar sistemas retros con sólo apretar un boton: ZX-spectrum, Amstrad-cpc, juego Defender o juego space invaders
La FPGA se reconfigura en pocos segudos
En este video en youtube lo puedes ver en acción:
-
FPGA-Retrohub: Prueba de concepto. Desde la tablet/movil se pueden cargar sistemas retros con sólo apretar un boton: ZX-spectrum, Amstrad-cpc, juego Defender o juego space invaders
La FPGA se reconfigura en pocos segudos
En este video en youtube lo puedes ver en acción:
-
Esta es la interfaz en la web
Ahora se pueden hacer demos muy sencillas para el usuario: carga de programas de pruebas de la placa, carga de diferentes "ordenadores retros" (zx-spectrum, amstrad...) con sólo apretar un botón. ¡Imaginación al poder!
#FPGAwars #AlhambraII -
Ejemplo de webapp para descargar circuitos con sólo un botón. Al pulsar Blinky7 se carga el circuito que hace parpadear el LED7, y con Blinky0 el LED0. Sólo hay que pulsar un botón y ya tenemos el circuito cargado!
* Webapp:
https://obijuan.github.io/Web-iceprog/wiki/web-iceprog/webFPGA-tools-03/index.html* Fuentes: https://github.com/Obijuan/Web-iceprog/tree/main/wiki/web-iceprog/webFPGA-tools-03
-
...y ¡Ya se pueden carga bitstreams en la FPGA desde el móvil Android a través de la aplicación web!!!! ¡Qué gran hito!
Esta no es la webapp final, sino una prueba de desarrollo. Inicialmente hay un bitstream que endiende el LED D0. Se carga otro que enciende el LED D7. El proceso tarda unos segundos
* Webapp: https://obijuan.github.io/Web-iceprog/wiki/web-iceprog/webFPGA-tools-02/index.html
* Fuentes: https://github.com/Obijuan/Web-iceprog/tree/main/wiki/web-iceprog/webFPGA-tools-02
-
Esta es la nueva Interfaz gráfica para hacer las pruebas
-
Ya está implementada la grabación de bytes en la Flash! Estoy a un paso de grabar bitstreams directamente desde el móvil!
URL de pruebas: https://obijuan.github.io/Web-iceprog/wiki/web-iceprog/webFPGA-tools/index.html
Fuentes: https://github.com/Obijuan/Web-iceprog/tree/main/wiki/web-iceprog/webFPGA-tools
-
Esta es la pinta que tiene la interfaz de la webapp vista desde Chrome en un ordenador. Poco a poco iré añadiendo más acciones
-
Foto del móvil conectado a la #AlhambraII con un cable OTG. Está abierto un Chrome en la url de la webapp
-
Más pruebas con la WebApp para acceder a la flash de la FPGA en la #AlhambraII. Ya consigo borrar un sector de la flash, que es el paso previo para poder grabar datos y/o bitstreams!
URL de prueba: https://obijuan.github.io/Web-iceprog/wiki/web-iceprog/webFPGA-tools/index.html
Fuentes: https://github.com/Obijuan/Web-iceprog/tree/main/wiki/web-iceprog/webFPGA-tools
El acceso al FTDI lo estoy implementando a pelo en javascript, usando Webusb
-
Pruebas de acceso a la flash de la Alhambra-II desde el móvil, usando una aplicación web. De momento se puede resetear la FPGA, leer el identificador del chip de la flash, y hacer lecturas de bytes de cualquier dirección
Esta es la webapp de pruebas:
https://obijuan.github.io/Web-iceprog/wiki/web-iceprog/webFPGA-reset/index.htmlEs necesario usar un navegador que soporte webusb como por ejemplo Chrome
-
Probando el Knight-Lore en el Amstrad CPC en la FPGA de la Alhambra-II
Gracias a Jesus Ariashttps://github.com/Obijuan/Cuadernos-tecnicos-FPGAs-libres/wiki/ZX%E2%80%90Spectrum#amstrad-cpc
-
Ordenador Amstrad CPC en la FPGA de la Alhambra-II con la Multimedia Shield. Gracias a Jesús Arias. ¡Impresionante! ¡Y todo con Herramientas LIBRES!
https://github.com/Obijuan/Cuadernos-tecnicos-FPGAs-libres/wiki/ZX%E2%80%90Spectrum#amstrad-cpc
-
* Lámina 49: Divisor del reloj del sistema entre 2
https://github.com/Obijuan/Icestudio-Digital/wiki/sysdiv%E2%80%902* Generacion de una señal periodica de frecuencia Fsys/2
* En el caso de la Alhambra-II la frecuencia de la señal de salida es de 6Mhz
* Se utiliza un contador unario módulo 2
* El ciclo de trabajo es del 50% -
* Lámina 47: Contador unario módulo 3
https://github.com/Obijuan/Icestudio-Digital/wiki/unary%E2%80%90mod3* Contador que cuenta en unario hasta 2 (II), y comienza de nuevo desde 0
* Es el primer circuito que nunca para, realizando periódicamente la cuenta de 0 a 2 (en unario) a la velocidad del reloj del sistema
* Es el primer circuito que nos permite generar señales periódicas. Es gracias a la señal de feedback
* Tiene un diagrama de estados cíclico -
* Lámina 46: Contador unario de 3 marcas con reset
https://github.com/Obijuan/Icestudio-Digital/wiki/unary%E2%80%90iii%E2%80%90rst
* Contador que cuenta en unario hasta 3 (III), a la velocidad del reloj del sistema
* Tiene la capacidad de volver al estado inicial (0, ninguna marca) al apretar el pulsador de reset. Las puertas AND de habilitación son las que permiten que la cuenta "avance" cuando no hay reset, y que vuelva a 0 cuando se apriete el reset (rst=1 --> ena=0)
-
En el "Rural worshop" de "pinos del valley", visitando al Maestro de Maestros Eladio
¡Qué ganas tenía de volver a verte!
-
* Lámina 38: Contador unario de 2 marcas
https://github.com/Obijuan/Icestudio-Digital/wiki/unary%E2%80%90ii* Mediante la conexión serie de dos biestables D del sistema ya tenemos nuestro primer contador primitivo: uno que cuenta ciclos en unario, hasta 2 (II)
* Esta propiedad de contar emerge de la capacidad para mover bits por el circuito, que aparece al conectar biestables
-
* Lámina 29: Biestable D del sistema
-Primer elemento secuencial
https://github.com/Obijuan/Icestudio-Digital/wiki/ax%E2%80%90sysdff
-
* Lámina 014: Elemento primitivo AND
https://github.com/Obijuan/Icestudio-Digital/wiki/014%E2%80%90ax%E2%80%90and
Conceptos nuevos
* Introducción de la puerta lógica AND
* Primer circuito con 2 entradas
* Operación booleana de multiplicación -
* Lámina 010: Elemento primitivo: Puerta NOT
https://github.com/Obijuan/Icestudio-Digital/wiki/010%E2%80%90ax%E2%80%90not
Este es el primer circuito que utiliza una puerta lógica. Hasta ahora, todos los circuitos precedentes lo único que hacían era transportar y generar bits, pero NO manipularlos. La operación más básica de manipulación es la puerta NOT, que invierte un bit
Como es un circuito combinacional, queda totalmente representado por su tabla de verdad
-
* Lámina 009: Etiqueta con dos conexiones
https://github.com/Obijuan/Icestudio-Digital/wiki/009%E2%80%903labels
-
* Lámina 008: Etiqueta con duplicación de bits. Circuitos derivados
https://github.com/Obijuan/Icestudio-Digital/wiki/008%E2%80%90label%E2%80%90dup
Este es el primer circuito derivado, construido a partir de circuitos anteriores aplicando principios mencionados anteriormente
-
* Lámina 007-dup: Principio de duplicación de bits
https://github.com/Obijuan/Icestudio-Digital/wiki/007%E2%80%90Dup
Con este principio podemos extender los circuitos, para añadir más componentes
-
* Lámina 6: Principio de superposición (o paralelismo)
https://github.com/Obijuan/Icestudio-Digital/wiki/006%E2%80%90paralellCon este principio se pueden construir circuitos más complicados a partir de otros más simples, colocándolos en paralelo (y con pines de salida diferentes)
-
* Lámina 003. Circuito param-bitk
Establecer el estado de un LED según una constante
https://github.com/Obijuan/Icestudio-Digital/wiki/003%E2%80%90param%E2%80%90bitk
-
* Lámina 002: Circuito ax-bit0
Elemento primitivo Bit-0
Circuito para apagar un LED indefinidamentehttps://github.com/Obijuan/Icestudio-Digital/wiki/002%E2%80%90ax%E2%80%90bit0
-
* Lámina 001: Circuito ax-bit1
Circuito Hola mundo. Encender un LED indefinidamente
https://github.com/Obijuan/Icestudio-Digital/wiki/001%E2%80%90ax%E2%80%90bit1