Line 19... |
Line 19... |
of the CoreMark MCU benchmark and the official RISC-V architecture test suite. RISC-V GCC is used as
|
of the CoreMark MCU benchmark and the official RISC-V architecture test suite. RISC-V GCC is used as
|
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 tutorial to get you started.
|
that provides hands-on tutorials to get you started.
|
|
|
[TIP]
|
|
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/master/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 34... |
Line 32... |
. <<_neorv32_processor_soc>>
|
. <<_neorv32_processor_soc>>
|
. <<_neorv32_central_processing_unit_cpu>>
|
. <<_neorv32_central_processing_unit_cpu>>
|
. <<_software_framework>>
|
. <<_software_framework>>
|
. <<_on_chip_debugger_ocd>>
|
. <<_on_chip_debugger_ocd>>
|
|
|
[TIP]
|
|
Links in this document are <<_overview,highlighted>>.
|
|
|
|
|
|
|
|
|
|
// ####################################################################################################################
|
// ####################################################################################################################
|
:sectnums:
|
:sectnums:
|
Line 133... |
Line 128... |
** optional serial interfaces (UARTs, TWI, SPI)
|
** optional serial interfaces (UARTs, TWI, SPI)
|
** 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
|
** on-chip debugger compatible with OpenOCD and gdb
|
** on-chip debugger compatible with OpenOCD and gdb
|
* **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
|
Line 246... |
Line 242... |
├neorv32_trng.vhd - True random number generator
|
├neorv32_trng.vhd - True random number generator
|
├neorv32_twi.vhd - Two wire serial interface controller
|
├neorv32_twi.vhd - Two wire serial interface controller
|
├neorv32_uart.vhd - Universal async. receiver/transmitter
|
├neorv32_uart.vhd - Universal async. receiver/transmitter
|
├neorv32_wdt.vhd - Watchdog timer
|
├neorv32_wdt.vhd - Watchdog timer
|
├neorv32_wishbone.vhd - External (Wishbone) bus interface
|
├neorv32_wishbone.vhd - External (Wishbone) bus interface
|
|
├neorv32_xip.vhd - Execute in place module
|
├neorv32_xirq.vhd - External interrupt controller
|
├neorv32_xirq.vhd - External interrupt controller
|
│
|
│
|
├mem/neorv32_dmem.default.vhd - _Default_ data memory (architecture-only)
|
├mem/neorv32_dmem.default.vhd - _Default_ data memory (architecture-only)
|
└mem/neorv32_imem.default.vhd - _Default_ instruction memory (architecture-only)
|
└mem/neorv32_imem.default.vhd - _Default_ instruction memory (architecture-only)
|
...................................
|
...................................
|
Line 274... |
Line 271... |
==== CPU
|
==== CPU
|
|
|
[cols="<2,<8"]
|
[cols="<2,<8"]
|
[grid="topbot"]
|
[grid="topbot"]
|
|=======================
|
|=======================
|
| Hardware version: | `1.5.7.10`
|
|
| Top entity: | `rtl/core/neorv32_cpu.vhd`
|
| Top entity: | `rtl/core/neorv32_cpu.vhd`
|
| FPGA: | Intel Cyclone IV E `EP4CE22F17C6`
|
| FPGA: | Intel Cyclone IV E `EP4CE22F17C6`
|
| Toolchain: | Quartus Prime 20.1.0
|
| Toolchain: | Quartus Prime 20.1.0
|
|=======================
|
|=======================
|
|
|
Line 308... |
Line 304... |
==== Processor Modules
|
==== Processor Modules
|
|
|
[cols="<2,<8"]
|
[cols="<2,<8"]
|
[grid="topbot"]
|
[grid="topbot"]
|
|=======================
|
|=======================
|
| Hardware version: | `1.5.7.15`
|
|
| Top entity: | `rtl/core/neorv32_top.vhd`
|
| Top entity: | `rtl/core/neorv32_top.vhd`
|
| FPGA: | Intel Cyclone IV E `EP4CE22F17C6`
|
| FPGA: | Intel Cyclone IV E `EP4CE22F17C6`
|
| Toolchain: | Quartus Prime 20.1.0
|
| Toolchain: | Quartus Prime 20.1.0
|
|=======================
|
|=======================
|
|
|
Line 321... |
Line 316... |
[options="header",grid="rows"]
|
[options="header",grid="rows"]
|
|=======================
|
|=======================
|
| Module | Description | LEs | FFs | MEM bits | DSPs
|
| Module | Description | LEs | FFs | MEM bits | DSPs
|
| Boot ROM | Bootloader ROM (4kB) | 2 | 1 | 32768 | 0
|
| Boot ROM | Bootloader ROM (4kB) | 2 | 1 | 32768 | 0
|
| **BUSKEEPER** | Processor-internal bus monitor | 9 | 6 | 0 | 0
|
| **BUSKEEPER** | Processor-internal bus monitor | 9 | 6 | 0 | 0
|
| **BUSSWITCH** | Bus mux for CPU instr. and data interface | 63 | 8 | 0 | 0
|
| **BUSSWITCH** | Bus multiplexer for CPU instr. and data interface | 63 | 8 | 0 | 0
|
| CFS | Custom functions subsystemfootnote:[Resource utilization depends on actually implemented custom functionality.] | - | - | - | -
|
| CFS | Custom functions subsystemfootnote:[Resource utilization depends on actually implemented custom functionality.] | - | - | - | -
|
| DMEM | Processor-internal data memory (8kB) | 19 | 2 | 65536 | 0
|
| DMEM | Processor-internal data memory (8kB) | 19 | 2 | 65536 | 0
|
| DM | On-chip debugger - debug module | 493 | 240 | 0 | 0
|
| DM | On-chip debugger - debug module | 493 | 240 | 0 | 0
|
| DTM | On-chip debugger - debug transfer module (JTAG) | 254 | 218 | 0 | 0
|
| DTM | On-chip debugger - debug transfer module (JTAG) | 254 | 218 | 0 | 0
|
| GPIO | General purpose input/output ports | 134 | 161 | 0 | 0
|
| GPIO | General purpose input/output ports | 134 | 161 | 0 | 0
|
Line 342... |
Line 337... |
| UART0/1 | Universal asynchronous receiver/transmitter 0/1 | 183 | 132 | 0 | 0
|
| UART0/1 | Universal asynchronous receiver/transmitter 0/1 | 183 | 132 | 0 | 0
|
| WDT | Watchdog timer | 53 | 43 | 0 | 0
|
| WDT | Watchdog timer | 53 | 43 | 0 | 0
|
| WISHBONE | External memory interface | 114 | 110 | 0 | 0
|
| WISHBONE | External memory interface | 114 | 110 | 0 | 0
|
| XIRQ | External interrupt controller (32 channels) | 241 | 201 | 0 | 0
|
| XIRQ | External interrupt controller (32 channels) | 241 | 201 | 0 | 0
|
| GPTMR | General Purpose Timer | 153 | 107 | 0 | 0
|
| GPTMR | General Purpose Timer | 153 | 107 | 0 | 0
|
|
| XIP | Execute in place module | 305 | 243 | 0 | 0
|
|=======================
|
|=======================
|
|
|
|
|
|
|
:sectnums:
|
:sectnums:
|