summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/netlist/analog/nld_opamps.cpp12
-rw-r--r--src/lib/netlist/devices/nld_74123.cpp2
-rw-r--r--src/lib/netlist/devices/nld_system.cpp4
-rw-r--r--src/lib/netlist/devices/nlid_system.h3
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
};