🛠 Puesta en marcha de Sapphire RV64 en FPGA Efinix
Objetivos
Este tutorial tiene como objetivo inicializar el SoC soft-core Sapphire RV64 en un FPGA Efinix (series Titanium, Topaz o Trion T20+). Aprenderá a configurar el núcleo VexiiRiscv, generar el bitstream mediante Efinity y validar el funcionamiento a través de la interfaz UART.
Hardware necesario
- Placa FPGA Efinix (Titanium, Topaz o Trion T20 o superior).
- Software Efinity versión 2026.1 o más reciente.
- Cable USB para programación y alimentación.
- Terminal serie (PuTTY, Minicom o equivalente).
Pasos
- Configuración del proyecto: Inicie Efinity y cree un nuevo proyecto. Seleccione el componente FPGA objetivo que coincida con su placa. Asegúrese de que la versión de Efinity sea >= 2026.1.
- Integración del núcleo: Añada la IP Sapphire RV64 a su proyecto. En la configuración, seleccione el núcleo VexiiRiscv. Para esta primera prueba, configure 1 núcleo a 400 MHz con las extensiones RV64IMACFD activadas. Active 512 KB de RAM en chip para el almacenamiento del firmware.
- Periféricos: Configure al menos una interfaz UART (115200 baudios) y una interfaz JTAG para depuración. Si su placa tiene DDR3 o LPDDR4x, puede activarla, pero la RAM interna es suficiente para la prueba inicial.
- Síntesis e implementación: Genere el bitstream. Supervise los informes de temporización para verificar que el pipeline de 7 etapas alcanza la frecuencia de 400 MHz sin violaciones.
- Programación: Cargue el bitstream en el FPGA mediante el cable USB.
- Conexión serie: Abra un terminal serie en el puerto COM asociado a la UART configurada. Reinicie la placa para iniciar el proceso de arranque.
Verificación
Debe ver el mensaje de bienvenida del bootloader en el terminal serie. Utilice los puntos de interrupción de hardware (hasta 4 disponibles) a través de la interfaz JTAG para suspender la ejecución e inspeccionar los registros del núcleo RISC-V, confirmando así que el pipeline funciona correctamente.
Otros tutoriales para esta placa
- Puesta en marcha de la placa Sapphire RV64
- Controlar GPIOs en Sapphire RV64
- Automatización simple con UART en Sapphire RV64
- Configuración de GPIO y control de periféricos en Sapphire RV64
- Despliegue de un nodo IoT con Sapphire RV64: Red y Almacenamiento
- Puesta en marcha del SoC Sapphire RV64 en FPGA Efinix
Ejemplos de código para esta placa
gpio_blink_riscv.inoC (RISC-V)uart_echo_riscv.inoC (RISC-V)spi_sensor_read.inoC (RISC-V)i2c_master_write.inoC (RISC-V)timer_interrupt_handler.inoC (RISC-V)i2c-bmp280-temperature-6.inoC