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