diff options
Diffstat (limited to 'src/emu/netlist/devices/nld_74ls629.c')
-rw-r--r-- | src/emu/netlist/devices/nld_74ls629.c | 194 |
1 files changed, 97 insertions, 97 deletions
diff --git a/src/emu/netlist/devices/nld_74ls629.c b/src/emu/netlist/devices/nld_74ls629.c index 09c12d2d98c..42d10263858 100644 --- a/src/emu/netlist/devices/nld_74ls629.c +++ b/src/emu/netlist/devices/nld_74ls629.c @@ -50,139 +50,139 @@ NETLIB_START(SN74LS629clk) reset(); save(NAME(m_enableq)); - save(NAME(m_inc)); + save(NAME(m_inc)); } NETLIB_RESET(SN74LS629clk) { - m_enableq = 1; - m_inc = netlist_time::zero; + m_enableq = 1; + m_inc = netlist_time::zero; } NETLIB_UPDATE(SN74LS629clk) { - if (!m_enableq) - { - OUTLOGIC(m_Y, !m_Y.net().new_Q(), m_inc); - } - else - { - OUTLOGIC(m_Y, 1, m_inc); - } + if (!m_enableq) + { + OUTLOGIC(m_Y, !m_Y.net().new_Q(), m_inc); + } + else + { + OUTLOGIC(m_Y, 1, m_inc); + } } NETLIB_START(SN74LS629) { - register_sub(m_clock, "OSC"); - register_sub(m_R_FC, "R_FC"); - register_sub(m_R_RNG, "R_RNG"); + register_sub(m_clock, "OSC"); + register_sub(m_R_FC, "R_FC"); + register_sub(m_R_RNG, "R_RNG"); - register_input("ENQ", m_ENQ); - register_input("RNG", m_RNG); - register_input("FC", m_FC); - register_subalias("GND", m_R_FC.m_N); + register_input("ENQ", m_ENQ); + register_input("RNG", m_RNG); + register_input("FC", m_FC); + register_subalias("GND", m_R_FC.m_N); - connect(m_FC, m_R_FC.m_P); - connect(m_RNG, m_R_RNG.m_P); - connect(m_R_FC.m_N, m_R_RNG.m_N); + connect(m_FC, m_R_FC.m_P); + connect(m_RNG, m_R_RNG.m_P); + connect(m_R_FC.m_N, m_R_RNG.m_N); - register_subalias("Y", m_clock.m_Y); - register_param("CAP", m_CAP, 1e-6); + register_subalias("Y", m_clock.m_Y); + register_param("CAP", m_CAP, 1e-6); } NETLIB_RESET(SN74LS629) { - m_R_FC.set_R(90000.0); - m_R_RNG.set_R(90000.0); - m_clock.reset(); + m_R_FC.set_R(90000.0); + m_R_RNG.set_R(90000.0); + m_clock.reset(); } NETLIB_UPDATE(SN74LS629) { - { - // recompute - double freq; - double v_freq_2, v_freq_3, v_freq_4; - double v_freq = INPANALOG(m_FC); - double v_rng = INPANALOG(m_RNG); - - /* coefficients */ - const double k1 = 1.9904769024796283E+03; - const double k2 = 1.2070059213983407E+03; - const double k3 = 1.3266985579561108E+03; - const double k4 = -1.5500979825922698E+02; - const double k5 = 2.8184536266938172E+00; - const double k6 = -2.3503421582744556E+02; - const double k7 = -3.3836786704527788E+02; - const double k8 = -1.3569136703258670E+02; - const double k9 = 2.9914575453819188E+00; - const double k10 = 1.6855569086173170E+00; - - /* scale due to input resistance */ - - /* Polyfunctional3D_model created by zunzun.com using sum of squared absolute error */ - v_freq_2 = v_freq * v_freq; - v_freq_3 = v_freq_2 * v_freq; - v_freq_4 = v_freq_3 * v_freq; - freq = k1; - freq += k2 * v_freq; - freq += k3 * v_freq_2; - freq += k4 * v_freq_3; - freq += k5 * v_freq_4; - freq += k6 * v_rng; - freq += k7 * v_rng * v_freq; - freq += k8 * v_rng * v_freq_2; - freq += k9 * v_rng * v_freq_3; - freq += k10 * v_rng * v_freq_4; - - freq *= 0.1e-6 / m_CAP.Value(); - - // FIXME: we need a possibility to remove entries from queue ... - // or an exact model ... - m_clock.m_inc = netlist_time::from_double(0.5 / freq); - //m_clock.update(); - } - - if (!m_clock.m_enableq && INPLOGIC(m_ENQ)) - { - m_clock.m_enableq = 1; - OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1)); - } - else if (m_clock.m_enableq && !INPLOGIC(m_ENQ)) - { - m_clock.m_enableq = 0; - OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1)); - } + { + // recompute + double freq; + double v_freq_2, v_freq_3, v_freq_4; + double v_freq = INPANALOG(m_FC); + double v_rng = INPANALOG(m_RNG); + + /* coefficients */ + const double k1 = 1.9904769024796283E+03; + const double k2 = 1.2070059213983407E+03; + const double k3 = 1.3266985579561108E+03; + const double k4 = -1.5500979825922698E+02; + const double k5 = 2.8184536266938172E+00; + const double k6 = -2.3503421582744556E+02; + const double k7 = -3.3836786704527788E+02; + const double k8 = -1.3569136703258670E+02; + const double k9 = 2.9914575453819188E+00; + const double k10 = 1.6855569086173170E+00; + + /* scale due to input resistance */ + + /* Polyfunctional3D_model created by zunzun.com using sum of squared absolute error */ + v_freq_2 = v_freq * v_freq; + v_freq_3 = v_freq_2 * v_freq; + v_freq_4 = v_freq_3 * v_freq; + freq = k1; + freq += k2 * v_freq; + freq += k3 * v_freq_2; + freq += k4 * v_freq_3; + freq += k5 * v_freq_4; + freq += k6 * v_rng; + freq += k7 * v_rng * v_freq; + freq += k8 * v_rng * v_freq_2; + freq += k9 * v_rng * v_freq_3; + freq += k10 * v_rng * v_freq_4; + + freq *= 0.1e-6 / m_CAP.Value(); + + // FIXME: we need a possibility to remove entries from queue ... + // or an exact model ... + m_clock.m_inc = netlist_time::from_double(0.5 / freq); + //m_clock.update(); + } + + if (!m_clock.m_enableq && INPLOGIC(m_ENQ)) + { + m_clock.m_enableq = 1; + OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1)); + } + else if (m_clock.m_enableq && !INPLOGIC(m_ENQ)) + { + m_clock.m_enableq = 0; + OUTLOGIC(m_clock.m_Y, !m_clock.m_Y.net().last_Q(), netlist_time::from_nsec(1)); + } } NETLIB_UPDATE_PARAM(SN74LS629) { - //printf("updating %s to %f\n", name().cstr(), m_R.Value()); - update_dev(); + //printf("updating %s to %f\n", name().cstr(), m_R.Value()); + update_dev(); } NETLIB_START(SN74LS629_dip) { - register_sub(m_1, "1"); - register_sub(m_2, "2"); + register_sub(m_1, "1"); + register_sub(m_2, "2"); - register_subalias("1", m_2.m_FC); - register_subalias("2", m_1.m_FC); - register_subalias("3", m_1.m_RNG); + register_subalias("1", m_2.m_FC); + register_subalias("2", m_1.m_FC); + register_subalias("3", m_1.m_RNG); - register_subalias("6", m_1.m_ENQ); - register_subalias("7", m_1.m_clock.m_Y); + register_subalias("6", m_1.m_ENQ); + register_subalias("7", m_1.m_clock.m_Y); - register_subalias("8", m_1.m_R_FC.m_N); - register_subalias("9", m_1.m_R_FC.m_N); - connect(m_1.m_R_FC.m_N, m_2.m_R_FC.m_N); + register_subalias("8", m_1.m_R_FC.m_N); + register_subalias("9", m_1.m_R_FC.m_N); + connect(m_1.m_R_FC.m_N, m_2.m_R_FC.m_N); - register_subalias("10", m_2.m_clock.m_Y); + register_subalias("10", m_2.m_clock.m_Y); - register_subalias("11", m_2.m_ENQ); - register_subalias("14", m_2.m_RNG); + register_subalias("11", m_2.m_ENQ); + register_subalias("14", m_2.m_RNG); } @@ -192,6 +192,6 @@ NETLIB_UPDATE(SN74LS629_dip) NETLIB_RESET(SN74LS629_dip) { - m_1.do_reset(); - m_2.do_reset(); + m_1.do_reset(); + m_2.do_reset(); } |