diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/netlist/analog/nld_opamps.cpp | 12 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_74123.cpp | 2 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_system.cpp | 4 | ||||
-rw-r--r-- | src/lib/netlist/devices/nlid_system.h | 3 |
4 files changed, 14 insertions, 7 deletions
diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp index 4f324ea92bd..b081f922696 100644 --- a/src/lib/netlist/analog/nld_opamps.cpp +++ b/src/lib/netlist/analog/nld_opamps.cpp @@ -34,12 +34,12 @@ namespace netlist * SLEW = unity gain slew rate in V/s * RI = input resistance in Ohms * RO = output resistance in Ohms - * DAB = quiescent supply current in A - */ - -/* .model abc OPAMP(VLH=2.0 VLL=0.2 FPF=5 UGF=10k SLEW=0.6u RI=1000k RO=50 DAB=0.002) + * DAB = Differential Amp Bias ~ op amp's total quiescent current. + * + * .model abc OPAMP(VLH=2.0 VLL=0.2 FPF=5 UGF=10k SLEW=0.6u RI=1000k RO=50 DAB=0.002) + * + * http://www.ecircuitcenter.com/Circuits/opmodel1/opmodel1.htm * - * Differential Amp Bias ~ op amp's total quiescent current. * */ NETLIB_UPDATE(OPAMP) @@ -79,7 +79,7 @@ NETLIB_RESET(OPAMP) double RP = 0.5 / 3.1459 / CP / m_model.model_value("FPF"); double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RP; - printf("Min Freq %s: %f\n", name().c_str(), 1.0 / (CP*RP / (G*RP))); + //printf("Min Freq %s: %f\n", name().c_str(), 1.0 / (CP*RP / (G*RP))); m_CP->m_C.setTo(CP); m_RP.set_R(RP); diff --git a/src/lib/netlist/devices/nld_74123.cpp b/src/lib/netlist/devices/nld_74123.cpp index 0bc1a60acb0..1dc23a7ab3d 100644 --- a/src/lib/netlist/devices/nld_74123.cpp +++ b/src/lib/netlist/devices/nld_74123.cpp @@ -31,7 +31,7 @@ namespace netlist , m_last_trig(*this, "m_last_trig", 0) , m_state(*this, "m_state", 0) , m_KP(*this, "m_KP", 0) - , m_K(*this, "K", (m_dev_type == 4538) ? 0.4 : 0.4) + , m_K(*this, "K", (m_dev_type == 4538) ? 1.0 : 0.4) // CD4538 datasheet states PW=RC , m_RI(*this, "RI", 400.0) // around 250 for HC series, 400 on LS/TTL, estimated from datasheets { if ((m_dev_type != 9602) && (m_dev_type != 4538) ) diff --git a/src/lib/netlist/devices/nld_system.cpp b/src/lib/netlist/devices/nld_system.cpp index 16bc759ee94..7b144abcaa2 100644 --- a/src/lib/netlist/devices/nld_system.cpp +++ b/src/lib/netlist/devices/nld_system.cpp @@ -158,6 +158,10 @@ namespace netlist ptr--; stack[ptr-1] = stack[ptr-1] / stack[ptr]; break; + case POW: + ptr--; + stack[ptr-1] = std::pow(stack[ptr-1], stack[ptr]); + break; case PUSH_INPUT: stack[ptr++] = (*m_I[static_cast<unsigned>(rc.m_param)])(); break; diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index 5850eadfd9d..929394651d8 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -327,6 +327,8 @@ namespace netlist rc.m_cmd = MULT; else if (cmd == "/") rc.m_cmd = DIV; + else if (cmd == "pow") + rc.m_cmd = POW; else if (cmd.startsWith("A")) { rc.m_cmd = PUSH_INPUT; @@ -359,6 +361,7 @@ namespace netlist MULT, SUB, DIV, + POW, PUSH_CONST, PUSH_INPUT }; |