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

Subversion Repositories neorv32

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

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
[![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)
3
[![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)
4
[![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)
5
[![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)
6
 
7 50 zero_gravi
[![NEORV32](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_logo_dark.png)](https://github.com/stnolting/neorv32)
8 2 zero_gravi
 
9 37 zero_gravi
# The NEORV32 RISC-V Processor
10
 
11 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)
12
[![release](https://img.shields.io/github/v/release/stnolting/neorv32?longCache=true&style=flat-square&logo=GitHub)](https://github.com/stnolting/neorv32/releases)
13
[![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)
14
[![datasheet (html)](https://img.shields.io/badge/data%20sheet-HTML-ffbd00?longCache=true&style=flat-square&logo=asciidoctor)](https://stnolting.github.io/neorv32)
15
[![doxygen](https://img.shields.io/badge/doxygen-HTML-ffbd00?longCache=true&style=flat-square&logo=Doxygen)](https://stnolting.github.io/neorv32/sw/files.html)
16 2 zero_gravi
 
17 32 zero_gravi
* [Overview](#Overview)
18 59 zero_gravi
* [CPU Features](#NEORV32-CPU-Features)
19
* [Processor/SoC Features](#NEORV32-Processor-Features)
20
* [Software Framework](#NEORV32-Software-Framework)
21 2 zero_gravi
* [FPGA Implementation Results](#FPGA-Implementation-Results)
22
* [Performance](#Performance)
23
* [**Getting Started**](#Getting-Started)
24
* [Legal](#Legal)
25
 
26
 
27 32 zero_gravi
## Overview
28 2 zero_gravi
 
29 54 zero_gravi
![neorv32 Overview](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_processor.png)
30
 
31 59 zero_gravi
The NEORV32 Processor is a customizable microcontroller-like system on chip (SoC) that is based on the RISC-V NEORV32 CPU.
32
The project is intended as auxiliary processor in larger SoC designs or as *ready-to-go* stand-alone
33
custom / customizable microcontroller.
34 2 zero_gravi
 
35 59 zero_gravi
:books: For detailed information take a look at the [NEORV32 documentation /datasheet (online at GitHub-pages)](https://stnolting.github.io/neorv32/).
36
The `asciidoc` sources can be found in [`docs/src_adoc`](https://github.com/stnolting/neorv32/blob/master/docs/src_adoc).
37
The *doxygen*-based documentation of the *software framework* is also available online
38
at [GitHub-pages](https://stnolting.github.io/neorv32/sw/files.html).
39 45 zero_gravi
 
40 59 zero_gravi
:label: The project's change log is available in [`CHANGELOG.md`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
41
To see the changes between *official* releases visit the project's [release page](https://github.com/stnolting/neorv32/releases).
42 11 zero_gravi
 
43 59 zero_gravi
:package: The [`boards`](https://github.com/stnolting/neorv32/tree/master/boards) folder provides exemplary EDA setups targeting
44
various FPGA boards to get you started.
45 56 zero_gravi
 
46 52 zero_gravi
:spiral_notepad: Check out the [project boards](https://github.com/stnolting/neorv32/projects) for a list of current **ideas**,
47
**TODOs**, features being **planned** and **work-in-progress**.
48 40 zero_gravi
 
49 59 zero_gravi
:bulb: Feel free to open a [new issue](https://github.com/stnolting/neorv32/issues) or start a
50
[new discussion](https://github.com/stnolting/neorv32/discussions) if you have questions, comments, ideas or bug-fixes.
51
Check out how to contribute in [`CONTRIBUTE.md`](https://github.com/stnolting/neorv32/blob/master/CONTRIBUTING.md).
52 47 zero_gravi
 
53 59 zero_gravi
:rocket: Check out the [quick links below](#Getting-Started) or directly jump to the documentation's
54
[*Let's Get It Started!*](https://stnolting.github.io/neorv32/#_lets_get_it_started) section to get started
55
setting up your NEORV32 setup!
56 51 zero_gravi
 
57 2 zero_gravi
 
58 59 zero_gravi
### Project Key Features
59 15 zero_gravi
 
60 59 zero_gravi
* [CPU](#NEORV32-CPU-Features) plus [Processor/SoC](#NEORV32-Processor-Features) plus [Software Framework](#NEORV32-Software-Framework)
61
* completely described in behavioral, platform-independent VHDL - no primitives, macros, etc.
62
* fully synchronous design, no latches, no gated clocks
63
* be as small as possible (while being as RISC-V-compliant as possible) – but with a reasonable size-performance trade-off
64
(the processor has to fit in a Lattice iCE40 UltraPlus 5k low-power FPGA running at 22+ MHz)
65
* from zero to `printf("hello world!");` - completely open source and documented
66
* easy to use even for FPGA/RISC-V starters – intended to work *out of the box*
67 22 zero_gravi
 
68 59 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
69 2 zero_gravi
 
70
 
71
 
72 59 zero_gravi
## NEORV32 CPU Features
73 3 zero_gravi
 
74 59 zero_gravi
:books: In-depth detailed information regarding the CPU can be found in the
75
[online documentation - _"NEORV32 Central Processing Unit"_](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu).
76 2 zero_gravi
 
77 59 zero_gravi
The CPU (top entity: [`rtl/core/neorv32_cpu.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/core/neorv32_cpu.vhd))
78
implements the RISC-V 32-bit `rv32` ISA with optional extensions. It is compatible to a subset of the
79
*Unprivileged ISA Specification* [(Version 2.2)](https://github.com/stnolting/neorv32/blob/master/docs/references/riscv-spec.pdf)
80
and a subset of the *Privileged Architecture Specification* [(Version 1.12-draft)](https://github.com/stnolting/neorv32/blob/master/docs/references/riscv-privileged.pdf).
81
The CPU [passes](https://stnolting.github.io/neorv32/#_risc_v_compatibility) the [official RISC-V architecture tests](https://github.com/riscv/riscv-arch-test)
82 52 zero_gravi
(see [`riscv-arch-test/README`](https://github.com/stnolting/neorv32/blob/master/riscv-arch-test/README.md)).
83 2 zero_gravi
 
84 59 zero_gravi
In order to provide a reduced-size setup the NEORV32 CPU implements a two-stages pipeline, where each stage
85
uses a multi-cycle processing scheme. Instruction and data accesses are conducted via independant bus interfaces,
86
that are multiplexed into a single SoC-bus ("modified Harvard architecture"). As a special execution safety feature,
87
all reserved or unimplemented instructions do raise an exception. Furthermore, the CPU was assigned an *official*
88
RISC-V open-source [architecture ID](https://github.com/riscv/riscv-isa-manual/blob/master/marchid.md)
89 11 zero_gravi
 
90 59 zero_gravi
RISC-V-compatible **ISA extensions** currently provided by the NEORV32 (:books: [see full list](https://stnolting.github.io/neorv32/#_instruction_sets_and_extensions)):
91
* `A` - atomic memory access instructions (optional)
92
* `B` - bit manipulation instructions (subset, optional, still experimental)
93
* `C` - compressed 16-bit instructions (optional)
94
* `E` - embedded CPU (reduced register file size) (optional)
95
* `I` - base integer instruction set (always enabled)
96
* `M` - integer multiplication and division hardware (optional)
97
* `U` - less-privileged `user` mode in combintation with the standard `machine` mode (optional)
98
* `X` - NEORV32-specific extensions (always enabled)
99
* `Zfinx` - IEEE-754 single-precision floating-point extensions (optional)
100
* `Zicsr` - control and status register access instructions (+ exception/irq system) (optional)
101
* `Zifencei` - instruction stream synchronization (optional)
102
* `PMP` - physical memory protection (optional)
103
* `HPM` - hardware performance monitors (optional)
104
* `DB` - RISC-V CPU debug mode (optional)
105 11 zero_gravi
 
106 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
107 11 zero_gravi
 
108 56 zero_gravi
 
109 2 zero_gravi
 
110 59 zero_gravi
## NEORV32 Processor Features
111 47 zero_gravi
 
112 59 zero_gravi
:books: In-depth detailed information regarding the processor/SoC and the provided optional module can be found in the
113
[online documentation - _"NEORV32 Processors (SoC)"_](https://stnolting.github.io/neorv32/#_neorv32_processor_soc).
114 47 zero_gravi
 
115 59 zero_gravi
The NEORV32 Processor (top entity: [`rtl/core/neorv32_top.vhd`](https://github.com/stnolting/neorv32/blob/master/rtl/core/neorv32_top.vhd))
116
provides a full-featured SoC build around the NEORV32 CPU. It is highly configurable to allow
117
a flexible customization according to your needs.
118 56 zero_gravi
 
119 59 zero_gravi
Included SoC modules:
120
* processor-internal data and instruction memories ([DMEM](https://stnolting.github.io/neorv32/#_data_memory_dmem) /
121
[IMEM](https://stnolting.github.io/neorv32/#_instruction_memory_imem)) &
122
cache ([iCACHE](https://stnolting.github.io/neorv32/#_processor_internal_instruction_cache_icache))
123
* bootloader ([BOOTLDROM](https://stnolting.github.io/neorv32/#_bootloader_rom_bootrom)) with UART console and automatic
124
application boot from external SPI flash option
125
* machine system timer ([MTIME](https://stnolting.github.io/neorv32/#_machine_system_timer_mtime)), RISC-V-compatible
126
* watchdog timer ([WDT](https://stnolting.github.io/neorv32/#_watchdog_timer_wdt))
127
* two independent universal asynchronous receivers and transmitters
128
([UART0](https://stnolting.github.io/neorv32/#_primary_universal_asynchronous_receiver_and_transmitter_uart0) and
129
[UART1](https://stnolting.github.io/neorv32/#_secondary_universal_asynchronous_receiver_and_transmitter_uart1))
130
with optional RTS/CTS hardware flow control
131
* 8/16/24/32-bit serial peripheral interface controller
132
([SPI](https://stnolting.github.io/neorv32/#_serial_peripheral_interface_controller_spi)) with 8 dedicated chip select lines
133
* two wire serial interface controller ([TWI](https://stnolting.github.io/neorv32/#_two_wire_serial_interface_controller_twi))
134
supporting clock-stretching, compatible to the I²C standard
135
* general purpose parallel IO port ([GPIO](https://stnolting.github.io/neorv32/#_general_purpose_input_and_output_port_gpio)),
136
32xOut & 32xIn  with pin-change interrupt
137
* 32-bit external bus interface, Wishbone b4 compatible
138
([WISHBONE](https://stnolting.github.io/neorv32/#_processor_external_memory_interface_wishbone_axi4_lite))
139
  * wrapper for AXI4-Lite Master Interface
140
* PWM controller with 4 channels and 8-bit duty cycle resolution
141
([PWM](https://stnolting.github.io/neorv32/#_pulse_width_modulation_controller_pwm))
142
* ring-oscillator-based *true random* number generator ([TRNG](https://stnolting.github.io/neorv32/#_true_random_number_generator_trng))
143
* custom functions subsystem ([CFS](https://stnolting.github.io/neorv32/#_custom_functions_subsystem_cfs))
144
for tightly-coupled custom co-processor extensions
145
* numerically-controlled oscillator ([NCO](https://stnolting.github.io/neorv32/#_numerically_controlled_oscillator_nco))
146
with three independent channels
147
* smart LED interface ([NEOLED](https://stnolting.github.io/neorv32/#_smart_led_interface_neoled))
148
to directly drive WS2812-compatible (*NeoPixel(TM)*) LEDs
149
* on-chip debugger ([OCD](https://stnolting.github.io/neorv32/#_on_chip_debugger_ocd)) via JTGA - compatible to
150
the [*Minimal RISC-V Debug Specification Version 0.13.2*](https://github.com/riscv/riscv-debug-spec)
151
and compatible with the *OpenOCD* and *gdb*
152
* alternative [top entities/wrappers](https://github.com/stnolting/neorv32/blob/master/rtl/top_templates) available
153 47 zero_gravi
 
154 59 zero_gravi
:information_source: It is recommended to use the processor setup even if you want to **use the CPU in stand-alone mode**. Simply disable all the processor-internal
155
modules via the generics and you will get a "CPU wrapper" that already provides a minimal CPU environment and an external memory interface (like AXI4).
156
This setup also allows to further use the default bootloader and software framework. From this base you can start building your own processor system.
157 47 zero_gravi
 
158 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
159 47 zero_gravi
 
160 56 zero_gravi
 
161 47 zero_gravi
 
162 59 zero_gravi
## NEORV32 Software Framework
163 2 zero_gravi
 
164 59 zero_gravi
:books: In-depth detailed information regarding the software framework can be found in the
165
[online documentation - _"Software Framework"_](https://stnolting.github.io/neorv32/#_software_framework).
166 56 zero_gravi
 
167 59 zero_gravi
* [core libraries](https://github.com/stnolting/neorv32/tree/master/sw/lib) for high-level usage of the provided functions and peripherals
168
* application compilation based on GNU makefiles
169
* gcc-based toolchain ([pre-compiled toolchains available](https://github.com/stnolting/riscv-gcc-prebuilt))
170
* bootloader with UART interface console
171
* runtime environment for handling traps
172
* several [example programs](https://github.com/stnolting/neorv32/tree/master/sw/example) to get started including CoreMark, FreeRTOS and *Conway's Game of Life*
173
* `doxygen`-based documentation, available on [GitHub pages](https://stnolting.github.io/neorv32/sw/files.html)
174 56 zero_gravi
 
175
[[back to top](#The-NEORV32-RISC-V-Processor)]
176 47 zero_gravi
 
177 56 zero_gravi
 
178 47 zero_gravi
 
179 59 zero_gravi
## FPGA Implementation Results
180 47 zero_gravi
 
181 59 zero_gravi
:books: More details regarding exemplary FPGA setups including a listing of resource utilization by each SoC module can be found in the
182
[online documentation - _"FPGA Implementation Results"_](https://stnolting.github.io/neorv32/#_fpga_implementation_results).
183 47 zero_gravi
 
184 56 zero_gravi
 
185 23 zero_gravi
### NEORV32 CPU
186
 
187 59 zero_gravi
Implementation results for exemplary CPU configuration generated for an **Intel Cyclone IV EP4CE22F17C6N FPGA** on
188
a DE0-nano board using **Intel Quartus Prime Lite 20.1** ("balanced implementation"). The timing information is derived
189
from the Timing Analyzer / Slow 1200mV 0C Model. No constraints were used at all.
190 2 zero_gravi
 
191 55 zero_gravi
Results generated for hardware version [`1.5.3.2`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
192 2 zero_gravi
 
193 55 zero_gravi
| CPU Configuration                                 | LEs  | FFs  | Memory bits | DSPs (9-bit) | f_max   |
194
|:--------------------------------------------------|:----:|:----:|:-----------:|:------------:|:-------:|
195
| `rv32i`                                           |  980 |  409 |        1024 |            0 | 123 MHz |
196
| `rv32i`    + `Zicsr`                              | 1835 |  856 |        1024 |            0 | 124 MHz |
197
| `rv32imac` + `Zicsr`                              | 2685 | 1156 |        1024 |            0 | 124 MHz |
198
| `rv32imac` + `Zicsr` + `u` + `Zifencei`           | 2715 | 1162 |        1024 |            0 | 122 MHz |
199 56 zero_gravi
| `rv32imac` + `Zicsr` + `u` + `Zifencei` + `Zfinx` | 4004 | 1812 |        1024 |            7 | 121 MHz |
200 2 zero_gravi
 
201 59 zero_gravi
Setups with enabled  `E` (embedded CPU extension) provide the same LUT and FF utilization and identical f_max as the according
202
`I` configuration. However, the size of the register file and thus, the embedded memory utilization, is cut in half.
203 2 zero_gravi
 
204 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
205 39 zero_gravi
 
206 56 zero_gravi
 
207 23 zero_gravi
 
208 59 zero_gravi
### NEORV32 Processor
209 11 zero_gravi
 
210 59 zero_gravi
:information_source: Check out the [`boards`](https://github.com/stnolting/neorv32/tree/master/boards)
211
folder for exemplary setups targeting various FPGA boards.
212 2 zero_gravi
 
213 59 zero_gravi
:information_source: The hardware resources used by the processor-internal IO/peripheral modules andmemories is also available in the
214
[online documentation - _"NEORV32 Central Processing Unit"_](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu).
215 2 zero_gravi
 
216 40 zero_gravi
Results generated for hardware version [`1.4.9.0`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
217 59 zero_gravi
If not otherwise note, the setups use *the default configuration* (like no *TRNG*),
218
no external memory interface and only internal instruction and data memories
219
(IMEM uses 16kB and DMEM uses 8kB memory space).
220 6 zero_gravi
 
221 59 zero_gravi
| Vendor  | FPGA                              | Board            | Toolchain                  | CPU Configuration                 | LUT / LE   | FF / REG   | DSP (9-bit) | Memory Bits  | BRAM / EBR | SPRAM    | Frequency     |
222
|:--------|:----------------------------------|:-----------------|:---------------------------|:----------------------------------|:-----------|:-----------|:------------|:-------------|:-----------|:---------|--------------:|
223
| Intel   | Cyclone IV `EP4CE22F17C6N`        | Terasic DE0-Nano | Quartus Prime Lite 20.1    | `rv32imcu_Zicsr_Zifencei`         | 3813 (17%) | 1904  (8%) | 0 (0%)      | 231424 (38%) |          - |        - |       119 MHz |
224
| Lattice | iCE40 UltraPlus `iCE40UP5K-SG48I` | [`boards/UPduino_v3`](https://github.com/stnolting/neorv32/tree/master/boards/UPduino_v3) | Radiant 2.1 (LSE) | `rv32imac_Zicsr` | 5123 (97%) | 1972 (37%) | 0 (0%) | - |   12 (40%) | 4 (100%) | *c* 24 MHz |
225
| Xilinx  | Artix-7 `XC7A35TICSG324-1L`       | Arty A7-35T      | Vivado 2019.2              | `rv32imcu_Zicsr_Zifencei` + `PMP` | 2465 (12%) | 1912  (5%) | 0 (0%)      |            - |    8 (16%) |        - |   *c* 100 MHz |
226 2 zero_gravi
 
227 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
228 22 zero_gravi
 
229
 
230 56 zero_gravi
 
231 2 zero_gravi
## Performance
232
 
233 59 zero_gravi
The NEORV32 CPU is based on a two-stages pipelined architecutre. Each stage uses a multi-cycle processing scheme.
234
Hence, each instruction requires several clock cycles to execute (2 cycles for ALU operations, and up to 40 cycles for divisions).
235
*By default* the CPU-internal shifter as well as the multiplier and divider of the `M` extension use a bit-serial approach
236
and require several cycles for completion. The average CPI (cycles per instruction) depends on the instruction mix of a
237
specific applications and also on the available CPU extensions.
238 2 zero_gravi
 
239 59 zero_gravi
The following table shows the performance results(relative CoreMark score and average cycles per instruction) for successfully
240
running 2000 iterations of the [CoreMark CPU benchmark](https://www.eembc.org/coremark), which reflects a pretty good "real-life" work load.
241
The source files are available in [sw/example/coremark](https://github.com/stnolting/neorv32/blob/master/sw/example/coremark).
242 2 zero_gravi
 
243
~~~
244 59 zero_gravi
**CoreMark Setup**
245 56 zero_gravi
Hardware:       32kB IMEM, 8kB DMEM, no caches, 100MHz clock
246 38 zero_gravi
CoreMark:       2000 iterations, MEM_METHOD is MEM_STACK
247
Compiler:       RISCV32-GCC 10.1.0 (rv32i toolchain)
248
Compiler flags: default, see makefile
249 56 zero_gravi
Optimization:   -O3
250 38 zero_gravi
Peripherals:    UART for printing the results
251 2 zero_gravi
~~~
252
 
253 42 zero_gravi
Results generated for hardware version [`1.4.9.8`](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md).
254
 
255 59 zero_gravi
| CPU (including `Zicsr` extension)           | Executable Size | CoreMark Score | CoreMarks/MHz | Total Clock Cycles | Executed Instructions | Average CPI |
256
|:--------------------------------------------|:---------------:|:--------------:|:-------------:|-------------------:|----------------------:|:-----------:|
257
| `rv32i`                                     |    28 756 bytes |          36.36 |    **0.3636** |         5595750503 |            1466028607 |    **3.82** |
258
| `rv32imc`                                   |    22 008 bytes |          68.97 |    **0.6897** |         2981786734 |             611814918 |    **4.87** |
259
| `rv32imc` + `FAST_MUL_EN` + `FAST_SHIFT_EN` |    22 008 bytes |          90.91 |    **0.9091** |         2265135174 |             611814948 |    **3.70** |
260 2 zero_gravi
 
261 59 zero_gravi
:information_source: The `FAST_MUL_EN` configuration uses DSPs for the multiplier of the `M` extension
262
(enabled via the `FAST_MUL_EN` generic). The `FAST_SHIFT_EN` configuration uses a barrel shifter for
263
CPU shift operations (enabled via the `FAST_SHIFT_EN` generic).
264 2 zero_gravi
 
265 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
266 34 zero_gravi
 
267 56 zero_gravi
 
268 2 zero_gravi
 
269 59 zero_gravi
## Getting Started
270 2 zero_gravi
 
271 59 zero_gravi
This overview provides some *quick links* to the most important sections of the :books:
272
[NEORV32 online documentation](https://stnolting.github.io/neorv32).
273 2 zero_gravi
 
274 59 zero_gravi
### :electric_plug: Hardware Overview
275 2 zero_gravi
 
276 59 zero_gravi
* [NEORV32 Processor](https://stnolting.github.io/neorv32/#_neorv32_processor_soc) - the SoC
277
  * [Top Entity - Signals](https://stnolting.github.io/neorv32/#_processor_top_entity_signals) - how to connect to the processor
278
  * [Top Entity - Generics](https://stnolting.github.io/neorv32/#_processor_top_entity_generics) - configuration options
279
  * [Address Space](https://stnolting.github.io/neorv32/#_address_space) - memory space and memory-mapped IO
280
  * [SoC Modules](https://stnolting.github.io/neorv32/#_processor_internal_modules) - available IO/peripheral modules and memories
281
  * [On-Chip Debugger](https://stnolting.github.io/neorv32/#_on_chip_debugger_ocd) - online debugging of the processor via JTAG
282 2 zero_gravi
 
283 59 zero_gravi
* [NEORV32 CPU](https://stnolting.github.io/neorv32/#_neorv32_central_processing_unit_cpu) - the RISC-V core
284
  * [RISC-V compatibility](https://stnolting.github.io/neorv32/#_risc_v_compatibility) - what is compatible to the specs. and what is not
285
  * [ISA and Extensions](https://stnolting.github.io/neorv32/#_instruction_sets_and_extensions) - available RISC-V ISA extensions
286
  * [CSRs](https://stnolting.github.io/neorv32/#_control_and_status_registers_csrs) - control and status registers
287
  * [Traps](https://stnolting.github.io/neorv32/#_traps_exceptions_and_interrupts) - interrupts and exceptions
288 34 zero_gravi
 
289 59 zero_gravi
### :floppy_disk: Software Overview
290 12 zero_gravi
 
291 59 zero_gravi
* [Core Libraries](https://stnolting.github.io/neorv32/#_core_libraries) - high-level functions for accessing the processor's peripherals
292
  * [Software Framework Documentation](https://stnolting.github.io/neorv32/sw/files.html) - `doxygen`-based documentation
293
* [Application Makefiles](https://stnolting.github.io/neorv32/#_application_makefile) - turning your application into an executable
294
* [Bootloader](https://stnolting.github.io/neorv32/#_bootloader) - the build-in NEORV32 bootloader
295 22 zero_gravi
 
296 59 zero_gravi
### :rocket: User Guides (see [full overview](https://stnolting.github.io/neorv32/#_lets_get_it_started))
297 31 zero_gravi
 
298 59 zero_gravi
* [Toolchain Setup](https://stnolting.github.io/neorv32/#_toolchain_setup) - install and setup RISC-V gcc
299
* [General Hardware Setup](https://stnolting.github.io/neorv32/#_general_hardware_setup) - setup a new NEORV32 EDA project
300
* [General Software Setup](https://stnolting.github.io/neorv32/#_general_software_framework_setup) - configure the software framework
301
* [Application Compilation](https://stnolting.github.io/neorv32/#_application_program_compilation) - compile an application using `make`
302
* [Upload via Bootloader](https://stnolting.github.io/neorv32/#_uploading_and_starting_of_a_binary_executable_image_via_uart) - upload and execute executables
303
* [Debugging via the On-Chip Debugger](https://stnolting.github.io/neorv32/#_debugging_using_the_on_chip_debugger) - step through code *online* and *in-system*
304 56 zero_gravi
 
305
[[back to top](#The-NEORV32-RISC-V-Processor)]
306 36 zero_gravi
 
307 56 zero_gravi
 
308 22 zero_gravi
 
309 59 zero_gravi
## Acknowledgements
310 2 zero_gravi
 
311 59 zero_gravi
**A big shoutout to all [contributors](https://github.com/stnolting/neorv32/graphs/contributors), who helped improving this project! :heart:**
312 35 zero_gravi
 
313 59 zero_gravi
[![RISC-V](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/riscv_logo.png)](https://riscv.org/)
314 35 zero_gravi
 
315 59 zero_gravi
[RISC-V](https://riscv.org/) - Instruction Sets Want To Be Free!
316 35 zero_gravi
 
317 59 zero_gravi
Continous integration provided by [:octocat: GitHub Actions](https://github.com/features/actions) and powered by [GHDL](https://github.com/ghdl/ghdl).
318 35 zero_gravi
 
319 59 zero_gravi
![Open Source Hardware Logo https://www.oshwa.org](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/oshw_logo.png)
320 35 zero_gravi
 
321 59 zero_gravi
This project is not affiliated with or endorsed by the Open Source Initiative (https://www.oshwa.org / https://opensource.org).
322 35 zero_gravi
 
323 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
324 2 zero_gravi
 
325
 
326
 
327 11 zero_gravi
## Legal
328 2 zero_gravi
 
329 59 zero_gravi
This project is released under the [BSD 3-Clause license](https://github.com/stnolting/neorv32/blob/master/LICENSE).
330
No copyright infringement intended.
331
For more information see the [online documentation - _"Proprietary and Legal Notice"_](https://stnolting.github.io/neorv32/#_proprietary_and_legal_notice).
332 11 zero_gravi
Other implied or used projects might have different licensing - see their documentation to get more information.
333
 
334 9 zero_gravi
#### Limitation of Liability for External Links
335
 
336 36 zero_gravi
Our website contains links to the websites of third parties ("external links"). As the
337 9 zero_gravi
content of these websites is not under our control, we cannot assume any liability for
338
such external content. In all cases, the provider of information of the linked websites
339
is liable for the content and accuracy of the information provided. At the point in time
340
when the links were placed, no infringements of the law were recognisable to us. As soon
341
as an infringement of the law becomes known to us, we will immediately remove the
342
link in question.
343
 
344 59 zero_gravi
#### Citing
345 9 zero_gravi
 
346 59 zero_gravi
If you are using the NEORV32 or parts of the project in some kind of publication, please cite it as follows:
347 9 zero_gravi
 
348 59 zero_gravi
> S. Nolting, "The NEORV32 RISC-V Processor", github.com/stnolting/neorv32
349 2 zero_gravi
 
350 56 zero_gravi
[[back to top](#The-NEORV32-RISC-V-Processor)]
351 2 zero_gravi
 
352 32 zero_gravi
--------
353 2 zero_gravi
 
354 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.