A tabular source approach to modelling and simulating device
and circuit noise in the time domain
M. E. Brinson
1∗, S. Jahn
2and H. Nabijou
31 Centre for Communications Technology, London Metropolitan University, London N7 8DB, U.K. 2 Qucs project manager, Munich, Germany.
3 Centre for Communications Technology, London Metropolitan University, London N7 8DB, U.K.
SUMMARY
Simulation of device and circuit noise at low frequencies is often done as part of small signal ac analysis. Moreover, circuit simulators with rf analysis capabilities usually specify circuit performance in terms of S parameters and model high frequency noise in terms of noise waves and correlation matrices. It is also unusual to find circuit simulators that extend noise simulation to the time domain. This is particularly true for software packages developed from SPICE 2g6 or 3f5. This paper introduces a simple tabular noise source technique which adds time domain noise to semiconductor device models and integrated circuit macromodels. The proposed technique is suitable for use with any general purpose circuit simulator. To demonstrate the power of the suggested approach the text describes time domain noise extensions to the SPICE diode, BJT, JFET, MOSFET and MESFET models. These noise extensions have been implemented and tested with the “Quite universal circuit simulator” (Qucs). Copyright c 2010 John Wiley & Sons, Ltd.
key words: Tabular noise sources; thermal, shot and 1/f noise, mixed-mode equation-defined noise
macromodels; Qucs: circuit simulation; Verilog-A
1. INTRODUCTION
Computer aided noise analysis is important in the design of analogue and microwave integrated circuits. The popular SPICE 2g6 and 3f5 circuit simulators [1], [2] use dc non-linear component linearisation plus small signal ac analysis to determine noise. In this technique individual noise contributions are modelled by small signal ac current sources connected at a point in a circuit where the noise originates. The resulting signals propagate through a linearised circuit, appearing at an output as a signal equivalent to noise with modified spectral density. Due to the fact that individual noise contributions are uncorrelated, the total output power spectral density becomes the sum of the power spectrum densities resulting from each noise component. In microwave integrated circuit design it has become common practice to specify the circuit
∗Correspondence to: M. E. Brinson, Centre for Communications Technology, London Metropolitan University,
properties of an n port network in terms of S parameters and to express circuit noise as noise waves, where the noise characteristics are defined by an outgoing noise wave from each port and a matrix representing the correlation between noise sources [3]. Unfortunately, both small signal ac and S parameter noise analysis techniques are applicable only to the simulation of circuits in the frequency domain, implying that alternative analysis methods are required for the simulation of analogue and mixed-mode circuit noise in the time domain. A number of such techniques have been reported in the published literature. These are often based on the solution of stochastic differential algebraic equations [4],[5]. In general however, there would appear to be no universally established practice for modelling time domain noise among the open source General Public License (GPL) and commercial circuit simulators. Moreover, a high percentage of circuit simulators developed from SPICE 2g6 or 3f5 make no attempt to simulate circuit noise in the time domain. This paper introduces a simple tabular noise source technique which allows time domain noise properties to be added to existing and new device models and circuit macromodels. The proposed technique is suitable for use with any general purpose circuit simulator which allows subcircuits, equation-defined components (or Verilog-A code models) and a text file (or a net-list statement) for listing tabulated voltage and current source noise data. To demonstrate the power of the proposed approach the paper describes extensions to the SPICE diode, BJT, JFET, MOSFET [6] and MESFET [7] models which add time domain noise properties to the published SPICE models. These models have been implemented and tested with the GPL “Quite universal circuit simulator” (Qucs) [8].
2. TABULAR TEXT FILES AS VOLTAGE AND CURRENT NOISE SOURCES
The analysis of noise in the time domain can be undertaken with transient simulation provided component or circuit noise is modelled by time dependent voltage or current sources which generate random signals with the correct magnitudes and spectral distributions. During transient simulation, at each time step, injected noise perturbs circuit voltage and current signals, leading to output waveforms which have noise components superimposed on the signals being processed. Circuit simulators that do not incorporate time dependent noise operate essentially in a noise free environment which leads to output waveforms that exhibit ideal signal characteristics rather than those observed with measured signals. Time domain noise simulation is not intended to replace small signal ac or S parameter noise analysis but is introduced as an additional CAD technique which allows the effects of noise to be observed on ac time domain and mixed-mode signal waveforms, particularly at small signal levels commonly found in low noise circuits. The Qucs circuit simulator is one of a number of General Public License (GPL) software packages which have become very popular amongst the science and engineering communities for rf and non-linear transient domain simulation. A second highly respected GPL program is the numerical mathematics package Octave [9]. By linking Qucs and Octave it becomes possible to use Octave programming features and numerical data processing facilities to firstly generate Qucs time dependent tabular voltage and current source data files or secondly to post-process Qucs simulation output data. Shown in Figure 1 are the schematics for Qucs file type voltage and current generators [10], where generator output voltage v2(t) and current i2(t) are normalised functions of white noise pseudo random distribution ξn(t)
V1 File=vfile.dat Interpolator=linear G=gain I1 File=ifile.dat Interpolator=linear G=gain (a) (b)
Figure 1. Qucs text file based signal generator schematics: (a) voltage; (b) current.
Table I. Thermal, shot and 1/f noise source equations
Noise type Equation
R thermal noise voltage vT Hn2(t) = SW T H· 4 · k · T · R · 4f · ξn(t)
R thermal noise current iT Hn2(t) = SW T H·4· k · T
R · 4f · ξn(t)
Shot noise current iSHn2(t) = SW SH· 2 · q · IDC· 4f · ξn(t)
1/f (flicker) noise current iF n2(t) = SW F· Kf · IDC· 4f · ξf(t)
Where 4f is the noise frequency bandwidth in Hz, R is a resistance value in Ω, k is Boltzmann’s constant,
T is temperature in Kelvin, q is the electron charge, IDC is dc current in A, and Kf is a 1/f noise coefficient.
ξn(t) is a white noise sequence (values against time) with a pseudo random distribution having zero average
value and a variance of one. ξf(t) is a normalised noise sequence with a 1/fAf pseudo random distribution
with Af a 1/f noise exponent. Parameters SWTH, SWSH and SWF act as on-off switches; when 1 individual noise contributions are turned on, when 0 contributions are off.
time dependent thermal, shot and 1/f (flicker) noise sources can be formed from ξn(t) and
ξf(t). Qucs allows linear, hold or spline interpolation of tabular data with the data sequence
either repeating, when its end is reached, or held at its final value for all future values of time. Qucs files “vfile.dat” and “ifile.dat” list the tabulated data and its associated time values in seconds. A basic Octave m script is given in Table II which is suitable for generating Qucs “xx.dat” text files [11].
3. MODELLING THERMAL NOISE IN THE TIME DOMAIN
Figure 2 shows a simple time domain test circuit for recording the thermal noise [12] generated by a number of different resistors. The resistor noise model consists of a tabular voltage generator, formed from one million pseudo random white noise voltage samples taken over a one second period, in series with a noise free resistor. Qucs equation block Eqn5 is used to calculate the voltage source parameters prior to the start of a transient simulation. In this context variable Scale−f actor defines a scaling constant which is a function of the noise rms to peak conversion crest factor (1 to approximately 3.2 depending on the type of noise [13]). Scale−f actor supports scaling of the Qucs generated noise values to fit theoretical or measured noise data. Similarly, equation script Eqn1 forms part of the transient simulation control instructions. This script is also actioned before the start of transient simulation. Post transient simulation data analysis is undertaken by the code listed in Qucs equation block Eqn6. Eqn6 calculates the rms values of the resistor noise voltages from the Qucs time domain
Table II. Octave m script for generating Qucs “xxx.dat” noise data files. filename = input(’Enter name of dat file [format ’’file1.dat’’] > ’);
Version = input(’Enter Qucs version number [format ’’x.x.xx’’] > ’);
Npoints = input(’Enter the number of data points in noise sequence > ’);
Ftime = input(’Enter the finish time of the noise sequence [in seconds] > ’);
IorV = input(’Enter current or voltage generator [format ’’I’’ or ’’V’’ ] > ’);
Type = input(’Enter type of noise required [format ’’n’’ or ’’f’’] > ’);
% n = normally distributed pseudo-random elements having zero mean
% and varience one.
% f = 1/(f^Af) power law pseudo-random elements. if (Type == ’n’)
x = randn(1,Npoints); elseif (Type == ’f’)
alpha = input(’Enter power law coefficient > ’); x = powernoise(alpha, Npoints, ’normalize’); endif
Ts = Ftime/Npoints; n = 0:length(x)-1; t=Ts*n; fid = fopen(filename, "w");
fprintf(fid, "<Qucs Dataset %s>\n", Version); fputs(fid, "<indep time ");
fprintf(fid, "%d>\n", Npoints); for i= 1 : length(t)
fprintf(fid, "%12.3e\n", t(i)); endfor
fputs(fid, "</indep>\n"); if (IorV == ’I’)
fputs(fid, "<dep IOctave.It time>\n"); else
fputs(fid, "<dep VOctave.Vt time>\n"); endif
for i= 1 : length(t)
fprintf(fid, "%11.4e\n", x(i)); endfor
fputs(fid, "</dep>\n"); fclose(fid);
Octave function “powernoise” generates 1/fAf pseudo random sequences, where Af≈ 1 [16].
simulation output data. The waveforms plotted in Figure 2 show the time domain noise data generated by Qucs. Waveform inserts give values for both the Qucs time domain and ac small signal voltage rms values obtained from simulation. Clearly this data confirms agreement between the time and ac domain noise models. Current generator thermal noise models show similar behaviour. Careful inspection of the waveforms in Figure 2 also confirm that the four noise voltage generator signals are uncorrelated.
4. MODELLING SHOT NOISE IN THE TIME DOMAIN
Figure 3 introduces a tabular time domain model for transient simulation of current shot noise [12]. In Figure 3(a) a schematic symbol for the shot noise subcircuit is drawn where the left-hand side of the circuit is used to sense the dc current generating the shot noise, and ξn(t)
and iSHn are as defined in Table I. The body of the time domain shot noise model is given in Figure 3(b). Resistor Rx and capacitor Cx act as a low pass filter that ensures the value
Equation Eqn6 Vn1rms=rms(Vn1.Vt) Vn3rms=rms(Vn3.Vt) Vn4rms=rms(Vn4.Vt) Vn2rms=rms(Vn2.Vt) transient simulation TR1 Type=lin Start=0 Stop=Ftime Points=16384 IntegrationMethod=Gear Order=4 MaxIter=1500 abstol=10 pA vntol=10 uV R2 R=R1 V4 File=VN3_1s_1e6_1.dat G=gain1 R3 R=R3 V6 File=VN3_1s_1e6_3.dat G=gain3 Equation Eqn5 gain1=SWTH*Scale_factor*sqrt(4*kB*TK*R1) gain2=SWTH*Scale_factor*sqrt(4*kB*TK*R2) gain3=SWTH*Scale_factor*sqrt(4*kB*TK*R3) gain4=SWTH*Scale_factor*sqrt(4*kB*TK*R4) TK=26.85+Temp R1=1 R2=100 R3=10000 R4=1000000 SWTH=1 Temp=273.15 Scale_factor=1.2 Equation Eqn1 Points=16384 Ftime=1 dc simulation DC1 V5 File=VN3_1s_1e6_2.dat G=gain2 R1 R=R2 V7 File=VN3_1s_1e6_4.dat G=gain4 R4 R=R4 Vn1 Vn3 Vn2 Vn4 0 0.1 0.2 -5e-10 0 5e-10 Time (s) Vn1 (V) 0 0.1 0.2 -5e-7 0 5e-7 Time (s) Vn4 (V) 0 0.1 0.2 -5e-8 0 5e-8 Time (s) VN3 (V) 0 0.1 0.2 -5e-9 0 5e-9 Time (s) Vn2 (V) Vn3: tran=1.26e-8 (V rms); ac=1.287e-8 (V/sqrt(Hz))) Vn1: tran=1.26e-10 (V rms); ac=1.287e-10 (V/sqrt(Hz))) Vn3: tran=1.26e-8 (V rms); ac=1.287e-8 (V/sqrt(Hz)) Vn2: tran=1.274e-9 (V rms); ac=1.287e-9 (V/sqrt(Hz))
Figure 2. Time domain resistor noise test circuit, Qucs equation scripts for transient domain simulation and post processing noise waveforms: simulation period 1 second, and linear interpolation with Gaussian voltage noise variance; file VN3−1s−1e6−1.dat = 0.942 V2, file VN3−1s−1e6−2.dat = 0.950 V2, file VN3−1s−1e6−3.dat = 0.952 V2, file VN3−1s−1e6−4.dat = 0.958 V2, and average values (dc); file VN3
−1s−1e6−1.dat =
0.0124 V , file VN3−1s−1e6−2.dat = -0.00789 V , file VN3−1s−1e6−3.dat = 0.0111 V , file VN3−1s−1e6−4.dat = 0.0047 V .
of the current used to calculate shot noise is purely dc and does not contain any time varying components. Shot noise is computed during simulation by Qucs non-linear equation-defined device EDD D1 [14]. The graph plotted in Figure 3(c) presents a set of shot noise results obtained from simulation of the shot noise subcircuit model over the dc current range 1µA to 1A. Table III lists a Verilog-A [15] analogue module for the current shot noise model. The structure of the model and the basis for the current contribution statements can be identified by comparing the Verilog-A code with the Qucs schematic drawn in Figure 3(b).
5. MODELLING 1/f NOISE IN THE TIME DOMAIN
The tabular time domain model for transient simulation of 1/f noise [12] is similar to the shot noise model illustrated in Figure 3. The major change required is to replace EDD D1 equation
IDC ξn(t) iSHn SHnoise1 Rsense=0.1 Rx=10k Cx=1u SWSH=1 Scale_factor=1 R3 R=Rsense R4 R=Rx C2 C=Cx NoiseOut3 SRC2 G=K1 1 2 3 D2 I1=K2*sqrt(1e-30+V3*K3)*V2 I2=V2 I3=0 PIDCin2 PIDCout2 PSHnoise2 NoiseOut4 Equation Eqn2 K1=1/Rsense K2=SWSH*Scale_factor K3=2*q/Rx
1e-6 1e-5 1e-4 1e-3 0.01 0.1 1 3e-13 1e-12 1e-11 1e-10 1e-9 Idc (A) Shot noise (A rms) (a) (b) (c)
Figure 3. Time domain shot noise subcircuit model: (a) Qucs schematic symbol; (b) model body; (c) shot noise plotted against dc current.
Table III. Verilog-A code for a current shot noise time domain model. ‘include "disciplines.vams"
‘include "constants.vams"
module TDShotNoise(PIDCin, PIDCout, PSHnoise, NoiseOut1, NoiseOut2); inout PIDCin, PIDCout, PSHnoise, NoiseOut1, NoiseOut2;
electrical PIDCin, PIDCout, PSHnoise, NoiseOut1, NoiseOut2; electrical n1;
‘define attr(txt) (*txt*)
parameter real Rsense = 0.1 from [1e-3 : inf]
‘attr(info = "Current sense resistor" unit="Ohm");
parameter real Rx = 10e3 from [1 : inf]
‘attr(info = "Low pass filter resistance resistance" unit = "Ohm");
parameter real Cx = 1e-6 from [1e-12 : inf]
‘attr(info = "Low pass filter capacitance" unit = "F");
parameter integer SWSH = 1 from [0 : 1]
‘attr(info = "Noise on-off switch: on=1; off=0");
parameter real Scale_factor = 1.2 from [1 : inf]
‘attr(info = "function of the noise rms to peak conversion factor"); real K1, K2, K3; analog begin @(initial_model) begin K1 = 1/Rsense; K2 = SWSH*Scale_factor; K3 = 2*‘P_Q/Rx; end // Current contributions I(PIDCin,PIDCout) <+ V(PIDCin,PIDCout)*K1; I(n1) <+ -V(PIDCin,PIDCout)*K1; I(n1) <+ V(n1)/Rx; I(n1) <+ ddt(Cx*V(n1)); I(PSHnoise) <+ V(PSHnoise);
I(NoiseOut1, NoiseOut2) <+ K2*sqrt(1e-30+V(n1)*K3)*V(PSHnoise); end
IDC R2 R=1 V3
U=1 IDC ξf(t) iFn
Fnoise1 Rsense=1e-4 Rx=10k Cx=1u SWF=1 Scale_factor=12 Kf=1e-14 I2 File=IF3_1s_1e6_1.dat Inoise R1 R=1 Equation Eqn1 Len=Points LenO2=Len/2
f=linspace(0, LenO2-1, LenO2)/Ftime Inoise=abs(fft(Inoise.It))/LenO2 InMagNoise=PlotVs(Inoise,f) Equation Eqn2 Points=16384 Ftime=1 transient simulation TR1 Type=lin Start=0 Stop=Ftime Points=16384 dc simulation DC1 0 0.2 0.4 0.6 0.8 1 -1e-6 0 1e-6 Time (s) Inoise (A) 1 10 100 1e31e-10 1e-9 1e-8 1e-7 1e-10 1e-9 1e-8 1e-7 Frequency (Hz)
Inoise spectra (A/sqrt(Hz))
Inoise ac (A/sqrt(Hz))
Figure 4. Time domain 1/f noise test circuit and simulation waveforms: frequency domain plot; solid line left hand scale, dashed line right hand scale.
I1 by equation 1.
I1 = K2∗ sqrt(1e − 30 + V 3 ∗ Kf) ∗ V 2 (1) Where K2 = SW F∗ Scale−f actor. Parameter SWSH also needs changing to SWF. Similarly, note variable K3 is no longer required. Corresponding changes are also needed to adapt the Verilog-A shot noise module code, including changing the Verilog-A module name to say TDFlickerNoise. Figure 4 gives a basic simulation test circuit which allows the 1/f noise to be recorded as a function of time. Central to the time domain 1/f model is a tabular current generator, I2 in Figure 4, formed from one million noise samples with normalised 1/f pseudo random distribution. The waveforms in Figure 4 show the generated 1/f noise for a period of one second. Qucs equation block Eqn1 lists a post simulation script that extracts the noise spectra of the 1/f time domain data. FFT techniques were used to assemble the frequency domain plot. Comparison between the time domain and the small signal ac noise data indicates good agreement. However, one feature of the shot and 1/f noise data is worth commenting on, namely that the Scale−f actor for each type of noise is different, namely roughly 1 for shot noise and 12 for 1/f noise. One possible explanation for this is crest factors for the two different noise sequences; with shot noise a crest factor of around 1 (Scale−f actor ≈ 1.2) seems correct, while for 1/f noise a crest factor of around 3.2 (Scale−f actor ≈ 3.22) appears to be more
appropriate [17].
6. MODELLING DIODE NOISE IN THE TIME DOMAIN
The SPICE semiconductor diode model includes small signal ac series resistive thermal noise, shunt shot noise and shunt 1/f noise. However, standard SPICE does not model burst (popcorn) [6] noise. The thermal noise, shot noise and 1/f noise contributions are given by equations 2
LSN DLSN1 ScaleSH=1.2 Rs=1e-6 Kf=1e-14 Temp=26.85 SWR=1 SWSH=1 SWF=1 ScaleF=12 ScaleR=1 Anode1 R1 R=Rs I1 File=IT_1s_65536_2.dat G=gain_Rs
Cathode1 IDC ξf(t) iFn Fnoise1 Rsense=1e-3 Rx=10k Cx=1u SWF=SWF Scale_factor=ScaleF Kf=Kf IDC ξn(t) iSHn SHnoise1 Rsense=1e-3 Rx=10k Cx=1u SWSH=SWSH Scale_factor=ScaleSH Equation Eqn1 gain_Rs=SWR*ScaleR*sqrt(4*kB*TK/Rs) TK=273.15+Temp D1 Is=1e-16 A N=1 Cj0=10 fF Rs=0.0 Ohm Kf=0 I2 File=IN3_1s_1e6_4.dat G=1 I3 File=IF3_1s_1e6_2.dat G=1 A C A C C A (b) (a)
Figure 5. A semiconductor diode model with time domain noise additions: (a) Qucs schematic symbol; (b) model body.
and 3 respectively. i2RS(t) =4· k · T RS · 4f · ξn(t) (2) i2D(t) = 2· q · ID· 4f · ξn(t) + Kf· ID fAf · 4f · ξf(t) (3)
Where ID is the diode dc current in A and RS is the diode series resistance in Ω. The
other symbols have the same meaning as previously defined. Time domain equivalent noise components can be added to the SPICE diode model by combining the published diode model with the tabular noise models introduced in previous sections. Figure 5 gives such a model. In Figure 5 a resistance RS is connected in series with the shot and 1/f noise generation components and a standard SPICE diode (D1), ensuring that the dc current flows between the Qucs diode subcircuit anode and cathode terminals. The diode internal value of RS is set to zero to ensure that only one copy of RS is included in the large signal diode noise model. The simulation test results illustrated in Figure 6 confirm good agreement between the small signal ac and time domain noise models. Again a best fit value for the 1/f Scale−f actor was found to be approximately 3.22, suggesting that the rms to peak crest factor for 1/f noise signals is
roughly 3.2. With SWF set to 0 the rms value of the diode shot noise can be extracted from the time domain diode noise waveform, yielding a figure of 5.592e-10 A rms which is very close to the theoretical value of 5.762e-10 A/sqrt(Hz).
Id V1 U=0.9545 dc simulation DC1 transient simulation TR1 Type=lin Start=0 Stop=Ftime Points=16384 IntegrationMethod=Gear Order=4 abstol=100 pA vntol=100 uV Equation Eqn2 Points=16384 Ftime=1 Equation Eqn1 Id_noise=Id.It-Id.I Equation Eqn4 Len=Points LenO2=Len/2
f=linspace(0, LenO2-1, LenO2)/Ftime Inoise=abs(fft(Id_noise))/LenO2 MagNoise=PlotVs(Inoise,f) LSN DLSN1 ScaleSH=1.2 Rs=1e-6 Kf=1e-14 Temp=26.85 SWR=1 SWSH=1 SWF=1 ScaleF=12 ScaleR=1 0 0.2 0.4 0.6 0.8 1 -1e-6 0 1e-6 Time (s) Id noise (A) 1 10 100 1e31e-10 1e-9 1e-8 1e-7 1e-10 1e-9 1e-8 1e-7 Frequency (Hz)
Id noise spectrum (A/sqrt(Hz))
Id ac noise (A/sqrt(Hz))
Figure 6. Time domain diode noise test circuit and simulation waveforms: frequency domain plot; solid line left hand scale, dashed line right hand scale.
7. MODELLING BJT NOISE IN THE TIME DOMAIN
A time domain noise model for an npn bipolar junction transistor (BJT) is illustrated in Figure 7. The noise contributions in this model are given by equations 4 and 5 respectively.
i2RB(t) = 4· k · T RB · 4f · ξn(t), i 2 RC(t) = 4· k · T RC · 4f · ξn(t) i 2 RE(t) = 4· k · T RE · 4f · ξn(t) (4) i2C(t) = 2· q · IC· 4f · ξn(t), i 2 B(t) = 2· q · IB· 4f · ξn(t) + KF· IB fAf · 4f · ξf(t) (5)
Where IC is the BJT dc collector current in A, IB is the BJT dc base current in A, Rc is
the BJT series collector resistance in Ω, RB is the BJT series base resistance in Ω, and RE is the BJT series emitter resistance in Ω. Unlike the diode time domain noise model shown in Figure 5 the npn BJT model has been optimized for run time speed by minimizing the number of circuit nodes, subcircuit blocks and standard components. The structure of the npn BJT model is arranged to allow easy conversion to Verilog-A code using the example shown in Table III as a template. Figure 8 gives a basic BJT noise test circuit and a set of time and frequency domain simulation waveforms. The latter being obtained using FFT techniques. To ensure that the noise current can flow in the BJT base lead a 50k Ω resistor has been added to the test circuit, resulting in a base noise current that depends on the ratio of the 50kΩ resistor and the value of rπ in the BJT ac equivalent circuit at its dc operating point. The frequency
domain plots show Qucs small signal ac noise analysis results superimposed on the noise data extracted from the npn BJT time domain noise model. The ac domain results were obtained using the same test circuit as the one shown in Figure 8. Comparison of the small signal ac and time domain collector current noise data indicates good agreement between both sets of noise data. This is very much expected as frequency dependent 1/f noise dominates the collector current noise. A similar comparison of base current noise appear to suggest differences, at higher frequencies, between the small signal ac and time domain results. However, both sets of data plotted in Figure 8 are correct: at low frequencies 1/f noise again dominates yielding
T1 Type=npn Is=1e-16 Nf=1 Vaf=0 Bf=100 SRC1 G=1 R2 R=Rb R1 R=Rc R3 R=Re B C Num=1 E I3 File=IN3_1s_1e6_2.dat G=gain_Rb I4 File=IN3_1s_1e6_3.dat G=gain_Re I6 File=IN3_1s_1e6_1.dat G=gain_Rc I1 File=IN3_1s_1e6_4.dat G=gain_shot I2 File=IF_1s_65536_1.dat G=gain_flicker SRC2 G=1 I5 File=IN3_1s_1e6_5.dat G=gain_shot R4 R=20k 1 2 3 D1 I1=V2*sqrt(V3+1e-30) I2=V2 I3=0 C1 C=Cx R5 R=Rx C2 C=Cx 1 2 3 D2 I1=V2*sqrt(V3+1e-30) I2=V2 I3=0 Equation Eqn1 gain_shot=SWSH*ScaleSH*sqrt(K4) gain_flicker=SWF*ScaleF*sqrt(K5) gain_Rc=SWR*sqrt(4*kB*TK/Rc) gain_Rb=SWR*sqrt(4*kB*TK/Rb) gain_Re=SWR*sqrt(4*kB*TK/Re) TK=273.15+Temp K4=2*q/Rx K5=Kf/Rx Rx=20k Cx=1u LSN TLSN1 ScaleSH=1.2 Rc=1e-3 Rb=1e-3 Re=1e-3 SWR=1 SWSH=1 SWF=1 ScaleF=12 Kf=1e-16 Temp=26.85 Bint Cint Eint Cint Eint Bint Eint (a) (b)
Figure 7. An npn BJT model with time domain noise additions: (a) Qucs schematic symbol; (b) model body.
Ib R2 R=50k I1 I=500u Equation Eqn1 Points=16384 Ftime=1 Equation Eqn3 Len=Points LenO2=Len/2
f=linspace(0, LenO2-1, LenO2)/Ftime Iboise=abs(fft(Ib_noise))/LenO2 Icoise=abs(fft(Ic_noise))/LenO2 Ibmag=PlotVs(Iboise,f) Icmag=PlotVs(Icoise,f) Ic V1 U=5 V LSN TLSN1 ScaleSH=1.2 Rc=1 Rb=10 Re=0.01 SWR=1 SWSH=1 SWF=1 ScaleF=12 Kf=1e-14 Temp=26.85 Equation Eqn2 Ic_noise=Ic.It-Ic.I Ib_noise=Ib.It-Ib.I dc simulation DC1 transient simulation TR1 Type=lin Start=0 Stop=Ftime Points=16384 IntegrationMethod=Gear Order=4 abstol=100 pA vntol=100 uV 0 0.2 0.4 0.6 0.8 1 -2e-6 0 2e-6 Time (s) Ic noise (A) 0 0.2 0.4 0.6 0.8 1 -2e-11 0 2e-11 Time (s) Ib noise (A) 1 10 100 1e31e-14 1e-13 1e-12 1e-11 1e-14 1e-13 1e-12 1e-11 Frequency (Hz)
Ib noise spectrum (A/sqrt(Hz))
Ib ac noise (A/sqrt(Hz)) 1 10 100 1e31e-9 1e-8 1e-7 1e-9 1e-8 1e-7 Frequency (Hz)
Ic noise spectrum (A/sqrt(Hz))
Ic ac noise (A/sqrt(Hz))
Figure 8. Time domain npn BJT noise test circuit and simulation waveforms: frequency domain plots; solid line left hand scales, dashed line right hand scales.
very similar noise values for both the ac and time domain data; at higher frequencies the 1/f noise declines until it eventually equals the base current shot noise in value. The small signal ac noise result show this occurs at around 50Hz. As shot noise is Gaussian distributed white noise its signal power is equally spread across all the FFT frequency bins (16384 in the test example) and hence it does not appear in the signal range plotted in Figure 8.
RD1 R=Rd RS1 R=Rs I1 File=IN3_1s_1e6_7.dat G=gain_Rd I2 File=IN3_1s_1e6_8.dat G=gain_Rs T1 Type=nfet Vt0=Vt0 Beta=Beta Lambda=Lambda SRC1 G=1 1 2 3 D2 I1=(V3<0) ? ( 0 < (V3-Vt0) ) ? 2*Beta*(1+Lambda*V2)*(V3-Vt0) : 0 : 0 I2=0 I3=0 I3 File=IF3_1s_1e6_2.dat G=gain_flicker 1 2 3 4 5 D3 I1=(V3+1e-30)*sqrt(V4+1e-30) + (V2+1e-30)*sqrt(V5/Rx+1e-30) I2=V2 I3=V3 I4=V4 I5=0 I4 File=IN3_1s_1e6_6.dat G=gain_gm Equation Eqn1 gain_flicker=SWF*ScaleF*sqrt(Kf) gain_gm=SWGM*ScaleGM*sqrt(8*kB*TK/3) gain_Rd=SWR*sqrt(4*kB*TK/Rd) gain_Rs=SWR*sqrt(4*kB*TK/Rs) TK=273.15+Temp Equation Eqn2 Rx=20k Cx=2u C1 C=Cx R1 R=Rx D S G LSN TLSN1 SWF=1 SWGM=1 SWR=1 Rd=2 Rs=2 ScaleF=12 ScaleGM=1 Temp=26.85 Vt0=-2 Beta=1e-4 Lambda=0 Kf=1e-14 source sint gate drain dint dint gate sint dint sint nId nId (a) (b)
Figure 9. An n type JFET model with time domain noise additions: (a) Qucs schematic symbol; (b) model body.
8. MODELLING FET, MOSFET AND MESFET NOISE IN THE TIME DOMAIN
FET, MOSFET and MESFET noise contributions are specified by equations 6 and 7.
i2RD(t) =4· k · T RD · 4f · ξn(t), i 2 RS(t) = 4· k · T RS · 4f · ξn(t) (6) i2D(t) = 8· k · T · gm 3 · 4f · ξn(t) + Kf· ID fAf · 4f · ξf(t) (7)
Where ID is the drain to source dc current in A, gm is the transconductance of the device
at the dc operating point, RD is the series drain resistance in Ω, and RS is the series source resistance in Ω. Figure 9 presents a time domain noise model for n type FET devices. Qucs equation-defined device D2 models gm, making the model slightly more complex than the
diode and BJT time domain models. In Figure 9 the dc gate current is assumed to be zero or so small that it does not generate any significant noise components. Similarly, gate series resistance is not included in the model as it has negligible effect on the time domain noise properties of the device. A similar strategy is adopted with the standard SPICE FET model. A test circuit for determining FET noise is shown in Figure 10. In this example circuit a low pass RC filter is used to apply dc voltage to the gate of the FET under test. Without this filter the gate potential would be clamped at a constant dc voltage, causing malfunction of the test circuit. The waveforms illustrated in Figure 10 confirm that at low frequencies 1/f noise dominates the FET noise performance. Level one MOSFET and MESFET [7] time domain extended noise models are very similar to the FET model given in Figure 9. For completeness the body of a MOSFET and a MESFET time domain noise model are shown in Figure 11.
R7 R=10k R8 R=10k R9 R=10k C4 C=200uF C5 C=200uF C6 C=200uF R10 R=10k V7 U=-0.2 V2 U=5 Ids LSN TLSN1 SWF=1 SWGM=1 SWR=1 Rd=2 Rs=2 ScaleF=12 ScaleGM=1 Temp=26.85 Vt0=-2 Beta=1e-3 Lambda=0 Kf=1e-14 Equation Eqn1 Ids_noise=Ids.It-Ids.I transient simulation TR1 Type=lin Start=0 Stop=Ftime Points=16384 abstol=100 pA vntol=100 uV Equation Eqn5 Len=Points LenO2=Len/2
f=linspace(0, LenO2-1, LenO2)/Ftime Idsnoise=abs(fft(Ids_noise))/LenO2 Idsmag=PlotVs(Idsnoise,f) Equation Eqn3 Points=16384 Ftime=1 dc simulation DC1 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 -5e-8 0 5e-8 Time (s) Ids_noise (A)
1 10 100 1e3 8e31e-11
1e-10 1e-9 1e-8 1e-11 1e-10 1e-9 1e-8 Frequency (Hz)
Ids noise spectrum (A/sqrt(Hz))
Ids ac spectrum (A/sqrt(Hz))
Figure 10. Time domain n type FET noise test circuit and simulation waveforms: frequency domain plots; solid line left hand scales, dashed line right hand scales.
9. CONCLUSIONS
Transient simulation of time domain noise is rarely undertaken by the current generation of circuit simulators. This paper introduces a tabular noise source approach to time domain noise modelling and analysis which is suitable for simulating noise generated by resistive components, semiconductor devices and integrated circuits. In the text the proposed modelling technique is introduced by a series of example model designs which add time domain noise to the standard SPICE diode, BJT, JFET, MOSFET and MESFET models. Experience with the new noise modelling technique has shown that it is suitable for use with any general purpose circuit simulator provided it can handle subcircuits, equation-defined devices (or Verilog-A code models) and a text files, or a net-list statement, for listing tabulated voltage and current source noise data. By combining the Qucs GPL simulator with the Octave GPL numerical mathematics package it becomes possible to easily generate pseudo random time domain noise data, allowing very realistic noise current or voltage waveforms to be added to transient circuit simulation, Good agreement was found between the noise results obtained by small signal ac and transient noise simulation.
REFERENCES
1. Newton AR, Pederson DO, Sangiovanni-Vincentelli A. SPICE Version 2g User’s Guide. Department of Electrical Engineering and Computer Sciences, University of California, Berkeley, CA, 1981.
2. Johnson B, Quarles T, Newton AR, Pederson DO, Sangiovanni-Vincentelli A. SPICE3 Version 3f User’s
Manual. Department of Electrical Engineering and Computer Sciences, University of California, Berkeley,
CA, 1992.
3. Wedge SW, Rutledge DB. Wave Techniques for Noise Modeling and Measurement. IEEE Transactions on
1 2 3 D1 I1= 2*Beta*(1+Lambda*V2)*(V3-Vto)*tanh(Alpha*V2) I2=0 I3=0 I1 File=IF3_1s_1e6_2.dat G=gain_flicker I2 File=IN3_1s_1e6_6.dat G=gain_gm Equation Eqn1 gain_flicker=SWF*ScaleF*sqrt(Kf) gain_gm=SWGM*ScaleGM*sqrt(8*kB*TK/3) gain_Rd=SWR*sqrt(4*kB*TK/Rd) gain_Rs=SWR*sqrt(4*kB*TK/Rs) TK=273.15+Temp RD1 R=Rd RS1 R=Rs G1 S1 D3 I3 File=IN3_1s_1e6_7.dat G=gain_Rd I4 File=IN3_1s_1e6_8.dat G=gain_Rs T1 Vto=Vto Beta=Beta Alpha=Alpha Lambda=Lambda QLEVELS=1 QLEVELD=1 QLEVELDS=1 Kf=Kf RD2 R=Rd RS2 R=Rs G2 S2 D4 I5 File=IN3_1s_1e6_7.dat G=gain_Rd I6 File=IN3_1s_1e6_8.dat G=gain_Rs T2 Vt0=Vt0 Kp=Kp Lambda=Lambda W=W L=L Kf=Kf SRC2 G=1 C1 C=Cx R1 R=Rx 1 2 3 4 5 D5 I1=(V3+1e-30)*sqrt(V4+1e-30) + (V2+1e-30)*sqrt(V5/Rx+1e-30) I2=V2 I3=V3 I4=V4 I5=0 I7 File=IF3_1s_1e6_2.dat G=gain_flicker I8 File=IN3_1s_1e6_6.dat G=gain_gm Equation Eqn2 Beta=Kp*W/L Rx=20k Cx=2u Equation Eqn3 gain_flicker=SWF*ScaleF*sqrt(Kf) gain_gm=SWGM*ScaleGM*sqrt(8*kB*TK/3) gain_Rd=SWR*sqrt(4*kB*TK/Rd) gain_Rs=SWR*sqrt(4*kB*TK/Rs) TK=273.15+Temp 1 2 3 4 D6 I1=(0<(V4-Vt0)) ? ( (V4-Vt0)<V3) ?2* Beta*(1+Lambda*V3)*(V4-Vt0) : 0 : 0 I2=(V3<(V4-Vt0)) ? 2*Beta*(1+Lambda*V3)*V3 : 0 I3=0 I4=0 SRC3 G=1 C2 C=Cx R2 R=Rx Equation Eqn4 Rx=20k Cx=2u 1 2 3 4 5 D2 I1=(V3+1e-30)*sqrt(V4+1e-30) + (V2+1e-30)*sqrt(V5/Rx+1e-30) I2=V2 I3=V3 I4=V4 I5=0 nId nId dint sint gate sint source sint gate drain dint source sint gate drain dint dint sint nId dint sint gate sint dint sint nId (a) (b)
Figure 11. MOSFET and MESFET time domain noise models: (a) SPICE level 1 nMOSFET; (b) Curtice level 1 nMESFET.
4. Winkler R. Stochastic differential algebraic equations in transient noise analysis. Mathematics in Industry. (part 2), Springer, Berlin, 2008; 151-156.
5. Denk G, Winkler R. Modelling and simulation of transient noise in circuit simulation. Mathematical and
computer modelling of dynamical systems, 2007; 13(4):383-394.
6. Fasce C, Massobrio G, Meda E, Profumo E. Semiconductor device modeling with SPICE. Antognetti P, Massobrio G.(eds). McGraw-Hill Book Company: New York, 1988; 289–309.
7. Brinson ME, Jahn S, Parruitte H. Verilog-A compact device models for GaAs MESFETs.
Qucs: Report Book - Technical reports and descriptions, 2006. 1(5):88-127. Available from: http://sourceforge.net/docs/html [30 March 2010].
8. Margraf M, Jahn S, Flucke J, Jacob R, Habchi V, Ishikawa T, Gopala Krishna A, Brinson ME, Parruitte H, Roucaries B, Kraut G. Qucs (Quite universal circuit simulator). Version 0.0.15. 2010. Available from: http://sourceforge.net/index.html. [30 March 2010].
9. GNU Octave. 1992. Available from: http://www.gnu.orge/software/octave/ [30 March 2010].
10. Kraut G. Qucs File type voltage and current sources. 2007. Available from:
http://sourceforge.net/docs/html [30 March 2010].
11. Jahn S, Margraf M, Habchi V, Jacob R. Appendix A: Qucs file formats. Qucs: Technical papers, 2003; 226-229. Available from: http://sourceforge.net/docs/html [30 March 2010].
12. Bell DA. Electrical Noise - Fundamentals and physical Mechanisms. D. Van Nostrand Company Ltd: London, 1960.
13. Blake K. OP AMP precision design: random noise. Microchip Technology Inc: Application note AN1228, 2008 Available from: http://ww1.microchip.com/downloads/en/AppNotes/01228a.pdf [30 March 2010]. 14. Jahn S, Brinson ME. Interactive compact device modelling using Qucs equation-defined devices.
International Journal of Numerical Modelling: Electronic Networks, Devices and Fields, 2008
21(3):335-349.
http://www.accellera.org. [30 March 2010].
16. Little M, Powernoise.m MATLAB/Octave code for generating power law noise 1/fα. samp, University
of Oxford, U.K. 20008. Available from http://www.eng.ox.ac.uk/samp/powernoise-soft.html. [31 March 2010]
17. Anderson B. Crest factor analysis for complex signal processing. RF integrated subsystems.
www.rfdesign.com. Available from: http://www.mobiledevdesign.com/hardware/news/radio−crest−factor−analysis/.
[11 April 2010]
AUTHORS’ BIOGRAPHIES
M.E. Brinson received a first class honours BSc degree in the Physics
and Technology of Electronics from the United Kingdom Council for Academic Awards in 1965, and a PhD in Solid State Physics from the University of London in 1968. Since 1968 Dr Brinson has held academic posts in Electronics and Computer Science. From 1997 to 2000 he was a visiting Professor of Analogue Microelectronics at Hochschule, Bremen, Germany. Currently, he is a visiting Professor at the Center for Communication Technology, London Metropolitan University, UK. He is a Chartered Engineer (CEng) and a Fellow of the Institution of Engineering and Technology (FIET), a Chartered Physicist (CPhys) and a Member of the Institute of Physics (MinstP). Dr Brinson joined the Qucs project development team in 2006, specializing in device and circuit modelling, testing and document preparation.
S. Jahn received a diploma in Electrical Engineering from the Technical
University of Berlin in 2005. His specialist interests include high-frequency engineering and opto electronics. He completed his diploma thesis on EMC of integrated circuits while at Infineon Technologies AG. Stefan joined the Qucs project in 2003, specializing in circuit simulator development.
H. Nabijou received his BSc in Electronic Communications, his MSc in
Digital Systems and Instrumentation and his PhD in Statistical Signal Processing from UK universities. His research interests include modelling of non-linear stochastic systems. He is currently an academic member of staff in the Faculty of Computing, and a member of the Center for Communication Technology, London Metropolitan University, UK. He is a member of the IEEE and a fellow of the Royal Statistical Society. Dr Nabijou has recently joined the Qucs Development Project, as an associate, working on the modelling of signal processing components and algorithms.