Line 20... |
Line 20... |
default toolchain (https://github.com/stnolting/riscv-gcc-prebuilt[prebuilt toolchains are also provided]).
|
default toolchain (https://github.com/stnolting/riscv-gcc-prebuilt[prebuilt toolchains are also provided]).
|
|
|
[TIP]
|
[TIP]
|
Check out the processor's **https://stnolting.github.io/neorv32/ug[online User Guide]**
|
Check out the processor's **https://stnolting.github.io/neorv32/ug[online User Guide]**
|
that provides hands-on tutorials to get you started.
|
that provides hands-on tutorials to get you started.
|
The project's change log is available in https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md[CHANGELOG.md]
|
The project's change log is available in https://github.com/stnolting/neorv32/blob/main/CHANGELOG.md[CHANGELOG.md]
|
in the root directory of the NEORV32 repository. Please also check out the <<_legal>> section.
|
in the root directory of the NEORV32 repository. Please also check out the <<_legal>> section.
|
|
|
|
|
**Structure**
|
**Structure**
|
|
|
Line 52... |
Line 52... |
* fully synchronous design, no latches, no gated clocks
|
* fully synchronous design, no latches, no gated clocks
|
* small hardware footprint and high operating frequency for easy integration
|
* small hardware footprint and high operating frequency for easy integration
|
* **NEORV32 CPU**: 32-bit `rv32i` RISC-V CPU
|
* **NEORV32 CPU**: 32-bit `rv32i` RISC-V CPU
|
** RISC-V compatibility: passes the official architecture tests
|
** RISC-V compatibility: passes the official architecture tests
|
** base architecture + privileged architecture (optional) + ISA extensions (optional)
|
** base architecture + privileged architecture (optional) + ISA extensions (optional)
|
|
** option to add custom RISC-V instructions (as custom ISA extension)
|
** rich set of customization options (ISA extensions, design goal: performance / area (/ energy), ...)
|
** rich set of customization options (ISA extensions, design goal: performance / area (/ energy), ...)
|
** aims to support <<_full_virtualization>> capabilities (CPU _and_ SoC) to increase execution safety
|
** aims to support <<_full_virtualization>> capabilities (CPU _and_ SoC) to increase execution safety
|
** official https://github.com/riscv/riscv-isa-manual/blob/master/marchid.md[RISC-V open source architecture ID]
|
** official https://github.com/riscv/riscv-isa-manual/blob/master/marchid.md[RISC-V open source architecture ID]
|
* **NEORV32 Processor (SoC)**: highly-configurable full-scale microcontroller-like processor system
|
* **NEORV32 Processor (SoC)**: highly-configurable full-scale microcontroller-like processor system
|
** based on the NEORV32 CPU
|
** based on the NEORV32 CPU
|
Line 63... |
Line 64... |
** optional timers and counters (WDT, MTIME)
|
** optional timers and counters (WDT, MTIME)
|
** optional general purpose IO and PWM and native NeoPixel (c) compatible smart LED interface
|
** optional general purpose IO and PWM and native NeoPixel (c) compatible smart LED interface
|
** optional embedded memories / caches for data, instructions and bootloader
|
** optional embedded memories / caches for data, instructions and bootloader
|
** optional external memory interface (Wishbone / AXI4-Lite) and stream link interface (AXI4-Stream) for custom connectivity
|
** optional external memory interface (Wishbone / AXI4-Lite) and stream link interface (AXI4-Stream) for custom connectivity
|
** optional execute in place (XIP) module
|
** optional execute in place (XIP) module
|
** on-chip debugger compatible with OpenOCD and gdb
|
** on-chip debugger compatible with OpenOCD and gdb including hardware trigger module
|
* **Software framework**
|
* **Software framework**
|
** GCC-based toolchain - prebuilt toolchains available; application compilation based on GNU makefiles
|
** GCC-based toolchain - prebuilt toolchains available; application compilation based on GNU makefiles
|
** internal bootloader with serial user interface
|
** internal bootloader with serial user interface
|
** core libraries for high-level usage of the provided functions and peripherals
|
** core libraries for high-level usage of the provided functions and peripherals
|
** runtime environment and several example programs
|
** runtime environment and several example programs
|
Line 76... |
Line 77... |
|
|
[TIP]
|
[TIP]
|
For more in-depth details regarding the feature provided by he hardware see the according sections:
|
For more in-depth details regarding the feature provided by he hardware see the according sections:
|
<<_neorv32_central_processing_unit_cpu>> and <<_neorv32_processor_soc>>.
|
<<_neorv32_central_processing_unit_cpu>> and <<_neorv32_processor_soc>>.
|
|
|
|
**Extensibility and Customization**
|
|
|
|
The NEORV32 processor was designed to ease customization and extensibility and provides several options for adding
|
|
application-specific custom hardware modules and accelerators. The three most common options for adding custom
|
|
on-chip modules are listed below.
|
|
|
|
* <<_processor_external_memory_interface_wishbone_axi4_lite>> for processor-external modules
|
|
* <<_custom_functions_subsystem_cfs>> for tightly-coupled processor-internal co-processors
|
|
* <<_custom_functions_unit_cfu>> for custom RISC-V instructions
|
|
|
|
[TIP]
|
|
A more detailed comparison of the extension/customization options can be found in section
|
|
https://stnolting.github.io/neorv32/ug/#_adding_custom_hardware_modules[Adding Custom Hardware Modules]
|
|
of the user guide.
|
|
|
|
|
|
|
// ####################################################################################################################
|
// ####################################################################################################################
|
:sectnums:
|
:sectnums:
|
=== Project Folder Structure
|
=== Project Folder Structure
|
Line 141... |
Line 157... |
├neorv32_package.vhd - Processor/CPU main VHDL package file
|
├neorv32_package.vhd - Processor/CPU main VHDL package file
|
│
|
│
|
├neorv32_cpu.vhd - NEORV32 CPU top entity
|
├neorv32_cpu.vhd - NEORV32 CPU top entity
|
│├neorv32_cpu_alu.vhd - Arithmetic/logic unit
|
│├neorv32_cpu_alu.vhd - Arithmetic/logic unit
|
││├neorv32_cpu_cp_bitmanip.vhd - Bit-manipulation co-processor (B ext.)
|
││├neorv32_cpu_cp_bitmanip.vhd - Bit-manipulation co-processor (B ext.)
|
|
││├neorv32_cpu_cp_cfu.vhd - Custom functions (instruction) co-processor (Zxcfu ext.)
|
││├neorv32_cpu_cp_fpu.vhd - Floating-point co-processor (Zfinx ext.)
|
││├neorv32_cpu_cp_fpu.vhd - Floating-point co-processor (Zfinx ext.)
|
││├neorv32_cpu_cp_muldiv.vhd - Mul/Div co-processor (M extension)
|
││├neorv32_cpu_cp_muldiv.vhd - Mul/Div co-processor (M extension)
|
││└neorv32_cpu_cp_shifter.vhd - Bit-shift co-processor
|
││└neorv32_cpu_cp_shifter.vhd - Bit-shift co-processor
|
│├neorv32_cpu_bus.vhd - Bus interface + physical memory protection
|
│├neorv32_cpu_bus.vhd - Bus interface + physical memory protection
|
│├neorv32_cpu_control.vhd - CPU control, exception/IRQ system and CSRs
|
│├neorv32_cpu_control.vhd - CPU control, exception/IRQ system and CSRs
|