Presentation on theme: "Random Number Generator (RNG) for Microcontrollers Tom Dickens The Boeing Company"— Presentation transcript:
Random Number Generator (RNG) for Microcontrollers Tom Dickens The Boeing Company firstname.lastname@example.org
Tom Dickens 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 (1903-1957). 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 Ns before pattern repeats. –All values of N are generated the same number of times in the cycle. –Windows of consecutive Ns 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 + 128 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 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 LDABSEED_LOW; (2,3) B = the low byte of the seed MUL; (1,10) D = A x B STDRandomScratch; (1,4) scratch = D LDAA#MULTIPLIER; (2,2) A = #181 LDABSEED_HIGH; (2,3) B = the high byte of the seed MUL; (1,10) D = A x B * low byte of MUL result is added to the high byte of scratch ADDBRandomScratch; (2,3) B = B + scratch_high STABRandomScratch; (2,3) scratch = seed * 181 * LDDRandomScratch; (2,4) D = scratch ADDD#ADDER; (3,4) D = D + 359 STDRandomSeed; (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