Evaluación de soft-cores RISC-V en FPGAs con fines didácticos

Índice general Resumen III 1. Introducción General 1 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . ....

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Benzal, Diego Gastón
Otros Autores: Majorel Padilla, Nicolás
Formato: Tesis
Lenguaje:Español
Publicado: Universidad Nacional de Tucumán , Facultad de Ciencias Exactas y Tecnología, Departamento de Ingeniería Electrónica 2025
Materias:
Acceso en línea:https://ridunt.unt.edu.ar/handle/123456789/1586
Aporte de:
Descripción
Sumario:Índice general Resumen III 1. Introducción General 1 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Marco teórico 3 2.1. RISC-V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1. ISA RISC-V - ¿Qué significa que sea libre? . . . . . . . . . . . . . . . 3 2.1.2. Comparaciones con otros ISAs . . . . . . . . . . . . . . . . . . . . . . 4 2.1.3. Extensiones del ISA RISC-V . . . . . . . . . . . . . . . . . . . . . . . 5 Conjunto base RV32I . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Extensión M (Multiplicación y División) . . . . . . . . . . . . . . . . . 5 Extensión A (Operaciones Atómicas) . . . . . . . . . . . . . . . . . . 5 Extensión C (Instrucciones Comprimidas) . . . . . . . . . . . . . . . . 5 Extensión F (Punto Flotante de Precisión Simple) . . . . . . . . . . . 6 Extensión D (Punto Flotante de Doble Precisión) . . . . . . . . . . . . 6 Nomenclatura de las extensiones . . . . . . . . . . . . . . . . . . . . . 6 2.2. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1. Estructura interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2. Elección de placas de desarrollo para el trabajo . . . . . . . . . . . . . 8 2.2.3. EDU-CIAA-FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.4. Terasic DE10-Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.5. Digilent Arty Z7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.6. TUL PYNQ Z2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.7. Resumen comparativo de las placas elegidas . . . . . . . . . . . . . . . 16 2.3. Soft-cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1. Qué es un soft-core . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.2. FemtoRV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.3. NEORV32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.4. Rocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4. Lenguajes de descripción de hardware . . . . . . . . . . . . . . . . . . . . . . 20 2.4.1. Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4.2. VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.3. Chisel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5. Toolchains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5.1. Toolchain RISC-V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5.2. Toolchains en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5.3. Alternativas para cargar programa a un soft-core . . . . . . . . . . . . 29 Carga desde memoria ROM . . . . . . . . . . . . . . . . . . . . . . . 29 Carga por interfaz serial . . . . . . . . . . . . . . . . . . . . . . . . . 31 VIII Carga desde memoria flash SPI . . . . . . . . . . . . . . . . . . . . . 31 Carga por red (Ethernet) . . . . . . . . . . . . . . . . . . . . . . . . . 31 Carga desde tarjeta SD o dispositivos de almacenamiento masivo . . . 32 2.6. LiteX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3. Diseño e Implementación 35 3.1. Flujo general de adaptación de un soft-core . . . . . . . . . . . . . . . . . . . 35 3.2. Pre-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3. Utilización de LiteX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.1. Utilización de LiteX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.2. Generación de un SoC con un soft-core RISC-V . . . . . . . . . . . . . 37 3.3.3. Configuración de UART para comunicación por terminal serie . . . . . 39 3.3.4. Generación de un SoC con código cargado en ROM . . . . . . . . . . 40 Procedimiento detallado . . . . . . . . . . . . . . . . . . . . . . . . . 40 Consideraciones importantes sobre la memoria . . . . . . . . . . . . . 41 Estructura de archivos del proyecto . . . . . . . . . . . . . . . . . . . 42 3.4. Adaptación de soft-core en EDU-FPGA . . . . . . . . . . . . . . . . . . . . . 42 3.4.1. Adaptación de FemtoSoC para EDU-FPGA . . . . . . . . . . . . . . . 42 3.4.2. Consideraciones sobre la memoria flash en EDU-FPGA . . . . . . . . . 45 3.4.3. Carga de programas en flash de FemtoSOC en EDU-FPGA . . . . . . 46 3.5. Uso de Linux en un soft-core . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.5.1. Requisitos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.5.2. Generación de imagen de boot . . . . . . . . . . . . . . . . . . . . . . 48 3.5.3. Inconvenientes en Arty Z7 . . . . . . . . . . . . . . . . . . . . . . . . 48 3.5.4. Inconvenientes en PYNQ Z2 y Zynq 7000 . . . . . . . . . . . . . . . . 49 3.5.5. Inconvenientes en DE10-Lite . . . . . . . . . . . . . . . . . . . . . . . 49 4. Ensayos y Resultados 51 4.1. Medición de performance de los soft-cores . . . . . . . . . . . . . . . . . . . . 51 4.1.1. Alternativas para medir la performance de un núcleo . . . . . . . . . . 51 4.1.2. CoreMark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.1.3. Adaptación de CoreMark a una plataforma específica . . . . . . . . . . 52 4.1.4. Resultados de CoreMark para cada combinación núcleo-placa FPGA . . 58 4.2. Resultados de síntesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5. Conclusiones 63 5.1. Conclusiones generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.2. Próximos pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Bibliografía 65