ML-MCU
Code for IoT Journal paper 'ML-MCU: A Framework to Train ML Classifiers on MCU-based IoT Edge Devices'
🖥️ A small, customizable and extensible MCU-class 32-bit RISC-V soft-core CPU and microcontroller-like SoC written in…
The NEORV32 Processor is a customizable microcontroller-like system on chip (SoC) built around the NEORV32 RISC-V CPU that is written in platform-independent VHDL. The processor is intended as auxiliary controller in larger SoC designs or as tiny and customized microcontroller. The project is intended to work out of the box and targets digital design / RISC-V beginners as well as experienced users.
printf("hello world"); - completely open-source and documented| Task | CI Status |
|---|---|
| GitHub pages | |
| Documentation | |
| Processor check | |
| Verilog conversion | |
| RISC-V compliance |
The processor passes the official RISC-V Architectural Certification Tests (ACT). It can successfully run any software including CoreMark and FreeRTOS and can be synthesized for any target technology - tested on AMD, Intel, Lattice, Microchip, Gowin and Cologne Chip FPGAs. The processor has also been taped out several times as an ASIC.
The NEORV32 Processor provides a full-featured microcontroller-like SoC build around the NEORV32 CPU. By using generics the design is highly configurable and allows a flexible customization to tailor the setup according to your needs. Note that all of the following SoC modules are entirely optional.
CPU Core(s)
RV32
I
E
M
A
C
B
U
X
Sdext
Sdtrig
Smcntrpmf
Smpmp
Zaamo
Zalrsc
Zba
Zbb
Zbc
Zbkb
Zbkc
Zbkx
Zbs
Zcb
Zcmop
Zfinx
Zibi
Zicntr
Zicond
Zicsr
Zifencei
Zihpm
Zimop
Zmmul
Zkn
Zknd
Zkne
Zknh
Zkt
Zks
Zksed
Zksh
Xcfumachine and optional user privilege modesXcfu ISA extension)
for custom RISC-V instructionsMemories
Timers and Counters
Input / Output
SoC Connectivity
Advanced
Debugging
The NEORV32 processor is optimized for minimal size. However, the actual size (silicon area or FPGA resources)
depends on the specific configuration. For example, an RTOS-capable setup based on a rv32imc_Zicsr_Zicntr CPU
configuration requires about 2300 LUTs and 1000 FFs and can run at up to 130 MHz (implementation results for an
Altera Cyclone IV E EP4CE22F17C6 FPGA). This configuration provides a CoreMark score of 95 (0.95 CoreMarks/MHz).
The corresponding dual-core version achieves a CoreMark score of 190 (1.9 CoreMarks/MHz).
More information regarding the CPU performance can be found in the Data Sheet: Performance.
This overview provides some quick links to the most important sections of the online Data Sheet and the online User Guide.
This is an open-source project that is free of charge and provided under an permissive license. See the legal section for more information.
Contributions are very welcome! If you’d like to improve something, fix a bug, or add a feature, feel free to open an issue or submit a pull request. See how to contribute. A big thank you goes out to the community and all contributors who help improve this project:
more like this
Code for IoT Journal paper 'ML-MCU: A Framework to Train ML Classifiers on MCU-based IoT Edge Devices'
search projects, people, and tags