summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/macro/nlm_opamp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/macro/nlm_opamp.cpp')
-rw-r--r--src/lib/netlist/macro/nlm_opamp.cpp41
1 files changed, 27 insertions, 14 deletions
diff --git a/src/lib/netlist/macro/nlm_opamp.cpp b/src/lib/netlist/macro/nlm_opamp.cpp
index 31a52f74a96..e06be8a5e00 100644
--- a/src/lib/netlist/macro/nlm_opamp.cpp
+++ b/src/lib/netlist/macro/nlm_opamp.cpp
@@ -69,21 +69,17 @@ NETLIST_END()
/*
* Generic layout with 1 opamp, VCC+ on pin 7, VCC- on pin 4 and compensation
+ * // FIXME: Offset inputs are not supported!
*/
static NETLIST_START(opamp_layout_1_7_4)
- DIPPINS( /* +--------------+ */
- OFFSET.N1, /* |1 ++ 8| */ NC,
- MINUS, /* |2 7| */ VCC.PLUS,
- PLUS, /* |3 6| */ OUT,
- VCC.MINUS, /* |4 5| */ OFFSET.N2
- /* +--------------+ */
+ DIPPINS( /* +--------------+ */
+ NC /* OFFSET */, /* |1 ++ 8| */ NC,
+ A.MINUS, /* |2 7| */ A.VCC,
+ A.PLUS, /* |3 6| */ A.OUT,
+ A.GND, /* |4 5| */ NC /* OFFSET */
+ /* +--------------+ */
)
- NET_C(A.GND, VCC.MINUS)
- NET_C(A.VCC, VCC.PLUS)
- NET_C(A.MINUS, MINUS)
- NET_C(A.PLUS, PLUS)
- NET_C(A.OUT, OUT)
NETLIST_END()
/*
@@ -138,6 +134,16 @@ static NETLIST_START(MB3614_DIP)
NETLIST_END()
+static NETLIST_START(TL084_DIP)
+ OPAMP(A, "TL084")
+ OPAMP(B, "TL084")
+ OPAMP(C, "TL084")
+ OPAMP(D, "TL084")
+
+ INCLUDE(opamp_layout_4_4_11)
+
+NETLIST_END()
+
static NETLIST_START(LM324_DIP)
OPAMP(A, "LM324")
OPAMP(B, "LM324")
@@ -219,9 +225,10 @@ static NETLIST_START(LM3900)
ALIAS(MINUS, R2.1) // Negative input
ALIAS(OUT, G1.OP) // Opamp output ...
ALIAS(GND, G1.ON) // V- terminal
- ALIAS(VCC, DUMMY.I) // V+ terminal
+ ALIAS(VCC, DUMMY.1) // V+ terminal
- DUMMY_INPUT(DUMMY)
+ RES(DUMMY, RES_K(1))
+ NET_C(DUMMY.2, GND)
/* The opamp model */
@@ -347,13 +354,18 @@ NETLIST_START(OPAMP_lib)
LOCAL_LIB_ENTRY(opamp_layout_1_8_5)
LOCAL_LIB_ENTRY(opamp_layout_1_11_6)
+ // FIXME: JFET Opamp may need better model
+ // VLL and VHH for +-6V RI=10^12 (for numerical stability 10^9 is used below
+ // RO from data sheet
+ NET_MODEL("TL084 OPAMP(TYPE=3 VLH=0.75 VLL=0.75 FPF=10 UGF=3000k SLEW=13M RI=1000M RO=192 DAB=0.0014)")
+
NET_MODEL("LM324 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
NET_MODEL("LM358 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.001)")
NET_MODEL("MB3614 OPAMP(TYPE=3 VLH=1.4 VLL=0.02 FPF=10 UGF=1000k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
NET_MODEL("UA741 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=75 DAB=0.0017)")
NET_MODEL("LM747 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=50 DAB=0.0017)")
NET_MODEL("LM747A OPAMP(TYPE=3 VLH=2.0 VLL=2.0 FPF=5 UGF=1000k SLEW=0.7M RI=6000k RO=50 DAB=0.0015)")
- // TI and Motorola Datasheets differ - below are Motorola values values SLEW is average of LH and HL
+ // TI and Motorola Datasheets differ - below are Motorola values, SLEW is average of LH and HL
NET_MODEL("LM3900 OPAMP(TYPE=3 VLH=1.0 VLL=0.03 FPF=2k UGF=4M SLEW=10M RI=10M RO=2k DAB=0.0015)")
#if USE_LM3900_MODEL == 1
@@ -361,6 +373,7 @@ NETLIST_START(OPAMP_lib)
NET_MODEL("LM3900_PNP1 PNP(IS=1E-14 BF=40 TF=1E-7 CJC=1E-12 CJE=1E-12 VAF=150 RB=100 RE=5)")
#endif
LOCAL_LIB_ENTRY(MB3614_DIP)
+ LOCAL_LIB_ENTRY(TL084_DIP)
LOCAL_LIB_ENTRY(LM324_DIP)
LOCAL_LIB_ENTRY(LM358_DIP)
LOCAL_LIB_ENTRY(LM2902_DIP)