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. En este caso, utilizaré Gowin EDA, el software oficial de Gowin para el diseño y síntesis del hardware. Aunque existen alternativas de código abierto para cargar el bitstream1, como openFPGALoader, inicialmente trabajaré con las herramientas oficiales para garantizar compatibilidad.

Arquitectura del microcontrolador

El procesador implementará el conjunto de instrucciones RISC-V 32I, lo que significa que contará con 32 registros de propósito general2, definidos por la especificación de la arquitectura. Estos registros son fundamentales en cualquier procesador RISC-V 32I, y en este caso, además de los registros básicos, consideraré agregar registros adicionales para la gestión de periféricos, especialmente para la manipulación de GPIO.

Componentes iniciales del diseño:

  • Unidad de Procesamiento (CPU): Implementación en Verilog.
  • Memoria: Se utilizará memoria RAM interna de la FPGA y, de ser necesario, memoria externa.
  • Interfaz GPIO: Se establecerá una comunicación básica con periféricos externos.
  • Herramientas de desarrollo: Uso de Gowin EDA y simuladores como Icarus Verilog.

En los próximos artículos, desarrollaré el diseño del procesador y los módulos de control, además de detallar el flujo de trabajo para programar y probar la FPGA.



  1. Bitstream: Archivo binario que contiene la configuración necesaria para programar una FPGA. ↩︎

  2. Registros de propósito general: Almacenes de datos temporales dentro del procesador que permiten la ejecución de operaciones aritméticas y lógicas. ↩︎