diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/netlist/macro/nlm_opamp.c | 43 | ||||
-rw-r--r-- | src/emu/netlist/macro/nlm_opamp.h | 6 | ||||
-rw-r--r-- | src/mame/audio/irem.c | 4 | ||||
-rw-r--r-- | src/mame/audio/nl_kidniki.c | 139 |
4 files changed, 48 insertions, 144 deletions
diff --git a/src/emu/netlist/macro/nlm_opamp.c b/src/emu/netlist/macro/nlm_opamp.c index 62e2312a3a8..c2038d19a28 100644 --- a/src/emu/netlist/macro/nlm_opamp.c +++ b/src/emu/netlist/macro/nlm_opamp.c @@ -23,10 +23,23 @@ NETLIST_START(opamp_layout_4_4_11) NET_C(A.VCC, B.VCC, C.VCC, D.VCC) NETLIST_END() +/* + * Generic layout with 2 opamps, VCC on pint 8 and GND on pin 4 + */ + +NETLIST_START(opamp_layout_2_8_4) + DIPPINS( /* +--------------+ */ + A.OUT, /* |1 ++ 8| */ A.VCC, + A.MINUS, /* |2 7| */ B.OUT, + A.PLUS, /* |3 6| */ B.MINUS, + A.GND, /* |4 5| */ B.PLUS + /* +--------------+ */ + ) + NET_C(A.GND, B.GND) + NET_C(A.VCC, B.VCC) +NETLIST_END() + NETLIST_START(MB3614_DIP) - /* The opamp actually has an FPF of about 500k. This doesn't work here and causes oscillations. - * FPF here therefore about half the Solver clock. - */ OPAMP(A, "MB3614") OPAMP(B, "MB3614") OPAMP(C, "MB3614") @@ -36,12 +49,36 @@ NETLIST_START(MB3614_DIP) NETLIST_END() +NETLIST_START(LM324_DIP) + OPAMP(A, "LM324") + OPAMP(B, "LM324") + OPAMP(C, "LM324") + OPAMP(D, "LM324") + + INCLUDE(opamp_layout_4_4_11) + +NETLIST_END() + +NETLIST_START(LM358_DIP) + OPAMP(A, "LM358") + OPAMP(B, "LM358") + + INCLUDE(opamp_layout_2_8_4) + +NETLIST_END() + NETLIST_START(OPAMP_lib) LOCAL_LIB_ENTRY(opamp_layout_4_4_11) + LOCAL_LIB_ENTRY(opamp_layout_2_8_4) + 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=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.6M RI=1000k RO=50 DAB=0.002)") NET_MODEL("MB3614_SLOW OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=11k SLEW=0.6M RI=1000k RO=50 DAB=0.002)") + LOCAL_LIB_ENTRY(MB3614_DIP) + LOCAL_LIB_ENTRY(LM324_DIP) + LOCAL_LIB_ENTRY(LM358_DIP) NETLIST_END() diff --git a/src/emu/netlist/macro/nlm_opamp.h b/src/emu/netlist/macro/nlm_opamp.h index d31a5f0b876..f9ed62d71b3 100644 --- a/src/emu/netlist/macro/nlm_opamp.h +++ b/src/emu/netlist/macro/nlm_opamp.h @@ -12,6 +12,12 @@ #define MB3614_DIP(_name) \ NET_REGISTER_DEV(MB3614_DIP, _name) +#define LM324_DIP(_name) \ + NET_REGISTER_DEV(LM324_DIP, _name) + +#define LM358_DIP(_name) \ + NET_REGISTER_DEV(LM358_DIP, _name) + /* ---------------------------------------------------------------------------- * External declarations * ---------------------------------------------------------------------------*/ diff --git a/src/mame/audio/irem.c b/src/mame/audio/irem.c index 67fe2b27de3..5d524b2a002 100644 --- a/src/mame/audio/irem.c +++ b/src/mame/audio/irem.c @@ -399,10 +399,10 @@ NETLIST_START(kidniki_interface) #if (USE_FRONTIERS) SOLVER(Solver, 18000) - PARAM(Solver.ACCURACY, 1e-7) + PARAM(Solver.ACCURACY, 1e-8) PARAM(Solver.NR_LOOPS, 300) PARAM(Solver.GS_LOOPS, 1) - PARAM(Solver.GS_THRESHOLD, 99) + PARAM(Solver.GS_THRESHOLD, 6) PARAM(Solver.ITERATIVE, "SOR") PARAM(Solver.PARALLEL, 1) PARAM(Solver.SOR_FACTOR, 1.00) diff --git a/src/mame/audio/nl_kidniki.c b/src/mame/audio/nl_kidniki.c index 429aac1f70c..bdb178f82c4 100644 --- a/src/mame/audio/nl_kidniki.c +++ b/src/mame/audio/nl_kidniki.c @@ -15,14 +15,6 @@ #ifndef __PLIB_PREPROCESSOR__ -#define LM324_DIP(_name) \ - NET_REGISTER_DEV(LM324_DIP, _name) - -#define LM358_DIP(_name) \ - NET_REGISTER_DEV(LM358_DIP, _name) - -NETLIST_EXTERNAL(kidniki_lib) - #endif /* ---------------------------------------------------------------------------- @@ -41,9 +33,6 @@ NETLIST_START(kidniki_schematics) // IGNORED O_AUDIO0: O_AUDIO0 49 0 // .END - LOCAL_SOURCE(kidniki_lib) - INCLUDE(kidniki_lib) - /* * Workaround: The simplified opamp model does not correctly * model the internals of the inputs. @@ -316,131 +305,3 @@ NETLIST_START(kidniki_schematics) NET_C(R26.2, C29.2, GND) NETLIST_END() - -/* ---------------------------------------------------------------------------- - * Library section body START - * ---------------------------------------------------------------------------*/ - -NETLIST_START(opamp) - - /* Opamp model from - * - * http://www.ecircuitcenter.com/Circuits/opmodel1/opmodel1.htm - * - * Bandwidth 1Mhz - * - */ - - /* Terminal definitions for calling netlists */ - - ALIAS(PLUS, G1.IP) // Positive input - ALIAS(MINUS, G1.IN) // Negative input - ALIAS(OUT, EBUF.OP) // Opamp output ... - - ALIAS(GND, EBUF.ON) // GND terminal - ALIAS(VCC, DUMMY.I) // VCC terminal - DUMMY_INPUT(DUMMY) - - /* The opamp model */ - - VCCS(G1) - PARAM(G1.RI, RES_K(1000)) -#if 1 - PARAM(G1.G, 100) // typical OP-AMP amplification 100 * 1000 = 100000 - RES(RP1, 1000) - CAP(CP1, 1.59e-5) // <== change to 1.59e-3 for 10Khz bandwidth -#else - PARAM(G1.G, 1) // typical OP-AMP amplification 100 * 1000 = 100000 - RES(RP1, 100000) - CAP(CP1, 1.59e-7) // <== change to 1.59e-3 for 10Khz bandwidth -#endif - VCVS(EBUF) - PARAM(EBUF.RO, 50) - PARAM(EBUF.G, 1) - -// PARAM(EBUF.RI, 1e20) -// NET_C(EBUF.ON, GND) - - NET_C(G1.ON, GND) - NET_C(RP1.2, GND) - NET_C(CP1.2, GND) - NET_C(EBUF.IN, GND) - - NET_C(RP1.1, G1.OP) - NET_C(CP1.1, RP1.1) - - DIODE(DP,"1N914") - DIODE(DN,"1N914") - - NET_C(DP.K, VCC) -#if 1 - NET_C(DP.A, DN.K, RP1.1) -#else - RES(RDP, 1000) - RES(RDN, 1000) - NET_C(RDP.1, DP.A) - NET_C(RDN.1, DN.K) - NET_C(RDP.2, RDN.2, RP1.1) -#endif - NET_C(DN.A, GND) - - NET_C(EBUF.IP, RP1.1) - -NETLIST_END() - -NETLIST_START(LM324_DIP) - SUBMODEL(opamp, op1) - SUBMODEL(opamp, op2) - SUBMODEL(opamp, op3) - SUBMODEL(opamp, op4) - - ALIAS( 1, op1.OUT) - ALIAS( 2, op1.MINUS) - ALIAS( 3, op1.PLUS) - - ALIAS( 7, op2.OUT) - ALIAS( 6, op2.MINUS) - ALIAS( 5, op2.PLUS) - - ALIAS( 8, op3.OUT) - ALIAS( 9, op3.MINUS) - ALIAS(10, op3.PLUS) - - ALIAS(14, op4.OUT) - ALIAS(13, op4.MINUS) - ALIAS(12, op4.PLUS) - - NET_C(op1.GND, op2.GND, op3.GND, op4.GND) - NET_C(op1.VCC, op2.VCC, op3.VCC, op4.VCC) - - ALIAS(11, op1.GND) - ALIAS( 4, op1.VCC) -NETLIST_END() - -NETLIST_START(LM358_DIP) - SUBMODEL(opamp, op1) - SUBMODEL(opamp, op2) - - ALIAS( 1, op1.OUT) - ALIAS( 2, op1.MINUS) - ALIAS( 3, op1.PLUS) - - ALIAS( 7, op2.OUT) - ALIAS( 6, op2.MINUS) - ALIAS( 5, op2.PLUS) - - - NET_C(op1.GND, op2.GND) - NET_C(op1.VCC, op2.VCC) - - ALIAS( 4, op1.GND) - ALIAS( 8, op1.VCC) -NETLIST_END() - -NETLIST_START(kidniki_lib) - - LOCAL_LIB_ENTRY(LM324_DIP) - LOCAL_LIB_ENTRY(LM358_DIP) - -NETLIST_END() - |