Skip to content

Commit e211d5b

Browse files
committed
[docs] update TRNG sections
1 parent 764cca2 commit e211d5b

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

docs/datasheet/soc.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -435,8 +435,8 @@ table (the channel number also corresponds to the according FIRQ priority: 0 = h
435435
[options="header",grid="rows"]
436436
|=======================
437437
| Channel | Source | Description
438-
| 0 | - | _reserved_
439-
| 1 | <<_custom_functions_subsystem_cfs,CFS>> | custom functions subsystem (CFS) interrupt (user-defined)
438+
| 0 | <<_true_random_number_generator_trng,TRNG>> | TRNG data available interrupt
439+
| 1 | <<_custom_functions_subsystem_cfs,CFS>> | Custom functions subsystem (CFS) interrupt (user-defined)
440440
| 2 | <<_primary_universal_asynchronous_receiver_and_transmitter_uart0,UART0>> | UART0 RX FIFO level interrupt
441441
| 3 | <<_primary_universal_asynchronous_receiver_and_transmitter_uart0,UART0>> | UART0 TX FIFO level interrupt
442442
| 4 | <<_secondary_universal_asynchronous_receiver_and_transmitter_uart1,UART1>> | UART1 RX FIFO level interrupt

docs/datasheet/soc_trng.adoc

+13-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
| Top entity ports: | none |
1212
| Configuration generics: | `IO_TRNG_EN` | implement TRNG when `true`
1313
| | `IO_TRNG_FIFO` | data FIFO depth, min 1, has to be a power of two
14-
| CPU interrupts: | - | none
14+
| CPU interrupts: | fast IRQ channel 0 | TRNG data available interrupt (see <<_processor_interrupts>>)
1515
|=======================
1616

1717

@@ -53,18 +53,28 @@ of random data in a short time. The random data FIFO can be cleared at any time
5353
setting the `TRNG_CTRL_FIFO_CLR` flag. The FIFO depth can be retrieved by software via the `TRNG_CTRL_FIFO_*` bits.
5454

5555

56+
**TRNG Interrupt**
57+
58+
As the neoTRNG is a rather slow entropy source, a "data available" interrupt is provided to inform the application
59+
software that new random data is available. This interrupt can be trigger by either of two conditions: trigger the
60+
interrupt if _any_ random data is available (i.e. the data FIFO is not empty; `TRNG_CTRL_IRQ_SEL = 0`) or trigger
61+
the interrupt if the random pool is full (i.e. the data FIFO is full; `TRNG_CTRL_IRQ_SEL = 1`).
62+
Once the TRNG interrupt has fired it remains pending until the actual cause of the interrupt is resolved.
63+
64+
5665
**Register Map**
5766

5867
.TRNG register map (`struct NEORV32_TRNG`)
5968
[cols="<2,<1,<4,^1,<7"]
6069
[options="header",grid="all"]
6170
|=======================
6271
| Address | Name [C] | Bit(s), Name [C] | R/W | Function
63-
.8+<| `0xfffffa00` .8+<| `CTRL` <|`7:0` `TRNG_CTRL_DATA_MSB : TRNG_CTRL_DATA_MSB` ^| r/- <| 8-bit random data
72+
.9+<| `0xfffffa00` .9+<| `CTRL` <|`7:0` `TRNG_CTRL_DATA_MSB : TRNG_CTRL_DATA_MSB` ^| r/- <| 8-bit random data
6473
<|`15:8` - ^| r/- <| reserved, read as zero
6574
<|`19:16` `TRNG_CTRL_FIFO_MSB : TRNG_CTRL_FIFO_MSB` ^| r/- <| FIFO depth, log2(`IO_TRNG_FIFO`)
6675
<|`27:20` - ^| r/- <| reserved, read as zero
67-
<|`28` `TRNG_CTRL_FIFO_CLR` ^| -/w <| flush random data FIFO when set; auto-clears
76+
<|`27` `TRNG_CTRL_IRQ_SEL` ^| r/w <| interrupt trigger select (0 = data available, 1 = FIFO full)
77+
<|`28` `TRNG_CTRL_FIFO_CLR` ^| -/w <| flush random data FIFO when set; flag auto-clears
6878
<|`29` `TRNG_CTRL_SIM_MODE` ^| r/- <| simulation mode (PRNG!)
6979
<|`30` `TRNG_CTRL_EN` ^| r/w <| TRNG enable
7080
<|`31` `TRNG_CTRL_VALID` ^| r/- <| random data is valid when set

docs/figures/neorv32_processor.png

294 Bytes
Loading

0 commit comments

Comments
 (0)