summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2020-07-28 20:43:41 +0200
committer couriersud <couriersud@gmx.org>2020-07-28 20:43:44 +0200
commit179d03ac96d5caa5f91229fbdc87bad151c50ec6 (patch)
treed1bc8c2bb6d2939d665b0ec1256162b3c2970d0b
parentf761f6f7bebb25e66f5e79913d1dce4347e3de27 (diff)
netlist: Convert CD4013 DIP to macro.
-rw-r--r--src/lib/netlist/devices/nld_4013.cpp34
-rw-r--r--src/lib/netlist/devices/nld_4013.h3
-rw-r--r--src/lib/netlist/devices/nld_devinc.h4
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.cpp40
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.h4
5 files changed, 46 insertions, 39 deletions
diff --git a/src/lib/netlist/devices/nld_4013.cpp b/src/lib/netlist/devices/nld_4013.cpp
index 42c2eb71350..455a4926d1f 100644
--- a/src/lib/netlist/devices/nld_4013.cpp
+++ b/src/lib/netlist/devices/nld_4013.cpp
@@ -86,41 +86,7 @@ namespace netlist
}
};
- NETLIB_OBJECT(CD4013_dip)
- {
- NETLIB_CONSTRUCTOR(CD4013_dip)
- , m_A(*this, "A")
- , m_B(*this, "B")
- {
- register_subalias("1", "A.Q");
- register_subalias("2", "A.QQ");
- register_subalias("3", "A.CLOCK");
- register_subalias("4", "A.RESET");
- register_subalias("5", "A.DATA");
- register_subalias("6", "A.SET");
- register_subalias("7", "A.VSS");
-
- register_subalias("8", "B.SET");
- register_subalias("9", "B.DATA");
- register_subalias("10", "B.RESET");
- register_subalias("11", "B.CLOCK");
- register_subalias("12", "B.QQ");
- register_subalias("13", "B.Q");
- register_subalias("14", "A.VDD");
-
- connect("A.VSS", "B.VSS");
- connect("A.VDD", "B.VDD");
- }
- //NETLIB_UPDATEI();
- //NETLIB_RESETI();
-
- private:
- NETLIB_SUB(CD4013) m_A;
- NETLIB_SUB(CD4013) m_B;
- };
-
NETLIB_DEVICE_IMPL(CD4013, "CD4013", "+CLOCK,+DATA,+RESET,+SET,@VDD,@VSS")
- NETLIB_DEVICE_IMPL(CD4013_dip, "CD4013_DIP", "")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_4013.h b/src/lib/netlist/devices/nld_4013.h
index 3d77a45b70b..bb47796a553 100644
--- a/src/lib/netlist/devices/nld_4013.h
+++ b/src/lib/netlist/devices/nld_4013.h
@@ -48,7 +48,4 @@
#define CD4013(...) \
NET_REGISTER_DEVEXT(CD4013, __VA_ARGS__)
-#define CD4013_DIP(name) \
- NET_REGISTER_DEV(CD4013_DIP, name)
-
#endif /* NLD_4013_H_ */
diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h
index 5c5ced89c64..7b27d60608d 100644
--- a/src/lib/netlist/devices/nld_devinc.h
+++ b/src/lib/netlist/devices/nld_devinc.h
@@ -1275,6 +1275,10 @@
#define CD4070_DIP(...) \
NET_REGISTER_DEVEXT(CD4070_DIP, __VA_ARGS__)
+// usage : CD4013_DIP(name)
+#define CD4013_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4013_DIP, __VA_ARGS__)
+
// usage : CD4020_DIP(name)
#define CD4020_DIP(...) \
NET_REGISTER_DEVEXT(CD4020_DIP, __VA_ARGS__)
diff --git a/src/lib/netlist/macro/nlm_cd4xxx.cpp b/src/lib/netlist/macro/nlm_cd4xxx.cpp
index eab6968d487..3da618b866c 100644
--- a/src/lib/netlist/macro/nlm_cd4xxx.cpp
+++ b/src/lib/netlist/macro/nlm_cd4xxx.cpp
@@ -78,6 +78,41 @@ static NETLIST_START(CD4011_DIP)
)
NETLIST_END()
+/* CD4013: Dual Positive-Edge-Triggered D Flip-Flops
+ * with Set, Reset and Complementary Outputs
+ *
+ * +--------------+
+ * Q1 |1 ++ 14| VDD
+ * Q1Q |2 13| Q2
+ * CLOCK1 |3 12| Q2Q
+ * RESET1 |4 4013 11| CLOCK2
+ * DATA1 |5 10| RESET2
+ * SET1 |6 9| DATA2
+ * VSS |7 8| SET2
+ * +--------------+
+ *
+ * Naming conventions follow National Semiconductor datasheet
+ */
+
+static NETLIST_START(CD4013_DIP)
+ CD4013(A)
+ CD4013(B)
+
+ NET_C(A.VDD, B.VDD)
+ NET_C(A.VSS, B.VSS)
+
+ DIPPINS( /* +--------------+ */
+ A.Q, /* Q1 |1 ++ 14| VDD */ A.VDD,
+ A.QQ, /* Q1Q |2 13| Q2 */ B.Q,
+ A.CLOCK, /* CLOCK1 |3 12| Q2Q */ B.QQ,
+ A.RESET, /* RESET1 |4 4013 11| CLOCK2 */ B.CLOCK,
+ A.DATA, /* DATA1 |5 10| RESET2 */ B.RESET,
+ A.SET, /* SET1 |6 9| DATA2 */ B.DATA,
+ A.VSS, /* VSS |7 8| SET2 */ B.SET
+ /* +--------------+ */
+ )
+NETLIST_END()
+
/* CD4020: 14-Stage Ripple Carry Binary Counters
*
* +--------------+
@@ -109,7 +144,7 @@ static NETLIST_START(CD4020_DIP)
s1.Q7, /* Q7 |6 11| RESET */ s1.RESET,
s1.Q4, /* Q4 |7 10| IP */ s1.IP,
s1.VSS, /* VSS |8 9| Q1 */ s1.Q1
- /* +--------------+ */
+ /* +--------------+ */
)
/*
* IP = (Input pulses)
@@ -472,11 +507,12 @@ NETLIST_START(CD4XXX_lib)
LOCAL_LIB_ENTRY(CD4070_DIP)
/* DIP ONLY */
+ LOCAL_LIB_ENTRY(CD4013_DIP)
LOCAL_LIB_ENTRY(CD4020_DIP)
LOCAL_LIB_ENTRY(CD4024_DIP)
- LOCAL_LIB_ENTRY(CD4016_DIP)
LOCAL_LIB_ENTRY(CD4053_DIP)
LOCAL_LIB_ENTRY(CD4066_DIP)
+ LOCAL_LIB_ENTRY(CD4016_DIP)
LOCAL_LIB_ENTRY(CD4316_DIP)
LOCAL_LIB_ENTRY(CD4538_DIP)
diff --git a/src/lib/netlist/macro/nlm_cd4xxx.h b/src/lib/netlist/macro/nlm_cd4xxx.h
index 6a8d2f946f0..7e56a515923 100644
--- a/src/lib/netlist/macro/nlm_cd4xxx.h
+++ b/src/lib/netlist/macro/nlm_cd4xxx.h
@@ -13,6 +13,7 @@
*
* CD4001_NOR : single gate
* CD4001_DIP : dip package
+ * CD4013_DIP : dip package (device model in core)
* CD4020_DIP : dip package (device model in core)
* CD4024_DIP : dip package (device model in core)
* CD4016_DIP : dip package (device model in core)
@@ -57,6 +58,9 @@
* DIP only macros
* ---------------------------------------------------------------------------*/
+#define CD4013_DIP(name) \
+ NET_REGISTER_DEV(CD4013_DIP, name)
+
#define CD4020_DIP(name) \
NET_REGISTER_DEV(CD4020_DIP, name)