summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_4020.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_4020.cpp')
-rw-r--r--src/lib/netlist/devices/nld_4020.cpp36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/lib/netlist/devices/nld_4020.cpp b/src/lib/netlist/devices/nld_4020.cpp
index 97161071306..f542ff51aad 100644
--- a/src/lib/netlist/devices/nld_4020.cpp
+++ b/src/lib/netlist/devices/nld_4020.cpp
@@ -34,8 +34,22 @@ namespace netlist
NETLIB_UPDATEI();
public:
- void update_outputs(const unsigned cnt) NL_NOEXCEPT;
-
+ void update_outputs(const unsigned cnt) NL_NOEXCEPT
+ {
+ static constexpr const std::array<netlist_time, 14> out_delayQn = {
+ NLTIME_FROM_NS(180), NLTIME_FROM_NS(280),
+ NLTIME_FROM_NS(380), NLTIME_FROM_NS(480),
+ NLTIME_FROM_NS(580), NLTIME_FROM_NS(680),
+ NLTIME_FROM_NS(780), NLTIME_FROM_NS(880),
+ NLTIME_FROM_NS(980), NLTIME_FROM_NS(1080),
+ NLTIME_FROM_NS(1180), NLTIME_FROM_NS(1280),
+ NLTIME_FROM_NS(1380), NLTIME_FROM_NS(1480),
+ };
+
+ m_Q[0].push(cnt & 1, out_delayQn[0]);
+ for (std::size_t i=3; i<14; i++)
+ m_Q[i].push((cnt >> i) & 1, out_delayQn[i]);
+ }
logic_input_t m_IP;
object_array_t<logic_output_t, 14> m_Q;
@@ -74,7 +88,6 @@ namespace netlist
logic_input_t m_RESET;
};
-
NETLIB_UPDATE(CD4020_sub)
{
++m_cnt;
@@ -97,23 +110,6 @@ namespace netlist
m_sub.m_IP.activate_hl();
}
- NETLIB_FUNC_VOID(CD4020_sub, update_outputs, (const unsigned cnt))
- {
- static constexpr const std::array<netlist_time, 14> out_delayQn = {
- NLTIME_FROM_NS(180), NLTIME_FROM_NS(280),
- NLTIME_FROM_NS(380), NLTIME_FROM_NS(480),
- NLTIME_FROM_NS(580), NLTIME_FROM_NS(680),
- NLTIME_FROM_NS(780), NLTIME_FROM_NS(880),
- NLTIME_FROM_NS(980), NLTIME_FROM_NS(1080),
- NLTIME_FROM_NS(1180), NLTIME_FROM_NS(1280),
- NLTIME_FROM_NS(1380), NLTIME_FROM_NS(1480),
- };
-
- m_Q[0].push(cnt & 1, out_delayQn[0]);
- for (std::size_t i=3; i<14; i++)
- m_Q[i].push((cnt >> i) & 1, out_delayQn[i]);
- }
-
NETLIB_DEVICE_IMPL(CD4020, "CD4020", "")
NETLIB_DEVICE_IMPL_ALIAS(CD4020_WI, CD4020, "CD4020_WI", "+IP,+RESET,+VDD,+VSS")