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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [README.md] - Diff between revs 4 and 6

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 4 Rev 6
Line 54... Line 54...
 * The processor has to fit in a Lattice iCE40 UltraPlus 5k FPGA running at 20+ MHz.
 * The processor has to fit in a Lattice iCE40 UltraPlus 5k FPGA running at 20+ MHz.
 
 
 
 
### Status
### Status
 
 
![processor status](https://img.shields.io/badge/processor%20status-beta-orange)
The processor is synthesizable (tested with Intel Quartus Prime, Xilinx Vivado and Lattice Radiant/LSE) and can successfully execute
 
all the [provided example programs](https://github.com/stnolting/neorv32/tree/master/sw/example) including the CoreMark benchmark.
 
 
 
The processor passes the `rv32i`, `rv32im`, `rv32imc` and `rv32Zicsr` *RISC-V compliance tests*.
 
 
 
[RISC-V compliance test](https://github.com/stnolting/neorv32_compliance_test):
 
[![Build Status](https://travis-ci.com/stnolting/neorv32_riscv_compliance.svg?branch=master)](https://travis-ci.com/stnolting/neorv32_riscv_compliance)
 
 
The processor is synthesizable (tested with Intel Quartus Prime and Lattice Radiant/Synplify) and can successfully execute all the [provided example programs](https://github.com/stnolting/neorv32/tree/master/sw/example).
 
 
 
## Features
## Features
 
 
![neorv32 Overview](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_overview.png)
![neorv32 Overview](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_overview.png)
 
 
Line 71... Line 76...
  - Application compilation based on [GNU makefiles](https://github.com/stnolting/neorv32/blob/master/sw/example/blink_led/makefile)
  - Application compilation based on [GNU makefiles](https://github.com/stnolting/neorv32/blob/master/sw/example/blink_led/makefile)
  - [Doxygen-based](https://github.com/stnolting/neorv32/blob/master/docs/doxygen_makefile_sw) documentation of the software framework
  - [Doxygen-based](https://github.com/stnolting/neorv32/blob/master/docs/doxygen_makefile_sw) documentation of the software framework
  - Completely described in behavioral, platform-independent VHDL – no primitives, macros, etc.
  - Completely described in behavioral, platform-independent VHDL – no primitives, macros, etc.
  - Fully synchronous design, no latches, no gated clocks
  - Fully synchronous design, no latches, no gated clocks
  - Small hardware footprint and high operating frequency
  - Small hardware footprint and high operating frequency
  - Highly customizable processor configuration
  - Customizable processor configuration
  - Optional processor-internal data and instruction memories (DMEM/IMEM)
  - Optional processor-internal data and instruction memories (DMEM/IMEM)
  - Optional internal bootloader with UART console and automatic SPI flash boot option
  - Optional internal bootloader with UART console and automatic SPI flash boot option
  - Optional machine system timer (MTIME), RISC-V-compliant
  - Optional machine system timer (MTIME), RISC-V-compliant
  - Optional universal asynchronous receiver and transmitter (UART)
  - Optional universal asynchronous receiver and transmitter (UART)
  - Optional 8/16/24/32-bit serial peripheral interface master (SPI) with 8 dedicated chip select lines
  - Optional 8/16/24/32-bit serial peripheral interface master (SPI) with 8 dedicated chip select lines
Line 133... Line 138...
    * Machine software instrrupt
    * Machine software instrrupt
    * Machine timer interrupt (via `MTIME` unit)
    * Machine timer interrupt (via `MTIME` unit)
    * Machine external interrupt (via `CLIC` unit)
    * Machine external interrupt (via `CLIC` unit)
 
 
**General**:
**General**:
  * No hardware support of unaligned accesses (except for instructions in `C` extension that still have to be aligned on 16-bit boundaries)
  * No hardware support of unaligned accesses - they will trigger and exception
  * Multi-cycle in-order instruction execution
  * Two stages in-order pipeline (FETCH, EXECUTE); each stage uses a multi-cycle execution
 
 
More information including a detailed list of the available CSRs can be found in
More information including a detailed list of the available CSRs can be found in
the [![NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/PDF_32.png) NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).
the [![NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/PDF_32.png) NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).
 
 
 
 
### To-Do / Wish List
### To-Do / Wish List
 
 
- Testing, testing and even more testing
- No exception is triggered in `E`-mode when using reg >x15 yet
- Port official [RISC-V compliance test](https://github.com/riscv/riscv-compliance)
 
- Port Dhrystone benchmark
- Port Dhrystone benchmark
- Implement atomic extensions (`A` extension)
- Implement atomic operations (`A` extension)
- Implement co-processor for single-precision floating-point (`F` extension)
- Implement `Zifence` extension
 
- Implement co-processor for single-precision floating-point operations (`F` extension)
- Implement user mode (`U` extension)
- Implement user mode (`U` extension)
- Make a 64-bit branch
- Make a 64-bit branch
- Maybe port an RTOS (like [freeRTOS](https://www.freertos.org/) or [RIOT](https://www.riot-os.org/))
- Maybe port an RTOS (like [freeRTOS](https://www.freertos.org/) or [RIOT](https://www.riot-os.org/))
 
 
 
 
Line 160... Line 165...
This chapter shows exemplary implementation results of the NEORV32 processor for an **Intel Cyclone IV EP4CE22F17C6N FPGA** on
This chapter shows exemplary implementation results of the NEORV32 processor for an **Intel Cyclone IV EP4CE22F17C6N FPGA** on
a DE0-nano board. The design was synthesized using **Intel Quartus Prime Lite 19.1** ("balanced implementation"). The timing
a DE0-nano board. The design was synthesized using **Intel Quartus Prime Lite 19.1** ("balanced implementation"). The timing
information is derived from the Timing Analyzer / Slow 1200mV 0C Model. If not otherwise specified, the default configuration
information is derived from the Timing Analyzer / Slow 1200mV 0C Model. If not otherwise specified, the default configuration
of the processor's generics is assumed. No constraints were used.
of the processor's generics is assumed. No constraints were used.
 
 
Results generated for hardware version: `0.0.2.3`
Results generated for hardware version: `1.0.0.0`
 
 
### CPU
### CPU
 
 
| CPU Configuration   | LEs        | FFs      | Memory bits | DSPs   | f_max   |
| CPU Configuration   | LEs        | FFs      | Memory bits | DSPs   | f_max   |
|:--------------------|:----------:|:--------:|:-----------:|:------:|:-------:|
|:--------------------|:----------:|:--------:|:-----------:|:------:|:-------:|
| `rv32i`             |  852  (4%) | 326 (1%) |  2048 (>1%) | 0 (0%) | 111 MHz |
| `rv32i`             |       1027 |      474 |       2048  | 0 (0%) | 111 MHz |
| `rv32i` + `Zicsr`   | 1488  (7%) | 694 (3%) |  2048 (>1%) | 0 (0%) | 107 MHz |
| `rv32i` + `Zicsr`   |       1721 |      868 |       2048  | 0 (0%) | 104 MHz |
| `rv32im` + `Zicsr`  | 2057  (9%) | 941 (4%) |  2048 (>1%) | 0 (0%) | 102 MHz |
| `rv32im` + `Zicsr`  |       2298 |     1115 |       2048  | 0 (0%) | 103 MHz |
| `rv32imc` + `Zicsr` | 2209 (10%) | 958 (4%) |  2048 (>1%) | 0 (0%) | 102 MHz |
| `rv32imc` + `Zicsr` |       2557 |     1138 |       2048  | 0 (0%) | 103 MHz |
| `rv32e`             |  848  (4%) | 326 (1%) |  1024 (>1%) | 0 (0%) | 111 MHz |
| `rv32emc` + `Zicsr` |       2342 |     1005 |       1024  | 0 (0%) | 100 MHz |
| `rv32e` + `Zicsr`   | 1316  (6%) | 594 (3%) |  1024 (>1%) | 0 (0%) | 106 MHz |
 
| `rv32em` + `Zicsr`  | 1879  (8%) | 841 (4%) |  1024 (>1%) | 0 (0%) | 101 MHz |
 
| `rv32emc` + `Zicsr` | 2065  (9%) | 858 (4%) |  1024 (>1%) | 0 (0%) | 100 MHz |
 
 
 
### Peripherals / Others
### Processor-Internal Peripherals and Memories
 
 
| Module   | Description                                     | LEs | FFs | Memory bits | DSPs |
| Module   | Description                                     | LEs | FFs | Memory bits | DSPs |
|:---------|:------------------------------------------------|:---:|:---:|:-----------:|:----:|
|:---------|:------------------------------------------------|:---:|:---:|:-----------:|:----:|
| BOOT ROM | Bootloader ROM (4kB)                            |   3 |   1 |      32 768 |    0 |
| BOOT ROM | Bootloader ROM (4kB)                            |   3 |   1 |      32 768 |    0 |
| DEVNULL  | Dummy device                                    |   2 |   1 |           0 |    0 |
| DEVNULL  | Dummy device                                    |   3 |   1 |           0 |    0 |
| DMEM     | Processor-internal data memory (8kB)            |  12 |   2 |      65 536 |    0 |
| DMEM     | Processor-internal data memory (8kB)            |  12 |   2 |      65 536 |    0 |
| GPIO     | General purpose input/output ports              |  37 |  33 |           0 |    0 |
| GPIO     | General purpose input/output ports              |  38 |  33 |           0 |    0 |
| IMEM     | Processor-internal instruction memory (16kb)    |   7 |   2 |     131 072 |    0 |
| IMEM     | Processor-internal instruction memory (16kb)    |   7 |   2 |     131 072 |    0 |
| MTIME    | Machine system timer                            | 369 | 168 |           0 |    0 |
| MTIME    | Machine system timer                            | 270 | 167 |           0 |    0 |
| PWM      | Pulse-width modulation controller               |  77 |  69 |           0 |    0 |
| PWM      | Pulse-width modulation controller               |  76 |  69 |           0 |    0 |
| SPI      | Serial peripheral interface                     | 198 | 125 |           0 |    0 |
| SPI      | Serial peripheral interface                     | 206 | 125 |           0 |    0 |
| TRNG     | True random number generator                    | 103 |  93 |           0 |    0 |
| TRNG     | True random number generator                    | 104 |  93 |           0 |    0 |
| TWI      | Two-wire interface                              |  76 |  44 |           0 |    0 |
| TWI      | Two-wire interface                              |  78 |  44 |           0 |    0 |
| UART     | Universal asynchronous receiver/transmitter     | 154 | 108 |           0 |    0 |
| UART     | Universal asynchronous receiver/transmitter     | 151 | 108 |           0 |    0 |
| WDT      | Watchdog timer                                  |  57 |  45 |           0 |    0 |
| WDT      | Watchdog timer                                  |  57 |  45 |           0 |    0 |
 
 
 
### CPU + Peripheral
 
 
 
The following table shows the implementation results for an _Intel Cyclone IV EP4CE22F17C6N_ FPGA.
 
The design was synthesized using Intel Quartus Prime Lite 19.1 (“balanced implementation”).
 
IMEM uses 16kB and DMEM uses 8kB memory space.
 
 
 
| CPU Configuration   | LEs        | REGs      | DSPs   | Memory Bits  | f_max   |
 
|:--------------------|:----------:|:---------:|:------:|:------------:|:-------:|
 
| `rv32imc` + `Zicsr` | 3724 (17%) | 1899 (9%) | 0 (0%) | 231424 (38%) | 103 MHz |
 
 
 
 
### Lattice iCE40 UltraPlus 5k
### Lattice iCE40 UltraPlus 5k
 
 
The following table shows the hardware utilization for a [iCE40 UP5K](http://www.latticesemi.com/en/Products/FPGAandCPLD/iCE40UltraPlus) FPGA.
The following table shows the hardware utilization for a [iCE40 UP5K](http://www.latticesemi.com/en/Products/FPGAandCPLD/iCE40UltraPlus) FPGA.
The setup uses all provided peripherals, all CPU extensions (except for the `E` extension), no external memory interface and internal
The setup uses all provided peripherals, all CPU extensions (except for the `E` extension), no external memory interface and internal
Line 203... Line 215...
[`rtl/fpga_specific`](https://github.com/stnolting/neorv32/blob/master/rtl/fpga_specific/lattice_ice40up) folder.
[`rtl/fpga_specific`](https://github.com/stnolting/neorv32/blob/master/rtl/fpga_specific/lattice_ice40up) folder.
 
 
Place & route reports generated with **Lattice Radiant 2.1** using Lattice LSE. The clock frequency
Place & route reports generated with **Lattice Radiant 2.1** using Lattice LSE. The clock frequency
is constrained and generated via the PLL from the internal HF oscillator running at 12 MHz.
is constrained and generated via the PLL from the internal HF oscillator running at 12 MHz.
 
 
Results generated for hardware version: `0.0.2.5`
| CPU Configuration   | LUTs       | REGs       | DSPs   | SPRAM    | EBR      | f         |
 
|:--------------------|:----------:|:----------:|:------:|:--------:|:--------:|:---------:|
| CPU Configuration   | Slices     | LUT        | REG        | DSPs   | SPRAM    | EBR      | f         |
| `rv32imc` + `Zicsr` | 4985 (94%) | 1982 (38%) | 0 (0%) | 4 (100%) | 12 (40%) | 20.25 MHz |
|:--------------------|:----------:|:----------:|:----------:|:------:|:--------:|:--------:|:---------:|
 
| `rv32imc` + `Zicsr` | 2405 (91%) | 4642 (87%) | 1810 (34%) | 0 (0%) | 4 (100%) | 12 (40%) | 20.25 MHz |
 
 
 
 
 
## Performance
## Performance
 
 
### CoreMark Benchmark
### CoreMark Benchmark
 
 
The [CoreMark CPU benchmark](https://www.eembc.org/coremark) was executed on the NEORV32 and is available in the
The [CoreMark CPU benchmark](https://www.eembc.org/coremark) was executed on the NEORV32 and is available in the
[sw/example/coremark](https://github.com/stnolting/neorv32/blob/master/sw/example/coremark) project folder. This benchmark
[sw/example/coremark](https://github.com/stnolting/neorv32/blob/master/sw/example/coremark) project folder. This benchmark
tests the capabilities of a CPU itself rather than the functions provided by the whole system / SoC.
tests the capabilities of a CPU itself rather than the functions provided by the whole system / SoC.
 
 
Results generated for hardware version: `0.0.2.3`
Results generated for hardware version: `1.0.0.0`
 
 
~~~
~~~
**Configuration**
**Configuration**
Hardware:         32kB IMEM, 16kb DMEM, 100MHz clock
Hardware:         32kB IMEM, 16kb DMEM, 100MHz clock
CoreMark:         2000 iterations, MEM_METHOD is MEM_STACK
CoreMark:         2000 iterations, MEM_METHOD is MEM_STACK
Line 230... Line 240...
Used peripherals: MTIME for time measurement, UART for printing the results
Used peripherals: MTIME for time measurement, UART for printing the results
~~~
~~~
 
 
| __Configuration__ | __Optimization__ | __Executable Size__ | __CoreMark Score__ | __CoreMarks/MHz__ |
| __Configuration__ | __Optimization__ | __Executable Size__ | __CoreMark Score__ | __CoreMarks/MHz__ |
|:------------------|:----------------:|:-------------------:|:------------------:|:-----------------:|
|:------------------|:----------------:|:-------------------:|:------------------:|:-----------------:|
| `rv32i`           |      `-Os`       |     17 944 bytes    |        23.26       |       0.232       |
| `rv32i`           |      `-Os`       |     18 044 bytes    |       21.98        |       0.21        |
| `rv32i`           |      `-O2`       |     20 264 bytes    |        25.64       |       0.256       |
| `rv32i`           |      `-O2`       |     20 388 bytes    |        25          |       0.25        |
| `rv32im`          |      `-Os`       |     16 880 bytes    |        40.81       |       0.408       |
| `rv32im`          |      `-Os`       |     16 980 bytes    |        40          |       0.40        |
| `rv32im`          |      `-O2`       |     19 312 bytes    |        47.62       |       0.476       |
| `rv32im`          |      `-O2`       |     19 436 bytes    |       51.28        |       0.51        |
| `rv32imc`         |      `-Os`       |     13 000 bytes    |        32.78       |       0.327       |
| `rv32imc`         |      `-Os`       |     13 076 bytes    |       39.22        |       0.39        |
| `rv32imc`         |      `-O2`       |     15 004 bytes    |        37.04       |       0.370       |
| `rv32imc`         |      `-O2`       |     15 208 bytes    |        50          |       0.50        |
 
 
 
 
### Instruction Cycles
### Instruction Cycles
 
 
The NEORV32 CPU is based on a multi-cycle architecture. Each instruction is executed in a sequence of several
The NEORV32 CPU is based on a multi-cycle architecture. Each instruction is executed in a sequence of several
Line 248... Line 258...
CPU extensions.
CPU extensions.
 
 
Please note that the CPU-internal shifter (e.g. for the `SLL` instruction) as well as the multiplier and divider of the
Please note that the CPU-internal shifter (e.g. for the `SLL` instruction) as well as the multiplier and divider of the
`M` extension use a bit-serial approach and require several cycles for completion.
`M` extension use a bit-serial approach and require several cycles for completion.
 
 
The following table shows the performance results for successfully (!) running 2000 CoreMark
The following table shows the performance results for successfully running 2000 CoreMark
iterations. The average CPI is computed by dividing the total number of required clock cycles (all of CoreMark
iterations. The average CPI is computed by dividing the total number of required clock cycles (all of CoreMark
– not only the timed core) by the number of executed instructions (`instret[h]` CSRs). The executables
– not only the timed core) by the number of executed instructions (`instret[h]` CSRs). The executables
were generated using optimization `-O2`.
were generated using optimization `-O2`.
 
 
| CPU / Toolchain Config. | Required Clock Cycles | Executed Instructions | Average CPI |
| CPU / Toolchain Config. | Required Clock Cycles | Executed Instructions | Average CPI |
|:------------------------|----------------------:|----------------------:|:-----------:|
|:------------------------|----------------------:|----------------------:|:-----------:|
| `rv32i`                 |        10 385 023 697 |         1 949 310 506 |     5.3     |
| `rv32i`                 |        19 355 607 369 |         2 995 064 579 |     6.5     |
| `rv32im`                |         6 276 943 488 |           995 011 883 |     6.3     |
| `rv32im`                |         5 809 384 583 |           867 377 291 |     6.7     |
| `rv32imc`               |         7 340 734 652 |           934 952 588 |     7.6     |
| `rv32imc`               |         5 560 220 723 |           825 898 407 |     6.7     |
 
 
 
 
### Evaluation
 
 
 
Based on the provided performance measurement and the hardware utilization for the
 
different CPU configurations, the following configurations are suggested:
 
 
 
 
 
| Design Goal                    | NEORV32 CPU Config. |
 
|:-------------------------------|:--------------------|
 
| Highest performance:           | `rv32im`            |
 
| Lowest memory requirements:    | `rv32imc`           |
 
| Lowest hardware requirements*: | `rv32ec`            |
 
 
 
*) Including on-chip memory hardware requirements.
 
 
 
 
 
 
 
## Top Entity
## Top Entity
 
 
Line 292... Line 287...
  generic (
  generic (
    -- General --
    -- General --
    CLOCK_FREQUENCY           : natural := 0;       -- clock frequency of clk_i in Hz
    CLOCK_FREQUENCY           : natural := 0;       -- clock frequency of clk_i in Hz
    HART_ID                   : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom hardware thread ID
    HART_ID                   : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom hardware thread ID
    BOOTLOADER_USE            : boolean := true;    -- implement processor-internal bootloader?
    BOOTLOADER_USE            : boolean := true;    -- implement processor-internal bootloader?
 
    CSR_COUNTERS_USE          : boolean := true;   -- implement RISC-V perf. counters ([m]instret[h], [m]cycle[h], time[h])?
    -- RISC-V CPU Extensions --
    -- RISC-V CPU Extensions --
    CPU_EXTENSION_RISCV_C     : boolean := false;   -- implement compressed extension?
    CPU_EXTENSION_RISCV_C     : boolean := false;   -- implement compressed extension?
    CPU_EXTENSION_RISCV_E     : boolean := false;   -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_E     : boolean := false;   -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_M     : boolean := false;   -- implement muld/div extension?
    CPU_EXTENSION_RISCV_M     : boolean := false;   -- implement muld/div extension?
    CPU_EXTENSION_RISCV_Zicsr : boolean := true;    -- implement CSR system?
    CPU_EXTENSION_RISCV_Zicsr : boolean := true;    -- implement CSR system?
Line 345... Line 341...
    gpio_i       : in  std_ulogic_vector(15 downto 0) := (others => '0'); -- parallel input
    gpio_i       : in  std_ulogic_vector(15 downto 0) := (others => '0'); -- parallel input
    -- UART (available if IO_UART_USE = true) --
    -- UART (available if IO_UART_USE = true) --
    uart_txd_o   : out std_ulogic; -- UART send data
    uart_txd_o   : out std_ulogic; -- UART send data
    uart_rxd_i   : in  std_ulogic := '0'; -- UART receive data
    uart_rxd_i   : in  std_ulogic := '0'; -- UART receive data
    -- SPI (available if IO_SPI_USE = true) --
    -- SPI (available if IO_SPI_USE = true) --
    spi_sclk_o   : out std_ulogic; -- serial clock line
    spi_sck_o    : out std_ulogic; -- serial clock line
    spi_mosi_o   : out std_ulogic; -- serial data line out
    spi_sdo_o    : out std_ulogic; -- serial data line out
    spi_miso_i   : in  std_ulogic := '0'; -- serial data line in
    spi_sdi_i    : in  std_ulogic := '0'; -- serial data line in
    spi_csn_o    : out std_ulogic_vector(07 downto 0); -- SPI CS
    spi_csn_o    : out std_ulogic_vector(07 downto 0); -- SPI CS
    -- TWI (available if IO_TWI_USE = true) --
    -- TWI (available if IO_TWI_USE = true) --
    twi_sda_io   : inout std_logic := 'H'; -- twi serial data line
    twi_sda_io   : inout std_logic := 'H'; -- twi serial data line
    twi_scl_io   : inout std_logic := 'H'; -- twi serial clock line
    twi_scl_io   : inout std_logic := 'H'; -- twi serial clock line
    -- PWM (available if IO_PWM_USE = true) --
    -- PWM (available if IO_PWM_USE = true) --
Line 410... Line 406...
Now its time to get the most recent version the NEORV32 Processor project from GitHub. Clone the NEORV32 repository using
Now its time to get the most recent version the NEORV32 Processor project from GitHub. Clone the NEORV32 repository using
`git` from the command line (suggested for easy project updates via `git pull`):
`git` from the command line (suggested for easy project updates via `git pull`):
 
 
    $ git clone https://github.com/stnolting/neorv32.git
    $ git clone https://github.com/stnolting/neorv32.git
 
 
Create a new HW project with your FPGA synthesis tool of choice. Add all files from the [`rtl/core`](https://github.com/stnolting/neorv32/blob/master/rtl)
Create a new HW project with your FPGA design tool of choice. Add all files from the [`rtl/core`](https://github.com/stnolting/neorv32/blob/master/rtl)
folder to this project and add them to a **new library** called `neorv32`.
folder to this project and add them to a **new library** called `neorv32`.
 
 
You can either instantiate the [processor's top entity](https://github.com/stnolting/neorv32#top-entity) in you own project, or you
You can either instantiate the [processor's top entity](https://github.com/stnolting/neorv32#top-entity) in you own project, or you
can use a simple [test setup](https://github.com/stnolting/neorv32/blob/master/rtl/top_templates/neorv32_test_setup.vhd) as top entity. This test
can use a simple [test setup](https://github.com/stnolting/neorv32/blob/master/rtl/top_templates/neorv32_test_setup.vhd) as top entity. This test
setup instantiates the processor, implements most of the peripherals and the basic ISA. Only the UART, clock, reset and some GPIO output sginals are
setup instantiates the processor, implements most of the peripherals and the basic ISA. Only the UART, clock, reset and some GPIO output sginals are
Line 462... Line 458...
- No transmission / flow control protocol (raw bytes only)
- No transmission / flow control protocol (raw bytes only)
- Newline on `\r\n` (carriage return & newline)
- Newline on `\r\n` (carriage return & newline)
 
 
Use the bootloader console to upload and execute your application image.
Use the bootloader console to upload and execute your application image.
 
 
```
 
  << NEORV32 Bootloader >>
 
 
 
  BLDV: Jun 22 2020
 
  HWV:  0.0.2.3
 
  CLK:  0x0134FD90 Hz
 
  MISA: 0x42801104
 
  CONF: 0x01FF0015
 
  IMEM: 0x00010000 bytes @ 0x00000000
 
  DMEM: 0x00010000 bytes @ 0x80000000
 
 
 
  Autoboot in 8s. Press key to abort.
 
  Aborted.
 
 
 
  Available commands:
 
  h: Help
 
  r: Restart
 
  u: Upload
 
  s: Store to flash
 
  l: Load from flash
 
  e: Execute
 
  CMD:>
 
```
 
 
 
Going further: Take a look at the [![NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/PDF_32.png) NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).
Going further: Take a look at the [![NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/PDF_32.png) NEORV32 datasheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).
 
 
 
 
 
 
## Contact
## Contact
Line 510... Line 482...
 
 
 
 
## Legal
## Legal
 
 
This is a hobby project released under the BSD 3-Clause license. No copyright infringement intended.
This is a hobby project released under the BSD 3-Clause license. No copyright infringement intended.
 
Other implied/used projects might have different licensing - see their documentation to get more information.
 
 
**BSD 3-Clause License**
**BSD 3-Clause License**
 
 
Copyright (c) 2020, Stephan Nolting. All rights reserved.
Copyright (c) 2020, Stephan Nolting. All rights reserved.
 
 
Line 559... Line 532...
![Open Source Hardware Logo https://www.oshwa.org](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/oshw_logo.png)
![Open Source Hardware Logo https://www.oshwa.org](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/oshw_logo.png)
 
 
This project is not affiliated with or endorsed by the Open Source Initiative (https://www.oshwa.org / https://opensource.org).
This project is not affiliated with or endorsed by the Open Source Initiative (https://www.oshwa.org / https://opensource.org).
 
 
 
 
Made with :heart: in Hannover, Germany.
Made with :coffee: in Hannover, Germany.
Made with :coffee: in Hannover, Germany.
Made with :coffee: in Hannover, Germany.

powered by: WebSVN 2.1.0

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