
True random number generator (RNG)
RM0453
640/1454
RM0453 Rev 2
additional words can be read by the application (in this case the DRDY bit is still high).
If one or both of above conditions are false, the RNG_DR register must not be read. If
an error occurred error recovery sequence described in
must be used.
Note:
When data is not ready (DRDY = 0) RNG_DR returns zero.
It is recommended to always verify that RNG_DR is different from zero. Because when it is
the case a seed error occurred between RNG_SR polling and RND_DR output reading (rare
event).
If the random number generation period is a concern to the application and if NIST
compliance is not required it is possible to select a faster RNG configuration by using the
RNG configuration “B”, described in
Section 22.6: RNG entropy source validation
. The gain
in random number generation speed is summarized in
Section 22.5: RNG processing time
Low-power operations
If the power consumption is a concern to the application, low-power strategies can be used,
as described in
Section 22.3.8: RNG low-power usage
Software post-processing
No specific software post-processing/conditioning is expected to meet the AIS-31 or NIST
SP800-90B approvals.
Built-in health check functions are described in
Section 22.3.3: Random number generation
22.3.6 RNG
clocking
The RNG runs on two different clocks: the AHB bus clock and a dedicated RNG clock.
The AHB clock is used to clock the AHB banked registers and conditioning component. The
RNG clock, coupled with a programmable divider (see CLKDIV bitfield in the RNG_CR
register) is used for noise source sampling. Recommended clock configurations are detailed
in
Section 22.6: RNG entropy source validation
Note:
When the CED bit in the RNG_CR register is set to 0, the RNG clock frequency before
internal divider
must be higher
than AHB clock frequency divided by 32, otherwise the
clock checker always flags a clock error (CECS = 1 in the RNG_SR register).
See
Section 22.3.1: RNG block diagram
for details (AHB and RNG clock domains).
22.3.7 Error
management
In parallel to random number generation an health check block verifies the correct noise
source behavior and the frequency of the RNG source clock as detailed in this section.
Associated error state is also described.
Clock error detection
When the clock error detection is enabled (CED = 0) and if the RNG clock frequency is too
low, the RNG sets to 1 both the
CEIS
and
CECS
bits to indicate that a clock error occurred.
In this case, the application should check that the RNG clock is configured correctly (see
) and then it must clear the CEIS bit interrupt flag. The CECS
bit is automatically cleared when clocking condition is normal.
Note:
The clock error has no impact on generated random numbers, i.e. application can still read
RNG_DR register.