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 . . . . . . . . . . . . . . . . . . . . . . . ....
Guardado en:
| Autor principal: | |
|---|---|
| Otros Autores: | |
| 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: |
| 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 |
|---|