[sci.electronics] Random bit generator in hardware...

yerazunis@cthulu.dec.com (10/11/89)

I've built the following and subjected it to autocorrellation, slicing,
and entropy examination for blocks of 1000 bytes.  It never came out 
with less than 7.8 bits/byte entropy...

Take an ordinary NPN transistor.  Tie the collector to the base, and then
forward-bias it so you get about a 0.1 mA current through it (this  was a 10K
resistor in my application).  Lead the connection between the resistor and the
transistor to the - input of an op-amp.  Tie the  output of the op-amp to (1) a
50K resistor in series with a 10-microfarad capacitor, thence to ground and (2)
directly to the CPU input port.  Connect the 50K/10u junction to the + input of
the op-amp.  That's it.    (this, of course, presumes an op-amp that can work
on a +5V single-ended supply.  If you don't have one, then buffer the op-amp
output with a CMOS inverter.  This makes all the zeroes into ones, and all 
the ones into zeroes, but since the bits are supposed to be random you'll
probably never notice.

If you want 4 bits at a time, build 4 such circuits.  Be sure to isolate  their
power inputs (bypass caps are a good idea), so they don't start to oscillate
with each other and thereby  start some sort of correllation.   It's probably
unnecessary to build more than one bit worth of this circuit- this circuit will
generate at least 100 very random bits per second.

Do the autocorrellation and entropy tests anyway, just to make sure you don't 
have a electrically-noisy system that is "fixing" the numbers. 

	-Bill

Copyright 1989 William S. Yerazunis (aka Crah the Merciless)
All rights reserved, no responsibility taken.

     "I refuse to wear a 'power suit' unless it's powered armor!"