OK, I know how to do this now.
There are 3 main sources of noise that need to be calculated:
- Thermal noise of the resistors themselves
- Voltage noise of the op-amp itself
- Current noise of the op-amp, which interacts with the resistors to produce a voltage noise
So first, you want to find the equivalent resistance seen from the inputs of the op-amp looking outward into the circuit, with voltage sources set to 0 V (equivalent to converting them to short-circuits to ground). For this circuit: $$ R_\mathrm{eq}=(R_\mathrm{m}+R_\mathrm{s}+R_\mathrm{p})\|(R_\mathrm{f}+R_\mathrm{g}) $$
So for example, if Rs = 100 Ω, Rm = Rp = 1 kΩ, and Rf = Rg = 100 kΩ, then Req = 2.1 kΩ.
To find the thermal noise of this equivalent resistance, use the Johnson–Nyquist formula: $$ v_\mathrm{n}={\sqrt {4k_{\text{B}}TR\Delta f}} $$ There are online calculators to do this for you:
For example, with Req = 2.1 kΩ, at 27 °C, with an audio bandwidth of 22 kHz, the resistors would contribute 0.87 μVRMS = −121 dBV input noise.
Then find the voltage and current noise of the op-amp in the datasheet. Typically:
- If \$R_\mathrm{eq}\$ is small, you want a BJT-input op-amp, which has lower voltage noise (0.7-5 nV/√Hz), but higher current noise (500-4000 fA/√Hz).
- If \$R_\mathrm{eq}\$ is large, you want an FET-input op-amp, which has lower current noise (1-10 fA/√Hz), but higher voltage noise (3-15 nV/√Hz).
To convert the spectral density \$\tilde v\$ (in nV/√Hz) to a voltage (in VRMS), you need to multiply it by the square root of the bandwidth: $$ v_\mathrm{RMS}=\tilde v \cdot \sqrt{\Delta f} $$ So for example, if the op-amp is a TLC071, with equivalent input noise voltage density of 7 nV/√Hz, the voltage noise of the op-amp contributes 7 nV/√Hz ⋅ √(22 kHz) = 1.04 μVRMS = −120 dBV.
The resistor noise and op-amp noise are similar levels, which means they'll combine to about 3 dB higher, or −117 dBV. To calculate their combination exactly, since they're uncorrelated, you need to use root sum squared: $$ v_\mathrm{total}=\sqrt{{v_\mathrm{R}}^2+{v_\mathrm{OP}}^2} $$ So √(0.872+1.042) = 1.36 μVRMS = −117 dBV, as estimated.
The current noise is probably irrelevant for an FET-input op-amp, so we can skip to calculating the output noise: Just multiply the input noise by the gain of the amplifier. However, you need to multiply by the "noise gain", not the signal gain. To find the noise gain of the amp, convert your existing sources into short circuits and put a test voltage source right in series with the non-inverting input of the amp:
So the op-amp will do whatever it takes for the inverting input to equal the non-inverting input. There will be one current path: $$ I=\frac{V_\mathrm{out}}{R_\mathrm{f}+R_\mathrm{m}+R_\mathrm{s}+R_\mathrm{p}+R_\mathrm{g}} $$ and this is related to \$V_\mathrm{t}\$ by: $$ V_\mathrm{t}=I(R_\mathrm{m}+R_\mathrm{s}+R_\mathrm{p}) $$ combining and solving: $$ \frac {V_\mathrm{out}}{V_\mathrm{t}} = \frac {R_\mathrm{f}+R_\mathrm{m}+R_\mathrm{s}+R_\mathrm{p}+R_\mathrm{g}}{R_\mathrm{m}+R_\mathrm{s}+R_\mathrm{p}} $$ So in our case, this is a noise gain of 96.2× = +39.7 dB, and our input noise of −117 dBV becomes −77 dBV at the output. (A TINA simulation gives 137.5 μVRMS = −77 dBV, for comparison.)
More detailed steps
There are several extra steps you can do to make your calculation more accurate:
To calculate the effect of the op-amp's current noise, take the current noise and multiply it by the equivalent resistance calculated earlier. For the TLC071, this is 0.6 fA/√Hz. So, combined with \$R_\mathrm{eq}\$ of 2.1 kΩ, we get 0.00126 nV/√Hz. Obviously this is much smaller than the op-amp's voltage noise, so it will have no effect on the result in this example. In cases with large \$R_\mathrm{eq}\$, it will have an effect. You can calculate it this way and combine it with the other sources as shown above: $$ v_\mathrm{total}=\sqrt{{v_\mathrm{R}}^2+{v_\mathrm{V}}^2+{v_\mathrm{I}}^2} $$ Also likely to have an effect is the bandwidth of your measurement equipment. The previous measurements assume a brickwall filter at 22 kHz, but brickwall filters can't exist in reality. You can correct for the fall-off of a real-life filter by calculating the equivalent noise bandwidth (ENBW). Here's a table of ENBW Filter correction factors vs order. See also Why are there two sets of ENBW correction factors?
In fact, voltage noise of the op-amp is not actually a constant. It varies with frequency, so is better written as \$\tilde v(f)\$. You can calculate it more accurately with numerical integration. See Noise and what does V/√Hz actually mean?