diff options
author | Aaron Giles <aaron@aarongiles.com> | 2020-08-02 12:39:08 +0200 |
---|---|---|
committer | couriersud <couriersud@gmx.org> | 2020-08-02 12:49:44 +0200 |
commit | d8733b9f25d23273b7eeaabf10786aef74e0082a (patch) | |
tree | 17a84175a12b698a832d9d8a59415d3341a56d28 | |
parent | cdca99f3536c946f5f9233836ca1b4a3bce24ada (diff) |
netlist: Macro-ized 74174 DIPs
-rw-r--r-- | src/lib/netlist/devices/net_lib.cpp | 1 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_74174.cpp | 122 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_74174.h | 21 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_devinc.h | 15 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_ttl74xx.cpp | 37 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_ttl74xx.h | 3 |
6 files changed, 125 insertions, 74 deletions
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index 8457a95da8d..57d2aef0a4d 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -147,7 +147,6 @@ namespace devices LIB_ENTRY(r2r_dac) LIB_ENTRY(tristate) LIB_ENTRY(tristate3) - LIB_ENTRY(74174_dip) LIB_ENTRY(74175_dip) LIB_ENTRY(74192_dip) LIB_ENTRY(74193_dip) diff --git a/src/lib/netlist/devices/nld_74174.cpp b/src/lib/netlist/devices/nld_74174.cpp index 37071e190ed..5f0e3c99ea9 100644 --- a/src/lib/netlist/devices/nld_74174.cpp +++ b/src/lib/netlist/devices/nld_74174.cpp @@ -12,14 +12,14 @@ namespace netlist { namespace devices { - NETLIB_OBJECT(74174) + NETLIB_OBJECT(74174_GATE) { - NETLIB_CONSTRUCTOR(74174) + NETLIB_CONSTRUCTOR(74174_GATE) , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk)) - , m_Q(*this, {"Q1", "Q2", "Q3", "Q4", "Q5", "Q6"}) + , m_Q(*this, "Q") , m_clrq(*this, "m_clr", 0) , m_data(*this, "m_data", 0) - , m_D(*this, {"D1", "D2", "D3", "D4", "D5", "D6"}, NETLIB_DELEGATE(other)) + , m_D(*this, "D", NETLIB_DELEGATE(other)) , m_CLRQ(*this, "CLRQ", NETLIB_DELEGATE(other)) , m_power_pins(*this) { @@ -34,18 +34,11 @@ namespace devices NETLIB_HANDLERI(other) { - uint_fast8_t d = 0; - for (std::size_t i=0; i<6; i++) - { - d |= (m_D[i]() << i); - } + netlist_sig_t d = m_D(); m_clrq = m_CLRQ(); if (!m_clrq) { - for (std::size_t i=0; i<6; i++) - { - m_Q[i].push(0, NLTIME_FROM_NS(40)); - } + m_Q.push(0, NLTIME_FROM_NS(40)); m_data = 0; } else if (d != m_data) { @@ -54,68 +47,95 @@ namespace devices } } + private: NETLIB_HANDLERI(clk) { if (m_clrq) { - for (std::size_t i=0; i<6; i++) - { - netlist_sig_t d = (m_data >> i) & 1; - m_Q[i].push(d, NLTIME_FROM_NS(25)); - } + m_Q.push(m_data, NLTIME_FROM_NS(25)); m_CLK.inactivate(); } } - friend class NETLIB_NAME(74174_dip); - private: logic_input_t m_CLK; - object_array_t<logic_output_t, 6> m_Q; + logic_output_t m_Q; state_var<netlist_sig_t> m_clrq; - state_var<unsigned> m_data; + state_var<netlist_sig_t> m_data; - object_array_t<logic_input_t, 6> m_D; + logic_input_t m_D; logic_input_t m_CLRQ; nld_power_pins m_power_pins; }; - NETLIB_OBJECT(74174_dip) + NETLIB_OBJECT(74174) { - NETLIB_CONSTRUCTOR(74174_dip) + NETLIB_CONSTRUCTOR(74174) , A(*this, "A") + , B(*this, "B") + , C(*this, "C") + , D(*this, "D") + , E(*this, "E") + , F(*this, "F") { - register_subalias("1", A.m_CLRQ); - register_subalias("9", A.m_CLK); - - register_subalias("3", A.m_D[0]); - register_subalias("2", A.m_Q[0]); - - register_subalias("4", A.m_D[1]); - register_subalias("5", A.m_Q[1]); - - register_subalias("6", A.m_D[2]); - register_subalias("7", A.m_Q[2]); - - register_subalias("11", A.m_D[3]); - register_subalias("10", A.m_Q[3]); - - register_subalias("13", A.m_D[4]); - register_subalias("12", A.m_Q[4]); - - register_subalias("14", A.m_D[5]); - register_subalias("15", A.m_Q[5]); - - register_subalias("8", "A.GND"); - register_subalias("16", "A.VCC"); + register_subalias("CLRQ", "A.CLRQ"); + connect("A.CLRQ", "B.CLRQ"); + connect("A.CLRQ", "C.CLRQ"); + connect("A.CLRQ", "D.CLRQ"); + connect("A.CLRQ", "E.CLRQ"); + connect("A.CLRQ", "F.CLRQ"); + + register_subalias("CLK", "A.CLK"); + connect("A.CLK", "B.CLK"); + connect("A.CLK", "C.CLK"); + connect("A.CLK", "D.CLK"); + connect("A.CLK", "E.CLK"); + connect("A.CLK", "F.CLK"); + + register_subalias("D1", "A.D"); + register_subalias("Q1", "A.Q"); + + register_subalias("D2", "B.D"); + register_subalias("Q2", "B.Q"); + + register_subalias("D3", "C.D"); + register_subalias("Q3", "C.Q"); + + register_subalias("D4", "D.D"); + register_subalias("Q4", "D.Q"); + + register_subalias("D5", "E.D"); + register_subalias("Q5", "E.Q"); + + register_subalias("D6", "F.D"); + register_subalias("Q6", "F.Q"); + + register_subalias("GND", "A.GND"); + connect("A.GND", "B.GND"); + connect("A.GND", "C.GND"); + connect("A.GND", "D.GND"); + connect("A.GND", "E.GND"); + connect("A.GND", "F.GND"); + + register_subalias("VCC", "A.VCC"); + connect("A.VCC", "B.VCC"); + connect("A.VCC", "C.VCC"); + connect("A.VCC", "D.VCC"); + connect("A.VCC", "E.VCC"); + connect("A.VCC", "F.VCC"); } //NETLIB_RESETI() {} private: - NETLIB_SUB(74174) A; + NETLIB_SUB(74174_GATE) A; + NETLIB_SUB(74174_GATE) B; + NETLIB_SUB(74174_GATE) C; + NETLIB_SUB(74174_GATE) D; + NETLIB_SUB(74174_GATE) E; + NETLIB_SUB(74174_GATE) F; }; - NETLIB_DEVICE_IMPL(74174, "TTL_74174", "+CLK,+D1,+D2,+D3,+D4,+D5,+D6,+CLRQ,@VCC,@GND") - NETLIB_DEVICE_IMPL(74174_dip,"TTL_74174_DIP", "") + NETLIB_DEVICE_IMPL(74174_GATE, "TTL_74174_GATE", "") + NETLIB_DEVICE_IMPL(74174, "TTL_74174", "+CLK,+D1,+D2,+D3,+D4,+D5,+D6,+CLRQ,@VCC,@GND") } //namespace devices } // namespace netlist diff --git a/src/lib/netlist/devices/nld_74174.h b/src/lib/netlist/devices/nld_74174.h index 4fe23739aad..f5708fd2e90 100644 --- a/src/lib/netlist/devices/nld_74174.h +++ b/src/lib/netlist/devices/nld_74174.h @@ -38,21 +38,12 @@ #include "netlist/nl_setup.h" -#define TTL_74174(name, cCLK, cD1, cD2, cD3, cD4, cD5, cD6, cCLRQ) \ - NET_REGISTER_DEV(TTL_74174, name) \ - NET_CONNECT(name, GND, GND) \ - NET_CONNECT(name, VCC, VCC) \ - NET_CONNECT(name, CLK, cCLK) \ - NET_CONNECT(name, D1, cD1) \ - NET_CONNECT(name, D2, cD2) \ - NET_CONNECT(name, D3, cD3) \ - NET_CONNECT(name, D4, cD4) \ - NET_CONNECT(name, D5, cD5) \ - NET_CONNECT(name, D6, cD6) \ - NET_CONNECT(name, CLRQ, cCLRQ) - -#define TTL_74174_DIP(name) \ - NET_REGISTER_DEV(TTL_74174_DIP, name) +// usage: TTL_74174_GATE(name) +#define TTL_74174_GATE(...) \ + NET_REGISTER_DEVEXT(TTL_74174_GATE, __VA_ARGS__) +// usage: TTL_74174(name, cCLK, cD1, cD2, cD3, cD4, cD5, cD6, cCLRQ) +#define TTL_74174(...) \ + NET_REGISTER_DEVEXT(TTL_74174, __VA_ARGS__) #endif /* NLD_74174_H_ */ diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h index 4c89ed9d58e..298db9083cb 100644 --- a/src/lib/netlist/devices/nld_devinc.h +++ b/src/lib/netlist/devices/nld_devinc.h @@ -440,6 +440,10 @@ // --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_74174.cpp // --------------------------------------------------------------------- +// usage : TTL_74174_GATE(name) +#define TTL_74174_GATE(...) \ + NET_REGISTER_DEVEXT(TTL_74174, __VA_ARGS__) + // usage : TTL_74174(name, pCLK, pD1, pD2, pD3, pD4, pD5, pD6, pCLRQ) // auto connect: VCC, GND #define TTL_74174(...) \ @@ -707,13 +711,6 @@ NET_REGISTER_DEVEXT(TTL_TRISTATE3, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/devices/nld_74174.cpp -// --------------------------------------------------------------------- -// usage : TTL_74174_DIP(name) -#define TTL_74174_DIP(...) \ - NET_REGISTER_DEVEXT(TTL_74174_DIP, __VA_ARGS__) - -// --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_74175.cpp // --------------------------------------------------------------------- // usage : TTL_74175_DIP(name) @@ -1027,6 +1024,10 @@ #define TTL_74166_DIP(...) \ NET_REGISTER_DEVEXT(TTL_74166_DIP, __VA_ARGS__) +// usage : TTL_74174_DIP(name) +#define TTL_74174_DIP(...) \ + NET_REGISTER_DEVEXT(TTL_74174_DIP, __VA_ARGS__) + // usage : TTL_74260_GATE(name) #define TTL_74260_GATE(...) \ NET_REGISTER_DEVEXT(TTL_74260_GATE, __VA_ARGS__) diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp index 69edc551964..422ac024a84 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx.cpp +++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp @@ -1764,6 +1764,42 @@ static NETLIST_START(TTL_74166_DIP) NETLIST_END() /* + * DM74174: Hex D Flip-Flops with Clear + * + * +--------------+ + * CLR |1 ++ 16| VCC + * Q1 |2 15| Q6 + * D1 |3 14| D6 + * D2 |4 74174 13| D5 + * Q2 |5 12| Q5 + * D3 |6 11| D4 + * Q3 |7 10| Q4 + * GND |8 9| CLK + * +--------------+ + */ + +static NETLIST_START(TTL_74174_DIP) + TTL_74174_GATE(A) + TTL_74174_GATE(B) + TTL_74174_GATE(C) + TTL_74174_GATE(D) + TTL_74174_GATE(E) + TTL_74174_GATE(F) + + DIPPINS( /* +--------------+ */ + A.CLRQ, /* CLR |1 ++ 16| VCC */ A.VCC, + A.Q, /* Q1 |2 15| Q6 */ F.Q, + A.D, /* D1 |3 14| D6 */ F.D, + B.D, /* D2 |4 74174 13| D5 */ E.D, + B.Q, /* Q2 |5 12| Q5 */ E.Q, + C.D, /* D3 |6 11| D4 */ D.D, + C.Q, /* Q3 |7 10| Q4 */ D.Q, + A.GND, /* GND |8 9| CLK */ A.CLK + /* +--------------+ */ + ) +NETLIST_END() + +/* * DM74260: Dual 5-Input NOR Gates * _________ * Y = A+B+C+D+E @@ -2813,6 +2849,7 @@ NETLIST_START(TTL74XX_lib) LOCAL_LIB_ENTRY(TTL_74164_DIP) LOCAL_LIB_ENTRY(TTL_74165_DIP) LOCAL_LIB_ENTRY(TTL_74166_DIP) + LOCAL_LIB_ENTRY(TTL_74174_DIP) LOCAL_LIB_ENTRY(TTL_74260_DIP) LOCAL_LIB_ENTRY(TTL_74279_DIP) LOCAL_LIB_ENTRY(TTL_74377_DIP) diff --git a/src/lib/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h index 7329e81b2af..bcfc1f48432 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx.h +++ b/src/lib/netlist/macro/nlm_ttl74xx.h @@ -372,6 +372,9 @@ #define TTL_74166_DIP(name) \ NET_REGISTER_DEV(TTL_74166_DIP, name) +#define TTL_74174_DIP(name) \ + NET_REGISTER_DEV(TTL_74174_DIP, name) + #define TTL_74260_GATE(name) \ NET_REGISTER_DEV(TTL_74260_GATE, name) |