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 | | |