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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc_sysinfo.adoc] - Diff between revs 62 and 63

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

Rev 62 Rev 63
Line 24... Line 24...
.SYSINFO register map
.SYSINFO register map
[cols="<2,<4,<7"]
[cols="<2,<4,<7"]
[options="header",grid="all"]
[options="header",grid="all"]
|=======================
|=======================
| Address | Name [C] | Function
| Address | Name [C] | Function
| `0xffffffe0` | _SYSINFO_CLK_         | clock speed in Hz (via top's _CLOCK_FREQUENCY_ generic)
| `0xffffffe0` | _SYSINFO_CLK_         | clock speed in Hz (via top's <<_clock_frequency>> generic)
| `0xffffffe4` | _SYSINFO_USER_CODE_   | custom user code, assigned via top's _USER_CODE_ generic
| `0xffffffe4` | _SYSINFO_CPU_         | specific CPU configuration (see <<_sysinfo_cpu_configuration>>)
| `0xffffffe8` | _SYSINFO_FEATURES_    | specific hardware configuration (see next table)
| `0xffffffe8` | _SYSINFO_FEATURES_    | specific SoC configuration (see <<_sysinfo_soc_configuration>>)
| `0xffffffec` | _SYSINFO_CACHE_       | cache configuration information (see next table)
| `0xffffffec` | _SYSINFO_CACHE_       | cache configuration information (see <<_sysinfo_cache_configuration>>)
| `0xfffffff0` | _SYSINFO_ISPACE_BASE_ | instruction address space base (defined via `ispace_base_c` constant in the `neorv32_package.vhd` file)
| `0xfffffff0` | _SYSINFO_ISPACE_BASE_ | instruction address space base (via package's `ispace_base_c` constant)
| `0xfffffff4` | _SYSINFO_IMEM_SIZE_   | internal IMEM size in bytes (defined via top's _MEM_INT_IMEM_SIZE_ generic)
| `0xfffffff4` | _SYSINFO_IMEM_SIZE_   | internal IMEM size in bytes (via top's <<_mem_int_imem_size>> generic)
| `0xfffffff8` | _SYSINFO_DSPACE_BASE_ | data address space base (defined via `sdspace_base_c` constant in the `neorv32_package.vhd` file)
| `0xfffffff8` | _SYSINFO_DSPACE_BASE_ | data address space base (via package's `sdspace_base_c` constant)
| `0xfffffffc` | _SYSINFO_DMEM_SIZE_   | internal DMEM size in bytes (defined via top's _MEM_INT_DMEM_SIZE_ generic)
| `0xfffffffc` | _SYSINFO_DMEM_SIZE_   | internal DMEM size in bytes (via top's <<_mem_int_dmem_size>> generic)
|=======================
|=======================
 
 
 
 
 
===== SYSINFO - CPU Configuration
 
 
 
._SYSINFO_CPU_ bits
 
[cols="^1,<10,<11"]
 
[options="header",grid="all"]
 
|=======================
 
| Bit | Name [C] | Function
 
| `0`  | _SYSINFO_CPU_ZICSR_     | `Zicsr` extension (`I` sub-extension) available when set (via top's <<_cpu_extension_riscv_zicsr>> generic)
 
| `1`  | _SYSINFO_CPU_ZIFENCEI_  | `Zifencei` extension (`I` sub-extension) available when set (via top's <<_cpu_extension_riscv_zifencei>> generic)
 
| `2`  | _SYSINFO_CPU_ZMMUL_     | `Zmmul` extension (`M` sub-extension) available when set (via top's <<_cpu_extension_riscv_zmmul>> generic)
 
| `3`  | _SYSINFO_CPU_ZBB_       | `Zbb` extension (`B` sub-extension) available when set (via top's <<_cpu_extension_riscv_zbb>> generic)
 
| `5`  | _SYSINFO_CPU_ZFINX_     | `Zfinx` extension (`F` sub-/alternative-extension) available when set (via top's <<_cpu_extension_riscv_zfinx>> generic)
 
| `6`  | _SYSINFO_CPU_ZXSCNT_    | Custom extension - _Small_ CPU counters: `[m]cycle` & `[m]instret` CSRs have less than 64-bit when set (via top's <<_cpu_cnt_width>> generic)
 
| `7`  | _SYSINFO_CPU_ZXNOCNT_   | Custom extension - _NO_ CPU counters: `[m]cycle` & `[m]instret` CSRs are NOT available at all when set (via top's <<_cpu_cnt_width>> generic)
 
| `8`  | _SYSINFO_CPU_PMP_       | `PMP` (physical memory protection) extension available when set (via top's <<_>> generic)
 
| `9`  | _SYSINFO_CPU_HPM_       | `HPM` (hardware performance monitors) extension available when set (via top's <<_>> generic)
 
| `10` | _SYSINFO_CPU_DEBUGMODE_ | RISC-V CPU `debug_mode` available when set (via top's <<_>> generic)
 
| `30  | _SYSINFO_CPU_FASTMUL_   | fast multiplication available when set (via top's <<_fast_mul_en>> generic)
 
| `31` | _SYSINFO_CPU_FASTSHIFT_ | fast shifts available when set (via top's <<_fast_shift_en>> generic)
 
|=======================
 
 
 
 
 
===== SYSINFO - SoC Configuration
 
 
._SYSINFO_FEATURES_ bits
._SYSINFO_FEATURES_ bits
[cols="^1,<10,<11"]
[cols="^1,<10,<11"]
[options="header",grid="all"]
[options="header",grid="all"]
|=======================
|=======================
| Bit | Name [C] | Function
| Bit | Name [C] | Function
| `0`  | _SYSINFO_FEATURES_BOOTLOADER_       | set if the processor-internal bootloader is implemented (via top's _INT_BOOTLOADER_EN_ generic)
| `0`  | _SYSINFO_FEATURES_BOOTLOADER_       | set if the processor-internal bootloader is implemented (via top's <<_int_bootloader_en>> generic)
| `1`  | _SYSINFO_FEATURES_MEM_EXT_          | set if the external Wishbone bus interface is implemented (via top's _MEM_EXT_EN_ generic)
| `1`  | _SYSINFO_FEATURES_MEM_EXT_          | set if the external Wishbone bus interface is implemented (via top's <<_mem_ext_en>> generic)
| `2`  | _SYSINFO_FEATURES_MEM_INT_IMEM_     | set if the processor-internal DMEM implemented (via top's _MEM_INT_DMEM_EN_ generic)
| `2`  | _SYSINFO_FEATURES_MEM_INT_IMEM_     | set if the processor-internal DMEM implemented (via top's <<_mem_int_dmem_en>> generic)
| `3`  | _SYSINFO_FEATURES_MEM_INT_DMEM_     | set if the processor-internal IMEM is implemented (via top's _MEM_INT_IMEM_EN_ generic)
| `3`  | _SYSINFO_FEATURES_MEM_INT_DMEM_     | set if the processor-internal IMEM is implemented (via top's <<_mem_int_imem_en>> generic)
| `4`  | _SYSINFO_FEATURES_MEM_EXT_ENDIAN_   | set if external bus interface uses BIG-endian byte-order (via top's _MEM_EXT_BIG_ENDIAN_ generic)
| `4`  | _SYSINFO_FEATURES_MEM_EXT_ENDIAN_   | set if external bus interface uses BIG-endian byte-order (via top's <<_mem_ext_big_endian>> generic)
| `5`  | _SYSINFO_FEATURES_ICACHE_           | set if processor-internal instruction cache is implemented (via _ICACHE_EN_ generic)
| `5`  | _SYSINFO_FEATURES_ICACHE_           | set if processor-internal instruction cache is implemented (via top's <<_icache_en>> generic)
| `14` | _SYSINFO_FEATURES_HW_RESET_         | set if on-chip debugger implemented (via _ON_CHIP_DEBUGGER_EN_ generic)
| `14` | _SYSINFO_FEATURES_HW_RESET_         | set if on-chip debugger implemented (via top's <<_on_chip_debugger_en>> generic)
| `15` | _SYSINFO_FEATURES_HW_RST_           | set if a dedicated hardware reset of all core registers is implemented (via package's _dedicated_reset_c_ constant)
| `15` | _SYSINFO_FEATURES_HW_RST_           | set if a dedicated hardware reset of all core registers is implemented (via package's `dedicated_reset_c` constant)
| `15` | _SYSINFO_FEATURES_HW_RST_           | set if a dedicated hardware reset of all core registers is implemented (via package's _dedicated_reset_c_ constant)
| `16` | _SYSINFO_FEATURES_IO_GPIO_          | set if the GPIO is implemented (via top's <<_io_gpio_en>> generic)
| `16` | _SYSINFO_FEATURES_IO_GPIO_          | set if the GPIO is implemented (via top's _IO_GPIO_EN_ generic)
| `17` | _SYSINFO_FEATURES_IO_MTIME_         | set if the MTIME is implemented (via top's <<_io_mtime_en>> generic)
| `17` | _SYSINFO_FEATURES_IO_MTIME_         | set if the MTIME is implemented (via top's _IO_MTIME_EN_ generic)
| `18` | _SYSINFO_FEATURES_IO_UART0_         | set if the primary UART0 is implemented (via top's <<_io_uart0_en>> generic)
| `18` | _SYSINFO_FEATURES_IO_UART0_         | set if the primary UART0 is implemented (via top's _IO_UART0_EN_ generic)
| `19` | _SYSINFO_FEATURES_IO_SPI_           | set if the SPI is implemented (via top's <<_io_spi_en>> generic)
| `19` | _SYSINFO_FEATURES_IO_SPI_           | set if the SPI is implemented (via top's _IO_SPI_EN_ generic)
| `20` | _SYSINFO_FEATURES_IO_TWI_           | set if the TWI is implemented (via top's <<_io_twi_en>> generic)
| `20` | _SYSINFO_FEATURES_IO_TWI_           | set if the TWI is implemented (via top's _IO_TWI_EN_ generic)
| `21` | _SYSINFO_FEATURES_IO_PWM_           | set if the PWM is implemented (via top's <<_io_pwm_en>> generic)
| `21` | _SYSINFO_FEATURES_IO_PWM_           | set if the PWM is implemented (via top's _IO_PWM_EN_ generic)
| `22` | _SYSINFO_FEATURES_IO_WDT_           | set if the WDT is implemented (via top's <<_io_wdt_en>> generic)
| `22` | _SYSINFO_FEATURES_IO_WDT_           | set if the WDT is implemented (via top's _IO_WDT_EN_ generic)
| `23` | _SYSINFO_FEATURES_IO_CFS_           | set if the custom functions subsystem is implemented (via top's <<_io_cfs_en>> generic)
| `23` | _SYSINFO_FEATURES_IO_CFS_           | set if the custom functions subsystem is implemented (via top's _IO_CFS_EN_ generic)
 
| `24` | _SYSINFO_FEATURES_IO_TRNG_          | set if the TRNG is implemented (via top's _IO_TRNG_EN_ generic)
| `24` | _SYSINFO_FEATURES_IO_TRNG_          | set if the TRNG is implemented (via top's _IO_TRNG_EN_ generic)
| `25` | _SYSINFO_FEATURES_IO_SLINK_         | set if the SLINK is implemented (via top's _SLINK_NUM_TX_ / _SLINK_NUM_RX_ generics)
| `25` | _SYSINFO_FEATURES_IO_SLINK_         | set if the SLINK is implemented (via top's <<_slink_num_tx>> and/or <<_slink_num_rx>> generics)
| `26` | _SYSINFO_FEATURES_IO_UART1_         | set if the secondary UART1 is implemented (via top's _IO_UART1_EN_ generic)
| `26` | _SYSINFO_FEATURES_IO_UART1_         | set if the secondary UART1 is implemented (via top's <<_io_uart1_en>> generic)
| `27` | _SYSINFO_FEATURES_IO_NEOLED_        | set if the NEOLED is implemented (via top's _IO_NEOLED_EN_ generic)
| `27` | _SYSINFO_FEATURES_IO_NEOLED_        | set if the NEOLED is implemented (via top's <<_io_neoled_en>> generic)
 
|=======================
 
 
 
 
 
===== SYSINFO - Cache Configuration
 
 
 
[NOTE]
 
Bit fields in this register are set to all-zero if the according cache is not implemented.
 
 
 
._SYSINFO_CACHE_ bits
 
[cols="^1,<10,<11"]
 
[options="header",grid="all"]
 
|=======================
 
| Bit      | Name [C] | Function
 
| `3:0`    | _SYSINFO_CACHE_IC_BLOCK_SIZE_3_ : _SYSINFO_CACHE_IC_BLOCK_SIZE_0_       | _log2_(i-cache block size in bytes), via top's <<_icache_block_size>> generic
 
| `7:4`    | _SYSINFO_CACHE_IC_NUM_BLOCKS_3_ : _SYSINFO_CACHE_IC_NUM_BLOCKS_0_       | _log2_(i-cache number of cache blocks), via top's <<_icache_num_blocks>> generic
 
| `11:9`   | _SYSINFO_CACHE_IC_ASSOCIATIVITY_3_ : _SYSINFO_CACHE_IC_ASSOCIATIVITY_0_ | _log2_(i-cache associativity), via top's <<_icache_associativity>> generic
 
| `15:12`  | _SYSINFO_CACHE_IC_REPLACEMENT_3_ : _SYSINFO_CACHE_IC_REPLACEMENT_0_     | i-cache replacement policy (`0001` = LRU if associativity > 0)
 
| `32:16`  | -                                                                       | zero, reserved for d-cache
|=======================
|=======================

powered by: WebSVN 2.1.0

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