Sunday, 24 June 2018

operational amplifier - 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:


Resistor thermal noise based generator (revision 0)


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. Resistor thermal noise based generator (revision 1)


Update #2:
Ok, I think we're getting there. Some resistor values have been tweaked, and a midpoint has been added. Resistor thermal noise based generator (revision 2)



Answer



you got popcorn noise on front end OA too.. no longer random


OP Amps generate Pop Corn noise unlike thermal brownian motion random noise, so your assumption was invalid. THis works for microwave noise range but not for audio frequency range unless you use low noise OA that is lower than a resistor. Hence your design will not create random number gnerator from the time domain bias of pop corn noise in active parts.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...