# Random Number Generator (RNG) for Microcontrollers

## Presentation on theme: "Random Number Generator (RNG) for Microcontrollers"— Presentation transcript:

Random Number Generator (RNG) for Microcontrollers
Tom Dickens The Boeing Company

Introduction RNG Wisdom Motivation for an RNG Other RNG Methods
Requirements for a “Good” RNG Approaches Taken Testing Implementation Summary Tom Dickens

RNG Wisdom… “Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin.” John von Neumann ( ). “The generation of random numbers is too important to be left to chance.” Robert R. Coveyou, Oak Ridge National Laboratory in Tennessee. Tom Dickens

Motivation For An RNG For Microcontrollers
More Interesting Robotic Behavior Avoid Stuck-In-A-Corner Logic Used In AI Techniques Genetic Algorithms Neural Networks Fuzzy Logic Tom Dickens

Other RNG Methods Hardware-Based (true) RNGs
White-Noise Source Transistor Circuits Our desire is to have a pseudo random number generator, as defined by… Tom Dickens

Requirements - a “Good” RNG
Key Requirements (detailed list in paper). N = F(), where… N is in the range 0 to 255 Large cycle of N’s before pattern repeats. All values of N are generated the same number of times in the cycle. Windows of consecutive N’s in cycle meet… Constraints for Average, Min, and Max values. Small Code Size Tom Dickens

Approaches Taken Table-Based Method Define a table of 128 values.
Use EXOR to generate 128 other values. Cycle through these 256 values 64 different ways. Cycle length of 16,384. Met the goodness criteria. 62 bytes of code bytes for table = 190 total bytes. 4 bytes of RAM. Tom Dickens

Approaches Taken Equation-Based Method 2-byte seed value in RAM
seed = 181 * seed + 359 Return top 8 bits of seed. Cycle length of 65,536. Met the goodness criteria. 25 bytes of code, 4 bytes of RAM. Tom Dickens

Approaches Taken Notes:
181 and 359 determined by a program searching for values to meet the goodness criteria. Table method also used a program to find right 128 table values. Tom Dickens

Generated Numbers First 240 numbers:
Tom Dickens

Testing The Numbers Met The Defined Goodness Criteria Inspection
Graphical Plots Plot number pairs on 256x256 grid. Tom Dickens

Testing 1024 pairs plotted Tom Dickens

Testing Half the pairs plotted Tom Dickens

Testing All pairs plotted Tom Dickens

Testing All pairs with another set of constants Tom Dickens

Implementation – 25 Bytes of 68HC11 Code
Random: PSHB ; (1,3) Remember the current value of B * scratch = seed * multiplier LDAA #MULTIPLIER ; (2,2) A = #181 LDAB SEED_LOW ; (2,3) B = the low byte of the seed MUL ; (1,10) D = A x B STD RandomScratch ; (1,4) scratch = D LDAB SEED_HIGH ; (2,3) B = the high byte of the seed * low byte of MUL result is added to the high byte of scratch ADDB RandomScratch ; (2,3) B = B + scratch_high STAB RandomScratch ; (2,3) scratch = seed * 181 * LDD RandomScratch ; (2,4) D = scratch ADDD #ADDER ; (3,4) D = D + 359 STD RandomSeed ; (2,4) remember new seed value * (A = SEED_HIGH from ADDD instruction) PULB ; (1,4) Restore the value of B RTS ; (1,5) A holds the new 8-bit random number Tom Dickens

Summary RNG Studied RNG Goodness Criteria Developed
Two RNG Methods Developed Both Methods Were Critiqued Equation-Based RNG Chosen For Number Coverage and Code Size 68HC11 Code Implemented and Tested Tom Dickens