Migraci on de procesador f32c a placa DE0

12
Migraci´ on de procesador f32c a placa DE0 Dise˜ noL´ogico2 Santiago Bernheim Tutor: Leonardo Etcheverry Instituto de Ingenier´ ıa El´ ectrica Universidad de la Rep´ ublica Montevideo, Uruguay Julio, 2020

Transcript of Migraci on de procesador f32c a placa DE0

Page 1: Migraci on de procesador f32c a placa DE0

Migracion de procesadorf32c a placa DE0

Diseno Logico 2

Santiago Bernheim

Tutor: Leonardo Etcheverry

Instituto de Ingenierıa ElectricaUniversidad de la Republica

Montevideo, UruguayJulio, 2020

Page 2: Migraci on de procesador f32c a placa DE0

Tabla de Contenido:

1 Resumen 2

2 Introduccion 3

2.1 Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Candidato como sustituto del z80 . . . . . . . . . . . . . . . . . . 3

2.3 FPGArduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.4 Objetivos del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Estudio del Sistema y Migracion 5

3.1 Estudio del sistema preexistente . . . . . . . . . . . . . . . . . . 5

3.1.1 Sistema Mınimo . . . . . . . . . . . . . . . . . . . . . . . 5

3.1.2 Bus de Datos . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.3 Carga del Codigo Ejecutable . . . . . . . . . . . . . . . . 7

3.2 Migracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Validacion del Sistema 8

4.1 Procedimiento y Sistema de prueba . . . . . . . . . . . . . . . . . 8

4.1.1 Asignacion de Pines . . . . . . . . . . . . . . . . . . . . . 8

4.2 Software Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 Conclusiones 10

Referencias 11

1

Page 3: Migraci on de procesador f32c a placa DE0

1 Resumen

Desde hace varios anos en el Instituto de Ingenierıa Electrica se utiliza elprocesador z80 para dictar la materia Introduccion a los Microprocesadores.Este proyecto busca ser el primer paso en el cambio de ese procesador para unaarquitectura mas moderna como es la basada en la arquitectura de conjunto deInstrucciones RISC-V.

Para dar el primer paso en migrar el curso antes mencionado se decidioexperimentar con un proyecto de hardware y codigo libre llamado FPGArduino[2]. Este proyecto busca abrir camino para el uso de Arduino en diferentesplacas de FPGA mediante la conjuncion de disenos en VHDL del procesadorf32c, para diferentes proveedores de placas como Altera, Lattice y Xilinx, asıcomo las herramientas necesarias para poder programar dicho procesador conel IDE de Arduino.

El f32c[3] es un nucleo de procesador de 32 bits escalar que puede ejecu-tar subconjuntos de conjuntos de instrucciones RISC-V o MIPS. El diseno enVHDL es parametrizado permitiendo la sıntesis con diferentes compensacionesde area/velocidad e incluye un predictor de rama, un bloque de control demanejo de excepciones y caches de mapeo directo opcionales entre otros. Elcodigo RTL tambien incluye modulos SoC como controladores SDRAM y SRAMpara tener un sistema mınimo funcional en poco tiempo.

El objetivo principal de este proyecto es la migracion del procesador f32cpara poder ser utilizada en la Placa DE0 que es la placa utilizada en la materiaIntroduccion a los Microprocesadores del departamento de Electronica aplicadaen el IIE.

Se partio de un sistema funcional para la placa DE0-nano y se trabajo demanera progresiva hasta lograra el funcionamiento completo en la DE0 de Tera-sic. En el camino se estudio detenidamente la implementacion preexistente parapoder evaluar y considerar si la migracion a este nuevo sistema serıa convenientey de interes para el departamento o bien se deberıa buscar otra alternativa.

Ademas se creo un simple periferico de registro para poner a prueba losconocimientos adquiridos sobre el funcionamiento del bus de datos del proce-sador f32c y poder validar que el conocimiento adquirido fuera correcto.

Por ultimo se valido el correcto funcionamiento del sistema de manera com-parativa corriendo diferentes programas tanto en la placa DE0-nano como laDE0 para ambas arquitecturas(RISC-V y MIPS). En dicha validacion se con-stato que la migracion fue realizada con exito teniendo el procesador funcionaly capaz de ser programado.

2

Page 4: Migraci on de procesador f32c a placa DE0

2 Introduccion

2.1 Motivacion

El curso de Introduccion a los microprocesadores utiliza el procesador z80para impartir el curso, teniendolo como piedra fundamental para ensenar con-ceptos de diseno, programacion e implementacion de Hardware. Siendo el z80 unprocesador complejo pero no lo suficiente como para abrumar a los estudiantesque ven por primera vez este tipo de arquitectura, pero que a su vez permite unabanico amplio de conceptos como puede ser el manejo de registros, tiempos defuncionamiento y manejo de interrupciones entre otras. Mas alla de todas lasbondades antes mencionadas el diseno del z80 data de 1976 y es de interes parael departamento acercarse a un microprocesador mas actual y vigente.

Las opciones posibles de candidatos a considerar como sustituto del z80deben cumplir:

• Buena documentacion de facil acceso.

• No depender de Licencia para su uso.

• Versatilidad y simplicidad en equilibrio para facilitar el aprendizaje a losestudiantes

Dentro de estos requerimientos parece la opcion a elegir un procesador quecumpla con el conjunto de instrucciones gratuito y de uso libre RISC-V. RISC-Ves una arquitectura de conjunto de instrucciones (ISA) de hardware libre basadoen un diseno de tipo RISC (conjunto de instrucciones reducido). A diferenciade la mayorıa de los conjuntos de instrucciones, el de RISC-V es gratuito yabierto y se puede usar sin royalties para cualquier proposito, lo que permiteque cualquiera disene, fabrique y venda chips y software de RISC-V. Dentro delbasto mundo de los procesadores RISC-V en este proyecto se decidio probar elprocesador f32c.

2.2 Candidato como sustituto del z80

El f32c[3] es un nucleo de procesador de 32 bits modular que puede eje-cutar subconjuntos de conjuntos de instrucciones RISC-V o MIPS. El disenoen VHDL es parametrizado permitiendo la sıntesis con diferentes compensa-ciones de area/velocidad e incluye un predictor de rama, un bloque de controlde manejo de excepciones y caches de mapeo directo opcionales entre otros. Elcodigo RTL tambien incluye modulos SoC como controladores SDRAM y SRAMpara tener un sistema mınimo funcional en poco tiempo. El f32c es el corazon

3

Page 5: Migraci on de procesador f32c a placa DE0

del proyecto FPGArduino ya que es el que se basa el funcionamiento de todoslos sistemas del proyecto.

2.3 FPGArduino

El proyecto FPGArduino proporciona herramientas de software precompi-lado y flujos de bits de configuracion FPGA que transforman las placas dedesarrollo FPGA populares en sistemas de microcontroladores programablesutilizando el entorno de desarrollo intuitivo Arduino. La idea del proyecto esincentivar el uso de FPGAs para gente mas acostumbrada al mundo de diseno desoftware, intentando traerlos mas al diseno de Hardware mediante un proyectobien organizado, documentado y con una comunidad activa de ayuda y apoyo.

2.4 Objetivos del Proyecto

El objetivo principal de este proyecto es migrar el procesador f32c con losperifericos incluidos en el ejemplo para la placa DE0 que utiliza BRAM. Ademasse plantea la creacion de un periferico que permita validar el estudio del bus dedatos del sistema, pero este objetivo es secundario ya que el enfoque es tener elprocesador funcionando como se describio anteriormente.

Por otro lado se busca tambien contribuir al proyecto FPGArduino, ya queel mismo brinda todas las herramientas en las que se basa este proyecto de fin decurso. Entonces lo que se intentara es proponer a los propietarios del proyectola solucion conseguida como producto.

4

Page 6: Migraci on de procesador f32c a placa DE0

3 Estudio del Sistema y Migracion

3.1 Estudio del sistema preexistente

Antes de comenzar la etapa de migracion se realizo un estudio del sistemapara prevenir posibles problemas a la hora de trasladar el proyecto de una placaa otra. El archivo top de proyecto Quartus para la placa DE0-nano que se puedeapreciar en la Figura 1 contiene un bloque PLL que permite ajustar el reloj deentrada al diseno principal llamado glue bram, donde como su nombre lo indicase pegan todos los perifericos con el f32c generando un SoC (Por sus siglas eningle Sistem on a Chip) funcional mınimo.

Figura 1: Diseno Top del Proyecto Principal

3.1.1 Sistema Mınimo

Luego en glue bram encontramos al f32c con los perifericos necesarios parasu funcionamiento, como se puede ver diagramado en la Figura 2:

• Timer

• Entradas y Salidas de uso general (GPIOs)

• Interfaz de comunicacion Serial

5

Page 7: Migraci on de procesador f32c a placa DE0

Figura 2: Sistema Mınimo para el f32c

3.1.2 Bus de Datos

Todos los elementos estan interconectados por un bus de dato tipo AXI, queforma parte de las especificaciones AMBA de ARM [5]. El mismo se componede un bus de entrada y un bus de salida de datos, dos buses de direcciones unopara decodificar entradas y otro salidas y por ultimo dos senales de control porbus: ”strobe” y ”ready”.

El procesador habilita a los perifericos para hablar sobre el bus mediante elbus de direcciones y una senal en alto en el pin de ”strobe”. Luego cuando eldispositivo tiene informacion para escribir pondra la informacion sobre el busde datos y pondra en alto la senal ”ready” por un perıodo de reloj en el cual elprocesador debera hacerse del dato disponible en el bus. La descripcion antesmencionada se encuentra diagramada en la Figura 3

6

Page 8: Migraci on de procesador f32c a placa DE0

Figura 3: Handshake Bud de Datos AXI

3.1.3 Carga del Codigo Ejecutable

Para cargar los codigos al procesador el sistema contiene un bootloader quese encarga de tomar el binario que se desea ejecutar y colocarlo a partir de ladireccion 0x400.

El bootloader puede ser configurado pero el que viene integrado en el sistemacontiene una ”prueba de vida” que consiste encender y apagar cıclicamente losleds. Ademas el bootloader contiene un parser de codificacion tipo SREC [1].El cargado del ejecutable se realiza atreves de la interfaz serial y esa es la razonprincipal de porque debe ser parte del sistema mınimo descrito en la Seccion3.1.1.

3.2 Migracion

Una vez estudiado el sistema completo y el rol de cada elemento en elproyecto se procedio a migrar todas las funcionalidades. El procedimiento seseparo en dos etapas por un lado se exporto el proyecto original que funcionapara Quartus II 19 y se lo porto a Quartus II 9.0 ya que es uno de las ultimasversiones que soporta al Cyclone III chip de la DE0.

Luego se buscaron y reemplazaron los modulos de Altera dependientes dela version, en particular el que debio ser generado nuevamente fue el PLL yaque la version original utiliza una version que no es soportada por las versionesantiguas de Quartus.

Por otra parte desde el lado del Arduino IDE no se debieron realizar cambiosya que la configuracion preexistente para el DE0-nano es compatible ya que lounico que realiza es enviar el ejecutable por la interfaz Serial.

7

Page 9: Migraci on de procesador f32c a placa DE0

4 Validacion del Sistema

4.1 Procedimiento y Sistema de prueba

Para validar el traspaso del sistema de una placa a otra se realizaron difer-entes pruebas por un lado de carga de programas al procesador y por otropruebas de uso de perifericos como son el manejo de I/O, Timer y comunicacionSerial.

El procedimiento para cada prueba fue cargar el sistema f32c tanto config-urado como RISC-V y MIPS en ambas placas desde el Quartus. Para todaslas pruebas se programo al sistema desde el IDE de Arduino para mantener elfuncionamiento original del sistema y no alterar el funcionamiento esperado.

Para cargar el programa se debio conectar un conversor usb-rs232 o similar.En el caso de las pruebas se utilizo la placa YP-05 que es un Breakoutboard delftdi FT232RL ya que era la que se tenıa disponible al momento de comenzarcon el proyecto. En la figura 4 se muestra la configuracion basica del sistemade prueba, donde la placa a la izquierda es la DE en el centro se ve el conversorUSB-RS232 con un Breadboard para facilitar su conexion y a la derecha seencuentra la DE0-nano.

Figura 4: Sistema de prueba

4.1.1 Asignacion de Pines

En la Figura 5 se encuentra la configuracion utilizada para todas las pruebas

8

Page 10: Migraci on de procesador f32c a placa DE0

(a) DE0 (b) DE0-nano

Figura 5: Asignacion de Pines

4.2 Software Utilizado

Para cargar el sistema sintetizado en VHDL se utilizo Quartus II en susversiones 19 y 9 para la DE0-nano y la DE0 respectivamente. Luego el cargadodel programa se realizo usando Arduino IDE .

Es importante destacar que el proyecto de FPGArduino no tiene implemen-tadas las interrupciones para el RISC-V y por esto la comunicacion serial, entreotras funcionalidades, programada desde Arduino no funciona correctamente yaque esa librerıa se basa fuertemente en el uso de interrupciones.

4.3 Resultados

En todas las pruebas realizadas se constato que ambos sistemas tanto en laplaca DE0 como la DE0-nano se comportaban de manera identica para todoslos ejecutables cargados a ellas.

Se percataron algunos problemas en las pruebas de tiempos pero se debıana un error en la instanciacion del modulo pll que estaba imponiendole unafrecuencia menor al procesador que se corrigio y luego se volvio a probar dandolos resultado esperados.

Por esto las pruebas indicaron que el sistema mınimo fue portado de maneraexitosa a la DE0.

9

Page 11: Migraci on de procesador f32c a placa DE0

5 Conclusiones

La conclusion primordial del proyecto es que es posible implementar el SoCbasado en el procesador f32c del proyecto FPGArduino en la placa de TerasicDE0 utilizada por el Departamento de Electronica aplicada.

Ademas se logra un buen acercamiento al proyecto FPGArduino recaudandosuficiente informacion para realizar una decision informada en cuanto al uso delprocesador en la Materia ”Introduccion a los Microprocesadores”.

Ya teniendo identificado el toolchain necesario para utilizar el diseno dehardware y la estructuracion del proyecto quedan diferentes caminos claro pordonde seguir trabajando este proyecto.

Por un lado solucionar la comunicacion para programar el dispositivo por elmismo cable USB donde se programa el fpga, permitiendo entonces al usuariosolo depender de la placa DE0 para poder programar el procesador, indepen-dizandose del comunicador Serial, y permitir ası su uso en el curso de intro-duccion a los microprocesadores.

Por otro lado se debe trabajar en una implementacion de sistema de cargay debuggeo amigable para el estudiante similar a la utilizada en la actualidadpara programar el z80.

Por ultimo por los resultados expuesto se considera que el procesador f32ces un buen candidato para suplementar al z80 y funciona correctamente en laplaca DE0 de Terasic.

10

Page 12: Migraci on de procesador f32c a placa DE0

Referencias

[1] Davor Jadrijevic, Marko Zec. FPGArduino: a cross-platform RISC-V IDEfor masses. 4th RISC-V workshop, Julio 2016.

[2] Davor Jadrijevic, Marko Zec. FPGArduino binary., Julio 2020.

[3] Davor Jadrijevic, Marko Zec. A 32-bit RISC-V / MIPS ISA retargetableCPU core & SoC, 1.63 DMIPS/MHz, Julio 2020.

[4] RISC-V: The Free and Open RISC Instruction Set Architecture

[5] AMBA Overview, ARM

11