summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2020-08-01 23:57:57 -0700
committer couriersud <couriersud@gmx.org>2020-08-02 12:36:28 +0200
commitfe8c88862fb60ababe0230dba3f7aa7f0a299c93 (patch)
tree654a38fc9bad124c0bf40b31c16e7b35d2b2d51c
parentbd6cbb17aa16b58e3aac692eea657e96ad34228e (diff)
netlist: Macro-ized 9322 DIPs.
-rw-r--r--src/lib/netlist/devices/net_lib.cpp2
-rw-r--r--src/lib/netlist/devices/nld_9322.cpp96
-rw-r--r--src/lib/netlist/devices/nld_9322.h21
-rw-r--r--src/lib/netlist/devices/nld_devinc.h11
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.cpp40
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.h3
6 files changed, 83 insertions, 90 deletions
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp
index 3244a920623..9ac09949306 100644
--- a/src/lib/netlist/devices/net_lib.cpp
+++ b/src/lib/netlist/devices/net_lib.cpp
@@ -128,6 +128,7 @@ namespace devices
LIB_ENTRY(9310)
LIB_ENTRY(9314)
LIB_ENTRY(9316)
+ LIB_ENTRY(9322_GATE)
LIB_ENTRY(9322)
LIB_ENTRY(9334)
LIB_ENTRY(AM2847)
@@ -163,7 +164,6 @@ namespace devices
LIB_ENTRY(74365_dip)
LIB_ENTRY(9602)
LIB_ENTRY(9314_dip)
- LIB_ENTRY(9322_dip)
LIB_ENTRY(9334_dip)
LIB_ENTRY(AM2847_dip)
LIB_ENTRY(MM5837_dip)
diff --git a/src/lib/netlist/devices/nld_9322.cpp b/src/lib/netlist/devices/nld_9322.cpp
index 8c7742360b9..3b963111bb3 100644
--- a/src/lib/netlist/devices/nld_9322.cpp
+++ b/src/lib/netlist/devices/nld_9322.cpp
@@ -14,24 +14,34 @@ namespace netlist
{
class NETLIB_NAME(9322);
- NETLIB_OBJECT(9322_selector)
+ NETLIB_OBJECT(9322_GATE)
{
- NETLIB_CONSTRUCTOR(9322_selector)
- , m_parent(owner)
+ NETLIB_CONSTRUCTOR(9322_GATE)
, m_A(*this, "A", NETLIB_DELEGATE(inputs))
, m_B(*this, "B", NETLIB_DELEGATE(inputs))
+ , m_SELECT(*this, "SELECT", NETLIB_DELEGATE(inputs))
+ , m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs))
, m_Y(*this, "Y")
, m_power_pins(*this)
{
}
// FIXME: Timing
- NETLIB_HANDLERI(inputs);
+ NETLIB_HANDLERI(inputs)
+ {
+ if (m_STROBE())
+ m_Y.push(0, NLTIME_FROM_NS(21));
+ else if (m_SELECT())
+ m_Y.push(m_B(), NLTIME_FROM_NS(14));
+ else
+ m_Y.push(m_A(), NLTIME_FROM_NS(14));
+ }
public:
- NETLIB_NAME(9322) &m_parent;
logic_input_t m_A;
logic_input_t m_B;
+ logic_input_t m_SELECT;
+ logic_input_t m_STROBE;
logic_output_t m_Y;
nld_power_pins m_power_pins;
};
@@ -39,8 +49,6 @@ namespace netlist
NETLIB_OBJECT(9322)
{
NETLIB_CONSTRUCTOR(9322)
- , m_SELECT(*this, "SELECT", NETLIB_DELEGATE(inputs))
- , m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs))
, m_1(*this, "A")
, m_2(*this, "B")
, m_3(*this, "C")
@@ -65,73 +73,29 @@ namespace netlist
connect("A.GND", "B.GND");
connect("A.GND", "C.GND");
connect("A.GND", "D.GND");
-
+ connect("A.SELECT", "B.SELECT");
+ connect("A.SELECT", "C.SELECT");
+ connect("A.SELECT", "D.SELECT");
+ connect("A.STROBE", "B.STROBE");
+ connect("A.STROBE", "C.STROBE");
+ connect("A.STROBE", "D.STROBE");
+
+ register_subalias("SELECT", "A.SELECT");
+ register_subalias("STROBE", "A.STROBE");
register_subalias("GND", "A.GND");
register_subalias("VCC", "B.VCC");
-
}
- friend class NETLIB_NAME(9322_dip);
- public:
- logic_input_t m_SELECT;
- logic_input_t m_STROBE;
private:
- NETLIB_HANDLERI(inputs)
- {
- m_1.inputs();
- m_2.inputs();
- m_3.inputs();
- m_4.inputs();
- }
-
- NETLIB_SUB(9322_selector) m_1;
- NETLIB_SUB(9322_selector) m_2;
- NETLIB_SUB(9322_selector) m_3;
- NETLIB_SUB(9322_selector) m_4;
-
- };
-
- NETLIB_HANDLER(9322_selector, inputs)
- {
- if (m_parent.m_STROBE())
- m_Y.push(0, NLTIME_FROM_NS(21));
- else if (m_parent.m_SELECT())
- m_Y.push(m_B(), NLTIME_FROM_NS(14));
- else
- m_Y.push(m_A(), NLTIME_FROM_NS(14));
- }
-
- NETLIB_OBJECT(9322_dip)
- {
- NETLIB_CONSTRUCTOR(9322_dip)
- , A(*this, "A")
- {
- register_subalias("1", A.m_SELECT);
- register_subalias("2", A.m_1.m_A);
- register_subalias("3", A.m_1.m_B);
- register_subalias("4", A.m_1.m_Y);
- register_subalias("5", A.m_2.m_A);
- register_subalias("6", A.m_2.m_B);
- register_subalias("7", A.m_2.m_Y);
- register_subalias("8", "A.GND");
+ NETLIB_SUB(9322_GATE) m_1;
+ NETLIB_SUB(9322_GATE) m_2;
+ NETLIB_SUB(9322_GATE) m_3;
+ NETLIB_SUB(9322_GATE) m_4;
- register_subalias("9", A.m_3.m_Y);
- register_subalias("10", A.m_3.m_B);
- register_subalias("11", A.m_3.m_A);
- register_subalias("12", A.m_4.m_Y);
- register_subalias("13", A.m_4.m_B);
- register_subalias("14", A.m_4.m_A);
- register_subalias("15", A.m_STROBE);
- register_subalias("16", "A.VCC");
- }
-
- //NETLIB_RESETI() {}
- private:
- NETLIB_SUB(9322) A;
};
- NETLIB_DEVICE_IMPL(9322, "TTL_9322", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE,@VCC,@GND")
- NETLIB_DEVICE_IMPL(9322_dip, "TTL_9322_DIP", "")
+ NETLIB_DEVICE_IMPL(9322_GATE, "TTL_9322_GATE", "")
+ NETLIB_DEVICE_IMPL(9322, "TTL_9322", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE,@VCC,@GND")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_9322.h b/src/lib/netlist/devices/nld_9322.h
index e55c73847b3..9a20f4ca2ac 100644
--- a/src/lib/netlist/devices/nld_9322.h
+++ b/src/lib/netlist/devices/nld_9322.h
@@ -23,22 +23,11 @@
#include "netlist/nl_setup.h"
-#define TTL_9322(name, cSELECT, cA1, cB1, cA2, cB2, cA3, cB3, cA4, cB4, cSTROBE) \
- NET_REGISTER_DEV(TTL_9322, name) \
- NET_CONNECT(name, SELECT, cSELECT) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, A1, cA1) \
- NET_CONNECT(name, B1, cB1) \
- NET_CONNECT(name, A2, cA2) \
- NET_CONNECT(name, B2, cB2) \
- NET_CONNECT(name, A3, cA3) \
- NET_CONNECT(name, B3, cB3) \
- NET_CONNECT(name, A4, cA4) \
- NET_CONNECT(name, B4, cB4) \
- NET_CONNECT(name, STROBE, cSTROBE)
+#define TTL_9322_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_9322_GATE, __VA_ARGS__)
-#define TTL_9322_DIP(name) \
- NET_REGISTER_DEV(TTL_9322_DIP, name)
+// usage: TTL_9322(name, cSELECT, cA1, cB1, cA2, cB2, cA3, cB3, cA4, cB4, cSTROBE)
+#define TTL_9322(...) \
+ NET_REGISTER_DEVEXT(TTL_9322, __VA_ARGS__)
#endif /* NLD_9322_H_ */
diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h
index c7813bfdef7..8f34119120e 100644
--- a/src/lib/netlist/devices/nld_devinc.h
+++ b/src/lib/netlist/devices/nld_devinc.h
@@ -799,13 +799,6 @@
NET_REGISTER_DEVEXT(TTL_9314_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_9322.cpp
-// ---------------------------------------------------------------------
-// usage : TTL_9322_DIP(name)
-#define TTL_9322_DIP(...) \
- NET_REGISTER_DEVEXT(TTL_9322_DIP, __VA_ARGS__)
-
-// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_dm9334.cpp
// ---------------------------------------------------------------------
// usage : TTL_9334_DIP(name)
@@ -1227,6 +1220,10 @@
#define TTL_9316_DIP(...) \
NET_REGISTER_DEVEXT(TTL_9316_DIP, __VA_ARGS__)
+// usage : TTL_9322_DIP(name)
+#define TTL_9322_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9322_DIP, __VA_ARGS__)
+
// ---------------------------------------------------------------------
// Source: CD4XXX_lib
// ---------------------------------------------------------------------
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp
index 795b5cb19fa..365a0dd1286 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.cpp
+++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp
@@ -1864,6 +1864,45 @@ static NETLIST_START(TTL_9316_DIP)
)
NETLIST_END()
+/*
+ * 9322: Quad 2-Line to 1-Line Data Selectors/Multiplexers
+ *
+ * +------------+
+ * SELECT |1 ++ 16| VCC
+ * A1 |2 15| STROBE
+ * B1 |3 14| A4
+ * Y1 |4 9322 13| B4
+ * A2 |5 12| Y4
+ * B2 |6 11| A3
+ * Y2 |7 10| B3
+ * GND |8 9| Y3
+ * +------------+
+ */
+
+static NETLIST_START(TTL_9322_DIP)
+ TTL_9322_GATE(A)
+ TTL_9322_GATE(B)
+ TTL_9322_GATE(C)
+ TTL_9322_GATE(D)
+
+ NET_C(A.SELECT, B.SELECT, C.SELECT, D.SELECT)
+ NET_C(A.STROBE, B.STROBE, C.STROBE, D.STROBE)
+ NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
+ NET_C(A.GND, B.GND, C.GND, D.GND)
+
+ DIPPINS( /* +------------+ */
+ A.SELECT, /* SELECT |1 ++ 16| VCC */ A.VCC,
+ A.A, /* A1 |2 15| STROBE */ A.STROBE,
+ A.B, /* B1 |3 14| A4 */ D.A,
+ A.Y, /* Y1 |4 9322 13| B4 */ D.B,
+ B.A, /* A2 |5 12| Y4 */ D.Y,
+ B.B, /* B2 |6 11| A3 */ C.A,
+ B.Y, /* Y2 |7 10| B3 */ C.B,
+ A.GND, /* GND |8 9| Y3 */ C.Y
+ /* +------------+ */
+ )
+NETLIST_END()
+
/* SN7442: 4-Line BCD to 10-Line Decimal Decoder
*
* +--------------+
@@ -2527,4 +2566,5 @@ NETLIST_START(TTL74XX_lib)
LOCAL_LIB_ENTRY(DM9312_DIP)
LOCAL_LIB_ENTRY(TTL_9310_DIP)
LOCAL_LIB_ENTRY(TTL_9316_DIP)
+ LOCAL_LIB_ENTRY(TTL_9322_DIP)
NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h
index 2a7148fc442..d3d41ddeafd 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.h
+++ b/src/lib/netlist/macro/nlm_ttl74xx.h
@@ -397,6 +397,9 @@
#define TTL_9316_DIP(name) \
NET_REGISTER_DEV(TTL_9316_DIP, name)
+#define TTL_9322_DIP(name) \
+ NET_REGISTER_DEV(TTL_9322_DIP, name)
+
#endif // NL_AUTO_DEVICES
/* ----------------------------------------------------------------------------