mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
netlist: Add 74113 device.
This commit is contained in:
parent
5eef12fe18
commit
a6239d582b
@ -165,6 +165,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7497.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74107.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74107.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74113.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74113.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74123.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74123.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74125.cpp",
|
||||
|
@ -131,6 +131,7 @@
|
||||
<ClCompile Include="..\devices\nld_4066.cpp" />
|
||||
<ClCompile Include="..\devices\nld_4316.cpp" />
|
||||
<ClCompile Include="..\devices\nld_74107.cpp" />
|
||||
<ClCompile Include="..\devices\nld_74113.cpp" />
|
||||
<ClCompile Include="..\devices\nld_74123.cpp" />
|
||||
<ClCompile Include="..\devices\nld_74153.cpp" />
|
||||
<ClCompile Include="..\devices\nld_74161.cpp" />
|
||||
@ -217,6 +218,7 @@
|
||||
<ClInclude Include="..\devices\nld_4066.h" />
|
||||
<ClInclude Include="..\devices\nld_4316.h" />
|
||||
<ClInclude Include="..\devices\nld_74107.h" />
|
||||
<ClInclude Include="..\devices\nld_74113.h" />
|
||||
<ClInclude Include="..\devices\nld_74123.h" />
|
||||
<ClInclude Include="..\devices\nld_74153.h" />
|
||||
<ClInclude Include="..\devices\nld_74161.h" />
|
||||
|
@ -174,6 +174,9 @@
|
||||
<ClCompile Include="..\devices\nld_7473.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\devices\nld_74113.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\devices\nld_4066.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@ -509,6 +512,9 @@
|
||||
<ClInclude Include="..\devices\nld_7473.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\devices\nld_74113.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\devices\nld_74161.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
@ -106,6 +106,10 @@ namespace devices
|
||||
LIB_ENTRY(74107_dip)
|
||||
#endif
|
||||
LIB_ENTRY(74107A) // FIXME: implement missing DIP
|
||||
LIB_ENTRY(74113)
|
||||
LIB_ENTRY(74113_dip)
|
||||
LIB_ENTRY(74113A)
|
||||
LIB_ENTRY(74113A_dip)
|
||||
LIB_ENTRY(74121)
|
||||
LIB_ENTRY(74123)
|
||||
LIB_ENTRY(74125)
|
||||
|
@ -53,6 +53,7 @@
|
||||
#include "nld_4066.h"
|
||||
#include "nld_4316.h"
|
||||
#include "nld_74107.h"
|
||||
#include "nld_74113.h"
|
||||
#include "nld_74123.h"
|
||||
#include "nld_74125.h"
|
||||
#include "nld_74153.h"
|
||||
|
165
src/lib/netlist/devices/nld_74113.cpp
Normal file
165
src/lib/netlist/devices/nld_74113.cpp
Normal file
@ -0,0 +1,165 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nld_74113.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_74113.h"
|
||||
#include "netlist/nl_base.h"
|
||||
|
||||
// Note: this can probably be merged with nld_7473.cpp
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(74113)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74113)
|
||||
, m_CLK(*this, "CLK")
|
||||
, m_J(*this, "J")
|
||||
, m_K(*this, "K")
|
||||
, m_SETQ(*this, "SETQ")
|
||||
, m_last_CLK(*this, "m_last_CLK", 0)
|
||||
, m_q(*this, "m_q", 0)
|
||||
, m_Q(*this, "Q")
|
||||
, m_QQ(*this, "QQ")
|
||||
, m_power_pins(*this)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_RESETI();
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
public:
|
||||
logic_input_t m_CLK;
|
||||
logic_input_t m_J;
|
||||
logic_input_t m_K;
|
||||
logic_input_t m_SETQ;
|
||||
|
||||
state_var<unsigned> m_last_CLK;
|
||||
state_var<unsigned> m_q;
|
||||
|
||||
logic_output_t m_Q;
|
||||
logic_output_t m_QQ;
|
||||
nld_power_pins m_power_pins;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(74113A, 74113)
|
||||
{
|
||||
public:
|
||||
NETLIB_CONSTRUCTOR(74113A) { }
|
||||
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74113_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74113_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
{
|
||||
register_subalias("1", m_A.m_CLK);
|
||||
register_subalias("2", m_A.m_K);
|
||||
register_subalias("3", m_A.m_J);
|
||||
register_subalias("4", m_A.m_SETQ);
|
||||
register_subalias("5", m_A.m_Q);
|
||||
register_subalias("6", m_A.m_QQ);
|
||||
register_subalias("7", "A.GND");
|
||||
|
||||
register_subalias("8", m_B.m_QQ);
|
||||
register_subalias("9", m_B.m_Q);
|
||||
register_subalias("10", m_B.m_SETQ);
|
||||
register_subalias("11", m_B.m_J);
|
||||
register_subalias("12", m_B.m_K);
|
||||
register_subalias("13", m_B.m_CLK);
|
||||
register_subalias("14", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
}
|
||||
|
||||
private:
|
||||
NETLIB_SUB(74113) m_A;
|
||||
NETLIB_SUB(74113) m_B;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74113A_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74113A_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
{
|
||||
register_subalias("1", m_A.m_CLK);
|
||||
register_subalias("2", m_A.m_K);
|
||||
register_subalias("3", m_A.m_J);
|
||||
register_subalias("4", m_A.m_SETQ);
|
||||
register_subalias("5", m_A.m_Q);
|
||||
register_subalias("6", m_A.m_QQ);
|
||||
register_subalias("7", "A.GND");
|
||||
|
||||
register_subalias("8", m_B.m_QQ);
|
||||
register_subalias("9", m_B.m_Q);
|
||||
register_subalias("10", m_B.m_SETQ);
|
||||
register_subalias("11", m_B.m_J);
|
||||
register_subalias("12", m_B.m_K);
|
||||
register_subalias("13", m_B.m_CLK);
|
||||
register_subalias("14", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
}
|
||||
|
||||
private:
|
||||
NETLIB_SUB(74113A) m_A;
|
||||
NETLIB_SUB(74113A) m_B;
|
||||
};
|
||||
|
||||
NETLIB_RESET(74113)
|
||||
{
|
||||
m_last_CLK = 0;
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(74113)
|
||||
{
|
||||
const auto JK = (m_J() << 1) | m_K();
|
||||
|
||||
if (m_SETQ())
|
||||
{
|
||||
if (!m_CLK() && m_last_CLK)
|
||||
{
|
||||
switch (JK)
|
||||
{
|
||||
case 1: // (!m_J) & m_K))
|
||||
m_q = 0;
|
||||
break;
|
||||
case 2: // (m_J) & !m_K))
|
||||
m_q = 1;
|
||||
break;
|
||||
case 3: // (m_J) & m_K))
|
||||
m_q ^= 1;
|
||||
break;
|
||||
default:
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_q = 1;
|
||||
}
|
||||
|
||||
m_last_CLK = m_CLK();
|
||||
|
||||
m_Q.push(m_q, NLTIME_FROM_NS(20)); // FIXME: timing
|
||||
m_QQ.push(m_q ^ 1, NLTIME_FROM_NS(20)); // FIXME: timing
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(74113, "TTL_74113", "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(74113A, "TTL_74113A", "+CLK,+J,+K,+CLRQ,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(74113_dip, "TTL_74113_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74113A_dip, "TTL_74113A_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
84
src/lib/netlist/devices/nld_74113.h
Normal file
84
src/lib/netlist/devices/nld_74113.h
Normal file
@ -0,0 +1,84 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nld_74113.h
|
||||
*
|
||||
* 74113: Dual Master-Slave J-K Flip-Flops with Set and Complementary Outputs
|
||||
* 74113A: Dual Negative-Edge-Triggered Master-Slave J-K Flip-Flops with Set and Complementary Outputs
|
||||
*
|
||||
* +----------+
|
||||
* 1CLK |1 ++ 14| VCC
|
||||
* 1K |2 13| 2CLK
|
||||
* 1J |3 12| 2K
|
||||
* 1SETQ |4 74113 11| 2J
|
||||
* 1Q |5 10| 2SETQ
|
||||
* 1QQ |6 9| 2Q
|
||||
* GND |7 8| 2QQ
|
||||
* +----------+
|
||||
*
|
||||
*
|
||||
* Function table 113
|
||||
*
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* | SETQ| CLK | J | K || Q | QQ |
|
||||
* +=====+=====+=====+===++===+=====+
|
||||
* | 0 | X | X | X || 1 | 0 |
|
||||
* | 1 | * | 0 | 0 || Q0| Q0Q |
|
||||
* | 1 | * | 1 | 0 || 1 | 0 |
|
||||
* | 1 | * | 0 | 1 || 0 | 1 |
|
||||
* | 1 | * | 1 | 1 || TOGGLE |
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* _
|
||||
* * = _| |_
|
||||
*
|
||||
* This is positive triggered, J and K
|
||||
* are latched during clock high and
|
||||
* transferred when CLK falls.
|
||||
*
|
||||
* Function table 113A
|
||||
*
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* | CLRQ| CLK | J | K || Q | QQ |
|
||||
* +=====+=====+=====+===++===+=====+
|
||||
* | 0 | X | X | X || 0 | 1 |
|
||||
* | 1 | F | 0 | 0 || Q0| Q0Q |
|
||||
* | 1 | F | 1 | 0 || 1 | 0 |
|
||||
* | 1 | F | 0 | 1 || 0 | 1 |
|
||||
* | 1 | F | 1 | 1 || TOGGLE |
|
||||
* | 1 | 1 | X | X || Q0| Q0Q |
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
*
|
||||
* THe 113A is negative triggered.
|
||||
*
|
||||
* Naming conventions follow Texas instruments datasheet
|
||||
*
|
||||
* FIXME: Currently, only the 113 is implemented.
|
||||
* The 113A uses the same model.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_74113_H_
|
||||
#define NLD_74113_H_
|
||||
|
||||
#include "netlist/nl_setup.h"
|
||||
|
||||
#define TTL_74113(name, cCLK, cJ, cK, cCLRQ) \
|
||||
NET_REGISTER_DEV(TTL_74113, 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_74113A(name, cCLK, cJ, cK, cCLRQ) \
|
||||
TTL_74113(name, cCLK, cJ, cK, cCLRQ)
|
||||
|
||||
#define TTL_74113_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74113_DIP, name)
|
||||
|
||||
|
||||
#define TTL_74113A_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74113A_DIP, name)
|
||||
|
||||
#endif /* NLD_74113_H_ */
|
@ -417,6 +417,27 @@
|
||||
#define TTL_74107A(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74107A, __VA_ARGS__)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_74113.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
// usage : TTL_74113(name, pCLK, pJ, pK, pCLRQ)
|
||||
// auto connect: VCC, GND
|
||||
#define TTL_74113(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74113, __VA_ARGS__)
|
||||
|
||||
// usage : TTL_74113_DIP(name)
|
||||
#define TTL_74113_DIP(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74113_DIP, __VA_ARGS__)
|
||||
|
||||
// usage : TTL_74113A(name, pCLK, pJ, pK, pCLRQ)
|
||||
// auto connect: VCC, GND
|
||||
#define TTL_74113A(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74113A, __VA_ARGS__)
|
||||
|
||||
// usage : TTL_74113A_DIP(name)
|
||||
#define TTL_74113A_DIP(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_74113A_DIP, __VA_ARGS__)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_74123.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user