Line 1374... |
Line 1374... |
|
|
Basically, the processor is a SoC consisting of the NEORV32 CPU, peripheral/IO devices, embedded
|
Basically, the processor is a SoC consisting of the NEORV32 CPU, peripheral/IO devices, embedded
|
memories, an external memory interface and a bus infrastructure to interconnect all units. Additionally, the
|
memories, an external memory interface and a bus infrastructure to interconnect all units. Additionally, the
|
system implements an internal reset generator and a global clock generator/divider.
|
system implements an internal reset generator and a global clock generator/divider.
|
|
|
|
|
**Internal Reset Generator**
|
**Internal Reset Generator**
|
|
|
|
[IMPORTANT]
|
Most processor-internal modules - except for the CPU and the watchdog timer - do not have a dedicated
|
Most processor-internal modules - except for the CPU and the watchdog timer - do not have a dedicated
|
reset signal. However, all devices can be reset by software by clearing the corresponding unit's control
|
reset signal. However, all devices can be reset by software by clearing the corresponding unit's control
|
register. The automatically included application start-up code (`crt0.S`) will perform a software-reset of all
|
register. The automatically included application start-up code (`crt0.S`) will perform a software-reset of all
|
modules to ensure a clean system reset state.
|
modules to ensure a clean system reset state.
|
|
|
The hardware reset signal of the processor can either be
|
The hardware reset signal of the processor can either be triggered via the external reset pin (`rstn_i`, low-active),
|
triggered via the external reset pin (`rstn_i`, low-active) or by the internal watchdog timer (if implemented).
|
by the internal watchdog timer (if implemented) or by the on-chip debugger. The external reset signal `rstn_i`
|
Before the external reset signal is applied to the system, it is extended to have a minimal duration of eight
|
is extended to be active for at least 4 cycles when triggered.
|
clock cycles.
|
|
|
|
**Internal Clock Divider**
|
**Internal Clock Divider**
|
|
|
An internal clock divider generates 8 clock signals derived from the processor's main clock input `clk_i`.
|
An internal clock divider generates 8 clock signals derived from the processor's main clock input `clk_i`.
|
These derived clock signals are not actual _clock signals_. Instead, they are derived from a simple counter and
|
These derived clock signals are not actual _clock signals_. Instead, they are derived from a simple counter and
|
Line 1408... |
Line 1410... |
|=======================
|
|=======================
|
| Prescaler bits: | `0b000` | `0b001` | `0b010` | `0b011` | `0b100` | `0b101` | `0b110` | `0b111`
|
| Prescaler bits: | `0b000` | `0b001` | `0b010` | `0b011` | `0b100` | `0b101` | `0b110` | `0b111`
|
| Resulting clock: | _f/2_ | _f/4_ | _f/8_ | _f/64_ | _f/128_ | _f/1024_| _f/2048_| _f/4096_
|
| Resulting clock: | _f/2_ | _f/4_ | _f/8_ | _f/64_ | _f/128_ | _f/1024_| _f/2048_| _f/4096_
|
|=======================
|
|=======================
|
|
|
|
|
**Peripheral / IO Devices**
|
**Peripheral / IO Devices**
|
|
|
The processor-internal peripheral/IO devices are located at the end of the 32-bit address space at base
|
The processor-internal peripheral/IO devices are located at the end of the 32-bit address space at base
|
address _0xFFFFFE00_. A region of 512 bytes is reserved for this devices. Hence, all peripheral/IO devices are
|
address _0xFFFFFE00_. A region of 512 bytes is reserved for this devices. Hence, all peripheral/IO devices are
|
accessed using a memory-mapped scheme. A special linker script as well as the NEORV32 core software
|
accessed using a memory-mapped scheme. A special linker script as well as the NEORV32 core software
|
Line 1447... |
Line 1450... |
register and register bit accesses.
|
register and register bit accesses.
|
|
|
[TIP]
|
[TIP]
|
A CMSIS-SVD-compatible **System View Description (SVD)** file including all peripherals is available in `sw/svd`.
|
A CMSIS-SVD-compatible **System View Description (SVD)** file including all peripherals is available in `sw/svd`.
|
|
|
|
|
**Interrupts of Processor-Internal Modules**
|
**Interrupts of Processor-Internal Modules**
|
|
|
Most peripheral/IO devices provide some kind of interrupt (for example to signal available incoming data). These
|
Most peripheral/IO devices provide some kind of interrupt (for example to signal available incoming data). These
|
interrupts are entirely mapped to the CPU's <<_custom_fast_interrupt_request_lines>>. Note that all these
|
interrupts are entirely mapped to the CPU's <<_custom_fast_interrupt_request_lines>>. Note that all these
|
interrupt lines are high-active and are permanently triggered until the IRQ-causing condition is resolved.
|
interrupt lines are high-active and are permanently triggered until the IRQ-causing condition is resolved.
|
|
|
|
|
**Nomenclature for the Peripheral / IO Devices Listing**
|
**Nomenclature for the Peripheral / IO Devices Listing**
|
|
|
Each peripheral device chapter features a register map showing accessible control and data registers of the
|
Each peripheral device chapter features a register map showing accessible control and data registers of the
|
according device including the implemented control and status bits. C-language code can directly interact with these
|
according device including the implemented control and status bits. C-language code can directly interact with these
|
registers via pre-defined `struct`. Each IO/peripheral module provides a unique `struct`. All accessible
|
registers via pre-defined `struct`. Each IO/peripheral module provides a unique `struct`. All accessible
|