ElemRV-N
Overview
ElemRV-N is an end-to-end open-source RISC-V microcontroller designed using SpinalHDL.
Version 0.2 of ElemRV-N was successfully fabricated using IHP’s Open PDK, a 130nm open semiconductor process, with support from FMD-QNC.
For more details, refer to the official GitHub Project.
Note
The currently supported silicon version is ElemRV-N 0.2.
Supported Features
The elemrv
board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo
-
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
Type |
Location |
Description |
Compatible |
---|---|---|---|
CPU |
on-chip |
VexRiscv core with the standard configuration as used by LiteX1 |
|
Interrupt controller |
on-chip |
RISC-V CPU interrupt controller1 |
|
MTD |
on-board |
Flash node1 |
|
Serial controller |
on-chip |
Aesc Silicon UART1 |
|
SRAM |
on-board |
Generic on-chip SRAM2 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
System Clock
The system clock for the RISC-V core is set to 20 MHz. This value is specified in the cpu0
devicetree node using the clock-frequency
property.
CPU
ElemRV-N integrates a VexRiscv RISC-V core featuring a 5-stage pipeline and the following ISA extensions:
M (Integer Multiply/Divide)
C (Compressed Instructions)
It also includes the following general-purpose Z
extensions:
Zicntr – Base Counter and Timer extensions
Zicsr – Control and Status Register operations
Zifencei – Instruction-fetch fence
The complete ISA string for this CPU is: RV32IMC_Zicntr_Zicsr_Zifencei
Hart-Level Interrupt Controller (HLIC)
Each CPU core is equipped with a Hart-Level Interrupt Controller, configurable through Control and Status Registers (CSRs).
Machine Timer
A RISC-V compliant machine timer is enabled by default.
Serial
The UART (Universal Asynchronous Receiver-Transmitter) interface is a configurable serial communication peripheral used for transmitting and receiving data.
By default, uart0
operates at a baud rate of 115200
, which can be adjusted via the elemrv device tree.
To evaluate the UART interface, build and run the following sample:
# From the root of the zephyr repository
west build -b elemrv/elemrv_n samples/hello_world