stnolting neorv32 RISC-V 1.6.4 The NEORV32 RISC-V Processor NEORV32 r2p0 little true true false false true true 0 false 8 32 32 read-write 0x00000000 0x00000000 CFS Custom functions subsystem CFS 0xFFFFFE00 CFS_FIRQ1 0 0x80 registers REG0Application-defined0x00 REG1Application-defined0x04 REG2Application-defined0x08 REG3Application-defined0x0C REG4Application-defined0x10 REG5Application-defined0x14 REG6Application-defined0x18 REG7Application-defined0x1C REG8Application-defined0x20 REG9Application-defined0x24 REG10Application-defined0x28 REG11Application-defined0x2C REG12Application-defined0x30 REG13Application-defined0x34 REG14Application-defined0x38 REG15Application-defined0x3C REG16Application-defined0x40 REG17Application-defined0x44 REG18Application-defined0x48 REG19Application-defined0x4C REG20Application-defined0x50 REG21Application-defined0x54 REG22Application-defined0x58 REG23Application-defined0x5C REG24Application-defined0x60 REG25Application-defined0x64 REG26Application-defined0x68 REG27Application-defined0x6C REG28Application-defined0x70 REG29Application-defined0x74 REG30Application-defined0x78 REG31Application-defined0x7C PWM Pulse-width modulation controller PWM 0xFFFFFE80 0 0x40 registers CTRL Control register 0x00 PWM_CTRL_EN [0:0] PWM controller enable flag PWM_CTRL_PRSCx [3:1] Clock prescaler select DUTY0 Duty cycle register 0 0x04 DUTY1 Duty cycle register 1 0x08 DUTY2 Duty cycle register 2 0x0C DUTY3 Duty cycle register 3 0x10 DUTY4 Duty cycle register 4 0x14 DUTY5 Duty cycle register 5 0x18 DUTY6 Duty cycle register 6 0x1C DUTY7 Duty cycle register 7 0x20 DUTY8 Duty cycle register 8 0x24 DUTY9 Duty cycle register 9 0x28 DUTY10 Duty cycle register 10 0x2C DUTY11 Duty cycle register 11 0x30 DUTY12 Duty cycle register 12 0x34 DUTY13 Duty cycle register 13 0x38 DUTY14 Duty cycle register 14 0x3C SLINK Stream link interface SLINK 0xFFFFFEC0 SLINK_RX_FIRQ10 SLINK_TX_FIRQ11 0 0x40 registers CTRL Control register 0x00 SLINK_CTRL_RX_NUMx read-only [3:0] Number of implemented RX links SLINK_CTRL_TX_NUMx read-only [7:4] Number of implemented TX links SLINK_CTRL_RX_FIFO_Sx read-only [11:8] log2(RX FIFO size) SLINK_CTRL_TX_FIFO_Sx read-only [15:12] log2(TX FIFO size) SLINK_CTRL_EN read-write [31:31] SLINK enable flag IRQ Link interrupt configuration register 0x08 SLINK_IRQ_RX_EN [7:0] RX link interrupt enable SLINK_IRQ_RX_MODE [15:8] RX link interrupt mode SLINK_IRQ_TX_EN [23:16] TX link interrupt enable SLINK_IRQ_TX_MODE [31:24] TX link interrupt mode STATUS Link status register 0x10 SLINK_STATUS_RX_AVAIL [7:0] RX link n FIFO is NOT empty (data available) SLINK_STATUS_TX_FREE [15:8] TX link n FIFO is NOT full (ready to send) SLINK_STATUS_RX_HALF [23:16] RX link n FIFO fill level is >= half-full SLINK_STATUS_TX_HALF [31:24] TX link 0 FIFO fill level is > half-full DATA0 Link 0 RTX data register 0x20 DATA1 Link 1 RTX data register 0x24 DATA2 Link 2 RTX data register 0x28 DATA3 Link 3 RTX data register 0x2C DATA4 Link 4 RTX data register 0x30 DATA5 Link 5 RTX data register 0x34 DATA6 Link 6 RTX data register 0x38 DATA7 Link 7 RTX data register 0x3C GPTMR General purpose timer GPTMR 0xFFFFFF60 GPTMR_FIRQ12 0 0x10 registers CTRL Control register 0x00 GPTMR_CTRL_EN [0:0] Timer enable flag GPTMR_CTRL_PRSC [3:1] Clock prescaler select GPTMR_CTRL_MODE [4:4] Timer mode: 0=single-shot mode, 1=continuous mode THRES Threshold register 0x04 COUNT Counter register 0x08 BUSKEEPER Bus keeper BUSKEEPER 0xFFFFFF7C 0 0x04 registers CTRL Control register 0x00 BUSKEEPER_ERR_TYPE [0:0] read-only Bus error type: 0=device error, 1=access timeout BUSKEEPER_ERR_FLAG [31:31] Sticky error flag, clears after read or write access XIRQ External interrupts controller XIRQ 0xFFFFFF80 XIRQ_FIRQ8 0 0x10 registers IER IRQ input enable register 0x00 IPR IRQ pending/ack/clear register 0x04 SCR IRQ source register 0x08 MTIME Machine timer MTIME 0xFFFFFF90 0 0x10 registers TIME_LO System time register - low 0x00 TIME_HI System time register - high 0x04 TIMECMP_LO Time compare register - low 0x08 TIMECMP_HI Time compare register - high 0x0C UART0 Primary universal asynchronous receiver and transmitter UART0 0xFFFFFFA0 UART0_RX_FIRQ2 UART0_TX_FIRQ3 0 0x08 registers CTRL Control register 0x00 UART_CTRL_BAUD [11:0] Baud rate divisor UART_CTRL_SIM_MODE [12:12] Simulation output override enable, for use in simulation only UART_CTRL_RX_EMPTY [13:13] read-only RX FIFO is empty UART_CTRL_RX_HALF [14:14] read-only RX FIFO is at least half-full UART_CTRL_RX_FULL [15:15] read-only RX FIFO is full UART_CTRL_TX_EMPTY [16:16] read-only TX FIFO is empty UART_CTRL_TX_HALF [17:17] read-only TX FIFO is at least half-full UART_CTRL_TX_FULL [18:18] read-only TX FIFO is full UART_CTRL_RTS_EN [20:20] Enable hardware flow control: Assert RTS output if UART.RX is ready to receive UART_CTRL_CTS_EN [21:21] Enable hardware flow control: UART.TX starts sending only if CTS input is asserted UART_CTRL_PMODE0 [22:22] Parity configuration (0=even; 1=odd) UART_CTRL_PMODE1 [23:23] Parity bit enabled when set UART_CTRL_PRSC [26:24] Clock prescaler select UART_CTRL_CTS [27:27] read-only current state of CTS input UART_CTRL_EN [28:28] UART enable flag UART_CTRL_RX_IRQ [29:29] RX IRQ mode: 1=FIFO at least half-full; 0=FIFO not empty UART_CTRL_TX_IRQ [30:30] TX IRQ mode: 1=FIFO less than half-full; 0=FIFO not full UART_CTRL_TX_BUSY [31:31] read-only Transmitter is busy when set DATA RX/TX data register 0x04 UART_DATA [7:0] Receive/transmit data UART_DATA_PERR [28:28] read-only RX parity error detected when set UART_DATA_FERR [29:29] read-only RX frame error (no valid stop bit) detected when set UART_DATA_OVERR [30:30] read-only RX parity error detected when set UART_DATA_AVAIL [31:31] read-only RX data available when set UART1 Secondary universal asynchronous receiver and transmitter UART1 0xFFFFFFD0 UART1_RX_FIRQ4 UART1_TX_FIRQ5 0 0x08 registers SPI Serial peripheral interface controller SPI 0xFFFFFFA8 SPI_FIRQ6 0 0x08 registers CTRL Control register 0x00 SPI_CTRL_CS [7:0] Direct chip select line SPI_CTRL_EN [8:8] SPI enable flag SPI_CTRL_CPHA [9:9] Clock phase SPI_CTRL_PRSC [12:10] Clock prescaler select SPI_CTRL_SIZE [14:13] Data transfer size SPI_CTRL_CPOL [15:15] Clock polarity SPI_CTRL_BUSY [31:31] read-only SPI busy flag DATA RX/TX data register 0x04 TWI Two-wire interface controller SPI 0xFFFFFFB0 TWI_FIRQ7 0 0x08 registers CTRL Control register 0x00 TWI_CTRL_EN [0:0] TWI enable flag TWI_CTRL_START [1:1] Generate START condition, auto-clears TWI_CTRL_STOP [2:2] Generate STOP condition, auto-clears TWI_CTRL_PRSC [5:3] Clock prescaler select TWI_CTRL_MACK [6:6] Generate ACK by controller for each transmission TWI_CTRL_ACK [30:30] read-only ACK received when set TWI_CTRL_BUSY [31:31] read-only Transfer in progress, busy flag DATA RX/TX data register 0x04 TWI_DATA [7:0] RX/TX data TRNG True random number generator TRNG 0xFFFFFFB8 0 0x04 registers CTRL Control and data register 0x00 TRNG_CTRL_DATA [7:0] read-only Random data TRNG_CTRL_EN [30:30] TRNG enable flag TRNG_CTRL_VALID [31:31] read-only Random data output valid WDT Watchdog timer WDT 0xFFFFFFBC WDT_FIRQ0 0 0x04 registers CTRL Control register 0x00 WDT_CTRL_EN [0:0] WDT enable flag WDT_CTRL_CLK_SEL [3:1] Clock prescaler select WDT_CTRL_MODE [4:4] Watchdog mode: 0=timeout causes interrupt, 1=timeout causes processor reset WDT_CTRL_RCAUSE [5:5] read-only Cause of last system reset: 0=external reset, 1=watchdog WDT_CTRL_RESET [6:6] Reset WDT counter when set, auto-clears WDT_CTRL_FORCE [7:7] Force WDT action, auto-clears WDT_CTRL_LOCK [8:8] Lock write access to control register, clears on reset (HW or WDT) only WDT_CTRL_DBEN [9:9] Allow WDT to continue operation even when in debug mode WDT_CTRL_HALF [10:10] read-only Set if at least half of the max. timeout counter value has been reached GPIO General purpose input/output port GPIO 0xFFFFFFc0 0 0x10 registers INPUT_LO Parallel input register - low 0x00 read-only INPUT_HI Parallel input register - high 0x04 read-only OUTPUT_LO Parallel output register - low 0x08 OUTPUT_HI Parallel output register - high 0x0C NEOLED Smart LED hardware interface NEOLED 0xFFFFFFD8 NEOLED_FIRQ9 0 0x08 registers CTRL Control register 0x00 NEOLED_CTRL_EN [0:0] NEOLED enable flag NEOLED_CTRL_MODE [1:1] TX mode (0=24-bit, 1=32-bit) NEOLED_CTRL_STROBE [2:2] Strobe (0=send normal data, 1=send RESET command on data write) NEOLED_CTRL_PRSC [5:3] Clock prescaler select NEOLED_CTRL_BUFS [9:6] read-only log2(tx buffer size) NEOLED_CTRL_T_TOT [14:10] pulse-clock ticks per total period bit NEOLED_CTRL_T_ZERO_H [19:15] pulse-clock ticks per ZERO high-time NEOLED_CTRL_T_ONE_H [24:20] pulse-clock ticks per ONE high-time NEOLED_CTRL_IRQ_CONF [27:27] TX FIFO interrupt: 0=IRQ if FIFO is less than half-full, 1=IRQ if FIFO is empty NEOLED_CTRL_TX_EMPTY [28:28] read-only TX FIFO is empty NEOLED_CTRL_TX_HALF [29:29] read-only TX FIFO is at least half-full NEOLED_CTRL_TX_FULL [30:30] read-only TX FIFO is full NEOLED_CTRL_TX_BUSY [31:31] read-only busy flag DATA Data register 0x04 SYSINFO System configuration information memory SYSINFO 0xFFFFFFE0 0 0x20 registers CLK Clock speed in Hz 0x00 read-only CPU CPU core features 0x04 read-only SYSINFO_CPU_ZICSR[0:0]Zicsr extension (I sub-extension) available when set SYSINFO_CPU_ZIFENCEI[1:1]Zifencei extension (I sub-extension) available when set SYSINFO_CPU_ZMMUL[2:2]Zmmul extension (M sub-extension) available when set SYSINFO_CPU_ZFINX[5:5]Zfinx extension (F sub-/alternative-extension) available when set SYSINFO_CPU_ZXSCNT[6:6]Custom extension - Small CPU counters SYSINFO_CPU_ZICNTR[7:7]Basic CPU counters available when set SYSINFO_CPU_PMP[8:8]PMP (physical memory protection) extension available when set SYSINFO_CPU_ZIHPM[9:9]HPM (hardware performance monitors) extension available when set SYSINFO_CPU_DEBUGMODE[10:10]RISC-V CPU debug mode available when set SYSINFO_CPU_FASTMUL[30:30]fast multiplications (via FAST_MUL_EN generic) available when set SYSINFO_CPU_FASTSHIFT[31:31]fast shifts (via FAST_SHIFT_EN generic) available when set SOC SoC features 0x08 read-only SYSINFO_SOC_BOOTLOADER[0:0]Bootloader implemented SYSINFO_SOC_MEM_EXT[1:1]External bus interface implemented SYSINFO_SOC_MEM_INT_IMEM[2:2]Processor-internal instruction memory implemented SYSINFO_SOC_MEM_INT_DMEM[3:3]Processor-internal data memory implemented SYSINFO_SOC_MEM_EXT_ENDIAN[4:4]External bus interface uses BIG-endian byte-order SYSINFO_SOC_ICACHE[5:5]Processor-internal instruction cache implemented SYSINFO_SOC_IS_SIM[13:13]Set if processor is being simulated SYSINFO_SOC_OCD[14:14]On-chip debugger implemented SYSINFO_SOC_HW_RESET[15:15]Dedicated hardware reset of core registers implemented SYSINFO_SOC_IO_GPIO[16:16]General purpose input/output port unit implemented SYSINFO_SOC_IO_MTIME[17:17]Machine system timer implemented SYSINFO_SOC_IO_UART0[18:18]Primary universal asynchronous receiver/transmitter 0 implemented SYSINFO_SOC_IO_SPI[19:19]Serial peripheral interface implemented SYSINFO_SOC_IO_TWI[20:20]Two-wire interface implemented SYSINFO_SOC_IO_PWM[21:21]Pulse-width modulation unit implemented SYSINFO_SOC_IO_WDT[22:22]Watchdog timer implemented SYSINFO_SOC_IO_CFS[23:23]Custom functions subsystem implemented SYSINFO_SOC_IO_TRNG[24:24]True random number generator implemented SYSINFO_SOC_IO_SLINK[25:25]Stream link interface implemented SYSINFO_SOC_IO_UART1[26:26]Secondary universal asynchronous receiver/transmitter 1 implemented SYSINFO_SOC_IO_NEOLED[27:27]NeoPixel-compatible smart LED interface implemented SYSINFO_SOC_IO_XIRQ[28:28]External interrupt controller implemented SYSINFO_SOC_IO_GPTMR[29:29]General purpose timer implemented CACHE Cache configuration 0x0C read-only SYSINFO_CACHE_IC_BLOCK_SIZE[3:0]i-cache: log2(Block size in bytes) SYSINFO_CACHE_IC_NUM_BLOCKS[7:4]i-cache: log2(Number of cache blocks/pages/lines) SYSINFO_CACHE_IC_ASSOCIATIVITY[11:8]i-cache: log2(associativity) SYSINFO_CACHE_IC_REPLACEMENT[15:12]i-cache: replacement policy (0001 = LRU if associativity > 0) ISPACE_BASE Instruction memory address space base address 0x10 read-only DSPACE_BASE Data memory address space base address 0x14 read-only IMEM_SIZE Internal instruction memory (IMEM) size in bytes 0x18 read-only DMEM_SIZE Internal data memory (DMEM) size in bytes 0x1C read-only