Commit 69f05769 authored by Sean Leavey's avatar Sean Leavey
Browse files

Merge branch 'anchal.gupta/zero-feature/CITlabsOpampLibUpdate' into develop

parents ca1eb0a4 705cf8fd
......@@ -10,7 +10,7 @@
time without notice.
|Zero| is a linear circuit simulation library and command line tool. It is able to
perform small signal AC analysis on collections of components such as resistors, capacitors,
perform small signal ac analysis on collections of components such as resistors, capacitors,
inductors and op-amps to predict responses and noise.
===========
......@@ -20,12 +20,27 @@ Why |Zero|?
Given that tools such as `LTspice <http://www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html>`_
and `Qucs <http://qucs.sourceforge.net/>`_ exist, why use this tool?
The answer is: it depends. For simple circuits where precision is not critical, or where you must
model non-linear or time-variant effects, then the above tools are potentially useful; however,
whilst manufacturers often provide SPICE models to represent their parts, these often do not
correctly model noise, open loop gain and output impedance. :ref:`LISO <index:LISO>`, upon which
|Zero| is based, was motivated in part by this reason, and instead provided *measured* op-amp
data as part of its library, which became incredibly useful to its users.
The answer is: `it depends`. For circuits where dc analysis is needed, or where you must
model non-linear or time-variant effects, then the above tools are very useful; however,
whilst component manufacturers often provide SPICE models to represent their parts, these often do
not correctly model noise and output impedance. This is especially true for op-amps, at
least historically. One of the key advantages of :ref:`LISO <index:LISO>`, upon which |Zero| is
loosely based, was that *measured* op-amp parameters were provided as standard in its library,
available to be used in simulations to provide accurate gain and noise results. This feature has
become incredibly useful to LISO's users. LISO furthermore provided an optimiser to be able to use
to tune circuit component values, something which is much trickier to do with SPICE.
|Zero| implements around half of what LISO is capable of doing, but extends it in a few ways to
provide greater customisability and ease of post-processing. You can for example easily add new
noise sources to components and simulate how they propagate through circuits without having to edit
any core code, or implement your own types of analysis using the base |Zero| circuit objects. The
results are also provided as a so-called `solution` which contains the simulation data as well as
means to plot, export and further process it.
The other half of LISO is the so-called `root` mode, which includes a powerful optimiser. This is
not part of |Zero|, but given that |Zero| exists within the Python ecosystem is is possible to use
it some other optimisation packages such as `scipy.optimize`. LISO's optimiser may one day be
implemented in |Zero|.
================
What |Zero| does
......@@ -34,8 +49,7 @@ What |Zero| does
|Zero| can perform small signal analyses on circuits containing linear components. It is
inherently AC, and as such can compute :ref:`frequency responses between nodes or components <analyses/ac/signal:Small AC signal analysis>`
and :ref:`noise spectral densities at nodes <analyses/ac/noise:Small AC noise analysis>`. Inputs and
outputs can be specified in terms of voltage or current (except noise, which, for the time being can
only be computed as a voltage).
outputs can be specified in terms of voltage or current.
For more information, see :ref:`the available AC analyses <analyses/ac/index:Available analyses>`.
......@@ -43,19 +57,19 @@ For more information, see :ref:`the available AC analyses <analyses/ac/index:Ava
What |Zero| does not do
==========================
|Zero| can only analyse linear time invariant (LTI) circuits. This means that the parameters of the
components within the circuit cannot change over time, so for example the charging of a capacitor or
the switching of a MOSFET cannot be simulated. This rules out certain simulations, such as
those of switch-mode power supply circuits and power-on characteristics, and also effects such as
distorsion, saturation and intermodulation that would appear in real circuits. Instead, the circuit
is assumed to be at its operating point, and the circuit is linearised around zero, such that if the
current through a component is reversed, the voltage drop across that component is also reversed.
It is in principle possible to linearise non-linear components as a first step before performing an
ac analysis (i.e. to compute a non-zero operating point); this is not yet possible with |Zero|
but may be available in the future. For those wishing to simulate circuits containing non-linear
components, try a variety of SPICE (e.g. `LTspice <http://www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html>`_)
or `Qucs <http://qucs.sourceforge.net/>`_.
|Zero|'s scope is fairly limited to the problem of simple op-amp circuits in the frequency domain
using linear time invariant (LTI) analysis. This means that the parameters of the components within
the circuit cannot change over time, so for example the charging of a capacitor or the switching of
a transistor cannot be simulated. This rules out certain simulations, such as those of switch-mode
power supply circuits and power-on characteristics, and also effects such as distorsion, saturation
and intermodulation that would appear in real circuits. Effects at dc such as op-amp input offset
voltages and currents are also not modelled. Instead, the circuit is assumed to be at its operating
point, and the circuit is linearised around zero, such that if the current through a component is
reversed, the voltage drop across that component is also reversed. A small signal analysis is then
performed to simulate the effect of the circuit's output given small variations in its input. This
is perfect for computing transfer functions and ac noise, but not for non-linear, time-varying
effects. You should bear these points in mind before choosing to use |Zero| for more complete
analyses.
For more information, see :ref:`analyses/ac/index:AC analyses`.
......@@ -63,7 +77,7 @@ For more information, see :ref:`analyses/ac/index:AC analyses`.
LISO
====
|Zero| is based on `LISO <https://wiki.projekt.uni-hannover.de/aei-geo-q/start/software/liso>`_
|Zero| is loosely based on `LISO <https://wiki.projekt.uni-hannover.de/aei-geo-q/start/software/liso>`_
by Gerhard Heinzel. It (mostly) understands LISO circuit mode input files, meaning that it
can be used in place of LISO to simulate circuit signals. It also understands LISO output
files, allowing results previously computed with LISO to be plotted, and for LISO results
......
......@@ -249,7 +249,7 @@ op-amps:
imax: 0.02
sr: 20e6
lt1028:
lt1028: &lt1028
description: low noise
comment: beware of 400 kHz noise peak
a0: 30e6
......@@ -571,7 +571,7 @@ op-amps:
inoise: 25e-12
icorner: 10k
max4106:
max4106: &max4106
a0: 1e5
gbw: 908M # from closed-loop gain fit & stability considerations
poles:
......@@ -819,22 +819,6 @@ op-amps:
vmax: 3.9
imax: 50e-3
ad8674:
a0: 6e6
gbw: 14.7M
poles:
- 1.75M
zeros:
- 2.83M 23.5M
delay: 12.3n
vnoise: 2.8e-9
vcorner: 5 # guess
inoise: 0.3e-12
icorner: 100 # wild guess
sr: 4e6
vmax: 12
imax: 0.02
ad745:
a0: 4e6
gbw: 20M
......@@ -915,17 +899,244 @@ op-amps:
imax: 100m
sr: 400e6
# The following are additional opamp definitions which were added in CIT labs at 40m LISO repo.
lt1012:
description: Picoamp Input Current, Microvolt Offset, Low Noise Op Amp
a0: 2e6
gbw: 8e6
vnoise: 15e-9 #from datasheet
vcorner: 2.5 #from datasheet
inoise: 6e-15 #from datasheet
icorner: 120 #from datasheet
vmax: 12
imax: 0.02
sr: 2.5e6
lt1792:
a0: 4e6
gbw: 4e6
vnoise: 4.2e-9 #from datasheet
vcorner: 30 #from datasheet
inoise: 10e-15 #from datasheet
icorner: 120 # WAG
vmax: 12
imax: 0.02
sr: 2.5e6
op497:
description: low noise quad FET, for QPD transimpedance
a0: 2e6
gbw: 0.5e6
vnoise: 15e-9
vcorner: 2.5
inoise: 5e-15
icorner: 150
vmax: 12
imax: 25m
sr: 100e6
lt1128:
<<: *lt1028
description: Ultralow Noise Precision High Speed Op Amps, different version of lt1028
gbw: 15e6 # Datasheet says 13M min, 20M typ
sr: 6e6 # From Datasheet (typ value)
cs3002: &cs3002
description: added by Rana for KAGRA L4-C preamp 2013
a0: 1e8 # seems bogus
gbw: 1e6
vnoise: 6e-9
vcorner: 0.08
inoise: 2e-12
icorner: 1 # guess / not in datasheet as of 1/2013
vmax: 4.7 # From Datasheet
sr: 5e6 # From Datasheet
cs3001:
<<: *cs3002
description: Single amplifier version of cs3002
max4107:
description: Slower but higher gain version of max4106
<<: *max4106
gbw: 778M # Scaled using datasheet and max4106 gbw above
sr: 500e6
opa827:
a0: 1e6 # 120 dB
gbw: 22M
vnoise: 4e-9
vcorner: 15
inoise: 2.2e-15
icorner: 100 # not given
vmax: 12
imax: .030
sr: 55e6
lf356:
comment: all info from datasheet
a0: 100e3
gbw: 5e6
sr: 12e6
vnoise: 12e-9
vcorner: 100
inoise: 0.01e-12
icorner: 100
sr560:
description: approximate only for gain of 100, low noise
a0: 4e6 # http://nodus.ligo.caltech.edu:8080/40m/2806
gbw: 20M
poles:
- 70M
delay: 12.3n
vnoise: 5e-9
vcorner: 30 # http://nodus.ligo.caltech.edu:8080/40m/2806
inoise: 7e-15 # WAG
icorner: 100 # WAG
sr: 12.5e6
vmax: 6
imax: 0.100
opa548:
a0: 31.6k
gbw: 1M
vnoise: 90n
vcorner: 20
inoise: 0.2p
icorner: 100
vmax: 3.3
imax: 3
sr: 10M
opa547:
comment: From datasheet http://www.ti.com/lit/ds/symlink/opa547.pdf
a0: 562341.32519 #115 db
gbw: 1M
vnoise: 90e-9
vcorner: 30
inoise: 200e-15
icorner: 10 #Guess
vmax: 13.1
imax: 0.5
sr: 6e6
ad8671: &ad8671
description: Precision, Very Low Noise, Low Input Bias Current Operational Amplifiers
comment: http://www.analog.com/media/en/technical-documentation/data-sheets/AD8671_8672_8674.pdf
a0: 6e6
gbw: 14.7M
poles:
- 1.75M
zeros:
- 2.83M 23.5M
delay: 12.3n
vnoise: 2.8e-9 # extremely low
vcorner: 0.1 # guess, extremely low
inoise: 0.3e-12
icorner: 500 # kinda high corner freq
vmax: 13.8
imax: 20e-3
sr: 4e6
ad8672:
<<: *ad8671
ad8674:
<<: *ad8671
opa140: &opa140
a0: 2e6 # 126dB From Datasheet
gbw: 11e6
vnoise: 5e-9
vcorner: 18
inoise: 0.8e-15
icorner: 0.1
sr: 20M
vmax: 14.8
imax: 30m
opa2140:
<<: *opa140
opa4140:
<<: *opa140
ad620: # Leaving this here for now. Ideally there should be a separate InAmp class.
description: EQ, ad620 at unity gain
a0: 1e5 # Made up!
gbw: 12e6
vnoise: 72e-9 # Lower at higher gains
vcorner: 13
inoise: 1e-13
icorner: 40
vmax: 12
imax: 0.18
sr: 1e6
ad743:
comment: from 40m git
a0: 4e6
gbw: 20M
poles:
- 70M
delay: 12.3n
vnoise: 2.9e-9
vcorner: 30 # from AD743 Rev E datasheet
vcorner: 30 # from AD743 Rev E datasheet
inoise: 7e-15
icorner: 100 # from AD743 Rev E datasheet
icorner: 100 # from AD743 Rev E datasheet
sr: 12.5e6
vmax: 12
imax: 0.02
ad549:
description: Ultralow Input Bias Current Operational Amplifier
comment: http://www.analog.com/media/en/technical-documentation/data-sheets/AD549.pdf
a0: 1e5 # at 10 Hz
gbw: 1e6
vnoise: 40e-9
vcorner: 100 # guess
inoise: 0.22e-15
icorner: 100 # guess
vmax: 15
imax: 700e-6
sr: 3e6
ad602: # Leaving this here for now. Ideally there should be a separate InAmp class.
description: Just a hack for this variable gain opamp.
comment: Add a 100 Ohm resistance between IN- and IN+.
a0: 10 #Assuming operation at 20dB gain
gbw: 90e6 #Using figure 5 in the datasheet
vnoise: 1.4e-9 #Datasheet
vcorner: 10 #guess
inoise: 3.35e-13 #Calculated as sot noise from input bias current stated in the datasheet
icorner: 1e3 #guess
vmax: 5 #Assuming AD602 is connected to +-5 supply
imax: 50e-3 #Datasheet
sr: 275e6 #Datasheet
delay: 2n #Group delay
ad847:
comment: unverified, from datasheet only
a0: 5.5e3 # from data sheet
gbw: 50M # from data sheet OLG corner at 9.09 kHz
vnoise: 15n # from data sheet
vcorner: 150 # guess from data sheet noise plot
inoise: 1.5p # from data sheet
icorner: 100 # from wild guess not from data sheet
vmax: 12 # from data sheet
imax: 0.032 # from data sheet
delay: 18.9n # unknown
sr: 300e6 # from data sheet
ad8675:
description: Precision, wide bandwidth op amp
comment: https://www.analog.com/media/en/technical-documentation/data-sheets/AD8675.pdf
a0: 1995262.314969 #126dB
gbw: 10e6
sr: 2.5e6
vnoise: 2.8e-9
vcorner: 20
inoise: 0.3e-12
icorner: 20 #Guess
vmax: 15
imax: 35e-3
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment