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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc.adoc] - Diff between revs 72 and 73

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

Rev 72 Rev 73
Line 488... Line 488...
 
 
[cols="4,4,2"]
[cols="4,4,2"]
[frame="all",grid="none"]
[frame="all",grid="none"]
|======
|======
| **PMP_NUM_REGIONS** | _natural_ | 0
| **PMP_NUM_REGIONS** | _natural_ | 0
3+| Total number of implemented protections regions (0..64). If this generics is zero no physical memory
3+| Total number of implemented protection regions (0..16). If this generics is zero no physical memory
protection logic will be implemented at all.
protection logic will be implemented at all.
|======
|======
 
 
 
 
:sectnums!:
:sectnums!:
===== _PMP_MIN_GRANULARITY_
===== _PMP_MIN_GRANULARITY_
 
 
[cols="4,4,2"]
[cols="4,4,2"]
[frame="all",grid="none"]
[frame="all",grid="none"]
|======
|======
| **PMP_MIN_GRANULARITY** | _natural_ | 64*1024
| **PMP_MIN_GRANULARITY** | _natural_ | 4
3+| Minimal region granularity in bytes. Has to be a power of two. Has to be at least 8 bytes.
3+| Minimal region granularity in bytes. Has to be a power of two and has to be at least 4 bytes. A larger granularity
 
will reduce hardware utilization and impact on critical path but will also reduce the minimal region size.
|======
|======
 
 
 
 
// ####################################################################################################################
// ####################################################################################################################
:sectnums:
:sectnums:
Line 1099... Line 1100...
|=======================
|=======================
 
 
.Trigger type
.Trigger type
[IMPORTANT]
[IMPORTANT]
The fast interrupt request channels become pending after being triggering by **a rising edge**. A pending FIRQ has to
The fast interrupt request channels become pending after being triggering by **a rising edge**. A pending FIRQ has to
be explicitly cleared by setting the according <<_mip>> CSR bit.
be explicitly cleared by writing zero to the according <<_mip>> CSR bit.
 
 
 
 
:sectnums:
:sectnums:
==== Platform External Interrupts
==== Platform External Interrupts
 
 
Line 1158... Line 1159...
|=======================
|=======================
 
 
.Trigger type
.Trigger type
[IMPORTANT]
[IMPORTANT]
The fast interrupt request channels become pending after being triggering by **a rising edge**. A pending FIRQ has to
The fast interrupt request channels become pending after being triggering by **a rising edge**. A pending FIRQ has to
be explicitly cleared by setting the according <<_mip>> CSR bit.
be explicitly cleared by writing zero to the according <<_mip>> CSR bit.
 
 
 
 
 
 
 
 
// ####################################################################################################################
// ####################################################################################################################
Line 1245... Line 1246...
applications - even if the bootloader or all IO devices are not implemented - without modifying the core's
applications - even if the bootloader or all IO devices are not implemented - without modifying the core's
hardware sources.
hardware sources.
 
 
 
 
:sectnums:
:sectnums:
==== Physical Memory Attributes
 
 
 
The processor setup defines fixed attributes for the four processor-internal address space regions.
 
Accessing a memory region in a way that violates any of these attributes will raise an according
 
access exception..
 
 
 
* `r` - read access (from CPU data access interface, "loads")
 
* `w` - write access (from CPU data access interface, "stores")
 
* `x` - execute access (from CPU instruction fetch interface)
 
* `a` - atomic access (from CPU data access interface)
 
* `8` - byte (8-bit)-accessible (when writing)
 
* `16` - half-word (16-bit)-accessible (when writing)
 
* `32` - word (32-bit)-accessible (when writing)
 
 
 
[NOTE]
 
Read accesses (loads and instruction fetches) can always access data in
 
word, half-word (for instruction fetch only if `C` extension is enabled)
 
and byte (not for instruction fetch) quantities (requiring an accordingly aligned address).
 
 
 
[TIP]
 
The following table shows the _default hardware-defined_ physical memory attributes of each main address space region.
 
Additional user-defined attributes (for example certain read/write/execute rights for specific address space regions) can be
 
provided using the RISC-V <<_machine_physical_memory_protection_csrs>>.
 
 
 
[cols="^1,^2,^2,^3,^2"]
 
[options="header",grid="rows"]
 
|=======================
 
| # | Region                | Base address | Size        | Attributes
 
| 5 | IO/peripheral devices | 0xfffffe00   | 512 bytes   | `r/w/a/32`
 
| 4 | On-chip debugger      | 0xfffff800   | 512 bytes   | `r/w/x/32`
 
| 3 | Bootloader ROM        | 0xffff0000   | up to 32kB  | `r/x/a`
 
| 2 | DMEM                  | 0x80000000   | up to "2GB" | `r/w/x/a/8/16/32`
 
| 1 | IMEM                  | 0x00000000   | up to 2GB   | `r/w/x/a/8/16/32`
 
|=======================
 
 
 
 
 
:sectnums:
 
==== Memory Configuration
==== Memory Configuration
 
 
The NEORV32 Processor was designed to provide maximum flexibility for the memory configuration.
The NEORV32 Processor was designed to provide maximum flexibility for the memory configuration.
The processor can populate the _instruction address space_ and/or the _data address space_ with **internal memories**
The processor can populate the _instruction address space_ and/or the _data address space_ with **internal memories**
for instructions (IMEM) and data (DMEM). Processor **external memories** can be used as an _alternative_ or even _in combination_ with
for instructions (IMEM) and data (DMEM). Processor **external memories** can be used as an _alternative_ or even _in combination_ with
Line 1451... Line 1415...
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
library abstract the specific memory layout for the user.
library abstract the specific memory layout for the user.
 
 
 
.Address Space Mapping
[IMPORTANT]
[IMPORTANT]
The base address of each component/module has to be aligned to the
The base address of each component/module has to be aligned to the
total size of the module's occupied address space! The occupied address space
total size of the module's occupied address space! The occupied address space
has to be a power of two (minimum 4 bytes)! Address spaces must not overlap!
has to be a power of two (minimum 4 bytes)! Address spaces must not overlap!
 
 
 
.Full-Word Write Accesses Only
[IMPORTANT]
[IMPORTANT]
When accessing an IO device that hast not been implemented (via the according generic), a
All peripheral/IO devices can only be written in full-word mode (i.e. 32-bit). Byte or half-word
load/store access fault exception is triggered.
 
 
 
[IMPORTANT]
 
The peripheral/IO devices can only be written in full-word mode (i.e. 32-bit). Byte or half-word
 
(8/16-bit) writes will trigger a store access fault exception. Read accesses are not size constrained.
(8/16-bit) writes will trigger a store access fault exception. Read accesses are not size constrained.
Processor-internal memories as well as modules connected to the external memory interface can still
Processor-internal memories as well as modules connected to the external memory interface can still
be written with a byte-wide granularity.
be written with a byte-wide granularity.
 
 
 
.Unimplemented Modules
 
[NOTE]
 
When accessing an IO device that hast not been implemented (via the according generic), a
 
load/store access fault exception is triggered.
 
 
 
.Hardware Reset
[NOTE]
[NOTE]
Most of the IO devices do not have a hardware reset. Instead, the devices are reset via software by
Most of the IO devices do not have a hardware reset. Instead, the devices are reset via software by
writing zero to the unit's control register. A general software-based reset of all devices is done by the
writing zero to the unit's control register. A general software-based reset of all devices is done by the
application start-up code `crt0.S`.
application start-up code `crt0.S`.
 
 

powered by: WebSVN 2.1.0

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