Evaluación de SoftCore PicoRV32 en TinyFPGABX (2019)
"En este documento se evalúa al procesador PicoRV32 por medio del SoC PicoSoC en la TinyFPGA BX. Para esto, se prueba la tarjeta TinyFPGA BX utilizando un ejemplo de Blink Led en Verilog para familiarizarse con esta. Luego, se prueba el SoC PicoSoC con un proyecto de Blink Led utilizando el procesador PicoRV32. A partir de este proyecto se realizan desarrollos personalizados en los que se incluyen funcionalidades tales como punto flotante, negativos, etc. Paralelamente se realiza una implementación de un proyecto de robótica en Arduino. Este proyecto utiliza odometría, así como funciones exponenciales y similares para guiar un robot desde un punto inicial hasta un punto final. Se escogió al Arduino como comparación al tener una manera similar de programación en C, así como múltiples funciones nativas y un procesador de igual velocidad al de la TinyFPGA. Se desarrollaron módulos en Verilog personalizados de Clock, PWM y lectura de Encoders para poder utilizar el paralelismo y velocidad de Verilog como soporte al algoritmo implementado. Se desarrollaron métricas personalizadas para comparar los 2 procesadores, estas métricas incluyen los siguientes puntos a evaluar: Tiempo de acceso a memoria, Tiempo de ciclo del algoritmo, potencia consumida, error final de llegada, tiempo final de llegada y memoria utilizada. En cuanto al algoritmo, se realizaron 3 caminos diferentes para probar: punto delante, punto detrás y zig-zag. En el Arduino se tomaron datos de todas estas métricas. En la TinyFPGA se tomaron datos de todas las métricas excepto error final de llegada y tiempo final de llegada, debido a que el algoritmo nunca lograba converger. En todos los casos excepto consumo de potencia, el Arduino logró obtener mejores resultados que en la TinyFPGA, pero se es necesario realizar una implementación ASIC para obtener una mejor comparación en otras tecnologías posiblemente con resultados diferentes."--Tomado del Formato de Documento de Grado.