30.3.4.1 Checking the Conditioning Function
The conditioning function receives 512 bits from the entropy source and generates 128 bits of output. The conditioning function can be
tested by writing a known key and known data into the block with test mode enabled, then validating against the expected output. The
sequence of operations to test the conditioning function is as follows:
1. Apply a software reset by setting CONTROL_SOFTRESET to 1, then clearing it to 0.
2. Configure the CONTROL register. Important configuration options include:
• Enable test mode by setting CONTROL_TESTEN to 1.
• Ensure the conditioning function is used by clearning CONTROL_CONDBYPASS to 0.
3. Write the key into registers KEY0, KEY1, KEY2, and KEY3.
4. Write the 512 bits of known data to TESTDATA 32 bits at a time, polling for STATUS_TESTDATABUSY = 0 after each write.
5. Read the 128-bit result from the FIFO 32 bits at a time.
Table 30.1 Known-Answer Test for Conditioning Function on page 1014
shows an example with a given key, known data input, and
expected output (taken from section F.2.1 in
http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
Table 30.1. Known-Answer Test for Conditioning Function
128-bit Format
32-bit Bus Format
Key
0x2B7E151628AED2A6ABF7158809CF4F3C
0x16157E2B
0xA6D2AE28
0x8815F7AB
0x3C4FCF09
Input
0x6BC0BCE12A459991E134741A7F9E1925
0xAE2D8A571E03AC9C9EB76FAC45AF8E51
0x30C81C46A35CE411E5FBC1191A0A52EF
0xF69F2445DF4F9B17AD2B417BE66C3710
0xE1BCC06B
0x9199452A
0x1A7434E1
0x25199E7F
0x578A2DAE
0x9CAC031E
0xAC6FB79E
0x518EAF45
0x461CC830
0x11E45CA3
0x19C1FBE5
0xEF520A1A
0x45249FF6
0x179B4FDF
0x7B412BAD
0x10376CE6
Expected output
0x3FF1CAA1681FAC09120ECA307586E1A7
0xA1CAF13F
0x09AC1F68
0x30CA0E12
0xA7E18675
Reference Manual
TRNG - True Random Number Generator
silabs.com
| Building a more connected world.
Rev. 1.1 | 1014