Descubriendo LiteX: Construyendo SoCs como si fueran LEGO

Si alguna vez has intentado construir un microprocesador desde cero, sabes que es un campo de batalla lleno de hazards, control de memoria y manejo de instrucciones. Un verdadero caos digital. En medio de ese embrollo, me topé con una herramienta que me cambió la forma de ver el desarrollo en FPGA: LiteX. ¿Qué es LiteX? LiteX es un framework para el diseño de SoCs (System on Chip) en FPGA, que transforma el proceso en algo similar a armar bloques de LEGO: eliges un procesador, añades controladores, memorias, periféricos, y ¡listo!...

mayo 20, 2025 · 5 min · Fabian Alvarez

Diseño de un microprocesador RISC-V con integración GPIO

Introducción a RISC-V y el conjunto de instrucciones 32I RISC-V es una arquitectura de conjunto de instrucciones (ISA) abierta y libre que ha ganado gran popularidad en el diseño de microprocesadores debido a su flexibilidad y eficiencia. A diferencia de las arquitecturas propietarias, RISC-V permite a desarrolladores e investigadores crear procesadores personalizados sin restricciones de licenciamiento. ¿Qué es RISC-V? RISC-V es una arquitectura basada en el principio de computación de conjunto de instrucciones reducido (RISC), lo que significa que utiliza un conjunto de instrucciones simplificado para mejorar la eficiencia del hardware....

febrero 18, 2025 · 3 min · Fabian Alvarez

Salida HDMI con LiteX en la Tang Nano 9K

La salida HDMI en plataformas FPGA es una forma poderosa de generar gráficos en tiempo real directamente desde hardware personalizado. En este artículo exploraremos cómo implementar salida HDMI utilizando el framework LiteX en la Tang Nano 9K, una FPGA de bajo costo y sorprendente versatilidad. Ya he escrito una entrada sobre cómo inicializar LiteX y crear un SoC básico en la entrada anterior. 🧱 Arquitectura HDMI en LiteX Por defecto, el archivo tangnano9k....

mayo 25, 2025 · 4 min · Fabian Alvarez

Primeros pasos en el desarrollo del microcontrolador RISC-V

Selección del hardware y herramientas de desarrollo En este segundo artículo de la serie, comenzaré con los primeros pasos en el desarrollo del microcontrolador basado en RISC-V 32I. Para esto, he decidido utilizar una Tang Nano 20K como plataforma de implementación. Sin embargo, dependiendo del uso de recursos, podría evaluar cambiar a una Tang Nano 9K si resulta suficiente para los requerimientos del diseño. Dado que la FPGA seleccionada pertenece a la familia Tang Nano, esto limita el entorno de desarrollo a herramientas compatibles....

febrero 19, 2025 · 2 min · Fabian Alvarez

Linux en LiteX: Construyendo un SoC con Buildroot y Tang Nano 20K

Uno de los objetivos que siempre se tiene al trabajar con sistemas embebidos es correr un sistema operativo (OS), y siempre hay uno por excelencia para este tipo de plataformas —y más importante aún, de software libre— como lo es Linux, además de que existen muchas herramientas que nos ayudan a adaptar el sistema a nuestras necesidades. Limitaciones de la Tang Nano 20K Bueno, la Tang Nano 20K es bastante limitada en conceptos de FPGA, algo entendible al tratarse de una FPGA de bajo costo....

junio 12, 2025 · 5 min · Fabian Alvarez

Implementando un Banco de Registros en un Procesador RISC-V 32I en FPGA

Implementando un Banco de Registros en un Procesador RISC-V 32I en FPGA Este artículo es parte de nuestra serie sobre el diseño e implementación de un procesador RISC-V 32I en la FPGA Tang Nano 20K. Hoy nos sumergimos en un componente fundamental: el banco de registros. Exploraremos qué es, por qué es tan importante en la arquitectura RISC-V y cómo implementarlo de manera eficiente en Verilog. Además, veremos algunas optimizaciones clave para que sea más robusto y compatible con hardware real....

marzo 16, 2025 · 5 min · Fabian Alvarez

Implementando la Unidad de Control en un Procesador RISC-V 32I en FPGA

Implementando la Unidad de Control en un Procesador RISC-V 32I en FPGA Seguimos avanzando en nuestra serie sobre cómo construir un procesador RISC-V 32I utilizando la FPGA Tang Nano 20K. Hoy hablaremos de la Unidad de Control, un componente clave que le da vida a nuestro procesador. Vamos a explicarla de forma sencilla y amigable, y luego implementaremos juntos el código en Verilog, detallando cada parte para que sea fácil de entender....

marzo 16, 2025 · 5 min · Fabian Alvarez

Cómo correr Zephyr en un SoC LiteX en la Tang Nano 20K

Cómo correr Zephyr en un SoC LiteX en la Tang Nano 20K En este post te mostraré cómo ejecutar el sistema operativo Zephyr en un SoC generado con LiteX sobre la FPGA Tang Nano 20K. Este proceso te permitirá experimentar con sistemas embebidos avanzados y aprovechar las capacidades de hardware abierto. Requisitos Tang Nano 20K Entorno de desarrollo LiteX (Python, dependencias, toolchains) Zephyr OS y su toolchain (west, cmake, ninja, etc....

agosto 15, 2025 · 2 min · Fabian Alvarez

Convierte un Joystick PS2 en Gamepad USB con Feather 32u4

En esta guía aprenderás cómo interfazar un joystick PS2 genérico con una Feather 32u4 para que funcione como un gamepad USB en Windows y Steam. Cubriremos el hardware, el cableado, el firmware en Arduino IDE y la configuración en Steam. Motivación Olvidé mi joystick de Xbox 360 en casa, pero tengo un joystick PS2 que compré hace años para un proyecto retro. Con una Feather 32u4 y un poco de código, podemos convertirlo en un gamepad USB compatible con cualquier PC....

junio 1, 2025 · 8 min · Fabian Alvarez