mirror of
https://github.com/holub/mame
synced 2025-07-02 00:29:37 +03:00
netlist: Faster LM3900 model. [Colin Howell]
This commit is contained in:
parent
4d589c6a4b
commit
9351e7ac87
@ -8,11 +8,14 @@
|
|||||||
* 1 = Model from LTSPICE mailing list - slow!
|
* 1 = Model from LTSPICE mailing list - slow!
|
||||||
* 2 = Simplified model using diode inputs and netlist
|
* 2 = Simplified model using diode inputs and netlist
|
||||||
* 3 = Model according to datasheet
|
* 3 = Model according to datasheet
|
||||||
|
* 4 = Faster model by Colin Howell
|
||||||
*
|
*
|
||||||
* For Money Money 1 and 3 delivery comparable results.
|
* For Money Money 1 and 3 delivery comparable results.
|
||||||
* 3 is simpler (less BJTs) and converges a lot faster.
|
* 3 is simpler (less BJTs) and converges a lot faster.
|
||||||
|
*
|
||||||
|
* Model 4 uses a lot less resources and pn-junctions. The preferred new normal.
|
||||||
*/
|
*/
|
||||||
#define USE_LM3900_MODEL (3)
|
#define USE_LM3900_MODEL (4)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generic layout with 4 opamps, VCC on pin 4 and GND on pin 11
|
* Generic layout with 4 opamps, VCC on pin 4 and GND on pin 11
|
||||||
@ -318,8 +321,8 @@ static NETLIST_START(LM3900)
|
|||||||
|
|
||||||
NET_C(A.PLUS, CS1.IP)
|
NET_C(A.PLUS, CS1.IP)
|
||||||
NET_C(D1.A, CS1.IN)
|
NET_C(D1.A, CS1.IN)
|
||||||
NET_C(CS1.OP, A.MINUS)
|
NET_C(CS1.ON, A.MINUS)
|
||||||
NET_C(CS1.ON, A.GND, D1.K)
|
NET_C(CS1.OP, A.GND, D1.K)
|
||||||
|
|
||||||
NETLIST_END()
|
NETLIST_END()
|
||||||
#endif
|
#endif
|
||||||
@ -352,6 +355,37 @@ static NETLIST_START(LM3900)
|
|||||||
NETLIST_END()
|
NETLIST_END()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if USE_LM3900_MODEL == 4
|
||||||
|
static NETLIST_START(LM3900)
|
||||||
|
OPAMP(A, "OPAMP(TYPE=3 VLH=0.5 VLL=0.03 FPF=2k UGF=2.5M SLEW=1M RI=10M RO=100 DAB=0.0015)")
|
||||||
|
|
||||||
|
DIODE(D1, "D(IS=6e-15 N=1)")
|
||||||
|
DIODE(D2, "D(IS=6e-15 N=1)")
|
||||||
|
CCCS(CS1, 1) // Current Mirror
|
||||||
|
|
||||||
|
ALIAS(VCC, A.VCC)
|
||||||
|
ALIAS(GND, A.GND)
|
||||||
|
ALIAS(OUT, A.OUT)
|
||||||
|
|
||||||
|
ALIAS(PLUS, CS1.IP)
|
||||||
|
NET_C(D1.A, CS1.IN)
|
||||||
|
NET_C(A.GND, D1.K)
|
||||||
|
|
||||||
|
CS(CS_BIAS, 10e-6)
|
||||||
|
NET_C(A.VCC, CS_BIAS.P)
|
||||||
|
|
||||||
|
ALIAS(MINUS, CS1.OP)
|
||||||
|
NET_C(CS1.ON, A.GND)
|
||||||
|
|
||||||
|
CCVS(VS1, 200000) // current-to-voltage gain
|
||||||
|
NET_C(CS1.OP, VS1.IP)
|
||||||
|
NET_C(VS1.IN, CS_BIAS.N, D2.A)
|
||||||
|
NET_C(D2.K, A.GND)
|
||||||
|
NET_C(VS1.OP, A.MINUS)
|
||||||
|
NET_C(VS1.ON, A.PLUS, A.GND)
|
||||||
|
NETLIST_END()
|
||||||
|
#endif
|
||||||
|
|
||||||
NETLIST_START(OPAMP_lib)
|
NETLIST_START(OPAMP_lib)
|
||||||
LOCAL_LIB_ENTRY(opamp_layout_4_4_11)
|
LOCAL_LIB_ENTRY(opamp_layout_4_4_11)
|
||||||
LOCAL_LIB_ENTRY(opamp_layout_2_8_4)
|
LOCAL_LIB_ENTRY(opamp_layout_2_8_4)
|
||||||
|
Loading…
Reference in New Issue
Block a user