Element Reference
Passives
ACME.resistor
— Functionresistor(r)
Creates a resistor obeying Ohm’s law. The resistance r
has to be given in Ohm.
Pins: 1
, 2
ACME.capacitor
— Functioncapacitor(c)
Creates a capacitor. The capacitance c
has to be given in Farad.
Pins: 1
, 2
ACME.inductor
— Methodinductor(l)
Creates an inductor. The inductance l
has to be given in Henri.
Pins: 1
, 2
ACME.inductor
— Methodinductor(Val{:JA}; D, A, n, a, α, c, k, Ms)
Creates a non-linear inductor based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:
parameter | description |
---|---|
D | Torus diameter (in meters) |
A | Torus cross-sectional area (in square-meters) |
n | Winding's number of turns |
a | Shape parameter of the anhysteretic magnetization curve (in Ampere-per-meter) |
α | Inter-domain coupling |
c | Ratio of the initial normal to the initial anhysteretic differential susceptibility |
k | amount of hysteresis (in Ampere-per-meter) |
Ms | saturation magnetization (in Ampere-per-meter) |
A detailed discussion of the parameters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c
is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".
Pins: 1
, 2
ACME.transformer
— Methodtransformer(l1, l2; coupling_coefficient=1, mutual_coupling=coupling_coefficient*sqrt(l1*l2))
Creates a transformer with two windings having inductances. The primary self-inductance l1
and the secondary self-inductance l2
have to be given in Henri. The coupling can either be specified using coupling_coefficient
(0 is not coupled, 1 is closely coupled) or by mutual_coupling
, the mutual inductance in Henri, where the latter takes precedence if both are given.
Pins: primary1
and primary2
for primary winding, secondary1
and secondary2
for secondary winding
ACME.transformer
— Methodtransformer(Val{:JA}; D, A, ns, a, α, c, k, Ms)
Creates a non-linear transformer based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:
parameter | description |
---|---|
D | Torus diameter (in meters) |
A | Torus cross-sectional area (in square-meters) |
ns | Windings' number of turns as a vector with one entry per winding |
a | Shape parameter of the anhysteretic magnetization curve (in Ampere-per-meter) |
α | Inter-domain coupling |
c | Ratio of the initial normal to the initial anhysteretic differential susceptibility |
k | amount of hysteresis (in Ampere-per-meter) |
Ms | saturation magnetization (in Ampere-per-meter) |
A detailed discussion of the parameters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c
is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".
Pins: 1
and 2
for primary winding, 3
and 4
for secondary winding, and so on
Independent Sources
ACME.voltagesource
— Functionvoltagesource(; rs=0)
-voltagesource(v; rs=0)
Creates a voltage source. The source voltage v
has to be given in Volt. If omitted, the source voltage will be an input of the circuit. Optionally, an internal series resistance rs
(in Ohm) can be given which defaults to zero.
Pins: +
and -
with v
being measured from +
to -
ACME.currentsource
— Functioncurrentsource(; gp=0)
-currentsource(i; gp=0)
Creates a current source. The source current i
has to be given in Ampere. If omitted, the source current will be an input of the circuit. Optionally, an internal parallel conductance gp
(in Ohm⁻¹) can be given which defaults to zero.
Pins: +
and -
where i
measures the current leaving source at the +
pin
Probes
ACME.voltageprobe
— Functionvoltageprobe()
Creates a voltage probe, providing the measured voltage as a circuit output. Optionally, an internal parallel conductance gp
(in Ohm⁻¹) can be given which defaults to zero.
Pins: +
and -
with the output voltage being measured from +
to -
ACME.currentprobe
— Functioncurrentprobe()
Creates a current probe, providing the measured current as a circuit output. Optionally, an internal series resistance rs
(in Ohm) can be given which defaults to zero.
Pins: +
and -
with the output current being the current entering the probe at +
Semiconductors
ACME.diode
— Functiondiode(;is=1e-12, η = 1)
Creates a diode obeying Shockley's law $i=I_S\cdot(e^{v/(\eta v_T)}-1)$ where $v_T$ is fixed at 25 mV. The reverse saturation current is
has to be given in Ampere, the emission coefficient η
is unitless.
Pins: +
(anode) and -
(cathode)
ACME.bjt
— Functionbjt(typ; is=1e-12, η=1, isc=is, ise=is, ηc=η, ηe=η, βf=1000, βr=10,
+Element Reference · ACME.jl Element Reference
Passives
ACME.resistor
— Functionresistor(r)
Creates a resistor obeying Ohm’s law. The resistance r
has to be given in Ohm.
Pins: 1
, 2
sourceACME.capacitor
— Functioncapacitor(c)
Creates a capacitor. The capacitance c
has to be given in Farad.
Pins: 1
, 2
sourceACME.inductor
— Methodinductor(l)
Creates an inductor. The inductance l
has to be given in Henri.
Pins: 1
, 2
sourceACME.inductor
— Methodinductor(Val{:JA}; D, A, n, a, α, c, k, Ms)
Creates a non-linear inductor based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:
parameter description D
Torus diameter (in meters) A
Torus cross-sectional area (in square-meters) n
Winding's number of turns a
Shape parameter of the anhysteretic magnetization curve (in Ampere-per-meter) α
Inter-domain coupling c
Ratio of the initial normal to the initial anhysteretic differential susceptibility k
amount of hysteresis (in Ampere-per-meter) Ms
saturation magnetization (in Ampere-per-meter)
A detailed discussion of the parameters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c
is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".
Pins: 1
, 2
sourceACME.transformer
— Methodtransformer(l1, l2; coupling_coefficient=1, mutual_coupling=coupling_coefficient*sqrt(l1*l2))
Creates a transformer with two windings having inductances. The primary self-inductance l1
and the secondary self-inductance l2
have to be given in Henri. The coupling can either be specified using coupling_coefficient
(0 is not coupled, 1 is closely coupled) or by mutual_coupling
, the mutual inductance in Henri, where the latter takes precedence if both are given.
Pins: primary1
and primary2
for primary winding, secondary1
and secondary2
for secondary winding
sourceACME.transformer
— Methodtransformer(Val{:JA}; D, A, ns, a, α, c, k, Ms)
Creates a non-linear transformer based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:
parameter description D
Torus diameter (in meters) A
Torus cross-sectional area (in square-meters) ns
Windings' number of turns as a vector with one entry per winding a
Shape parameter of the anhysteretic magnetization curve (in Ampere-per-meter) α
Inter-domain coupling c
Ratio of the initial normal to the initial anhysteretic differential susceptibility k
amount of hysteresis (in Ampere-per-meter) Ms
saturation magnetization (in Ampere-per-meter)
A detailed discussion of the parameters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c
is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".
Pins: 1
and 2
for primary winding, 3
and 4
for secondary winding, and so on
sourceIndependent Sources
ACME.voltagesource
— Functionvoltagesource(; rs=0)
+voltagesource(v; rs=0)
Creates a voltage source. The source voltage v
has to be given in Volt. If omitted, the source voltage will be an input of the circuit. Optionally, an internal series resistance rs
(in Ohm) can be given which defaults to zero.
Pins: +
and -
with v
being measured from +
to -
sourceACME.currentsource
— Functioncurrentsource(; gp=0)
+currentsource(i; gp=0)
Creates a current source. The source current i
has to be given in Ampere. If omitted, the source current will be an input of the circuit. Optionally, an internal parallel conductance gp
(in Ohm⁻¹) can be given which defaults to zero.
Pins: +
and -
where i
measures the current leaving source at the +
pin
sourceProbes
ACME.voltageprobe
— Functionvoltageprobe()
Creates a voltage probe, providing the measured voltage as a circuit output. Optionally, an internal parallel conductance gp
(in Ohm⁻¹) can be given which defaults to zero.
Pins: +
and -
with the output voltage being measured from +
to -
sourceACME.currentprobe
— Functioncurrentprobe()
Creates a current probe, providing the measured current as a circuit output. Optionally, an internal series resistance rs
(in Ohm) can be given which defaults to zero.
Pins: +
and -
with the output current being the current entering the probe at +
sourceSemiconductors
ACME.diode
— Functiondiode(;is=1e-12, η = 1)
Creates a diode obeying Shockley's law $i=I_S\cdot(e^{v/(\eta v_T)}-1)$ where $v_T$ is fixed at 25 mV. The reverse saturation current is
has to be given in Ampere, the emission coefficient η
is unitless.
Pins: +
(anode) and -
(cathode)
sourceACME.bjt
— Functionbjt(typ; is=1e-12, η=1, isc=is, ise=is, ηc=η, ηe=η, βf=1000, βr=10,
ile=0, ilc=0, ηcl=ηc, ηel=ηe, vaf=Inf, var=Inf, ikf=Inf, ikr=Inf)
Creates a bipolar junction transistor obeying the Gummel-Poon model
\[i_f = \frac{\beta_f}{1+\beta_f} I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1)\]
\[i_r = \frac{\beta_r}{1+\beta_r} I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1)\]
\[i_{cc} = \frac{2(1-\frac{V_E}{V_{ar}}-\frac{V_C}{V_{af}})}
{1+\sqrt{1+4(\frac{i_f}{I_{KF}}+\frac{i_r}{I_{KR}})}}
(i_f - i_r)\]
\[i_{BE} = \frac{1}{\beta_f} i_f + I_{L,E} \cdot (e^{v_E/(\eta_{EL} v_T)}-1)\]
\[i_{BC} = \frac{1}{\beta_r} i_r + I_{L,C} \cdot (e^{v_C/(\eta_{CL} v_T)}-1)\]
\[i_E = i_{cc} + i_{BE} \qquad i_C=-i_{cc} + i_{BC}\]
where $v_T$ is fixed at 25 mV. For
\[I_{L,E}=I_{L,C}=0,\quad V_{ar}=V_{af}=I_{KF}=I_{KR}=∞,\]
this reduces to the Ebers-Moll equation
\[i_E = I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1)
- \frac{\beta_r}{1+\beta_r} I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1)\]
\[i_C = -\frac{\beta_f}{1+\beta_f} I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1)
- + I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1).\]
Additionally, terminal series resistances are supported.
The parameters are set using named arguments:
parameter description typ
Either :npn
or :pnp
, depending on desired transistor type is
Reverse saturation current in Ampere η
Emission coefficient isc
Collector reverse saturation current in Ampere (overriding is
) ise
Emitter reverse saturation current in Ampere (overriding is
) ηc
Collector emission coefficient (overriding η
) ηe
Emitter emission coefficient (overriding η
) βf
Forward current gain βr
Reverse current gain ilc
Base-collector junction leakage current in Ampere ile
Base-emitter junction leakage current in Ampere ηcl
Base-collector junction leakage emission coefficient (overriding η
) ηel
Base-emitter junction leakage emission coefficient (overriding η
) vaf
Forward Early voltage in Volt var
Reverse Early voltage in Volt ikf
Forward knee current (gain roll-off) in Ampere ikr
Reverse knee current (gain roll-off) in Ampere re
Emitter terminal resistance rc
Collector terminal resistance rb
Base terminal resistance
Pins: base
, emitter
, collector
sourceACME.mosfet
— Functionmosfet(typ; vt=0.7, α=2e-5, λ=0)
Creates a MOSFET transistor with the simple model
\[i_D=\begin{cases}
+ + I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1).\]
Additionally, terminal series resistances are supported.
The parameters are set using named arguments:
parameter description typ
Either :npn
or :pnp
, depending on desired transistor type is
Reverse saturation current in Ampere η
Emission coefficient isc
Collector reverse saturation current in Ampere (overriding is
) ise
Emitter reverse saturation current in Ampere (overriding is
) ηc
Collector emission coefficient (overriding η
) ηe
Emitter emission coefficient (overriding η
) βf
Forward current gain βr
Reverse current gain ilc
Base-collector junction leakage current in Ampere ile
Base-emitter junction leakage current in Ampere ηcl
Base-collector junction leakage emission coefficient (overriding η
) ηel
Base-emitter junction leakage emission coefficient (overriding η
) vaf
Forward Early voltage in Volt var
Reverse Early voltage in Volt ikf
Forward knee current (gain roll-off) in Ampere ikr
Reverse knee current (gain roll-off) in Ampere re
Emitter terminal resistance rc
Collector terminal resistance rb
Base terminal resistance
Pins: base
, emitter
, collector
sourceACME.mosfet
— Functionmosfet(typ; vt=0.7, α=2e-5, λ=0)
Creates a MOSFET transistor with the simple model
\[i_D=\begin{cases}
0 & \text{if } v_{GS} \le v_T \\
\alpha \cdot (v_{GS} - v_T - \tfrac{1}{2}v_{DS})\cdot v_{DS}
\cdot (1 + \lambda v_{DS})
& \text{if } v_{DS} \le v_{GS} - v_T \cap v_{GS} > v_T \\
\frac{\alpha}{2} \cdot (v_{GS} - v_T)^2 \cdot (1 + \lambda v_{DS})
& \text{otherwise.}
-\end{cases}\]
The typ
parameter chooses between NMOS (:n
) and PMOS (:p
). The threshold voltage vt
is given in Volt, α
(in A/V²) is a constant depending on the physics and dimensions of the device, and λ
(in V⁻¹) controls the channel length modulation.
Optionally, it is possible to specify tuples of coefficients for vt
and α
. These will be used as polynomials in $v_{GS}$ to determine $v_T$ and $\alpha$, respectively. E.g. with vt=(0.7, 0.1, 0.02)
, the $v_{GS}$-dpendent threshold voltage $v_T = 0.7 + 0.1\cdot v_{GS} + 0.02\cdot v_{GS}^2$ will be used.
Pins: gate
, source
, drain
sourceIntegrated Circuits
ACME.opamp
— Methodopamp(;maxgain=Inf, gain_bw_prod=Inf)
Creates a linear operational amplifier as a voltage-controlled voltage source. The input current is zero while the input voltage is mapped to the output voltage according to the transfer function
\[H(f) = \frac{A_\text{max}}{\sqrt{A_\text{max}^2-1} i \frac{f}{f_\text{UG}} + 1}\]
where $f$ is the signal frequency, $A_\text{max}$ (maxgain
) is the maximum open loop gain and $f_\text{UG}$ (gain_bw_prod
) is the gain/bandwidth product (unity gain bandwidth). For gain_bw_prod=Inf
(the default), this corresponds to a frequency-independent gain of maxgain
. For maxgain=Inf
(the default), the amplifier behaves as a perfect integrator.
For both maxgain=Inf
and gain_bw_prod=Inf
, i.e. just opamp()
, an ideal operational amplifier is obtained that enforces the voltage between the input pins to be zero while sourcing arbitrary current on the output pins without restricting their voltage.
Note that the opamp has two output pins, where the negative one will typically be connected to a ground node and has to provide the current sourced on the positive one.
Pins: in+
and in-
for input, out+
and out-
for output
sourceMissing docstring. Missing docstring for opamp(::Type{Val{:macak}}, gain, vomin, vomax)
. Check Documenter's build log for details.
Settings
This document was generated with Documenter.jl version 0.27.10 on Wednesday 8 May 2024. Using Julia version 1.6.7.
+\end{cases}\]The typ
parameter chooses between NMOS (:n
) and PMOS (:p
). The threshold voltage vt
is given in Volt, α
(in A/V²) is a constant depending on the physics and dimensions of the device, and λ
(in V⁻¹) controls the channel length modulation.
Optionally, it is possible to specify tuples of coefficients for vt
and α
. These will be used as polynomials in $v_{GS}$ to determine $v_T$ and $\alpha$, respectively. E.g. with vt=(0.7, 0.1, 0.02)
, the $v_{GS}$-dpendent threshold voltage $v_T = 0.7 + 0.1\cdot v_{GS} + 0.02\cdot v_{GS}^2$ will be used.
Pins: gate
, source
, drain
Integrated Circuits
ACME.opamp
— Methodopamp(;maxgain=Inf, gain_bw_prod=Inf)
Creates a linear operational amplifier as a voltage-controlled voltage source. The input current is zero while the input voltage is mapped to the output voltage according to the transfer function
\[H(f) = \frac{A_\text{max}}{\sqrt{A_\text{max}^2-1} i \frac{f}{f_\text{UG}} + 1}\]
where $f$ is the signal frequency, $A_\text{max}$ (maxgain
) is the maximum open loop gain and $f_\text{UG}$ (gain_bw_prod
) is the gain/bandwidth product (unity gain bandwidth). For gain_bw_prod=Inf
(the default), this corresponds to a frequency-independent gain of maxgain
. For maxgain=Inf
(the default), the amplifier behaves as a perfect integrator.
For both maxgain=Inf
and gain_bw_prod=Inf
, i.e. just opamp()
, an ideal operational amplifier is obtained that enforces the voltage between the input pins to be zero while sourcing arbitrary current on the output pins without restricting their voltage.
Note that the opamp has two output pins, where the negative one will typically be connected to a ground node and has to provide the current sourced on the positive one.
Pins: in+
and in-
for input, out+
and out-
for output
Missing docstring for opamp(::Type{Val{:macak}}, gain, vomin, vomax)
. Check Documenter's build log for details.