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. Fue desarrollado inicialmente en la Universidad de California, Berkeley, y desde entonces ha sido adoptado por la industria y la comunidad académica como una alternativa viable a arquitecturas propietarias como ARM y x86.

Conjunto de instrucciones 32I

El conjunto de instrucciones RISC-V 32I es la versión básica de 32 bits con instrucciones enteras. La letra “I” en su nombre indica que soporta instrucciones enteras de uso general sin extensiones adicionales, lo que lo convierte en un punto de partida ideal para diseños educativos y aplicaciones embebidas de baja complejidad. Este conjunto de instrucciones es el más simple dentro de la familia RISC-V y se compone de instrucciones como:

  • Carga y almacenamiento: LW, SW (Load Word, Store Word)
  • Operaciones aritméticas: ADD, SUB, MUL
  • Saltos y control de flujo: JAL, BEQ, BNE
  • Manipulación de registros: AND, OR, XOR, SLL, SRL

Al ser un conjunto de instrucciones minimalista, 32I es adecuado para implementaciones en FPGA y ASICs de baja potencia, como en el caso del proyecto que se documenta en esta serie.

Partes necesarias para el diseño de un microprocesador RISC-V en FPGA

Para construir un microprocesador funcional basado en RISC-V 32I desde cero, se requieren varios componentes esenciales:

1. Unidad de Procesamiento (CPU)

  • Implementación de la arquitectura RISC-V en Verilog o VHDL.
  • Diseño del camino de datos y la unidad de control.

2. Memoria

  • Memoria RAM para almacenar instrucciones y datos.
  • Opcionalmente, una ROM o flash para el firmware inicial.

3. Interfaz de Entrada/Salida (GPIO)

  • Puertos digitales para comunicación con periféricos como sensores y actuadores.

4. Herramientas de desarrollo

  • Software de síntesis y simulación (Yosys, Icarus Verilog, Vivado, Quartus).
  • Compilador RISC-V GCC para generar código binario.

5. Plataforma FPGA

  • Tang Nano 20K, Tang Nano 9K, o cualquier FPGA compatible.

En los siguientes artículos de esta serie, se abordará cómo implementar cada una de estas partes paso a paso, con ejemplos prácticos y explicaciones detalladas.


Este es el inicio de un desafío técnico emocionante. Con esta serie, documentaré el proceso de diseño e implementación de un microprocesador funcional basado en RISC-V 32I, con el objetivo de expandir sus capacidades mediante la integración de GPIO para control de dispositivos externos. ¡Acompáñame en este viaje de exploración tecnológica!