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

Subversion Repositories neorv32

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

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 32 zero_gravi
* [Overview](#Overview)
24 60 zero_gravi
* [Processor/SoC Features](#NEORV32-Processor-Features)
25
  * [FPGA Implementation Results](#FPGA-Implementation-Results---Processor)
26 59 zero_gravi
* [CPU Features](#NEORV32-CPU-Features)
27 60 zero_gravi
  * [Available ISA Extensions](#Available-ISA-Extensions)
28
  * [FPGA Implementation Results](#FPGA-Implementation-Results---CPU)
29
  * [Performance](#Performance)
30
* [Software Framework & Tooling](#Software-Framework-and-Tooling)
31
* [**Getting Started**](#Getting-Started) :rocket:
32 2 zero_gravi
 
33
 
34 60 zero_gravi
 
35 32 zero_gravi
## Overview
36 2 zero_gravi
 
37 54 zero_gravi
![neorv32 Overview](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_processor.png)
38
 
39 59 zero_gravi
The NEORV32 Processor is a customizable microcontroller-like system on chip (SoC) that is based on the RISC-V NEORV32 CPU.
40
The project is intended as auxiliary processor in larger SoC designs or as *ready-to-go* stand-alone
41
custom / customizable microcontroller.
42 2 zero_gravi
 
43 61 zero_gravi
:information_source: Want to know more? Check out the [project's rationale](https://stnolting.github.io/neorv32/#_rationale).
44
 
45 60 zero_gravi
:books: For detailed information take a look at the [NEORV32 documentation (online at GitHub-pages)](https://stnolting.github.io/neorv32/).
46 59 zero_gravi
The *doxygen*-based documentation of the *software framework* is also available online
47
at [GitHub-pages](https://stnolting.github.io/neorv32/sw/files.html).
48 45 zero_gravi
 
49 59 zero_gravi
:label: The project's change log is available in [`CHANGELOG.md`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
50
To see the changes between *official* releases visit the project's [release page](https://github.com/stnolting/neorv32/releases).
51 11 zero_gravi
 
52 61 zero_gravi
:package: The [`setups`](https://github.com/stnolting/neorv32/tree/master/setups) folder provides exemplary setups targeting
53
various FPGA boards and toolchains to get you started.
54 56 zero_gravi
 
55 52 zero_gravi
:spiral_notepad: Check out the [project boards](https://github.com/stnolting/neorv32/projects) for a list of current **ideas**,
56
**TODOs**, features being **planned** and **work-in-progress**.
57 40 zero_gravi
 
58 59 zero_gravi
:bulb: Feel free to open a [new issue](https://github.com/stnolting/neorv32/issues) or start a
59 62 zero_gravi
[new discussion](https://github.com/stnolting/neorv32/discussions) if you have questions, comments, ideas or if something is
60
not working as expected.
61 59 zero_gravi
Check out how to contribute in [`CONTRIBUTE.md`](https://github.com/stnolting/neorv32/blob/master/CONTRIBUTING.md).
62 47 zero_gravi
 
63 60 zero_gravi
:rocket: Check out the [quick links below](#Getting-Started) or directly jump to the
64
[*User Guide*](https://stnolting.github.io/neorv32/ug/) to get started
65 59 zero_gravi
setting up your NEORV32 setup!
66 51 zero_gravi
 
67 2 zero_gravi
 
68 59 zero_gravi
### Project Key Features
69 15 zero_gravi
 
70 60 zero_gravi
* [CPU](#NEORV32-CPU-Features) plus [Processor/SoC](#NEORV32-Processor-Features) plus [Software Framework & Tooling](#Software-Framework-and-Tooling)
71 59 zero_gravi
* completely described in behavioral, platform-independent VHDL - no primitives, macros, etc.
72
* fully synchronous design, no latches, no gated clocks
73
* be as small as possible (while being as RISC-V-compliant as possible) – but with a reasonable size-performance trade-off
74
(the processor has to fit in a Lattice iCE40 UltraPlus 5k low-power FPGA running at 22+ MHz)
75
* from zero to `printf("hello world!");` - completely open source and documented
76
* easy to use even for FPGA/RISC-V starters – intended to work *out of the box*
77 22 zero_gravi
 
78 59 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
79 2 zero_gravi
 
80
 
81
 
82 60 zero_gravi
## NEORV32 Processor Features
83 3 zero_gravi
 
84 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))
85
provides a full-featured SoC build around the NEORV32 CPU. It is highly configurable via generics
86
to allow a flexible customization according to your needs. Note that all modules listed below are _optional_.
87
In-depth detailed information regarding the processor/SoC can be found in the :books:
88
[online documentation - _"NEORV32 Processors (SoC)"_](https://stnolting.github.io/neorv32/#_neorv32_processor_soc).
89 2 zero_gravi
 
90 60 zero_gravi
**Memory**
91 2 zero_gravi
 
92 60 zero_gravi
* processor-internal data and instruction memories ([DMEM](https://stnolting.github.io/neorv32/#_data_memory_dmem) /
93
[IMEM](https://stnolting.github.io/neorv32/#_instruction_memory_imem)) &
94
cache ([iCACHE](https://stnolting.github.io/neorv32/#_processor_internal_instruction_cache_icache))
95
* bootloader ([BOOTLDROM](https://stnolting.github.io/neorv32/#_bootloader_rom_bootrom)) with serial user interface
96
  * supports boot via UART or from external SPI flash
97 11 zero_gravi
 
98 60 zero_gravi
**Timers**
99 11 zero_gravi
 
100 60 zero_gravi
* machine system timer ([MTIME](https://stnolting.github.io/neorv32/#_machine_system_timer_mtime)), RISC-V spec. compatible
101
* watchdog timer ([WDT](https://stnolting.github.io/neorv32/#_watchdog_timer_wdt))
102 11 zero_gravi
 
103 60 zero_gravi
**IO**
104 56 zero_gravi
 
105 60 zero_gravi
* standard serial interfaces
106
([UART](https://stnolting.github.io/neorv32/#_primary_universal_asynchronous_receiver_and_transmitter_uart0),
107
[SPI](https://stnolting.github.io/neorv32/#_serial_peripheral_interface_controller_spi),
108
[TWI / I²C](https://stnolting.github.io/neorv32/#_two_wire_serial_interface_controller_twi))
109
* general purpose [GPIO](https://stnolting.github.io/neorv32/#_general_purpose_input_and_output_port_gpio) and
110
[PWM](https://stnolting.github.io/neorv32/#_pulse_width_modulation_controller_pwm)
111
* smart LED interface ([NEOLED](https://stnolting.github.io/neorv32/#_smart_led_interface_neoled)) to directly drive _NeoPixel(TM)_ LEDs
112 2 zero_gravi
 
113 60 zero_gravi
**SoC Connectivity and Integration**
114 47 zero_gravi
 
115 59 zero_gravi
* 32-bit external bus interface, Wishbone b4 compatible
116
([WISHBONE](https://stnolting.github.io/neorv32/#_processor_external_memory_interface_wishbone_axi4_lite))
117 61 zero_gravi
  * [wrapper](https://github.com/stnolting/neorv32/blob/master/rtl/templates/system/neorv32_SystemTop_axi4lite.vhd) for AXI4-Lite master interface
118
* 32-bit stram link interface with up to 8 independent RX and TX links
119
([SLINK](https://stnolting.github.io/neorv32/#_stream_link_interface_slink))
120
  * AXI4-Stream compatible
121
* external interrupt controller with up to 32 channels
122
([XIRQ](https://stnolting.github.io/neorv32/#_external_interrupt_controller_xirq))
123
* alternative [top entities/wrappers](https://github.com/stnolting/neorv32/blob/master/rtl/templates) providing
124
simplified and/or resolved top entity ports for easy system integration
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 61 zero_gravi
The hardware resources used by a specifc processor setup is defined by the implemented CPU extensions
146
([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
of the online datasheet shows the ressource utilization of each optional processor module to allow an
149
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
setups targeting various FPGA boards and toolchains. These setups also provide ressource utilization reports for different
153
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 60 zero_gravi
## 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 61 zero_gravi
implements the RISC-V 32-bit `rv32` ISA with optional extensions (see below). It is compatible to a subset 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
and a subset of the *Privileged Architecture Specification* [(Version 1.12-draft)](https://github.com/stnolting/neorv32/blob/master/docs/references/riscv-privileged.pdf).
168 61 zero_gravi
Compatiility 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 61 zero_gravi
The core implements a little-endian von-Neumann architecture using two pipeline stages. Each stage uses a multi-cycle processing
172
scheme. The CPU supports three privilege levels (`machine` and optional `user` and `debug_mode`), three standard RISC-V machine
173
interrupts (`MTI`, `MEI`, `MSI`), a single non-maskable interrupt plus 16 _fast interrupt requests_ as custom extensions.
174
It also supports **all** standard RISC-V exceptions (instruction/load/store misaligned address & bus access fault, illegal
175 62 zero_gravi
instruction, breakpoint, environment call)
176
(see :books: [_"Full Virtualization"_](https://stnolting.github.io/neorv32/#_full_virtualization)).
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
[[`Zfinx`](https://stnolting.github.io/neorv32/#_zfinx_single_precision_floating_point_operations)]
193
[[`Zicsr`](https://stnolting.github.io/neorv32/#_zicsr_control_and_status_register_access_privileged_architecture)]
194
[[`Zifencei`](https://stnolting.github.io/neorv32/#_zifencei_instruction_stream_synchronization)]
195 61 zero_gravi
[[`Zmmul`](https://stnolting.github.io/neorv32/#_zmmul_integer_multiplication)]
196 60 zero_gravi
[[`PMP`](https://stnolting.github.io/neorv32/#_pmp_physical_memory_protection)]
197
[[`HPM`](https://stnolting.github.io/neorv32/#_hpm_hardware_performance_monitors)]**
198
 
199
:information_source: The `B` ISA extension has been temporarily removed from the processor.
200
See [B ISA Extension](https://github.com/stnolting/neorv32/projects/7) project board.
201
 
202 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
203 39 zero_gravi
 
204 56 zero_gravi
 
205 60 zero_gravi
### FPGA Implementation Results - CPU
206 23 zero_gravi
 
207 62 zero_gravi
Implementation results for _exemplary_ CPU configuration generated for an **Intel Cyclone IV EP4CE22F17C6N FPGA**
208 60 zero_gravi
using **Intel Quartus Prime Lite 20.1** ("balanced implementation"). The timing information is derived
209
from the Timing Analyzer / Slow 1200mV 0C Model. No constraints were used at all.
210 2 zero_gravi
 
211 62 zero_gravi
Results generated for hardware version [`1.5.7.10`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
212 2 zero_gravi
 
213 60 zero_gravi
| CPU Configuration                                 | LEs  | FFs  | Memory bits | DSPs (9-bit) | f_max   |
214
|:--------------------------------------------------|:----:|:----:|:-----------:|:------------:|:-------:|
215 62 zero_gravi
| `rv32i`                                           |  806 |  359 |        1024 |            0 | 125 MHz |
216
| `rv32i_Zicsr`                                     | 1729 |  813 |        1024 |            0 | 124 MHz |
217
| `rv32imac_Zicsr`                                  | 2511 | 1074 |        1024 |            0 | 124 MHz |
218 6 zero_gravi
 
219 62 zero_gravi
:information_source: An incrmental list of CPU exntension's hardware utilization can found in
220
[online documentation - _"FPGA Implementation Results - CPU"_](https://stnolting.github.io/neorv32/#_cpu).
221
 
222
:information_source: The CPU provides options to further reduce the footprint (for example by constraining
223
the CPU-internal counters). See the [online data](https://stnolting.github.io/neorv32) sheet for more information.
224
 
225 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
226 22 zero_gravi
 
227
 
228 60 zero_gravi
### Performance
229 56 zero_gravi
 
230 61 zero_gravi
The NEORV32 CPU is based on a two-stages pipelined architecutre. Since both stage use a multi-cycle processing scheme,
231
each instruction requires several clock cycles to execute (2 cycles for ALU operations, up to 40 cycles for divisions).
232
The average CPI (cycles per instruction) depends on the instruction mix of a specific applications and also on the
233
available CPU extensions.
234 2 zero_gravi
 
235 62 zero_gravi
The following table shows the performance results (relative CoreMark score and average cycles per instruction) for
236
_exemplary_ CPU configuration running 2000 iterations of the [CoreMark CPU benchmark](https://www.eembc.org/coremark).
237
The source files are available in [`sw/example/coremark`](https://github.com/stnolting/neorv32/blob/master/sw/example/coremark).
238 2 zero_gravi
 
239
~~~
240 59 zero_gravi
**CoreMark Setup**
241 56 zero_gravi
Hardware:       32kB IMEM, 8kB DMEM, no caches, 100MHz clock
242 38 zero_gravi
CoreMark:       2000 iterations, MEM_METHOD is MEM_STACK
243
Compiler:       RISCV32-GCC 10.1.0 (rv32i toolchain)
244 60 zero_gravi
Compiler flags: default, see makefile; optimization -O3
245 2 zero_gravi
~~~
246
 
247 62 zero_gravi
Results generated for hardware version [`1.5.7.10`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
248 42 zero_gravi
 
249 62 zero_gravi
| CPU Configuration                              | CoreMark Score | CoreMarks/MHz | Average CPI |
250
|:-----------------------------------------------|:--------------:|:-------------:|:-----------:|
251
| _small_ (`rv32i_Zicsr`)                        |          33.89 | **0.3389**    | **4.04**    |
252
| _medium_ (`rv32imc_Zicsr`)                     |          62.50 | **0.6250**    | **5.34**    |
253
| _performance_(`rv32imc_Zicsr` + perf. options) |          95.23 | **0.9523**    | **3.54**    |
254 2 zero_gravi
 
255 62 zero_gravi
:information_source: More information regarding the CPU performance can be found in the
256
[online documentation - _"CPU Performance"_](https://stnolting.github.io/neorv32/#_cpu_performance).
257 2 zero_gravi
 
258 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
259 34 zero_gravi
 
260 56 zero_gravi
 
261 2 zero_gravi
 
262 60 zero_gravi
## Software Framework and Tooling
263
 
264
:books: In-depth detailed information regarding the software framework can be found in the
265
[online documentation - _"Software Framework"_](https://stnolting.github.io/neorv32/#_software_framework).
266
 
267
* [core libraries](https://github.com/stnolting/neorv32/tree/master/sw/lib) for high-level usage of the provided functions and peripherals
268
* application compilation based on GNU makefiles
269
* gcc-based toolchain ([pre-compiled toolchains available](https://github.com/stnolting/riscv-gcc-prebuilt))
270
* bootloader with UART interface console
271
* runtime environment for handling traps
272
* several [example programs](https://github.com/stnolting/neorv32/tree/master/sw/example) to get started including CoreMark, FreeRTOS and *Conway's Game of Life*
273
* `doxygen`-based documentation, available on [GitHub pages](https://stnolting.github.io/neorv32/sw/files.html)
274
* supports implementation using open source tooling (GHDL, Yosys and nextpnr; in the future Verilog-to-Routing); both, software and hardware can be
275
developed and debugged with open source tooling
276
* continuous Integration is available for:
277
  * allowing users to see the expected execution/output of the tools
278
  * ensuring specification compliance
279
  * catching regressions
280
  * providing ready-to-use and up-to-date bitstreams and documentation
281
 
282
[[back to top](#The-NEORV32-RISC-V-Processor)]
283
 
284
 
285
 
286 59 zero_gravi
## Getting Started
287 2 zero_gravi
 
288 60 zero_gravi
This overview provides some *quick links* to the most important sections of the
289 61 zero_gravi
[online Data Sheet](https://stnolting.github.io/neorv32) and the
290 60 zero_gravi
[online User Guide](https://stnolting.github.io/neorv32/ug).
291 2 zero_gravi
 
292 59 zero_gravi
### :electric_plug: Hardware Overview
293 2 zero_gravi
 
294 61 zero_gravi
* [Rationale](https://stnolting.github.io/neorv32/#_rationale) - NEORV32: why, how come, what for
295
 
296 59 zero_gravi
* [NEORV32 Processor](https://stnolting.github.io/neorv32/#_neorv32_processor_soc) - the SoC
297
  * [Top Entity - Signals](https://stnolting.github.io/neorv32/#_processor_top_entity_signals) - how to connect to the processor
298
  * [Top Entity - Generics](https://stnolting.github.io/neorv32/#_processor_top_entity_generics) - configuration options
299 61 zero_gravi
  * [Address Space](https://stnolting.github.io/neorv32/#_address_space) - memory layout and boot configuration
300 59 zero_gravi
  * [SoC Modules](https://stnolting.github.io/neorv32/#_processor_internal_modules) - available IO/peripheral modules and memories
301 61 zero_gravi
  * [On-Chip Debugger](https://stnolting.github.io/neorv32/#_on_chip_debugger_ocd) - online & in-system debugging of the processor via JTAG
302 2 zero_gravi
 
303 59 zero_gravi
* [NEORV32 CPU](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu) - the RISC-V core
304
  * [RISC-V compatibility](https://stnolting.github.io/neorv32/#_risc_v_compatibility) - what is compatible to the specs. and what is not
305
  * [ISA and Extensions](https://stnolting.github.io/neorv32/#_instruction_sets_and_extensions) - available RISC-V ISA extensions
306
  * [CSRs](https://stnolting.github.io/neorv32/#_control_and_status_registers_csrs) - control and status registers
307
  * [Traps](https://stnolting.github.io/neorv32/#_traps_exceptions_and_interrupts) - interrupts and exceptions
308 34 zero_gravi
 
309 59 zero_gravi
### :floppy_disk: Software Overview
310 12 zero_gravi
 
311 59 zero_gravi
* [Core Libraries](https://stnolting.github.io/neorv32/#_core_libraries) - high-level functions for accessing the processor's peripherals
312
  * [Software Framework Documentation](https://stnolting.github.io/neorv32/sw/files.html) - `doxygen`-based documentation
313
* [Application Makefiles](https://stnolting.github.io/neorv32/#_application_makefile) - turning your application into an executable
314
* [Bootloader](https://stnolting.github.io/neorv32/#_bootloader) - the build-in NEORV32 bootloader
315 22 zero_gravi
 
316 60 zero_gravi
### :rocket: User Guides (see full [User Guide](https://stnolting.github.io/neorv32/ug/))
317 31 zero_gravi
 
318 60 zero_gravi
* [Toolchain Setup](https://stnolting.github.io/neorv32/ug/#_toolchain_setup) - install and setup RISC-V gcc
319
* [General Hardware Setup](https://stnolting.github.io/neorv32/ug/#_general_hardware_setup) - setup a new NEORV32 EDA project
320
* [General Software Setup](https://stnolting.github.io/neorv32/ug/#_general_software_framework_setup) - configure the software framework
321
* [Application Compilation](https://stnolting.github.io/neorv32/ug/#_application_program_compilation) - compile an application using `make`
322
* [Upload via Bootloader](https://stnolting.github.io/neorv32/ug/#_uploading_and_starting_of_a_binary_executable_image_via_uart) - upload and execute executables
323
* [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*
324 56 zero_gravi
 
325 60 zero_gravi
### :copyright: Legal
326
 
327
* [Overview](https://stnolting.github.io/neorv32/#_legal) - license, disclaimer, proprietary notice, ...
328 61 zero_gravi
* [Citing](https://stnolting.github.io/neorv32/#_citing) - citing information (DOI)
329
* [Impressum](https://github.com/stnolting/neorv32/blob/master/docs/impressum.md) - imprint (:de:)
330 60 zero_gravi
 
331 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
332 36 zero_gravi
 
333 56 zero_gravi
 
334 22 zero_gravi
 
335 59 zero_gravi
## Acknowledgements
336 2 zero_gravi
 
337 59 zero_gravi
**A big shoutout to all [contributors](https://github.com/stnolting/neorv32/graphs/contributors), who helped improving this project! :heart:**
338 35 zero_gravi
 
339 59 zero_gravi
[RISC-V](https://riscv.org/) - Instruction Sets Want To Be Free!
340 35 zero_gravi
 
341 59 zero_gravi
Continous integration provided by [:octocat: GitHub Actions](https://github.com/features/actions) and powered by [GHDL](https://github.com/ghdl/ghdl).
342 35 zero_gravi
 
343 32 zero_gravi
--------
344 2 zero_gravi
 
345 36 zero_gravi
Made with :coffee: in Hannover, Germany :eu:

powered by: WebSVN 2.1.0

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