True Random Number Generator (TRNG)

3D Model of PCB Design

Background

The problem with random number generators found in code is that they are not truly random, they take a seed value and place it in an algorithm to generate random values. To have true randomness, a source of entropy is required.

Design

By using a ring oscillator circuit as a source of entropy works as this circuit it known to experience jitter. By sampling this with an ADC the randomness can be measured. An STM32 can also be used to communicate over USB with PCs

Spice Simulation

The circuit & simulation results are attached below, the transistors being used are models provided by the LTSPICE library.

As seen in the transient simulation, the ring oscillator has an inconsistent sinusoid shape which causes unpredictability

PCB Design

For this PCB, I opted to design a 4 Layer PCB with a Signal-GND-GND-Signal Stack to experiment with larger layer counts.

Schematic & PCB design

Firmware

In progress

Python Library

In progress

Validation

In progress