Richard Lee's Ultra low Noise MC Head Amp

I wonder why nobody had the patience to do a trivial spice exercise and identify the noise properties of the transistor model. Here's what you get in PSpice, it LTSpice provides the same, then the discrepancies are elsewhere in the schematics.

noise-schematic.jpg, schematic for the test

noise-default-model.jpg, result for ZTX851 default model @ Ic=5mA. Flat noise (as expected) 211pV/rtHz. gm=5*40=200mS, rendering a noise source of 1/(2*gm)=200pV/rtHz. 211pV/rtHz simulated vs. 200pV/rtHz quick pen and paper calculation, couldn't get closer.

noise-with-RB.jpg, result for ZTX851 with RB=1.5ohm same Ic=5mA. Same flat noise (as expected) with 263pV/rtHz. This is 4.3ohm equivalent. Now subtract the SQRT(2*q*Ib)*RB noise and the 1/(2*gm) we get the noise calculated Rbb=1.8 ohm, pretty good fit, if you ask me, with RB=1.5ohm used in the model.

noise-with-ic.jpg, results for ZTX861 with RB=1.5ohm and variable Ic, 1mA to 7mA top-down in the table. Checking for extremes, @1mA we get a noise calculated Rbb=3ohm and @7mA we get Rbb=1.75ohm

Conclusion is that the noise equivalent Rn=RB+1/(2*gm) approximation for the noise holds only for larger collector currents. At low collector currents, this approximation is optimistic. I'll check again the bipolar model template and the default values in PSpice to understand this discrepancy at low collector currents (1mA or lower).

If anybody could repeat this in LTSpice and see if they get the same numbers...
In LTSpice using the same layout and calculation and the same Rb=1R5 as you did, I get resp. for Rbb:
1mA Rbb=3R27
5mA Rbb=1R65
10mA Rbb=1R58

Hans
 
In LTSpice using the same layout and calculation and the same Rb=1R5 as you did, I get resp. for Rbb:
1mA Rbb=3R27
5mA Rbb=1R65
10mA Rbb=1R58

So LTSpice is returning more or less the same results as a pro version of Spice. That's encouraging for setting up a common baseline. It would be interesting to figure out why the 1/(2gm) approximation doesn't hold below Ic=1-2mA.
 
It would be interesting to figure out why the 1/(2gm) approximation doesn't hold below Ic=1-2mA.
Guru Wurcer?
___________________________________________________
I'm not sure this is a problem in practice. Taking Hans' LTspice numbers ..

At 1mA, 1/2gm = 12R5

So Rnv = (1/2gm) + rbb' is either
12R5 + 1R58 = 14R08 using the 10mA 'measured' value
or
12R5 + 3R27 = 15R77 using the 1mA 'measured' value.

This is a difference in Rnv of 15.77/14.08 = 1.12 which is less than 0.5dB
If you are running 1mA, you will be matching a source of 25R or more so the total noise 'error' will be much less.

I'm not sure, even in da 21st century, you can reliably measure a noise difference less than 0.5dB so I'm happy to take the SPICE numbers as a guide to potential noise performance.

But like Hans & syn08, I'm interested in what Guru Wurcer has to say about these EVIL SPICE errors :)
 
Guru Wurcer?
___________________________________________________


But like Hans & syn08, I'm interested in what Guru Wurcer has to say about these EVIL SPICE errors :)

I can't help as much as in the past since now I am stuck with LTSPICE alone as most here are. I no longer have access to our in house version ADICE (of course) which IMO was worlds above, a politically incorrect statement these days (I no longer have to care).

For instance from the command line you could instantly list all noise contributors in descending order as either RTI or RTO even those embedded inside any subcircuit or device.
 
Last edited:
Here is the info in a bit more detail.

Hans
 

Attachments

  • ZTX851.jpg
    ZTX851.jpg
    97.4 KB · Views: 394
So LTSpice is returning more or less the same results as a pro version of Spice. That's encouraging for setting up a common baseline. It would be interesting to figure out why the 1/(2gm) approximation doesn't hold below Ic=1-2mA.

One could repeat that in NGspice. If it still persists, one could see how this is handled in the source code. The LTspice netlist probably fits.

Ngspice, the open source Spice circuit simulator - Intro
 
Last edited:
One could repeat that in NGspice. If it still persists, one could see how this is handled in the source code. The LTspice netlist probably fits.

Source code has nothing to do with, it must be related to the bipolar transistor model. I checked all relevant parameters, 1/f noise is by default zero (KF=0), etc... nothing that justifies this behaviour. Next step is to start with a blank all defaults model, and if it doesn’t reproduce the issue add one by one the parameters to the model and see which one is responsible. I’m in particular curious about how Beta is vs. Ic in the ZTX models, that could impact the current noise and therefore the RB*Inoise contribution. If that’s overestimated, it would then appear as an excess value for RB.
 
Source code has nothing to do with, it must be related to the bipolar transistor model. I checked all relevant parameters, 1/f noise is by default zero (KF=0), etc... nothing that justifies this behaviour. Next step is to start with a blank all defaults model, and if it doesn’t reproduce the issue add one by one the parameters to the model and see which one is responsible. I’m in particular curious about how Beta is vs. Ic in the ZTX models, that could impact the current noise and therefore the RB*Inoise contribution. If that’s overestimated, it would then appear as an excess value for RB.
I've changed all parameters one by one, making them as well bigger and smaller.
Effect of most parameters on noise production is very small, with the exception of NE and NF, where reaction can be quite violent.
However, it was not possible to change parameters in such a way that Rbb became relatively stable from 1mA to 10mA and close to 1R5.


Hans
 
Source code has nothing to do with, it must be related to the bipolar transistor model.

Of course, the source code has everything to do with it.
What you call model are just some parameters.
The real bjt model is in the source code - and where the rubber hits the road,
the transistor must be plugged into the conduction matrix. From there,
you can trace back and see how the parameters are mangled.


For ngspice, it seems to be in ...../ngspice/src/spicelib/devices/bjt/bjtload.c
Cloning the source repository to my local disk took less than 5 minutes.
I simply searched for rb in the obvious place.

No, I won't dig there. I have enough uncompleted things.
I'll now continue populating the new FET board.
 

Attachments

  • Auswahl_006.png
    Auswahl_006.png
    120.6 KB · Views: 340
Last edited:
Source code has nothing to do with, it must be related to the bipolar transistor model. I checked all relevant parameters, 1/f noise is by default zero (KF=0), etc... nothing that justifies this behaviour. Next step is to start with a blank all defaults model, and if it doesn’t reproduce the issue add one by one the parameters to the model and see which one is responsible. I’m in particular curious about how Beta is vs. Ic in the ZTX models, that could impact the current noise and therefore the RB*Inoise contribution. If that’s overestimated, it would then appear as an excess value for RB.

Nope, the default NPN model makes the mystery even deeper.

With

.MODEL NPNDEF NPN

@6mA the noise equivalent is 2.4ohm, 1/2gm=2.1 ohm
@1mA the noise equivalent is 18.3ohm, 1/2gm=12.5ohm

I have no idea where the rather large difference at low currents is coming from. The other funny part is that for Ic larger than 6-7mA, the noise actually increases with Ic, reaching 350pV/rtHz @ 10mA (7.6ohm equivalent). So an input referred noise vs. Ic plot has actually a minimum @ 6-7mA. Again, this is with the pure default NPN spice model. Very strange. I'll check the original Berkley Spice source code for any clues on how noise is calculated.
 
I have no idea where the rather large difference at low currents is coming from. The other funny part is that for Ic larger than 6-7mA, the noise actually increases with Ic, reaching 350pV/rtHz @ 10mA (7.6ohm equivalent). So an input referred noise vs. Ic plot has actually a minimum @ 6-7mA. Again, this is with the pure default NPN spice model. Very strange. I'll check the original Berkley Spice source code for any clues on how noise is calculated.
With LTSpice, noise doesn't increase above 7mA, see here
Richard Lee's Ultra low Noise MC Head Amp
217pV/rtHz @ 10mA


Hans
 
I had no problem getting the correct result with LTSpice. ZTX device self biased at 30uA with a 1M collector R, 200M base R, and 1F on base to ground, 1/2gm RTI noise almost exactly.Scott

Scott,
Ib=30uA corresponds to above Ic=5mA in the table, where Rbb almost exactly matches the inserted RB=1R5
Richard Lee's Ultra low Noise MC Head Amp
Deviation starts at much lower currents, try Ib=5uA corresponding to Ic=1mA.

Hans
 
Sorry, I misread that.
With LTSpice and a generic NPN transistor:

Ic=1mA Noise=488pV/rtHz Noise 1/2gm=456pV/rtHz
Ic=5mA Noise=210pV/rtHz Noise 1/2gm=204pV/rtHz
Ic=10mA Noise=147pV/rtHz Noise 1/2gm=144pV/rtHz

Hans

Strange. Care to post the schematic you are using?

If I bias the NPN with a current source in the emitter, I get much closer to the 1/2gm values, at all IE current values. And a monotonic behavior, as expected.

@1mA 15ohm vs. 1/2gm 12.5ohm
@6mA 2.3ohm vs. 1/2gm=2.1ohm
@10mA 1.37ohm vs. 1/2gm=1.25ohm
 
Last edited:
Here it is

Hans

So, with this schematic you get the theoretical values for noise, with the default NPN model, correct?

Then this boils down again to some differences in how simulators are handling the noise calculation.

The difference could be on how the simulator calculates gm with constant IE vs. constant VB.

This is what I get @ constant IE, 1...10mA step 1mA

For comparison, I'm attaching the results @ constant VB, 1...6mA step 1mA

Schematics for const. VB and const. IE are also attached.
 

Attachments

  • CC_noise.jpg
    CC_noise.jpg
    230.9 KB · Views: 289
  • CV_noise.jpg
    CV_noise.jpg
    177.3 KB · Views: 274
  • schematics.jpg
    schematics.jpg
    26.2 KB · Views: 239
Last edited: