TRNG hardware tests

nRF5340 Product Specification

The RNG engine has a number of built-in hardware tests for making sure the collected entropy from the TRNG is of sufficient quality.

Figure 4. CRYPTOCELL True Random Number Generator

CRYPTOCELL True Random Number Generator

The TRNG collects random bits from the noise source according to the programmed sample counter value in register SAMPLE_CNT. The sampled bits are post-processed in a von Neumann corrector (VNC) before being subjected to a continuous random number generation test (CRNGT) and autocorrelation test.

192 bits of random data can be read from the entropy holding registers EHR_DATA[n] (n=0..5) once interrupt EHR_VALID_INT in register RNG_ISR trigger. If this interrupt is masked away in register RNG_IMR, the status register TRNG_VALID contains field EHR_DATA which can be polled when the random data is valid. Reading the most significant word from EHR_DATA registers will reset register TRNG_VALID and a new 192 bits collection period will start.

Note:
To ensure proper operation when reading 192 bits of random data from the EHR_DATA registers of the RNG engine the data must be read in ascending order, starting with: