trunk/src/emu/netlist/macro/nlm_opamp.c
r248548 | r248549 | |
23 | 23 | NET_C(A.VCC, B.VCC, C.VCC, D.VCC) |
24 | 24 | NETLIST_END() |
25 | 25 | |
| 26 | /* |
| 27 | * Generic layout with 2 opamps, VCC on pint 8 and GND on pin 4 |
| 28 | */ |
| 29 | |
| 30 | NETLIST_START(opamp_layout_2_8_4) |
| 31 | DIPPINS( /* +--------------+ */ |
| 32 | A.OUT, /* |1 ++ 8| */ A.VCC, |
| 33 | A.MINUS, /* |2 7| */ B.OUT, |
| 34 | A.PLUS, /* |3 6| */ B.MINUS, |
| 35 | A.GND, /* |4 5| */ B.PLUS |
| 36 | /* +--------------+ */ |
| 37 | ) |
| 38 | NET_C(A.GND, B.GND) |
| 39 | NET_C(A.VCC, B.VCC) |
| 40 | NETLIST_END() |
| 41 | |
26 | 42 | NETLIST_START(MB3614_DIP) |
27 | | /* The opamp actually has an FPF of about 500k. This doesn't work here and causes oscillations. |
28 | | * FPF here therefore about half the Solver clock. |
29 | | */ |
30 | 43 | OPAMP(A, "MB3614") |
31 | 44 | OPAMP(B, "MB3614") |
32 | 45 | OPAMP(C, "MB3614") |
r248548 | r248549 | |
36 | 49 | |
37 | 50 | NETLIST_END() |
38 | 51 | |
| 52 | NETLIST_START(LM324_DIP) |
| 53 | OPAMP(A, "LM324") |
| 54 | OPAMP(B, "LM324") |
| 55 | OPAMP(C, "LM324") |
| 56 | OPAMP(D, "LM324") |
| 57 | |
| 58 | INCLUDE(opamp_layout_4_4_11) |
| 59 | |
| 60 | NETLIST_END() |
| 61 | |
| 62 | NETLIST_START(LM358_DIP) |
| 63 | OPAMP(A, "LM358") |
| 64 | OPAMP(B, "LM358") |
| 65 | |
| 66 | INCLUDE(opamp_layout_2_8_4) |
| 67 | |
| 68 | NETLIST_END() |
| 69 | |
39 | 70 | NETLIST_START(OPAMP_lib) |
40 | 71 | LOCAL_LIB_ENTRY(opamp_layout_4_4_11) |
| 72 | LOCAL_LIB_ENTRY(opamp_layout_2_8_4) |
41 | 73 | |
| 74 | 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)") |
| 75 | 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)") |
42 | 76 | 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)") |
43 | 77 | 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)") |
| 78 | |
44 | 79 | LOCAL_LIB_ENTRY(MB3614_DIP) |
| 80 | LOCAL_LIB_ENTRY(LM324_DIP) |
| 81 | LOCAL_LIB_ENTRY(LM358_DIP) |
45 | 82 | |
46 | 83 | |
47 | 84 | NETLIST_END() |
trunk/src/emu/netlist/macro/nlm_opamp.h
r248548 | r248549 | |
12 | 12 | #define MB3614_DIP(_name) \ |
13 | 13 | NET_REGISTER_DEV(MB3614_DIP, _name) |
14 | 14 | |
| 15 | #define LM324_DIP(_name) \ |
| 16 | NET_REGISTER_DEV(LM324_DIP, _name) |
| 17 | |
| 18 | #define LM358_DIP(_name) \ |
| 19 | NET_REGISTER_DEV(LM358_DIP, _name) |
| 20 | |
15 | 21 | /* ---------------------------------------------------------------------------- |
16 | 22 | * External declarations |
17 | 23 | * ---------------------------------------------------------------------------*/ |
trunk/src/mame/audio/irem.c
r248548 | r248549 | |
399 | 399 | |
400 | 400 | #if (USE_FRONTIERS) |
401 | 401 | SOLVER(Solver, 18000) |
402 | | PARAM(Solver.ACCURACY, 1e-7) |
| 402 | PARAM(Solver.ACCURACY, 1e-8) |
403 | 403 | PARAM(Solver.NR_LOOPS, 300) |
404 | 404 | PARAM(Solver.GS_LOOPS, 1) |
405 | | PARAM(Solver.GS_THRESHOLD, 99) |
| 405 | PARAM(Solver.GS_THRESHOLD, 6) |
406 | 406 | PARAM(Solver.ITERATIVE, "SOR") |
407 | 407 | PARAM(Solver.PARALLEL, 1) |
408 | 408 | PARAM(Solver.SOR_FACTOR, 1.00) |
trunk/src/mame/audio/nl_kidniki.c
r248548 | r248549 | |
15 | 15 | |
16 | 16 | #ifndef __PLIB_PREPROCESSOR__ |
17 | 17 | |
18 | | #define LM324_DIP(_name) \ |
19 | | NET_REGISTER_DEV(LM324_DIP, _name) |
20 | | |
21 | | #define LM358_DIP(_name) \ |
22 | | NET_REGISTER_DEV(LM358_DIP, _name) |
23 | | |
24 | | NETLIST_EXTERNAL(kidniki_lib) |
25 | | |
26 | 18 | #endif |
27 | 19 | |
28 | 20 | /* ---------------------------------------------------------------------------- |
r248548 | r248549 | |
41 | 33 | // IGNORED O_AUDIO0: O_AUDIO0 49 0 |
42 | 34 | // .END |
43 | 35 | |
44 | | LOCAL_SOURCE(kidniki_lib) |
45 | | INCLUDE(kidniki_lib) |
46 | | |
47 | 36 | /* |
48 | 37 | * Workaround: The simplified opamp model does not correctly |
49 | 38 | * model the internals of the inputs. |
r248548 | r248549 | |
316 | 305 | NET_C(R26.2, C29.2, GND) |
317 | 306 | |
318 | 307 | NETLIST_END() |
319 | | |
320 | | /* ---------------------------------------------------------------------------- |
321 | | * Library section body START |
322 | | * ---------------------------------------------------------------------------*/ |
323 | | |
324 | | NETLIST_START(opamp) |
325 | | |
326 | | /* Opamp model from |
327 | | * |
328 | | * http://www.ecircuitcenter.com/Circuits/opmodel1/opmodel1.htm |
329 | | * |
330 | | * Bandwidth 1Mhz |
331 | | * |
332 | | */ |
333 | | |
334 | | /* Terminal definitions for calling netlists */ |
335 | | |
336 | | ALIAS(PLUS, G1.IP) // Positive input |
337 | | ALIAS(MINUS, G1.IN) // Negative input |
338 | | ALIAS(OUT, EBUF.OP) // Opamp output ... |
339 | | |
340 | | ALIAS(GND, EBUF.ON) // GND terminal |
341 | | ALIAS(VCC, DUMMY.I) // VCC terminal |
342 | | DUMMY_INPUT(DUMMY) |
343 | | |
344 | | /* The opamp model */ |
345 | | |
346 | | VCCS(G1) |
347 | | PARAM(G1.RI, RES_K(1000)) |
348 | | #if 1 |
349 | | PARAM(G1.G, 100) // typical OP-AMP amplification 100 * 1000 = 100000 |
350 | | RES(RP1, 1000) |
351 | | CAP(CP1, 1.59e-5) // <== change to 1.59e-3 for 10Khz bandwidth |
352 | | #else |
353 | | PARAM(G1.G, 1) // typical OP-AMP amplification 100 * 1000 = 100000 |
354 | | RES(RP1, 100000) |
355 | | CAP(CP1, 1.59e-7) // <== change to 1.59e-3 for 10Khz bandwidth |
356 | | #endif |
357 | | VCVS(EBUF) |
358 | | PARAM(EBUF.RO, 50) |
359 | | PARAM(EBUF.G, 1) |
360 | | |
361 | | // PARAM(EBUF.RI, 1e20) |
362 | | // NET_C(EBUF.ON, GND) |
363 | | |
364 | | NET_C(G1.ON, GND) |
365 | | NET_C(RP1.2, GND) |
366 | | NET_C(CP1.2, GND) |
367 | | NET_C(EBUF.IN, GND) |
368 | | |
369 | | NET_C(RP1.1, G1.OP) |
370 | | NET_C(CP1.1, RP1.1) |
371 | | |
372 | | DIODE(DP,"1N914") |
373 | | DIODE(DN,"1N914") |
374 | | |
375 | | NET_C(DP.K, VCC) |
376 | | #if 1 |
377 | | NET_C(DP.A, DN.K, RP1.1) |
378 | | #else |
379 | | RES(RDP, 1000) |
380 | | RES(RDN, 1000) |
381 | | NET_C(RDP.1, DP.A) |
382 | | NET_C(RDN.1, DN.K) |
383 | | NET_C(RDP.2, RDN.2, RP1.1) |
384 | | #endif |
385 | | NET_C(DN.A, GND) |
386 | | |
387 | | NET_C(EBUF.IP, RP1.1) |
388 | | |
389 | | NETLIST_END() |
390 | | |
391 | | NETLIST_START(LM324_DIP) |
392 | | SUBMODEL(opamp, op1) |
393 | | SUBMODEL(opamp, op2) |
394 | | SUBMODEL(opamp, op3) |
395 | | SUBMODEL(opamp, op4) |
396 | | |
397 | | ALIAS( 1, op1.OUT) |
398 | | ALIAS( 2, op1.MINUS) |
399 | | ALIAS( 3, op1.PLUS) |
400 | | |
401 | | ALIAS( 7, op2.OUT) |
402 | | ALIAS( 6, op2.MINUS) |
403 | | ALIAS( 5, op2.PLUS) |
404 | | |
405 | | ALIAS( 8, op3.OUT) |
406 | | ALIAS( 9, op3.MINUS) |
407 | | ALIAS(10, op3.PLUS) |
408 | | |
409 | | ALIAS(14, op4.OUT) |
410 | | ALIAS(13, op4.MINUS) |
411 | | ALIAS(12, op4.PLUS) |
412 | | |
413 | | NET_C(op1.GND, op2.GND, op3.GND, op4.GND) |
414 | | NET_C(op1.VCC, op2.VCC, op3.VCC, op4.VCC) |
415 | | |
416 | | ALIAS(11, op1.GND) |
417 | | ALIAS( 4, op1.VCC) |
418 | | NETLIST_END() |
419 | | |
420 | | NETLIST_START(LM358_DIP) |
421 | | SUBMODEL(opamp, op1) |
422 | | SUBMODEL(opamp, op2) |
423 | | |
424 | | ALIAS( 1, op1.OUT) |
425 | | ALIAS( 2, op1.MINUS) |
426 | | ALIAS( 3, op1.PLUS) |
427 | | |
428 | | ALIAS( 7, op2.OUT) |
429 | | ALIAS( 6, op2.MINUS) |
430 | | ALIAS( 5, op2.PLUS) |
431 | | |
432 | | |
433 | | NET_C(op1.GND, op2.GND) |
434 | | NET_C(op1.VCC, op2.VCC) |
435 | | |
436 | | ALIAS( 4, op1.GND) |
437 | | ALIAS( 8, op1.VCC) |
438 | | NETLIST_END() |
439 | | |
440 | | NETLIST_START(kidniki_lib) |
441 | | |
442 | | LOCAL_LIB_ENTRY(LM324_DIP) |
443 | | LOCAL_LIB_ENTRY(LM358_DIP) |
444 | | |
445 | | NETLIST_END() |
446 | | |