Evaluation of biasing errors#
After we have designed a conceptual solution for the biasing, we need to evaluate possible error sources and find budgets for them. We will do this step by step:
First, we will evaluate the influence of power supply errors and resistor tolerances. To this end, we will replace the operational amplifier with a nullor, just as we did with the evaluation of the ideal gain. In order to find design budgets for tolerances and temperature coefficients, analysis should be done symbolically. We will demonstrate the use of SLICAP for this purpose.
Then, we will study the influence of errors due to bias currents and offset currents and voltages of the controller. For this, we will add bias and offset sources to the nullor. Temperature effects, such as bias current drift and offset voltage drift, can be added as well. As mentioned above, design budgets will be derived with the aid of symbolic analysis.
Numeric verification can be done with the aid of SPICE using Monte-Carlo analysis at different temperature settings.
Power supply and resistor tolerances#
For investigation of the influence of supply voltage changes and resistor tolerances, we will simplify the schematic of the amplifier as follows:
Capacitors will be left out; if this breaks a DC loop, all elements in that loop can be left out as well
All controllers will be replaced with nullors
Fig. 302 shows the simplified diagram. In this case, the load has also been left out. This is done because, the controller having been replaced with a nullor, the load has no effect on the biasing of the amplifier.
Determination of the numerical values#
In order to find initial numerical values for the power supply voltages and the resistors, we need to derive and solve the design equations of the circuit. A symbolic expression for the voltage at the output of the amplifier can easily be obtained with SLICAP symbolic DC analysis. The netlist of this circuit is shown below:
1VampBiasNullor
2* file: VampBiasNullor.cir
3* SLiCAP netlist file
4V1 1 0 V dc={V_P}
5V2 0 3 V dc={V_N}
6R3 1 2 {R_a}
7R4 2 3 {R_b}
8R6 2 4 {R_c}
9R2 5 6 {19*R}
10N1 6 0 4 5
11.end
The SLICAP script for evaluation of the DC voltage \(V_{6}\) at node (6) is:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# file: VampBiasNullor.py
4
5from SLiCAP import *
6
7fileName = 'VampBiasNullor.cir'
8i1 = instruction() # Creates an instance of an instruction object
9i1.setCircuit(fileName) # Checks and defines the local circuit object, and
10 # sets the index page to the project index page.
11i1.setDetector('V_6')
12i1.setSimType('symbolic')
13i1.setGainType('vi')
14i1.setDataType('dc')
15result = i1.execute()
16DCvalue = result.dc
17#
18i1.setDataType('dcsolve')
19result = i1.execute()
20DCsolution = result.dcSolve
21#
22htmlPage('Netlist and circuit data')
23netlist2html(fileName)
24elementData2html(i1.circuit)
25#
26htmlPage('DC analysis')
27text2html('The DC voltage $V_6$ is obtained as:')
28eqn2html('V_6', DCvalue, units = 'V')
Running this script yields an expression for the detector voltage \(V_{6}\):
This result could, of course, just as easily be obtained with hand calculations using the superposition theorem.
In order to assign numerical values to \(R_{a}\) and \(R_{b},\) we need more design equations. Numerical values for \(V_{P}\) and \(V_{N}\) follow from the requirement for the load voltage range and budgets for the positive and the negative headroom:
where \(V_{\max}\) is the maximum positive voltage to be delivered to the load, and \(V_{H+}\) is the positive headroom required for proper operation of the operational amplifier.
An acceptable value for \(V_{H+}\) requires some knowledge about available components. Let us assume that, for example, a positive headroom \(V_{H+}=0.25\cdots0.5\)V leaves us a sufficiently large number of operational amplifiers from various manufacturers.
Similar things can be said about \(V_{N}\). The minimum load voltage \(V_{\min}\) should be zero, and with a negative headroom about equal to the positive headroom, we can work with \(V_{P}=4.5\)V and \(V_{N}=0.5\)V.
This leaves us with two variables and one equation, so at this stage of the design, we can only determine the ratio of \(R_{a}\) and \(R_{b}\):
The design equation for \(\alpha\) can be derived from:
The solution for \(\alpha\) is found as:
With \(V_{N}=0.5\), \(V_{6}=2\) and \(V_{P}=4.5\), we obtain \(\alpha=1\), and hence \(R_{a}=R_{b}\)
Influence of supply and resistor tolerances#
For the investigation of the effects of device tolerances, designers have three techniques at their disposal:
Worst-case analysis
This is a technique that accounts for maximum deviations in component values, in which the sign of the deviation is chosen so as to maximize its effect. Worst-case analysis can be performed symbolically,\ and the direction of the deviation can be obtained with the aid of sensitivity analysis.
Symbolic statistical analysis
This technique uses the probability density functions of component values. It requires knowledge of algebra for random variables, which is a rather specialized discipline.
Monte-Carlo analysis
Monte-Carlo analysis is a numerical technique running a simulation multiple times with different component values. At the beginning of each run, component values are randomly assigned according to pre-defined distribution functions and correlations.
Worst-case analysis may give clear a-priori insight into the effect of device tolerances, but it requires complex sensitivity analysis and may result in an overkill of robustness of the design. At first glance, this may appear attractive, but this overkill may seriously limit the feasibility of a design.
Monte-Carlo analysis can only be performed after devices have been selected, and it is therefore a verification technique, rather than a synthesis tool.
Symbolic statistical analysis would probably be the best way to go, but the algebra of random variables is complex and does not lend itself to hand calculations. Moreover, it is questionable whether such a complex technique will provide results that can be interpreted by the designer and yield clear design conclusions.
SLICAP incorporates a simplified symbolic statistical analysis technique that, in many cases, gives clear design information with sufficient accuracy. The technique is only available for DC analysis and can be applied for setting up requirements for device tolerances , temperature drift and bias and offset voltages and currents of operational amplifiers. The method is based on the following principles:
In a linear network, the variance of a DC nodal voltage or a DC branch current can be obtained from linear superposition of the contributions of the variances of all of the independent sources in the network to that nodal voltage or branch current.
If tolerances of resistors are relatively small, errors due to these device tolerances can be converted into independent error current sources in parallel with the corresponding resistors. The contributions of these sources to the variance of a DC nodal voltage or a DC branch current can then be accounted for as described above.
This technique is allowed as long as the transfers of the independent sources to the output of the system are not noticeably affected by changes in the resistor values. This is often the case, and this condition can be easily be verified through symbolic analysis.
The conversion of the deviation of the resistance of a resistor from its mean value into an independent current source in parallel with the resistor proceeds as follows:
Let us assume we need a resistor with a resistance of \(R\) [\(\Omega\)]. The DC voltage across this resistor in the application equals \(V\) [V], hence the DC current through it equals \(I_{R}=\frac{V}{R}\)[A]. Let us now replace this resistor with another one that has a resistance \(R+\Delta R\) instead of \(R\). If \(\Delta R\ll R,\) the voltage across it will not significantly change. The current then changes from \(I_{R}\) to \(I_{R}+I_{\varepsilon}=\frac{V}{R+\Delta R}\), where the error current \(I_{\varepsilon}\) is defined as:
This can be written as:
Since \(\frac{\Delta R}{R}\ll1\), we may write:
from which we obtain:
If \(\frac{\Delta R}{R}\ll1\) and the probability density function of \(R\) is symmetrical around its mean value, the probability density function of \(I\) will have the same shape as that of \(R\). Hence, if \(R\) has a Gaussian distribution, the distribution function of the current \(I\) will also be Gaussian and the relative standard deviation of \(I\) will equal that of \(R\).
Example
In this example, we will derive a symbolic expression for the standard deviation of the voltage at the output of a resistive voltage divider, given the standard deviation of the resistor values and of the driving voltage. To this end, consider the circuit shown in Fig. 303. The standard deviation of the voltage \(V_{s}\) is \(\sigma_{1}V_{s}\), where \(\sigma_{1}\) is the relative standard deviation of \(V_{s}\), say, for example, \(1\%\). The same holds for \(\sigma_{2}\) and \(\sigma_{3}\); these are the relative standard deviations of \(R_{a}\) and \(R_{b}\), respectively. In this example, we assume no correlation between the resistor values, nor between the voltage \(V_{s}\) and the resistor values.
The resistor tolerances can be transformed into error currents as described above. According to expression ((93)), the standard deviation \(\sigma_{I_{1}}\) of the current of \(I_{1}\) can be obtained as:
The standard deviation of the current \(I_{2}\) can be obtained in a similar way:
The results are shown in Fig. 304A.
Fig. 304 Resistor tolerances translated into error current sources.#
If we assume a symmetrical distribution function for the resistor values, the signs of the error currents are not important. Since no correlation exists, we may calculate the variance
\(\sigma_{V_{out}}^{2}\) of the output voltage \(V_{out}\) as the sum of the contributions of the individual sources. Each of those contributions equals the product of the variance of the independent source and the square of its conversion gain to \(V_{out}\). The conversion gain of the error currents \(I_{1}\) and \(I_{2}\) to the output voltage \(V_{out}\) equals the parallel connection \(R_{1} || R_{2}\).
In this way, we may write:
The standard deviation \(\sigma_{V_{out}}\) of the output voltage \(V_{out}\) can thus be obtained as:
The relative standard deviation \(\frac{\sigma_{V_{out}}}{V_{out}}\) of the output voltage is found to be
We may check this result by considering a few special cases:
If \(R_{a}=0\), the relative tolerance equals that of the source. This is as expected, because in that case, the output voltage equals the source voltage!
With \(R_{b}\ll R_{a}\) and equal value for all tolerances \((\sigma =\sigma_{1}=\sigma_{2}=\sigma_{3})\), the relative tolerance approaches a maximum value of \(\sigma\sqrt{3}\). This is considerably less than we would have obtained from a worst-case scenario. A worst-case approximation with \(+\delta\) relative error for \(V_{s}\) and \(R_{b}\), and a relative error of \(-\delta\) for \(R_{a}\), yields a relative error \(\delta_{V_{out}}\) for \(V_{out}\) of about \(3\delta.\)
In the next example, we will demonstrate the application of SLICAP for the symbolic determination of the standard deviation of the voltage at the output of the resistive divider.
Example
The SLICAP netlist file of the circuit from Fig. 303 is listed below:
1"Voltage divider"
2* File: vDivider.cir
3* SLiCAP netlist file
4V1 1 0 V dc={V_S} dcvar={(sigma_1*V_S)^2}
5R1 1 out r value={R_a} dcvar={(sigma_2*R_a)^2}
6R2 out 0 r value={R_b} dcvar={(sigma_3*R_b)^2}
7.end
The variance of the supply voltage requires the use of the model ‘V ‘for the voltage source. The mean value of a voltage source, or simply its DC voltage, can be defined with the model parameter ‘dc’, and the variance of the voltage of this source can be defined with the parameter ‘dcvar’. The units of the variance are [V\(^{\text{2}}\)]. Here, it has been defined as the square of the product of the DC voltage and the relative standard deviation \(\sigma_{1}\).
Statistical properties for a resistor can be defined by using the model ‘r’ and the parameters ‘value’ for the mean resistance and ‘dcvar’ for the variance of the resistance in [\(\Omega^{\text{2}}\)]. The relative standard deviation of \(R_{1}\) and \(R_{2}\) are \(\sigma_{2}\) and \(\sigma_{3}\), respectively.
Below, the listing of the SLICAP script.
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# File: vDivider.py
4
5from SLiCAP import *
6
7fileName = 'vDivider.cir'
8i1 = instruction() # Creates an instance of an instruction object
9i1.setCircuit(fileName) # Checks and defines the local circuit object and
10 # sets the index page to the circuit index page
11#
12htmlPage('Netlist and circuit data');
13netlist2html(fileName);
14elementData2html(i1.circuit);
15#
16htmlPage('DC variance analysis');
17i1.setDetector('V_out')
18i1.setSimType('symbolic')
19i1.setGainType('vi')
20i1.setDataType('dcvar')
21result = i1.execute()
22dcVar2html(result)
Lines \(15\cdots21\) of the SLICAP script define and execute the instruction for symbolic evaluation of the variance of the detector voltage and display the results on a separate html page.
Fig. 305 SLiCAP analysis results.#
The output html page is shown in Fig. 305. It also shows the DC solution of the network. With the aid of this solution, SLICAP translates the resistor tolerances into error current sources, just as discussed above. The current sources that model the errors of R1 and R2 have been named I_R1 and I_R2, respectively. Their contributions to the detector-referred variance are listed in the section \ “Contributions of individual variances” of the output page.
Controller bias imperfections#
We will now investigate the influence of controller bias imperfections on the biasing solution of the network. In fact, we want to investigate the way in which and to what extent the offset voltages, the bias currents and the offset current of the controller affect the DC output voltage of the circuit from Fig. 301.
If we know this, we will be able to define budgets for these offset and bias quantities and add them to the search criteria for operational amplifiers that may be used for implementation of the controller.
In order to keep things as simple as possible, we need a model of a controller that models these imperfections alone.
Fig. 306 shows such a possible model. It consists of a nullor which provides the infinite available power gain and sources that model the imperfections of interest. The voltage source V1 models the equivalent-input offset voltage. The mean value of this source is taken as zero and the standard deviation \(\sigma_{vo}\) [V]. Zero mean value for this source is a good starting point, because manufacturers want to create zero offset error, but due to device tolerances, there will remain a small error that can be positive or negative.
The current source I2 models the offset current. For similar reasons as those related to the offset voltage source, the mean value of this source is also zero. Its standard deviation is taken as \(\sigma_{io}\).
The two input bias currents that are required for the operation of the input stage have been taken as equal. In this model, they are correlated. This correlation is achieved by deriving them from one source: I1. This source has been given a mean value \(I_{b}\) and a standard deviation \(\sigma_{ib}I_{b}\). Correlation between the two input bias currents usually occurs in operational amplifiers with a BJT input stage. The input bias currents of the JFET MOS input stage is usually very low. The bias currents of a MOS operational amplifier is usually dominated by leakage currents in the protection diodes. Correlation between the two input bias currents in those types of operational amplifiers may be considerably lower.
Unfortunately, correct modeling of the input bias currents and offset current requires manufacturing data that are not always provided to a level of detail that would include these correlations.
The SLICAP netlist of the circuit from Fig. 306 can be found in the library file: SLiCAP.lib . It is shown below:
We will study the influence of the bias imperfections of the controller using the circuit from Fig. 307. The biasing errors are a result of supply voltage errors and errors in the resistive divider, as shown in the previous results (Fig. 305). This has been done to keep things simple through a step-by-step approach. At a later stage, we will evaluate the total biasing error, including these contributions.
The SLICAP netlist of this circuit is given below:
1VampBias
2* file: VampBias.cir
3* SLiCAP netlist file
4R1 0 3 r value={R_B1} dcvar={(R_B1*sigma_r)^2}
5R2 out 4 r value={R_B2} dcvar={(R_B2*sigma_r)^2}
6X1 3 4 out 0 0 N_dcvar sib={I_b*sigma_Ib} sio={i_off} svo={v_off}
7+ iib={I_b}
8.end
The relative standard deviation of the resistor values have been set to \(\sigma_{r}\) [-]. The absolute standard deviations of the offset voltage and of the offset current of the controller have been set to \(v_{off}\) [V] and \(i_{off}\) [A], respectively. The bias current of the controller has been set to \(I_{b}\) [A] with a relative standard deviation of \(\sigma_{Ib}\) [-]. If desired, the temperature dependencies of these parameters can be added, but that has not been done at this stage.
The SLICAP script for evaluation of the biasing errors of this circuit is:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# File: VampBias.py
4
5from SLiCAP import *
6
7fileName = 'VampBias.cir'
8i1 = instruction() # Creates an instance of an instruction object
9i1.setCircuit(fileName) # Checks and defines the local circuit object and
10 # sets the index page to the circuit index page
11i1.setDetector('V_out')
12i1.setSimType('symbolic')
13i1.setGainType('vi')
14
15# Obtain the DC detector voltage
16i1.setDataType('dc')
17detDC = i1.execute().dc
18
19# Obtain the detector-referred variance
20i1.setDataType('dcvar')
21detVar = i1.execute().ovar
22
23htmlPage('Biasing results')
24head2html('DC detector voltage')
25text2html("The DC detector voltage is:")
26eqn2html("V_out", detDC, units="V")
27head2html('Variance of the DC detector voltage')
28text2html("The variance of the DC detector voltage is:")
29eqn2html("(sigma_V_out)**2", detVar, units="V**2")
Fig. 308 SLiCAP analysis results.#
The contributions to the Detector-referred variance are shown in Fig. 308.
The mean value of the DC output voltage \(V_{out}\) of the circuit is \(I_{b}\left( R_{B2}-R_{B1}\right) \). It shows the effect of the bias current \(I_{b}\) on \(V_{out}.\) It is zero if \(R_{B2}=R_{B1}\) and the voltage drop across \(R_{B1}\) caused by the bias current equals the voltage drop across \(R_{B2}\).
The contributions to the output variance are:
\(I_{b}^{2}\sigma_{r}R_{B1}{}^{2}\): this term represents an error voltage due to the combination of a current flow \(I_{b}\) through the resistor R1\(\ \)and the variance of its resistance \(R_{B1}\).
\(I_{b}^{2}\sigma_{r}R_{B2}{}^{2}\): this term represents an error voltage due to the combination of a current flow \(I_{b}\) through the resistor R2\(\ \)and the variance of its resistance \(R_{B2}\).
\(I_{b}^{2}\sigma_{Ib}(R_{B1}-R_{B2})^{2}\): this term shows the contribution of the variance of the bias current to the variance of \(V_{out}\). Similar to the influence of the bias current on the mean DC voltage \(V_{out}\), this influence can be made zero if \(R_{B2}=R_{B1}\).
\(i_{off}^{2}(R_{B1}+R_{B2})^{2}\): the offset current of the controller flows through the series connection of R6 and R2. For many operational amplifiers, the order of magnitude of the offset current equals that of the bias current. This limits the effect of the biasing error compensation found in the DC output voltage \(V_{out}\).
\(v_{off}^{2}\): the variance of the equivalent-input offset voltage of the controller directly adds to that of \(V_{out}\). This is because the circuit acts as a unity-gain voltage follower for any voltage in series with the input of the controller.
Total biasing error#
Fig. 309 Circuit for evaluation of the total biasing error of the voltage amplifier from Fig. 301. It is equal to the circuit from Fig. 302 in which the nullor has been replaced with the nullor with bias sources from Figure Fig. 306.#
In the previous sections, we have evaluated two contributions to the biasing error of the voltage amplifier. We investigated errors resulting from supply voltage tolerances and resistor tolerances, as well as errors resulting from biasing imperfections of the controller. We will now evaluate the total biasing error resulting from both contributions. Fig. 309 shows the circuit for evaluation of the total biasing error. In this circuit, the relative standard deviation of the resistors is \(\sigma_{r}\) and that of the supply voltage equals \(\sigma_{v}\).
The netlist of this circuit is shown below.
1VampBiasTotal
2* file: VampBiasTotal.cir
3* SLiCAP netlist file
4V1 1 0 V dc={V_S} dcvar={(sigma_v*V_S)^2}
5R3 1 2 r value={R_a} dcvar={(R_a*sigma_r)^2}
6R4 2 0 r value={R_b} dcvar={(R_b*sigma_r)^2}
7R6 2 3 r value={R_c} dcvar={(R_c*sigma_r)^2}
8R2 out 4 r value={19*R} dcvar={(19*R*sigma_r)^2}
9X 4 3 out 0 O_dcvar
10+ sib={I_b*sigma_Ib}
11+ sio={i_off}
12+ svo={v_off}
13+ iib={I_b}
14.param R_b={R_a}
15.end
Biasing design limits and budgets#
We will now demonstrate the way in which show-stopper values for the different contributers for the output variance can be determined. We will do this for a simplified circuit.
The DC solution of the network from Fig. 303 does not significantly change as a result of the offset and bias sources to the controller if \(I_{b}\frac{R_{a}R_{b}}{R_{a}+R_{b}}\ll I_{b}R_{c}\), or \(\frac{R_{a}R_{b}}{R_{a}+R_{b}}\ll R_{c}\).
From the DC analysis, we concluded that we required \(R_{a}=R_{b}\)
With the above assumtions the expression for the detector-referred variance becomes:
The script for doing this is:
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# File: VampBiasTotal.py
4
5from SLiCAP import *
6
7fileName = 'VampBiasTotal.cir'
8i1 = instruction() # Creates an instance of an instruction object
9i1.setCircuit(fileName) # Checks and defines the local circuit object and
10 # sets the index page to the circuit index page
11i1.setDetector('V_out')
12i1.setSimType('symbolic')
13i1.setGainType('vi')
14
15# Obtain the DC detector voltage
16i1.setDataType('dc')
17detDC = i1.execute().dc
18
19# define the symbols in the python environment
20R_a, R_b, R, R_c, alpha = sp.symbols('R_a, R_b, R, R_c, alpha')
21
22detDC = detDC.subs({R_b:R_a, R_c:19*R-R_a/2})
23
24# Assume R_a << R:
25# Take R_a=alpha*R and evaluate lim (alpha --> 0)
26detDC = detDC.subs(R_a, alpha*R)
27detDC = sp.limit(detDC, alpha, 0)
28
29i1.setDataType('dcvar')
30detVar = i1.execute().ovar
31
32# Use R_b=R_a and R_c = 19*R- R_a//R_b
33detVar = detVar.subs({R_b:R_a, R_c:19*R-R_a/2})
34# Assume R_a << R:
35# Take R_a=alpha*R and evaluate lim (alpha --> 0)
36detVar = detVar.subs(R_a, alpha*R)
37detVar = sp.limit(detVar, alpha, 0)
38
39# Make the report
40htmlPage('Biasing results')
41head2html("Simplifications")
42text2html("We will simplify the expressions for the DC voltage and the " +
43 " detector-referred variance using the following assumptions:" +
44 "<ol><li>$R_c=19R-\\frac{R_aR_b}{R_a+R_b}$</li>" +
45 "<li>$R_a=R_b$</li>" +
46 "<li>$R_a\\ll R$</li></ol>")
47head2html('DC detector voltage')
48text2html("The DC detector voltage is:")
49eqn2html("V_out", detDC, units="V")
50head2html('Detector referred variance')
51text2html("The variance of the DC detector voltage is:")
52eqn2html("(sigma_V_out)**2", detVar, units="V**2")
The results are shown in Fig. 310. They comply with those from (97).
Fig. 310 SLiCAP analysis results.#
Now that we have the means to find symbolic expressions for the contributions of resistor tolerances, power supply tolerances and controller biasing errors to the variance of the output voltage, we are able to set up design limits for such types of error sources.
The general way to find a design limit for one specific parameter that contributes to a certain error, is to assign the complete budget for this error for this contribution. For example, if the standard deviation of \(V_{out}\) is allowed to be \(100\)mV, the design limit for the standard deviation \(\sigma_{v}\) of power supply voltage of the voltage amplifier is \(200\)mV. This directly follows from the second term of ((97)). A design limit for the resistor tolerances can be found in a similar way. If we ignore the contribution of the bias current \(I_{b}\), only the first term in ((97)) describes a contribution to \(\sigma_{Vout}\) due to the resistor tolerance \(\sigma_{r}\). With a power supply voltage of \(5\)V, we then obtain: \(0.1^{2}=\sigma_{r}^{2}\frac{25}{8}\), which yields a maximum value for the resistor tolerances: \(\sigma_{r}=5.7\%\). A design limit for \(v_{off}\) can be found in a similar way. The definition of design limit for \(i_{off}\) depends on the selected value for \(R\). This selection will primarily be based on the noise performance of the amplifier. The design limit for \(I_{b}\) strongly interacts with the selection of \(R\) and \(\sigma_{r}\).
A good starting point for deriving budgets for multiple parameters that together affect one performance aspect, is to assume equal error contributions of all parameters. If, for some reason, such a budget appears to be too tight for one parameter, it can be relieved at the cost of a tighter budget for another one. Design limits, however, can never be relaxed. Non-compliance with a design limit means a show-stopper
for the design and requires another design concept.