summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_schmitt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_schmitt.cpp')
-rw-r--r--src/lib/netlist/devices/nld_schmitt.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/netlist/devices/nld_schmitt.cpp b/src/lib/netlist/devices/nld_schmitt.cpp
index 81624733278..c36ce978b0d 100644
--- a/src/lib/netlist/devices/nld_schmitt.cpp
+++ b/src/lib/netlist/devices/nld_schmitt.cpp
@@ -8,6 +8,7 @@
#include "nld_schmitt.h"
#include "netlist/analog/nlid_twoterm.h"
+#include "netlist/devices/nlid_system.h"
#include "netlist/nl_base.h"
#include "netlist/nl_errstr.h"
#include "netlist/solver/nld_solver.h"
@@ -61,7 +62,7 @@ namespace netlist
{
NETLIB_CONSTRUCTOR(schmitt_trigger)
, m_A(*this, "A")
- , m_GND(*this, "GND")
+ , m_supply(*this)
, m_RVI(*this, "RVI")
, m_RVO(*this, "RVO")
, m_model(*this, "MODEL", "TTL_7414_GATE")
@@ -71,8 +72,8 @@ namespace netlist
register_subalias("Q", m_RVO.m_P);
connect(m_A, m_RVI.m_P);
- connect(m_GND, m_RVI.m_N);
- connect(m_GND, m_RVO.m_N);
+ connect(m_supply.GND(), m_RVI.m_N);
+ connect(m_supply.GND(), m_RVO.m_N);
}
protected:
@@ -88,9 +89,10 @@ namespace netlist
NETLIB_UPDATEI()
{
+ const auto va(m_A.Q_Analog() - m_supply.GND().Q_Analog());
if (m_last_state)
{
- if (m_A.Q_Analog() < m_model.m_VTM)
+ if (va < m_model.m_VTM)
{
m_last_state = 0;
if (m_is_timestep)
@@ -101,7 +103,7 @@ namespace netlist
}
else
{
- if (m_A.Q_Analog() > m_model.m_VTP)
+ if (va > m_model.m_VTP)
{
m_last_state = 1;
if (m_is_timestep)
@@ -114,7 +116,7 @@ namespace netlist
private:
analog_input_t m_A;
- analog_input_t m_GND;
+ NETLIB_NAME(power_pins) m_supply;
analog::NETLIB_SUB(twoterm) m_RVI;
analog::NETLIB_SUB(twoterm) m_RVO;
schmitt_trigger_model_t m_model;