An Open-Source Soft-Microcontroller Implementation Using an ARM Cortex-M0 on FPGA

Resumo


There is a myriad of projects that could be deployed on FPGA for architectural exploration. However, open-source platforms are scarce, and one with embedded software and operating system support to the application-specific hardware could not be found in the literature. We present an open-source soft-microcontroller architecture based on an ARM Cortex-M0, adaptable to different amounts of cores or new components, supporting an end-to-end deployment from code compilation using arm-gcc to loading the binary into the HDL memory cores. The proposed design is validated through simulation and implementation on a KC705 development kit, demonstrating busy-wait polling, DMA transfer, and deterministic real-time processing through FreeRTOS.
Palavras-chave: soft-microcontroller, soft-microprocessor, soft-core, cortex, field-programmable gate arrays

Referências

ARM (2009). Cortex-M0 Devices Generic User Guide. https://developer.arm.com/documentation/dui0497/latest/. Last accessed on Sep 07, 2020.

ARM (2020). ARM DesignStart Program. https://www.arm.com/resources/designstart. Last accessed on Sep 07, 2020.

Brown, G. and Himebaugh, B. (2016). Computer Structures with the ARM Cortex-M0. https://legacy.cs.indiana.edu/˜geobrown/c335book.pdf. Last accessed on Sep 07, 2020.

Caulfield, A. M., Chung, E. S., Putnam, A., Angepat, H., Fowers, J., Haselman, M., Heil, S., Humphrey, M., Kaur, P., Kim, J.-Y., Lo, D., Massengill, T., Ovtcharov, K., Papamichael, M., Woods, L., Lanka, S., Chiou, D., and Burger, D. (2016). A Cloud-Scale Acceleration Architecture. page 13.

Contardo, D., Klute, M., Mans, J., Silvestris, L., and Butler, J. (2015). Technical Proposal for the Phase-II Upgrade of the CMS Detector. https://cds.cern.ch/record/202088. Last accessed on Mar 01, 2021.

Finotti, V. (2019a). AHB3-Lite DMA core. https://github.com/vfinotti/ahb3lite_dma. Last accessed on Sep 07, 2020.

Finotti, V. (2019b). Blinky C example code for Cortex-M0. https://github.com/vfinotti/cortex-m0-blinky-c. Last accessed on Sep 07, 2020.

Finotti, V. (2019c). Busy-wait polling C example code for Cortex-M0. https://github.com/vfinotti/cortex-m0-busy-wait-c. Last accessed on Sep 07, 2020.

Finotti, V. (2020a). Cortex-M0 implementation on a Kintex-7 FPGA. https://github.com/vfinotti/cortex-m0-soft-microcontroller. Last accessed on Sep 07, 2020.

Finotti, V. (2020b). DMA example code with FreeRTOS for Cortex-M0. https://github.com/vfinotti/cortex-m0-freertos-dma-c. Last accessed on Sep 07, 2020.

Gisselquist Technology, L. (2021). ZipCPU: A small, light weight, RISC CPU soft core. https://github.com/ZipCPU/zipcpu. Last accessed on Jun 03, 2021.

Intel (2020). Nios® II Processors for FPGAs - Intel® FPGA. https://www.intel.com/content/www/br/pt/products/programmable/processor/nios-ii.html. Last accessed on Sep 07, 2020.

Intel (2021). Intel® FPGA Products - FPGA and SoC FPGA Devices and Solutions — Intel. https://www.intel.com.br/content/www/br/pt/products/details/fpga.html. Last accessed on Jun 03, 2021.

Jayakrishnan, V. and Parikh, C. (2019). Embedded Processors on FPGA: Soft vs Hard. page 8.

Martos, P. I. and Baglivo, F. (2011). Implementing the Cortex-M0 DesignStart Processor in a Low-end FPGA. page 4.

Nolting, S. (2020). The neorv32 risc-v processor. https://github.com/stnolting/neorv32. Last accessed on Jun 03, 2021.

OpenCores (2021a). aeMB. https://opencores.org/projects/aemb. Last accessed on Jun 03, 2021.

OpenCores (2021b). Amber ARM-compatible core. https://opencores.org/projects/amber. Last accessed on Jun 03, 2021.

RoaLogic (2020a). AHB-Lite Memory. https://github.com/RoaLogic/ahb3lite_memory. Last accessed on Sep 07, 2020.

RoaLogic (2020b). AHB-Lite Multilayer Switch. https://github.com/RoaLogic/ahb3lite_interconnect. Last accessed on Sep 07, 2020.

Thibedeau, K. (2020). VHDL-extras Library. https://github.com/kevinpt/vhdl-extras. Last accessed on Sep 07, 2020.

Usselmann, R. (2001). WISHBONE DMA/Bridge IP Core. https://opencores.org/projects/wb_dma/. Last accessed on Sep 24, 2020.

Xilinx (2020). MicroBlaze Soft Processor Core. https://www.xilinx.com/products/design-tools/microblaze.html. Last accessed on Sep 27, 2020.

Xilinx (2021). Zynq-7000 SoC. https://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html. Last accessed on Jun 03, 2021.
Publicado
18/07/2021
FINOTTI, Vitor; ALBERTINI, Bruno. An Open-Source Soft-Microcontroller Implementation Using an ARM Cortex-M0 on FPGA. In: WORKSHOP EM DESEMPENHO DE SISTEMAS COMPUTACIONAIS E DE COMUNICAÇÃO (WPERFORMANCE), 20. , 2021, Evento Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 96-107. ISSN 2595-6167. DOI: https://doi.org/10.5753/wperformance.2021.15726.