mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
netlist: Add 74377/74378/74379 devices to netlist. [Aaron Giles]
This commit is contained in:
parent
cfc3a76d04
commit
5739043ced
@ -180,6 +180,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74193.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74194.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74194.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74377.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74377.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74393.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74393.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74365.cpp",
|
||||
|
@ -73,7 +73,7 @@ TIDY_DB = $(OBJ)/compile_commands.json
|
||||
|
||||
# LTO = -flto=4 -fuse-linker-plugin -flto-partition=balanced -Wodr
|
||||
|
||||
CCOREFLAGS = -g -O3 -std=c++17 -I$(CURDIR)/.. -I$(CURDIR)/../..
|
||||
CCOREFLAGS = -g -O3 -std=c++14 -I$(CURDIR)/.. -I$(CURDIR)/../..
|
||||
|
||||
|
||||
CFLAGS = $(LTO) $(CCOREFLAGS) $(CEXTRAFLAGS)
|
||||
@ -174,6 +174,7 @@ NLOBJS := \
|
||||
$(NLOBJ)/devices/nld_74193.o \
|
||||
$(NLOBJ)/devices/nld_74194.o \
|
||||
$(NLOBJ)/devices/nld_74365.o \
|
||||
$(NLOBJ)/devices/nld_74377.o \
|
||||
$(NLOBJ)/devices/nld_74393.o \
|
||||
$(NLOBJ)/devices/nld_74ls629.o \
|
||||
$(NLOBJ)/devices/nld_82S16.o \
|
||||
|
@ -129,6 +129,9 @@ namespace devices
|
||||
LIB_ENTRY(74193)
|
||||
LIB_ENTRY(74194)
|
||||
LIB_ENTRY(74365)
|
||||
LIB_ENTRY(74377_dip)
|
||||
LIB_ENTRY(74378_dip)
|
||||
LIB_ENTRY(74379_dip)
|
||||
LIB_ENTRY(74393)
|
||||
LIB_ENTRY(74393_dip)
|
||||
//ENTRY(74279, TTL_74279, "") // only dip available
|
||||
|
@ -64,6 +64,7 @@
|
||||
#include "nld_74193.h"
|
||||
#include "nld_74194.h"
|
||||
#include "nld_74365.h"
|
||||
#include "nld_74377.h"
|
||||
#include "nld_74393.h"
|
||||
#include "nld_7448.h"
|
||||
#include "nld_7450.h"
|
||||
|
256
src/lib/netlist/devices/nld_74377.cpp
Normal file
256
src/lib/netlist/devices/nld_74377.cpp
Normal file
@ -0,0 +1,256 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nld_74377.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_74377.h"
|
||||
#include "netlist/nl_base.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
|
||||
constexpr const std::array<netlist_time, 2> delay = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(25) };
|
||||
|
||||
NETLIB_OBJECT(74377_gate)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74377_gate)
|
||||
, m_E(*this, "E")
|
||||
, m_D(*this, "D")
|
||||
, m_CP(*this, "CP")
|
||||
, m_Q(*this, "Q")
|
||||
, m_QQ(*this, "QQ")
|
||||
, m_cp(*this, "m_cp", 0)
|
||||
, m_power_pins(*this)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_RESETI()
|
||||
{
|
||||
}
|
||||
NETLIB_UPDATEI()
|
||||
{
|
||||
netlist_sig_t last_cp = m_cp;
|
||||
|
||||
m_cp = m_CP();
|
||||
|
||||
if (!m_E() && !last_cp && m_cp)
|
||||
{
|
||||
netlist_sig_t d = m_D();
|
||||
m_Q.push(d, delay[d]);
|
||||
m_QQ.push(d ^ 1, delay[d ^ 1]);
|
||||
}
|
||||
}
|
||||
|
||||
friend class NETLIB_NAME(74377_dip);
|
||||
friend class NETLIB_NAME(74378_dip);
|
||||
friend class NETLIB_NAME(74379_dip);
|
||||
private:
|
||||
logic_input_t m_E;
|
||||
logic_input_t m_D;
|
||||
logic_input_t m_CP;
|
||||
logic_output_t m_Q;
|
||||
logic_output_t m_QQ;
|
||||
|
||||
state_var_sig m_cp;
|
||||
nld_power_pins m_power_pins;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74377_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74377_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_E(*this, "E")
|
||||
, m_F(*this, "F")
|
||||
, m_G(*this, "G")
|
||||
, m_H(*this, "H")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_D);
|
||||
register_subalias("4", m_B.m_D);
|
||||
register_subalias("5", m_B.m_Q);
|
||||
register_subalias("6", m_C.m_Q);
|
||||
register_subalias("7", m_C.m_D);
|
||||
register_subalias("8", m_D.m_D);
|
||||
register_subalias("9", m_D.m_Q);
|
||||
register_subalias("10", "A.GND");
|
||||
|
||||
register_subalias("11", m_A.m_CP);
|
||||
register_subalias("12", m_E.m_Q);
|
||||
register_subalias("13", m_E.m_D);
|
||||
register_subalias("14", m_F.m_D);
|
||||
register_subalias("15", m_F.m_Q);
|
||||
register_subalias("16", m_G.m_Q);
|
||||
register_subalias("17", m_G.m_D);
|
||||
register_subalias("18", m_H.m_D);
|
||||
register_subalias("19", m_H.m_Q);
|
||||
register_subalias("20", "A.VCC");
|
||||
|
||||
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");
|
||||
connect("A.GND", "G.GND");
|
||||
connect("A.GND", "H.GND");
|
||||
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");
|
||||
connect("A.VCC", "G.VCC");
|
||||
connect("A.VCC", "H.VCC");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_E, m_E.m_E);
|
||||
connect(m_A.m_E, m_F.m_E);
|
||||
connect(m_A.m_E, m_G.m_E);
|
||||
connect(m_A.m_E, m_H.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
connect(m_A.m_CP, m_E.m_CP);
|
||||
connect(m_A.m_CP, m_F.m_CP);
|
||||
connect(m_A.m_CP, m_G.m_CP);
|
||||
connect(m_A.m_CP, m_H.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
NETLIB_SUB(74377_gate) m_E;
|
||||
NETLIB_SUB(74377_gate) m_F;
|
||||
NETLIB_SUB(74377_gate) m_G;
|
||||
NETLIB_SUB(74377_gate) m_H;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74378_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74378_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_E(*this, "E")
|
||||
, m_F(*this, "F")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_D);
|
||||
register_subalias("4", m_B.m_D);
|
||||
register_subalias("5", m_B.m_Q);
|
||||
register_subalias("6", m_C.m_D);
|
||||
register_subalias("7", m_C.m_Q);
|
||||
register_subalias("8", "A.GND");
|
||||
|
||||
register_subalias("9", m_A.m_CP);
|
||||
register_subalias("10", m_D.m_Q);
|
||||
register_subalias("11", m_D.m_D);
|
||||
register_subalias("12", m_E.m_Q);
|
||||
register_subalias("13", m_E.m_D);
|
||||
register_subalias("14", m_F.m_D);
|
||||
register_subalias("15", m_F.m_Q);
|
||||
register_subalias("16", "A.VCC");
|
||||
|
||||
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");
|
||||
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");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_E, m_E.m_E);
|
||||
connect(m_A.m_E, m_F.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
connect(m_A.m_CP, m_E.m_CP);
|
||||
connect(m_A.m_CP, m_F.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
NETLIB_SUB(74377_gate) m_E;
|
||||
NETLIB_SUB(74377_gate) m_F;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74379_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74379_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_QQ);
|
||||
register_subalias("4", m_A.m_D);
|
||||
register_subalias("5", m_B.m_D);
|
||||
register_subalias("6", m_B.m_QQ);
|
||||
register_subalias("7", m_B.m_Q);
|
||||
register_subalias("8", "A.GND");
|
||||
|
||||
register_subalias("9", m_A.m_CP);
|
||||
register_subalias("10", m_C.m_Q);
|
||||
register_subalias("11", m_C.m_QQ);
|
||||
register_subalias("12", m_C.m_D);
|
||||
register_subalias("13", m_D.m_D);
|
||||
register_subalias("14", m_D.m_QQ);
|
||||
register_subalias("15", m_D.m_Q);
|
||||
register_subalias("16", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.GND", "C.GND");
|
||||
connect("A.GND", "D.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
connect("A.VCC", "C.VCC");
|
||||
connect("A.VCC", "D.VCC");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
};
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL(74377_gate, "TTL_74377_GATE", "")
|
||||
NETLIB_DEVICE_IMPL(74377_dip, "TTL_74377_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74378_dip, "TTL_74378_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74379_dip, "TTL_74379_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
69
src/lib/netlist/devices/nld_74377.h
Normal file
69
src/lib/netlist/devices/nld_74377.h
Normal file
@ -0,0 +1,69 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud,Aaron Giles
|
||||
/*
|
||||
* nld_74377.h
|
||||
*
|
||||
* DM74377: Octal D Flip-Flop With Enable
|
||||
*
|
||||
* +--------------+
|
||||
* /E |1 ++ 20| VCC
|
||||
* Q0 |2 19| Q7
|
||||
* D0 |3 18| D7
|
||||
* D1 |4 74377 17| D6
|
||||
* Q1 |5 16| Q6
|
||||
* Q2 |6 15| Q5
|
||||
* D2 |7 14| D5
|
||||
* D3 |8 13| D4
|
||||
* Q3 |9 12| Q4
|
||||
* GND |10 11| CP
|
||||
* +--------------+
|
||||
*
|
||||
* DM74378: Hex D Flip-Flop With Enable
|
||||
*
|
||||
* +--------------+
|
||||
* /E |1 ++ 16| VCC
|
||||
* Q0 |2 15| Q5
|
||||
* D0 |3 14| D5
|
||||
* D1 |4 74378 13| D4
|
||||
* Q1 |5 12| Q4
|
||||
* D2 |6 11| D3
|
||||
* Q2 |7 10| Q3
|
||||
* GND |8 9| CP
|
||||
* +--------------+
|
||||
*
|
||||
* DM74379: 4-bit D Flip-Flop With Enable
|
||||
*
|
||||
* +--------------+
|
||||
* /E |1 ++ 16| VCC
|
||||
* Q0 |2 15| Q3
|
||||
* /Q0 |3 14| /Q3
|
||||
* D0 |4 74379 13| D3
|
||||
* D1 |5 12| D2
|
||||
* /Q1 |6 11| /Q2
|
||||
* Q1 |7 10| Q2
|
||||
* GND |8 9| CP
|
||||
* +--------------+
|
||||
*
|
||||
* Naming conventions follow Motorola datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_74377_H_
|
||||
#define NLD_74377_H_
|
||||
|
||||
#include "netlist/nl_setup.h"
|
||||
|
||||
#define TTL_74377_GATE(name) \
|
||||
NET_REGISTER_DEV(TTL_74377_GATE, name)
|
||||
|
||||
#define TTL_74377_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74377_DIP, name)
|
||||
|
||||
#define TTL_74378_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74378_DIP, name)
|
||||
|
||||
#define TTL_74379_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74379_DIP, name)
|
||||
|
||||
|
||||
#endif /* NLD_74377_H_ */
|
@ -426,6 +426,21 @@
|
||||
#define TTL_74365(name, pG1Q, pG2Q, pA1, pA2, pA3, pA4, pA5, pA6) \
|
||||
NET_REGISTER_DEVEXT(TTL_74365, name, pG1Q, pG2Q, pA1, pA2, pA3, pA4, pA5, pA6)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_74377.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
#define TTL_74377_GATE(name) \
|
||||
NET_REGISTER_DEVEXT(TTL_74377_GATE, name)
|
||||
|
||||
#define TTL_74377_DIP(name) \
|
||||
NET_REGISTER_DEVEXT(TTL_74377_DIP, name)
|
||||
|
||||
#define TTL_74378_DIP(name) \
|
||||
NET_REGISTER_DEVEXT(TTL_74378_DIP, name)
|
||||
|
||||
#define TTL_74379_DIP(name) \
|
||||
NET_REGISTER_DEVEXT(TTL_74379_DIP, name)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_74393.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user