summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2017-05-27 03:57:50 +1000
committer Vas Crabb <vas@vastheman.com>2017-05-27 03:57:50 +1000
commit2b7d87317bca96353a23e7b178c92fed432b30af (patch)
tree55da257f3482afa44349da33d5eed63ec200fabe /src/lib/netlist
parent08d9b99986acdb2915dd4fe8617b8fb36e9978b8 (diff)
Preliminary netlist sound for the Zaccaria 1B11142 board
* Tromba (trumpet) sound is not working - requires Schmitt trigger device * Connecting cassa (bass drum) swamps other instruments so it's disconnected for now * Mixing melody sound with speech/SFX is not done in netlist (should be) * Relative levels of melody/speech/SFX are probably still wrong (nw) A good test case for this is the Money Money driver (monymony). There's a bit of buzzing on this one as well. The problem with the cassa could be caused by running into non-ideal characteristics of opams again (the LM3900 seems to ignore the V+ value supplied to it). When the netlist library gets Schmitt trigger support, the tromba can be completed. Unfortunately, the tromba is a key part of the characteristic sound of these boards, so you really notice when it's lacking.
Diffstat (limited to 'src/lib/netlist')
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.cpp125
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.h6
2 files changed, 129 insertions, 2 deletions
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp
index 5a8120518b1..369b5816bf0 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.cpp
+++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp
@@ -531,11 +531,86 @@ static NETLIST_START(TTL_7486_DIP)
s1.A, /* A1 |1 ++ 14| VCC */ VCC.I,
s1.B, /* B1 |2 13| B4 */ s4.B,
s1.Q, /* Y1 |3 12| A4 */ s4.A,
- s2.A, /* A2 |4 7400 11| Y4 */ s4.Q,
+ s2.A, /* A2 |4 7486 11| Y4 */ s4.Q,
s2.B, /* B2 |5 10| B3 */ s3.B,
s2.Q, /* Y2 |6 9| A3 */ s3.A,
GND.I, /* GND |7 8| Y3 */ s3.Q
- /* +--------------+ */
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+/*
+ * DM74155/DM74156: Dual 2-Line to 4-Line Decoders/Demultiplexers
+ *
+ * +-----+-------++-----------------+
+ * | B A | G1 C1 || 1Y0 1Y1 1Y2 1Y3 |
+ * +=====+=======++=================+
+ * | X X | 1 X || 1 1 1 1 |
+ * | 0 0 | 0 1 || 0 1 1 1 |
+ * | 0 1 | 0 1 || 1 0 1 1 |
+ * | 1 0 | 0 1 || 1 1 0 1 |
+ * | 1 1 | 0 1 || 1 1 1 0 |
+ * | X X | X 0 || 1 1 1 1 |
+ * +-----+-------++-----------------+
+ *
+ * +-----+-------++-----------------+
+ * | B A | G2 C2 || 2Y0 2Y1 2Y2 2Y3 |
+ * +=====+=======++=================+
+ * | X X | 1 X || 1 1 1 1 |
+ * | 0 0 | 0 0 || 0 1 1 1 |
+ * | 0 1 | 0 0 || 1 0 1 1 |
+ * | 1 0 | 0 0 || 1 1 0 1 |
+ * | 1 1 | 0 0 || 1 1 1 0 |
+ * | X X | X 1 || 1 1 1 1 |
+ * +-----+-------++-----------------+
+ *
+ * Naming conventions follow National Semiconductor datasheet
+ *
+ */
+
+static NETLIST_START(TTL_74155_DIP)
+ NET_REGISTER_DEV(TTL_74155A_GATE, s1)
+ NET_REGISTER_DEV(TTL_74155B_GATE, s2)
+
+ NET_C(s1.A, s2.A)
+ NET_C(s1.B, s2.B)
+
+ DUMMY_INPUT(GND)
+ DUMMY_INPUT(VCC)
+
+ DIPPINS( /* +--------------+ */
+ s1.C, /* C1 |1 ++ 16| VCC */ VCC.I,
+ s1.G, /* G1 |2 15| B4 */ s2.C,
+ s1.B, /* B |3 14| B4 */ s2.G,
+ s1.3, /* 1Y3 |4 74155 13| A4 */ s2.A,
+ s2.2, /* 1Y2 |5 12| Y4 */ s2.3,
+ s2.1, /* 1Y1 |6 11| B3 */ s2.2,
+ s2.0, /* 1Y0 |7 10| A3 */ s2.1,
+ GND.I, /* GND |8 9| Y3 */ s2.0
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+static NETLIST_START(TTL_74156_DIP)
+ NET_REGISTER_DEV(TTL_74156A_GATE, s1)
+ NET_REGISTER_DEV(TTL_74156B_GATE, s2)
+
+ NET_C(s1.A, s2.A)
+ NET_C(s1.B, s2.B)
+
+ DUMMY_INPUT(GND)
+ DUMMY_INPUT(VCC)
+
+ DIPPINS( /* +--------------+ */
+ s1.C, /* C1 |1 ++ 16| VCC */ VCC.I,
+ s1.G, /* G1 |2 15| B4 */ s2.C,
+ s1.B, /* B |3 14| B4 */ s2.G,
+ s1.3, /* 1Y3 |4 74156 13| A4 */ s2.A,
+ s2.2, /* 1Y2 |5 12| Y4 */ s2.3,
+ s2.1, /* 1Y1 |6 11| B3 */ s2.2,
+ s2.0, /* 1Y0 |7 10| A3 */ s2.1,
+ GND.I, /* GND |8 9| Y3 */ s2.0
+ /* +--------------+ */
)
NETLIST_END()
@@ -930,6 +1005,50 @@ NETLIST_START(TTL74XX_lib)
TT_FAMILY("74XX")
TRUTHTABLE_END()
+ TRUTHTABLE_START(TTL_74155A_GATE, 4, 4, "")
+ TT_HEAD("B,A,G,C|0,1,2,3")
+ TT_LINE("X,X,1,X|1,1,1,1|13,13,13,13")
+ TT_LINE("X,X,0,0|1,1,1,1|13,13,13,13")
+ TT_LINE("0,0,0,1|0,1,1,1|13,13,13,13")
+ TT_LINE("0,1,0,1|1,0,1,1|13,13,13,13")
+ TT_LINE("1,0,0,1|1,1,0,1|13,13,13,13")
+ TT_LINE("1,1,0,1|1,1,1,0|13,13,13,13")
+ TT_FAMILY("74XX")
+ TRUTHTABLE_END()
+
+ TRUTHTABLE_START(TTL_74155B_GATE, 4, 4, "")
+ TT_HEAD("B,A,G,C|0,1,2,3")
+ TT_LINE("X,X,1,X|1,1,1,1|13,13,13,13")
+ TT_LINE("X,X,0,1|1,1,1,1|13,13,13,13")
+ TT_LINE("0,0,0,0|0,1,1,1|13,13,13,13")
+ TT_LINE("0,1,0,0|1,0,1,1|13,13,13,13")
+ TT_LINE("1,0,0,0|1,1,0,1|13,13,13,13")
+ TT_LINE("1,1,0,0|1,1,1,0|13,13,13,13")
+ TT_FAMILY("74XX")
+ TRUTHTABLE_END()
+
+ TRUTHTABLE_START(TTL_74156A_GATE, 4, 4, "")
+ TT_HEAD("B,A,G,C|0,1,2,3")
+ TT_LINE("X,X,1,X|1,1,1,1|13,13,13,13")
+ TT_LINE("X,X,0,0|1,1,1,1|13,13,13,13")
+ TT_LINE("0,0,0,1|0,1,1,1|13,13,13,13")
+ TT_LINE("0,1,0,1|1,0,1,1|13,13,13,13")
+ TT_LINE("1,0,0,1|1,1,0,1|13,13,13,13")
+ TT_LINE("1,1,0,1|1,1,1,0|13,13,13,13")
+ TT_FAMILY("74XXOC")
+ TRUTHTABLE_END()
+
+ TRUTHTABLE_START(TTL_74156B_GATE, 4, 4, "")
+ TT_HEAD("B,A,G,C|0,1,2,3")
+ TT_LINE("X,X,1,X|1,1,1,1|13,13,13,13")
+ TT_LINE("X,X,0,1|1,1,1,1|13,13,13,13")
+ TT_LINE("0,0,0,0|0,1,1,1|13,13,13,13")
+ TT_LINE("0,1,0,0|1,0,1,1|13,13,13,13")
+ TT_LINE("1,0,0,0|1,1,0,1|13,13,13,13")
+ TT_LINE("1,1,0,0|1,1,1,0|13,13,13,13")
+ TT_FAMILY("74XXOC")
+ TRUTHTABLE_END()
+
TRUTHTABLE_START(TTL_74260_GATE, 5, 1, "")
TT_HEAD("A,B,C,D,E|Q ")
TT_LINE("0,0,0,0,0|1|10")
@@ -1008,6 +1127,8 @@ NETLIST_START(TTL74XX_lib)
LOCAL_LIB_ENTRY(TTL_7432_DIP)
LOCAL_LIB_ENTRY(TTL_7437_DIP)
LOCAL_LIB_ENTRY(TTL_7486_DIP)
+ LOCAL_LIB_ENTRY(TTL_74155_DIP)
+ LOCAL_LIB_ENTRY(TTL_74156_DIP)
LOCAL_LIB_ENTRY(TTL_74260_DIP)
LOCAL_LIB_ENTRY(TTL_74279_DIP)
LOCAL_LIB_ENTRY(DM9312_DIP)
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h
index 693c885ce66..18c0cfe6138 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.h
+++ b/src/lib/netlist/macro/nlm_ttl74xx.h
@@ -186,6 +186,12 @@
#define TTL_7486_DIP(name) \
NET_REGISTER_DEV(TTL_7486_DIP, name)
+#define TTL_74155_DIP(name) \
+ NET_REGISTER_DEV(TTL_74155_DIP, name)
+
+#define TTL_74156_DIP(name) \
+ NET_REGISTER_DEV(TTL_74156_DIP, name)
+
#define TTL_74260_GATE(name) \
NET_REGISTER_DEV(TTL_74260_GATE, name)