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

Subversion Repositories neorv32

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

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