mirror of
https://github.com/holub/mame
synced 2025-10-07 09:25:34 +03:00
netlist: provide example for state in truthtable.
The truthtable implementation of 74107 (JK-Flipflop) is included for educational purposes to demonstrate how to implement state holding devices as truthtables. It will completely nuke performance for pong and therefore is disabled.
This commit is contained in:
parent
8cb57cc439
commit
98d76709e1
@ -93,8 +93,10 @@ namespace devices
|
||||
LIB_ENTRY(7493_dip)
|
||||
LIB_ENTRY(7497)
|
||||
LIB_ENTRY(7497_dip)
|
||||
#if (!USE_TRUTHTABLE_74107)
|
||||
LIB_ENTRY(74107)
|
||||
LIB_ENTRY(74107_dip)
|
||||
#endif
|
||||
LIB_ENTRY(74107A) // FIXME: implement missing DIP
|
||||
LIB_ENTRY(74123)
|
||||
LIB_ENTRY(74123_dip)
|
||||
|
@ -145,9 +145,11 @@ namespace netlist
|
||||
m_clk.activate_hl();
|
||||
}
|
||||
|
||||
#if (!USE_TRUTHTABLE_74107)
|
||||
NETLIB_DEVICE_IMPL(74107, "TTL_74107", "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(74107A, "TTL_74107A", "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(74107_dip, "TTL_74107_DIP", "")
|
||||
#endif
|
||||
NETLIB_DEVICE_IMPL(74107A, "TTL_74107A", "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -75,10 +75,13 @@
|
||||
NET_CONNECT(name, K, cK) \
|
||||
NET_CONNECT(name, CLRQ, cCLRQ)
|
||||
|
||||
#if (!USE_TRUTHTABLE_74107)
|
||||
#define TTL_74107(name, cCLK, cJ, cK, cCLRQ) \
|
||||
TTL_74107A(name, cCLK, cJ, cK, cCLRQ)
|
||||
|
||||
#define TTL_74107_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74107_DIP, name)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* NLD_74107_H_ */
|
||||
|
@ -604,6 +604,34 @@ static NETLIST_START(TTL_7486_DIP)
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
#if (USE_TRUTHTABLE_74107)
|
||||
#ifndef __PLIB_PREPROCESSOR__
|
||||
#define TTL_74107_TT(name) \
|
||||
NET_REGISTER_DEV(TTL_74107, name)
|
||||
#endif
|
||||
|
||||
static NETLIST_START(TTL_74107_DIP)
|
||||
TTL_74107_TT(A)
|
||||
TTL_74107_TT(B)
|
||||
|
||||
NET_C(A.VCC, B.VCC)
|
||||
NET_C(A.GND, B.GND)
|
||||
|
||||
DIPPINS( /* +--------------+ */
|
||||
A.J, /* 1J |1 ++ 14| VCC */ A.VCC,
|
||||
A.QQ, /* 1QQ |2 13| 1CLRQ */ A.CLRQ,
|
||||
A.Q, /* 1Q |3 12| 1CLK */ A.CLK,
|
||||
A.K, /* 1K |4 74107 11| 2K */ B.K,
|
||||
B.Q, /* 2Q |5 10| 2CLRQ */ B.CLRQ,
|
||||
B.QQ, /* 2QQ |6 9| 2CLK */ B.CLK,
|
||||
B.GND, /* GND |7 8| 2J */ B.J
|
||||
/* +--------------+ */
|
||||
)
|
||||
|
||||
NETLIST_END()
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* DM74155/DM74156: Dual 2-Line to 4-Line Decoders/Demultiplexers
|
||||
*
|
||||
@ -1179,6 +1207,53 @@ NETLIST_START(TTL74XX_lib)
|
||||
TT_FAMILY("74XX")
|
||||
TRUTHTABLE_END()
|
||||
|
||||
#if (USE_TRUTHTABLE_74107)
|
||||
/*
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* | CLRQ| CLK | J | K || Q | QQ |
|
||||
* +=====+=====+=====+===++===+=====+
|
||||
* | 0 | X | X | X || 0 | 1 |
|
||||
* | 1 | * | 0 | 0 || Q0| Q0Q |
|
||||
* | 1 | * | 1 | 0 || 1 | 0 |
|
||||
* | 1 | * | 0 | 1 || 0 | 1 |
|
||||
* | 1 | * | 1 | 1 || TOGGLE |
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
*/
|
||||
TRUTHTABLE_START(TTL_74107, 6, 4, "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
TT_HEAD("CLRQ, CLK, _CO, J, K,_QX | Q, QQ, CO, QX")
|
||||
TT_LINE(" 0, 0, X, X, X, X | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 0, 1, X, X, X, X | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
|
||||
TT_LINE(" 1, 0, X, 0, 0, 0 | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 0, 0, 0 | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, X, 0, 0, 1 | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 0, 0, 1 | 1, 0, 1, 1 | 25, 16, 1, 1")
|
||||
|
||||
TT_LINE(" 1, 0, 1, 1, 0, X | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 0, 0, 1, 0, 0 | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, 0, 1, 0, 1 | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 1, 0, 0 | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 1, 0, 1 | 1, 0, 1, 1 | 25, 16, 1, 1")
|
||||
|
||||
TT_LINE(" 1, 0, 1, 0, 1, X | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, 0, 0, 1, 0 | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, 0, 0, 1, 1 | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 0, 1, 0 | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 1, X, 0, 1, 1 | 1, 0, 1, 1 | 25, 16, 1, 1")
|
||||
|
||||
// Toggle
|
||||
TT_LINE(" 1, 0, 0, 1, 1, 0 | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, 0, 1, 1, 1 | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 1, 0, 1, 1, 0 | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 1, 0, 1, 1, 1 | 1, 0, 1, 1 | 25, 16, 1, 1")
|
||||
TT_LINE(" 1, 1, 1, 1, 1, 0 | 0, 1, 1, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 1, 1, 1, 1, 1 | 1, 0, 1, 1 | 25, 16, 1, 1")
|
||||
|
||||
TT_LINE(" 1, 0, 1, 1, 1, 1 | 0, 1, 0, 0 | 16, 25, 1, 1")
|
||||
TT_LINE(" 1, 0, 1, 1, 1, 0 | 1, 0, 0, 1 | 25, 16, 1, 1")
|
||||
TRUTHTABLE_END()
|
||||
#endif
|
||||
|
||||
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")
|
||||
@ -1308,6 +1383,9 @@ NETLIST_START(TTL74XX_lib)
|
||||
LOCAL_LIB_ENTRY(TTL_7448_DIP)
|
||||
#endif
|
||||
LOCAL_LIB_ENTRY(TTL_7486_DIP)
|
||||
#if (USE_TRUTHTABLE_74107)
|
||||
LOCAL_LIB_ENTRY(TTL_74107_DIP)
|
||||
#endif
|
||||
LOCAL_LIB_ENTRY(TTL_74155_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74156_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74260_DIP)
|
||||
|
@ -240,6 +240,21 @@
|
||||
#define TTL_7486_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_7486_DIP, name)
|
||||
|
||||
#if (USE_TRUTHTABLE_74107)
|
||||
#define TTL_74107(name, cCLK, cJ, cK, cCLRQ) \
|
||||
NET_REGISTER_DEV(TTL_74107, name) \
|
||||
NET_CONNECT(name, GND, GND) \
|
||||
NET_CONNECT(name, VCC, VCC) \
|
||||
NET_CONNECT(name, CLK, cCLK) \
|
||||
NET_CONNECT(name, J, cJ) \
|
||||
NET_CONNECT(name, K, cK) \
|
||||
NET_CONNECT(name, CLRQ, cCLRQ)
|
||||
|
||||
#define TTL_74107_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74107_DIP, name)
|
||||
|
||||
#endif
|
||||
|
||||
#define TTL_74155_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74155_DIP, name)
|
||||
|
||||
|
@ -65,6 +65,15 @@
|
||||
|
||||
#define USE_TRUTHTABLE_7448 (0)
|
||||
|
||||
/*
|
||||
* FIXME: The truthtable implementation of 74107 (JK-Flipflop)
|
||||
* is included for educational purposes to demonstrate how
|
||||
* to implement state holding devices as truthtables.
|
||||
* It will completely nuke performance for pong.
|
||||
*/
|
||||
|
||||
#define USE_TRUTHTABLE_74107 (0)
|
||||
|
||||
//============================================================
|
||||
// DEBUGGING
|
||||
//============================================================
|
||||
|
Loading…
Reference in New Issue
Block a user