# Generating thermal noise from a resistor

I'd like to create a random number generator based on thermal noise from a resistor, using an opamp to amplify the noise and an inverter to convert the resulting spikes into a digital signal.

Here's my current design:

When I remove R5 and feed Multisim's thermal noise source (set to 10M ohm / 27C / 1MHz bandwidth) I get perfect results. The output of U2 is noisy, the input of U1A ranges from roughly +12V to -12V, and the output of U1A gives me a random-ish digital output. I plan to feed this to a PIC and do bias correction on there.

The problem is that Multisim's resistors are ideal, or at least ideal enough to not produce any noise. As such, I can't test this. Will it work as I expect, or am I missing something?

Update #1:
I've split the opamp into three stages and introduced a second 10M resistor to make the input midscale. I now get a much higher bandwidth output and my gain is about 10,000.

Update #2:
Ok, I think we're getting there. Some resistor values have been tweaked, and a midpoint has been added.

• Just a comment: You're using a gain of 20000 in a single op amp stage. I would definitely split it into multiple stages for several reasons, one of which is that you'd need a pretty high gain-bandwidth op-amp to achieve that 20000 gain out to a bandwidth of more than a few hundred hertz. – Jason S Apr 11 '12 at 0:17
• One of my professors in college posed that question with some constraints (I can't remember what they were unfortunately) and showed a proof that the optimal gain per stage was e (=2.718281828...) -- that's a bit low for reality, but I'd guess that a gain of somewhere in the 10-100 range per stage would be appropriate. I'd probably split it into 3 stages myself (with a gain of about 27 per stage), but I don't know your bandwidth requirements. The first stage is going to need to be a low offset-voltage op-amp (come to mention it: you need to split R5 so that U2's + input is midscale). – Jason S Apr 11 '12 at 0:23
• You're closer... With the op-amps running off of a single supply, your gain will still cause the op-amps to saturate. You need to add gain relative to the midscale of the opamp input range.... so my suggestion to split R5 has probably led you astray... it would be better to create a supply midscale point (e.g. a pair of 1K resistors arranged in a voltage divider, the middle node being the "output", with capacitor bypassing to ground -- 0.1uF probably fine) and then connect all your 1.0K resistors there as well as one 10M resistor between the midscale point and the first + input.... – Jason S Apr 11 '12 at 1:10
• ...you need to use the same midscale point because if you used two separate midscale points, with a gain of 20,000, if you're even 1mV off that would create a 20V output offset. (Or you could AC-couple each stage.) BTW I am not an expert in noise sources; I think there's a way to do this with one or two HC04s as pseudo-amplifiers, but I can't remember where I saw this. – Jason S Apr 11 '12 at 1:11
• All looks good except for C2 which should be connected between ground and the midpoint of R12,R11. -40V DC?! methinks the software is getting confused.... what's the input bias current of a 3554AM? – Jason S Apr 11 '12 at 1:42