OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [README.md] - Blame information for rev 64

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 59 zero_gravi
[![GitHub Pages](https://img.shields.io/website.svg?label=stnolting.github.io%2Fneorv32&longCache=true&style=flat-square&url=http%3A%2F%2Fstnolting.github.io%2Fneorv32%2Findex.html&logo=GitHub)](https://stnolting.github.io/neorv32)
2 61 zero_gravi
[![Documentation](https://img.shields.io/github/workflow/status/stnolting/neorv32/Documentation/master?longCache=true&style=flat-square&label=Documentation&logo=Github%20Actions&logoColor=fff)](https://github.com/stnolting/neorv32/actions?query=workflow%3ADocumentation)
3 62 zero_gravi
\
4 61 zero_gravi
[![riscv-arch-test](https://img.shields.io/github/workflow/status/stnolting/neorv32/riscv-arch-test/master?longCache=true&style=flat-square&label=riscv-arch-test&logo=Github%20Actions&logoColor=fff)](https://github.com/stnolting/neorv32/actions?query=workflow%3Ariscv-arch-test)
5 59 zero_gravi
[![Processor](https://img.shields.io/github/workflow/status/stnolting/neorv32/Processor/master?longCache=true&style=flat-square&label=Processor&logo=Github%20Actions&logoColor=fff)](https://github.com/stnolting/neorv32/actions?query=workflow%3AProcessor)
6
[![Implementation](https://img.shields.io/github/workflow/status/stnolting/neorv32/Implementation/master?longCache=true&style=flat-square&label=Implementation&logo=Github%20Actions&logoColor=fff)](https://github.com/stnolting/neorv32/actions?query=workflow%3AImplementation)
7 61 zero_gravi
[![Windows](https://img.shields.io/github/workflow/status/stnolting/neorv32/Windows/master?longCache=true&style=flat-square&label=Windows&logo=Github%20Actions&logoColor=fff)](https://github.com/stnolting/neorv32/actions?query=workflow%3AWindows)
8 59 zero_gravi
 
9 50 zero_gravi
[![NEORV32](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_logo_dark.png)](https://github.com/stnolting/neorv32)
10 2 zero_gravi
 
11 37 zero_gravi
# The NEORV32 RISC-V Processor
12
 
13 59 zero_gravi
[![license](https://img.shields.io/github/license/stnolting/neorv32?longCache=true&style=flat-square)](https://github.com/stnolting/neorv32/blob/master/LICENSE)
14
[![release](https://img.shields.io/github/v/release/stnolting/neorv32?longCache=true&style=flat-square&logo=GitHub)](https://github.com/stnolting/neorv32/releases)
15 62 zero_gravi
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5121427.svg)](https://doi.org/10.5281/zenodo.5121427)
16
 
17 59 zero_gravi
[![datasheet (pdf)](https://img.shields.io/badge/data%20sheet-PDF-ffbd00?longCache=true&style=flat-square&logo=asciidoctor)](https://github.com/stnolting/neorv32/releases/tag/nightly)
18 60 zero_gravi
[![datasheet (html)](https://img.shields.io/badge/-HTML-ffbd00?longCache=true&style=flat-square)](https://stnolting.github.io/neorv32)
19
[![userguide (pdf)](https://img.shields.io/badge/user%20guide-PDF-ffbd00?longCache=true&style=flat-square&logo=asciidoctor)](https://github.com/stnolting/neorv32/releases/tag/nightly)
20
[![userguide (html)](https://img.shields.io/badge/-HTML-ffbd00?longCache=true&style=flat-square)](https://stnolting.github.io/neorv32/ug)
21 59 zero_gravi
[![doxygen](https://img.shields.io/badge/doxygen-HTML-ffbd00?longCache=true&style=flat-square&logo=Doxygen)](https://stnolting.github.io/neorv32/sw/files.html)
22 2 zero_gravi
 
23 64 zero_gravi
1. [Overview](#1-Overview)
24
   1. [Key Features](#Project-Key-Features)
25
2. [Processor/SoC Features](#2-NEORV32-Processor-Features)
26
   1. [FPGA Implementation Results](#FPGA-Implementation-Results---Processor)
27
3. [CPU Features](#3-NEORV32-CPU-Features)
28
   1. [Available ISA Extensions](#Available-ISA-Extensions)
29
   2. [FPGA Implementation Results](#FPGA-Implementation-Results---CPU)
30
   3. [Performance](#Performance)
31
4. [Software Framework & Tooling](#4-Software-Framework-and-Tooling)
32
5. [**Getting Started**](#5-Getting-Started) :rocket:
33 2 zero_gravi
 
34
 
35 60 zero_gravi
 
36 64 zero_gravi
## 1. Overview
37 2 zero_gravi
 
38 54 zero_gravi
![neorv32 Overview](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_processor.png)
39
 
40 59 zero_gravi
The NEORV32 Processor is a customizable microcontroller-like system on chip (SoC) that is based on the RISC-V NEORV32 CPU.
41
The project is intended as auxiliary processor in larger SoC designs or as *ready-to-go* stand-alone
42
custom / customizable microcontroller.
43 2 zero_gravi
 
44 61 zero_gravi
:information_source: Want to know more? Check out the [project's rationale](https://stnolting.github.io/neorv32/#_rationale).
45
 
46 60 zero_gravi
:books: For detailed information take a look at the [NEORV32 documentation (online at GitHub-pages)](https://stnolting.github.io/neorv32/).
47 59 zero_gravi
The *doxygen*-based documentation of the *software framework* is also available online
48
at [GitHub-pages](https://stnolting.github.io/neorv32/sw/files.html).
49 45 zero_gravi
 
50 59 zero_gravi
:label: The project's change log is available in [`CHANGELOG.md`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
51
To see the changes between *official* releases visit the project's [release page](https://github.com/stnolting/neorv32/releases).
52 11 zero_gravi
 
53 61 zero_gravi
:package: The [`setups`](https://github.com/stnolting/neorv32/tree/master/setups) folder provides exemplary setups targeting
54 63 zero_gravi
various FPGA boards and toolchains to get you started. Several example programs to be run on your setup can be found in
55
[`sw/example`](https://github.com/stnolting/neorv32/tree/master/sw/example).
56 56 zero_gravi
 
57 52 zero_gravi
:spiral_notepad: Check out the [project boards](https://github.com/stnolting/neorv32/projects) for a list of current **ideas**,
58
**TODOs**, features being **planned** and **work-in-progress**.
59 40 zero_gravi
 
60 59 zero_gravi
:bulb: Feel free to open a [new issue](https://github.com/stnolting/neorv32/issues) or start a
61 62 zero_gravi
[new discussion](https://github.com/stnolting/neorv32/discussions) if you have questions, comments, ideas or if something is
62
not working as expected.
63 59 zero_gravi
Check out how to contribute in [`CONTRIBUTE.md`](https://github.com/stnolting/neorv32/blob/master/CONTRIBUTING.md).
64 47 zero_gravi
 
65 60 zero_gravi
:rocket: Check out the [quick links below](#Getting-Started) or directly jump to the
66
[*User Guide*](https://stnolting.github.io/neorv32/ug/) to get started
67 59 zero_gravi
setting up your NEORV32 setup!
68 51 zero_gravi
 
69 2 zero_gravi
 
70 59 zero_gravi
### Project Key Features
71 15 zero_gravi
 
72 64 zero_gravi
- [x] all-in-one: [CPU](#NEORV32-CPU-Features) plus [Processor/SoC](#NEORV32-Processor-Features) plus [Software Framework & Tooling](#Software-Framework-and-Tooling)
73
- [x] completely described in behavioral, platform-independent VHDL - no primitives, macros, etc.
74
- [x] fully synchronous design, no latches, no gated clocks
75
- [x] be as small as possible (while being as RISC-V-compliant as possible) – but with a reasonable size-performance trade-off
76 59 zero_gravi
(the processor has to fit in a Lattice iCE40 UltraPlus 5k low-power FPGA running at 22+ MHz)
77 64 zero_gravi
- [x] from zero to `printf("hello world!");` - completely open source and documented
78
- [x] easy to use even for FPGA/RISC-V starters – intended to work *out of the box*
79 22 zero_gravi
 
80 59 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
81 2 zero_gravi
 
82
 
83
 
84 64 zero_gravi
## 2. NEORV32 Processor Features
85 3 zero_gravi
 
86 60 zero_gravi
The NEORV32 Processor (top entity: [`rtl/core/neorv32_top.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/core/neorv32_top.vhd))
87
provides a full-featured SoC build around the NEORV32 CPU. It is highly configurable via generics
88
to allow a flexible customization according to your needs. Note that all modules listed below are _optional_.
89
In-depth detailed information regarding the processor/SoC can be found in the :books:
90
[online documentation - _"NEORV32 Processors (SoC)"_](https://stnolting.github.io/neorv32/#_neorv32_processor_soc).
91 2 zero_gravi
 
92 60 zero_gravi
**Memory**
93 2 zero_gravi
 
94 60 zero_gravi
* processor-internal data and instruction memories ([DMEM](https://stnolting.github.io/neorv32/#_data_memory_dmem) /
95
[IMEM](https://stnolting.github.io/neorv32/#_instruction_memory_imem)) &
96
cache ([iCACHE](https://stnolting.github.io/neorv32/#_processor_internal_instruction_cache_icache))
97
* bootloader ([BOOTLDROM](https://stnolting.github.io/neorv32/#_bootloader_rom_bootrom)) with serial user interface
98
  * supports boot via UART or from external SPI flash
99 11 zero_gravi
 
100 60 zero_gravi
**Timers**
101 11 zero_gravi
 
102 60 zero_gravi
* machine system timer ([MTIME](https://stnolting.github.io/neorv32/#_machine_system_timer_mtime)), RISC-V spec. compatible
103
* watchdog timer ([WDT](https://stnolting.github.io/neorv32/#_watchdog_timer_wdt))
104 11 zero_gravi
 
105 60 zero_gravi
**IO**
106 56 zero_gravi
 
107 60 zero_gravi
* standard serial interfaces
108
([UART](https://stnolting.github.io/neorv32/#_primary_universal_asynchronous_receiver_and_transmitter_uart0),
109
[SPI](https://stnolting.github.io/neorv32/#_serial_peripheral_interface_controller_spi),
110
[TWI / I²C](https://stnolting.github.io/neorv32/#_two_wire_serial_interface_controller_twi))
111
* general purpose [GPIO](https://stnolting.github.io/neorv32/#_general_purpose_input_and_output_port_gpio) and
112
[PWM](https://stnolting.github.io/neorv32/#_pulse_width_modulation_controller_pwm)
113
* smart LED interface ([NEOLED](https://stnolting.github.io/neorv32/#_smart_led_interface_neoled)) to directly drive _NeoPixel(TM)_ LEDs
114 2 zero_gravi
 
115 60 zero_gravi
**SoC Connectivity and Integration**
116 47 zero_gravi
 
117 59 zero_gravi
* 32-bit external bus interface, Wishbone b4 compatible
118
([WISHBONE](https://stnolting.github.io/neorv32/#_processor_external_memory_interface_wishbone_axi4_lite))
119 63 zero_gravi
  * [wrapper](https://github.com/stnolting/neorv32/blob/master/rtl/system_integration/neorv32_SystemTop_axi4lite.vhd) for AXI4-Lite master interface
120 64 zero_gravi
* 32-bit stream link interface with up to 8 independent RX and TX links
121 61 zero_gravi
([SLINK](https://stnolting.github.io/neorv32/#_stream_link_interface_slink))
122
  * AXI4-Stream compatible
123
* external interrupt controller with up to 32 channels
124
([XIRQ](https://stnolting.github.io/neorv32/#_external_interrupt_controller_xirq))
125 59 zero_gravi
* custom functions subsystem ([CFS](https://stnolting.github.io/neorv32/#_custom_functions_subsystem_cfs))
126
for tightly-coupled custom co-processor extensions
127 60 zero_gravi
 
128
**Advanced**
129
 
130
* _true random_ number generator ([TRNG](https://stnolting.github.io/neorv32/#_true_random_number_generator_trng))
131
* on-chip debugger ([OCD](https://stnolting.github.io/neorv32/#_on_chip_debugger_ocd)) via JTGA - implementing
132 59 zero_gravi
the [*Minimal RISC-V Debug Specification Version 0.13.2*](https://github.com/riscv/riscv-debug-spec)
133 61 zero_gravi
and compatible with *OpenOCD* and *gdb*
134 47 zero_gravi
 
135 61 zero_gravi
:information_source: It is recommended to use the processor setup even if you want to **use the CPU in stand-alone mode**.
136
Just disable all optional processor-internal modules via the according generics and you will get a "CPU wrapper" that
137
provides a minimal CPU environment and an external memory interface (like AXI4). This minimal setup allows to further use
138
the default bootloader and software framework. From this base you can start building your own processor system.
139 60 zero_gravi
 
140 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
141 47 zero_gravi
 
142 56 zero_gravi
 
143 60 zero_gravi
### FPGA Implementation Results - Processor
144 47 zero_gravi
 
145 64 zero_gravi
The hardware resources used by a specific processor setup is defined by the implemented CPU extensions
146 61 zero_gravi
([see below](#FPGA-Implementation-Results---CPU)), the configuration of the peripheral modules and some "glue logic".
147 62 zero_gravi
Section [_"FPGA Implementation Results - Processor Modules"_](https://stnolting.github.io/neorv32/#_processor_modules)
148 64 zero_gravi
of the online datasheet shows the resource utilization of each optional processor module to allow an
149 62 zero_gravi
estimation of the actual setup's hardware requirements.
150 2 zero_gravi
 
151 61 zero_gravi
:information_source: The [`setups`](https://github.com/stnolting/neorv32/tree/master/setups) folder provides exemplary FPGA
152 64 zero_gravi
setups targeting various FPGA boards and toolchains. These setups also provide resource utilization reports for different
153 61 zero_gravi
SoC configurations
154 56 zero_gravi
 
155
[[back to top](#The-NEORV32-RISC-V-Processor)]
156 47 zero_gravi
 
157 56 zero_gravi
 
158 47 zero_gravi
 
159 64 zero_gravi
## 3. NEORV32 CPU Features
160 47 zero_gravi
 
161 60 zero_gravi
:books: In-depth detailed information regarding the CPU can be found in the
162
[online documentation - _"NEORV32 Central Processing Unit"_](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu).
163 47 zero_gravi
 
164 60 zero_gravi
The CPU (top entity: [`rtl/core/neorv32_cpu.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/core/neorv32_cpu.vhd))
165 64 zero_gravi
implements the RISC-V 32-bit `rv32` ISA with optional extensions (see below). It is compatible to subsets of the
166 60 zero_gravi
*Unprivileged ISA Specification* [(Version 2.2)](https://github.com/stnolting/neorv32/blob/master/docs/references/riscv-spec.pdf)
167 64 zero_gravi
and the *Privileged Architecture Specification* [(Version 1.12-draft)](https://github.com/stnolting/neorv32/blob/master/docs/references/riscv-privileged.pdf).
168
Compatibility is checked by passing the [official RISC-V architecture tests](https://github.com/riscv/riscv-arch-test)
169 62 zero_gravi
(see [`sim/README`](sim/README.md)).
170 56 zero_gravi
 
171 64 zero_gravi
The core implements a little-endian Von-Neumann architecture using two pipeline stages, where each stage can operate in a multi-cycle processing
172
scheme. The CPU supports three privilege levels (`machine` and optional `user` and `debug_mode`), the three standard RISC-V machine
173
interrupts (`MTI`, `MEI`, `MSI`) plus 16 _fast interrupt requests_ as custom extensions.
174 61 zero_gravi
It also supports **all** standard RISC-V exceptions (instruction/load/store misaligned address & bus access fault, illegal
175 64 zero_gravi
instruction, breakpoint, environment calls). See :books: [_"Full Virtualization"_](https://stnolting.github.io/neorv32/#_full_virtualization)
176
for more information.
177 23 zero_gravi
 
178 2 zero_gravi
 
179 60 zero_gravi
### Available ISA Extensions
180 2 zero_gravi
 
181 60 zero_gravi
Currently, the following _optional_ RISC-V-compatible ISA extensions are implemented (linked to the according
182
documentation section). Note that the `X` extension is always enabled.
183 2 zero_gravi
 
184 60 zero_gravi
**RV32
185
[[`I`](https://stnolting.github.io/neorv32/#_i_base_integer_isa)/
186
[`E`](https://stnolting.github.io/neorv32/#_e_embedded_cpu)]
187
[[`A`](https://stnolting.github.io/neorv32/#_a_atomic_memory_access)]
188
[[`C`](https://stnolting.github.io/neorv32/#_c_compressed_instructions)]
189
[[`M`](https://stnolting.github.io/neorv32/#_m_integer_multiplication_and_division)]
190
[[`U`](https://stnolting.github.io/neorv32/#_u_less_privileged_user_mode)]
191
[[`X`](https://stnolting.github.io/neorv32/#_x_neorv32_specific_custom_extensions)]
192 63 zero_gravi
[[`Zbb`](https://stnolting.github.io/neorv32/#_zbb_basic_bit_manipulation_operations)]
193 60 zero_gravi
[[`Zfinx`](https://stnolting.github.io/neorv32/#_zfinx_single_precision_floating_point_operations)]
194
[[`Zicsr`](https://stnolting.github.io/neorv32/#_zicsr_control_and_status_register_access_privileged_architecture)]
195
[[`Zifencei`](https://stnolting.github.io/neorv32/#_zifencei_instruction_stream_synchronization)]
196 61 zero_gravi
[[`Zmmul`](https://stnolting.github.io/neorv32/#_zmmul_integer_multiplication)]
197 60 zero_gravi
[[`PMP`](https://stnolting.github.io/neorv32/#_pmp_physical_memory_protection)]
198 63 zero_gravi
[[`HPM`](https://stnolting.github.io/neorv32/#_hpm_hardware_performance_monitors)]
199
[[`DEBUG`](https://stnolting.github.io/neorv32/#_cpu_debug_mode)]**
200 60 zero_gravi
 
201 63 zero_gravi
:warning: The `Zbb`, `Zfinx` and `Zmmul` RISC-V extensions are frozen but not officially ratified yet. Hence, there is no
202 64 zero_gravi
upstream gcc support. To circumvent this, the NEORV32 software framework provides _intrinsic_ libraries for these extensions.
203 60 zero_gravi
 
204 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
205 39 zero_gravi
 
206 56 zero_gravi
 
207 60 zero_gravi
### FPGA Implementation Results - CPU
208 23 zero_gravi
 
209 62 zero_gravi
Implementation results for _exemplary_ CPU configuration generated for an **Intel Cyclone IV EP4CE22F17C6N FPGA**
210 60 zero_gravi
using **Intel Quartus Prime Lite 20.1** ("balanced implementation"). The timing information is derived
211
from the Timing Analyzer / Slow 1200mV 0C Model. No constraints were used at all.
212 2 zero_gravi
 
213 62 zero_gravi
Results generated for hardware version [`1.5.7.10`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
214 2 zero_gravi
 
215 60 zero_gravi
| CPU Configuration                                 | LEs  | FFs  | Memory bits | DSPs (9-bit) | f_max   |
216
|:--------------------------------------------------|:----:|:----:|:-----------:|:------------:|:-------:|
217 62 zero_gravi
| `rv32i`                                           |  806 |  359 |        1024 |            0 | 125 MHz |
218
| `rv32i_Zicsr`                                     | 1729 |  813 |        1024 |            0 | 124 MHz |
219
| `rv32imac_Zicsr`                                  | 2511 | 1074 |        1024 |            0 | 124 MHz |
220 6 zero_gravi
 
221 64 zero_gravi
:information_source: An incremental list of CPU extension's hardware utilization can found in
222 62 zero_gravi
[online documentation - _"FPGA Implementation Results - CPU"_](https://stnolting.github.io/neorv32/#_cpu).
223
 
224
:information_source: The CPU provides options to further reduce the footprint (for example by constraining
225
the CPU-internal counters). See the [online data](https://stnolting.github.io/neorv32) sheet for more information.
226
 
227 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
228 22 zero_gravi
 
229
 
230 60 zero_gravi
### Performance
231 56 zero_gravi
 
232 64 zero_gravi
The NEORV32 CPU is based on a two-stages pipelined architecture. Since both stage use a multi-cycle processing scheme,
233 61 zero_gravi
each instruction requires several clock cycles to execute (2 cycles for ALU operations, up to 40 cycles for divisions).
234
The average CPI (cycles per instruction) depends on the instruction mix of a specific applications and also on the
235
available CPU extensions.
236 2 zero_gravi
 
237 62 zero_gravi
The following table shows the performance results (relative CoreMark score and average cycles per instruction) for
238
_exemplary_ CPU configuration running 2000 iterations of the [CoreMark CPU benchmark](https://www.eembc.org/coremark).
239
The source files are available in [`sw/example/coremark`](https://github.com/stnolting/neorv32/blob/master/sw/example/coremark).
240 2 zero_gravi
 
241 63 zero_gravi
:information_source: A _simple_ port of the **Dhrystone** benchmark is also available:
242
[`sw/example/dhrystone`](https://github.com/stnolting/neorv32/blob/master/sw/example/dhrystone)
243
 
244 2 zero_gravi
~~~
245 59 zero_gravi
**CoreMark Setup**
246 56 zero_gravi
Hardware:       32kB IMEM, 8kB DMEM, no caches, 100MHz clock
247 38 zero_gravi
CoreMark:       2000 iterations, MEM_METHOD is MEM_STACK
248
Compiler:       RISCV32-GCC 10.1.0 (rv32i toolchain)
249 60 zero_gravi
Compiler flags: default, see makefile; optimization -O3
250 2 zero_gravi
~~~
251
 
252 62 zero_gravi
Results generated for hardware version [`1.5.7.10`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
253 42 zero_gravi
 
254 62 zero_gravi
| CPU Configuration                              | CoreMark Score | CoreMarks/MHz | Average CPI |
255
|:-----------------------------------------------|:--------------:|:-------------:|:-----------:|
256
| _small_ (`rv32i_Zicsr`)                        |          33.89 | **0.3389**    | **4.04**    |
257
| _medium_ (`rv32imc_Zicsr`)                     |          62.50 | **0.6250**    | **5.34**    |
258
| _performance_(`rv32imc_Zicsr` + perf. options) |          95.23 | **0.9523**    | **3.54**    |
259 2 zero_gravi
 
260 62 zero_gravi
:information_source: More information regarding the CPU performance can be found in the
261
[online documentation - _"CPU Performance"_](https://stnolting.github.io/neorv32/#_cpu_performance).
262 2 zero_gravi
 
263 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
264 34 zero_gravi
 
265 56 zero_gravi
 
266 2 zero_gravi
 
267 64 zero_gravi
## 4. Software Framework and Tooling
268 60 zero_gravi
 
269
:books: In-depth detailed information regarding the software framework can be found in the
270
[online documentation - _"Software Framework"_](https://stnolting.github.io/neorv32/#_software_framework).
271
 
272
* [core libraries](https://github.com/stnolting/neorv32/tree/master/sw/lib) for high-level usage of the provided functions and peripherals
273
* application compilation based on GNU makefiles
274
* gcc-based toolchain ([pre-compiled toolchains available](https://github.com/stnolting/riscv-gcc-prebuilt))
275
* bootloader with UART interface console
276
* runtime environment for handling traps
277
* several [example programs](https://github.com/stnolting/neorv32/tree/master/sw/example) to get started including CoreMark, FreeRTOS and *Conway's Game of Life*
278
* `doxygen`-based documentation, available on [GitHub pages](https://stnolting.github.io/neorv32/sw/files.html)
279
* supports implementation using open source tooling (GHDL, Yosys and nextpnr; in the future Verilog-to-Routing); both, software and hardware can be
280
developed and debugged with open source tooling
281
* continuous Integration is available for:
282
  * allowing users to see the expected execution/output of the tools
283
  * ensuring specification compliance
284
  * catching regressions
285
  * providing ready-to-use and up-to-date bitstreams and documentation
286
 
287
[[back to top](#The-NEORV32-RISC-V-Processor)]
288
 
289
 
290
 
291 64 zero_gravi
## 5. Getting Started
292 2 zero_gravi
 
293 60 zero_gravi
This overview provides some *quick links* to the most important sections of the
294 61 zero_gravi
[online Data Sheet](https://stnolting.github.io/neorv32) and the
295 60 zero_gravi
[online User Guide](https://stnolting.github.io/neorv32/ug).
296 2 zero_gravi
 
297 59 zero_gravi
### :electric_plug: Hardware Overview
298 2 zero_gravi
 
299 61 zero_gravi
* [Rationale](https://stnolting.github.io/neorv32/#_rationale) - NEORV32: why, how come, what for
300
 
301 59 zero_gravi
* [NEORV32 Processor](https://stnolting.github.io/neorv32/#_neorv32_processor_soc) - the SoC
302
  * [Top Entity - Signals](https://stnolting.github.io/neorv32/#_processor_top_entity_signals) - how to connect to the processor
303
  * [Top Entity - Generics](https://stnolting.github.io/neorv32/#_processor_top_entity_generics) - configuration options
304 61 zero_gravi
  * [Address Space](https://stnolting.github.io/neorv32/#_address_space) - memory layout and boot configuration
305 59 zero_gravi
  * [SoC Modules](https://stnolting.github.io/neorv32/#_processor_internal_modules) - available IO/peripheral modules and memories
306 61 zero_gravi
  * [On-Chip Debugger](https://stnolting.github.io/neorv32/#_on_chip_debugger_ocd) - online & in-system debugging of the processor via JTAG
307 2 zero_gravi
 
308 63 zero_gravi
* [NEORV32 CPU](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu) - the CPU
309 59 zero_gravi
  * [RISC-V compatibility](https://stnolting.github.io/neorv32/#_risc_v_compatibility) - what is compatible to the specs. and what is not
310
  * [ISA and Extensions](https://stnolting.github.io/neorv32/#_instruction_sets_and_extensions) - available RISC-V ISA extensions
311
  * [CSRs](https://stnolting.github.io/neorv32/#_control_and_status_registers_csrs) - control and status registers
312
  * [Traps](https://stnolting.github.io/neorv32/#_traps_exceptions_and_interrupts) - interrupts and exceptions
313 34 zero_gravi
 
314 59 zero_gravi
### :floppy_disk: Software Overview
315 12 zero_gravi
 
316 59 zero_gravi
* [Core Libraries](https://stnolting.github.io/neorv32/#_core_libraries) - high-level functions for accessing the processor's peripherals
317
  * [Software Framework Documentation](https://stnolting.github.io/neorv32/sw/files.html) - `doxygen`-based documentation
318
* [Application Makefiles](https://stnolting.github.io/neorv32/#_application_makefile) - turning your application into an executable
319
* [Bootloader](https://stnolting.github.io/neorv32/#_bootloader) - the build-in NEORV32 bootloader
320 22 zero_gravi
 
321 60 zero_gravi
### :rocket: User Guides (see full [User Guide](https://stnolting.github.io/neorv32/ug/))
322 31 zero_gravi
 
323 60 zero_gravi
* [Toolchain Setup](https://stnolting.github.io/neorv32/ug/#_toolchain_setup) - install and setup RISC-V gcc
324
* [General Hardware Setup](https://stnolting.github.io/neorv32/ug/#_general_hardware_setup) - setup a new NEORV32 EDA project
325
* [General Software Setup](https://stnolting.github.io/neorv32/ug/#_general_software_framework_setup) - configure the software framework
326
* [Application Compilation](https://stnolting.github.io/neorv32/ug/#_application_program_compilation) - compile an application using `make`
327
* [Upload via Bootloader](https://stnolting.github.io/neorv32/ug/#_uploading_and_starting_of_a_binary_executable_image_via_uart) - upload and execute executables
328 63 zero_gravi
* [Application-Specific Processor Configuration](https://stnolting.github.io/neorv32/ug/#_application_specific_processor_configuration) - tailor the processor to your needs
329 64 zero_gravi
* [Adding Custom Hardware Modules](https://stnolting.github.io/neorv32/ug/#_adding_custom_hardware_modules) - add _your_ custom hardware
330 60 zero_gravi
* [Debugging via the On-Chip Debugger](https://stnolting.github.io/neorv32/ug/#_debugging_using_the_on_chip_debugger) - step through code *online* and *in-system*
331 63 zero_gravi
* [Simulation](https://stnolting.github.io/neorv32/ug/#_simulating_the_processor) - simulate the whole SoC
332
  * [Hello World!](https://stnolting.github.io/neorv32/ug/index.html#_hello_world) - run a quick _"hello world"_ simulation
333 56 zero_gravi
 
334 60 zero_gravi
### :copyright: Legal
335
 
336
* [Overview](https://stnolting.github.io/neorv32/#_legal) - license, disclaimer, proprietary notice, ...
337 61 zero_gravi
* [Citing](https://stnolting.github.io/neorv32/#_citing) - citing information (DOI)
338
* [Impressum](https://github.com/stnolting/neorv32/blob/master/docs/impressum.md) - imprint (:de:)
339 60 zero_gravi
 
340 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
341 36 zero_gravi
 
342 56 zero_gravi
 
343 22 zero_gravi
 
344 59 zero_gravi
## Acknowledgements
345 2 zero_gravi
 
346 59 zero_gravi
**A big shoutout to all [contributors](https://github.com/stnolting/neorv32/graphs/contributors), who helped improving this project! :heart:**
347 35 zero_gravi
 
348 59 zero_gravi
[RISC-V](https://riscv.org/) - Instruction Sets Want To Be Free!
349 35 zero_gravi
 
350 59 zero_gravi
Continous integration provided by [:octocat: GitHub Actions](https://github.com/features/actions) and powered by [GHDL](https://github.com/ghdl/ghdl).
351 35 zero_gravi
 
352 32 zero_gravi
--------
353 2 zero_gravi
 
354 64 zero_gravi
Made with :coffee: in Hanover, Germany :eu:

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.