mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
netlist: Device additions: [Ryan Holtz]
* 74161 Synchronous 4-Bit Binary Counter with Clock * 7473 Dual Master-Slave J-K Flip-Flops with Clear and Complementary Outputs * Am2847 Quad 80-bit Static Shift Register * DM9334 8-bit Addressable Latch
This commit is contained in:
parent
3dba2b07a3
commit
72f4f2a20e
@ -99,6 +99,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7448.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7450.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7450.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7473.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7473.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7474.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7474.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_7483.cpp",
|
||||
@ -113,6 +115,8 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74123.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74153.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74153.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74161.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74161.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74175.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74175.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_74192.cpp",
|
||||
@ -131,6 +135,10 @@ project "netlist"
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9312.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9316.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_9316.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_am2847.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_am2847.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_ne555.cpp",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_ne555.h",
|
||||
MAME_DIR .. "src/lib/netlist/devices/nld_mm5837.cpp",
|
||||
|
@ -84,7 +84,7 @@ void netlist_mame_analog_input_t::device_start()
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
netlist_mame_analog_output_t::netlist_mame_analog_output_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, NETLIST_ANALOG_INPUT, "Netlist Analog Output", tag, owner, clock, "netlist_analog_output", __FILE__),
|
||||
: device_t(mconfig, NETLIST_ANALOG_OUTPUT, "Netlist Analog Output", tag, owner, clock, "netlist_analog_output", __FILE__),
|
||||
netlist_mame_sub_interface(*owner),
|
||||
m_in("")
|
||||
{
|
||||
@ -119,7 +119,7 @@ void netlist_mame_analog_output_t::device_start()
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
netlist_mame_int_input_t::netlist_mame_int_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, NETLIST_INT_INPUT, "Netlist Logic Input", tag, owner, clock, "netlist_logic_input", __FILE__),
|
||||
: device_t(mconfig, NETLIST_INT_INPUT, "Netlist Integer Input", tag, owner, clock, "netlist_logic_input", __FILE__),
|
||||
netlist_mame_sub_interface(*owner),
|
||||
m_param(nullptr),
|
||||
m_mask(0xffffffff),
|
||||
|
@ -35,12 +35,12 @@
|
||||
netlist_analog_output_delegate(& _class :: _member, \
|
||||
# _class "::" # _member, _class_tag, (_class *)nullptr) );
|
||||
|
||||
#define MCFG_NETLIST_LOGIC_INPUT(_basetag, _tag, _name, _shift) \
|
||||
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_INPUT, 0) \
|
||||
#define MCFG_NETLIST_LOGIC_INPUT(_basetag, _tag, _name, _shift) \
|
||||
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_LOGIC_INPUT, 0) \
|
||||
netlist_mame_logic_input_t::static_set_params(*device, _name, _shift);
|
||||
|
||||
#define MCFG_NETLIST_INT_INPUT(_basetag, _tag, _name, _shift, _mask) \
|
||||
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_INT_INPUT, 0) \
|
||||
#define MCFG_NETLIST_INT_INPUT(_basetag, _tag, _name, _shift, _mask) \
|
||||
MCFG_DEVICE_ADD(_basetag ":" _tag, NETLIST_INT_INPUT, 0) \
|
||||
netlist_mame_int_input_t::static_set_params(*device, _name, _mask, _shift);
|
||||
|
||||
#define MCFG_NETLIST_ROM(_basetag, _tag, _name, _region) \
|
||||
@ -55,6 +55,7 @@
|
||||
MCFG_DEVICE_ADD(_basetag ":cout" # _chan, NETLIST_STREAM_OUTPUT, 0) \
|
||||
netlist_mame_stream_output_t::static_set_params(*device, _chan, _name);
|
||||
|
||||
#define MCFG_NETLIST_ROM_ACCESS(
|
||||
|
||||
#define NETLIST_LOGIC_PORT_CHANGED(_base, _tag) \
|
||||
PORT_CHANGED_MEMBER(_base ":" _tag, netlist_mame_logic_input_t, input_changed, 0)
|
||||
@ -416,16 +417,22 @@ private:
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// netlist_mame_int_input_t
|
||||
// netlist_mame_rom_t
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
class netlist_mame_int_input_t : public device_t,
|
||||
public netlist_mame_sub_interface
|
||||
class netlist_mame_rom_t : public device_t,
|
||||
public netlist_mame_sub_interface
|
||||
{
|
||||
public:
|
||||
|
||||
// construction/destruction
|
||||
netlist_mame_int_input_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
netlist_mame_rom_t(const machine_config &mconfig, const char *tag, device_t *owner)
|
||||
: device_t(mconfig, NETLIST_ROM, "Netlist ROM Interface", tag, owner, 0, "netlist_rom", __FILE__),
|
||||
netlist_mame_sub_interface(*owner),
|
||||
m_in("")
|
||||
m_mask(0xffffffff),
|
||||
m_shift(0),
|
||||
{ }
|
||||
virtual ~netlist_mame_int_input_t() { }
|
||||
|
||||
static void static_set_params(device_t &device, const char *param_name, const uint32_t mask, const uint32_t shift);
|
||||
@ -461,6 +468,7 @@ private:
|
||||
pstring m_param_name;
|
||||
};
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// netlist_mame_logic_input_t
|
||||
// ----------------------------------------------------------------------------------------
|
||||
@ -798,6 +806,8 @@ extern const device_type NETLIST_INT_INPUT;
|
||||
extern const device_type NETLIST_ROM_REGION;
|
||||
|
||||
extern const device_type NETLIST_ANALOG_OUTPUT;
|
||||
//extern const device_type NETLIST_LOGIC_OUTPUT;
|
||||
extern const device_type NETLIST_INT_OUTPUT;
|
||||
extern const device_type NETLIST_STREAM_INPUT;
|
||||
extern const device_type NETLIST_STREAM_OUTPUT;
|
||||
|
||||
|
@ -70,6 +70,7 @@ NLOBJS := \
|
||||
$(NLOBJ)/devices/nld_4066.o \
|
||||
$(NLOBJ)/devices/nld_7448.o \
|
||||
$(NLOBJ)/devices/nld_7450.o \
|
||||
$(NLOBJ)/devices/nld_7473.o \
|
||||
$(NLOBJ)/devices/nld_7474.o \
|
||||
$(NLOBJ)/devices/nld_7483.o \
|
||||
$(NLOBJ)/devices/nld_7490.o \
|
||||
@ -77,6 +78,7 @@ NLOBJS := \
|
||||
$(NLOBJ)/devices/nld_74107.o \
|
||||
$(NLOBJ)/devices/nld_74123.o \
|
||||
$(NLOBJ)/devices/nld_74153.o \
|
||||
$(NLOBJ)/devices/nld_74161.o \
|
||||
$(NLOBJ)/devices/nld_74175.o \
|
||||
$(NLOBJ)/devices/nld_74192.o \
|
||||
$(NLOBJ)/devices/nld_74193.o \
|
||||
@ -86,6 +88,8 @@ NLOBJS := \
|
||||
$(NLOBJ)/devices/nld_9310.o \
|
||||
$(NLOBJ)/devices/nld_9312.o \
|
||||
$(NLOBJ)/devices/nld_9316.o \
|
||||
$(NLOBJ)/devices/nld_am2847.o \
|
||||
$(NLOBJ)/devices/nld_dm9334.o \
|
||||
$(NLOBJ)/devices/nld_mm5837.o \
|
||||
$(NLOBJ)/devices/nld_ne555.o \
|
||||
$(NLOBJ)/devices/nld_r2r_dac.o \
|
||||
|
@ -108,6 +108,8 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRYX(nicDelay, NETDEV_DELAY, "-")
|
||||
ENTRYX(7450, TTL_7450_ANDORINVERT, "+A,B,C,D")
|
||||
ENTRYX(7448, TTL_7448, "+A,B,C,D,LTQ,BIQ,RBIQ")
|
||||
ENTRYX(7473, TTL_7473, "+CLK1,J1,K1,CLRQ1,CLK2,J2,K2,CLRQ2")
|
||||
ENTRYX(7473A, TTL_7473A, "+CLK1,J1,K1,CLRQ1,CLK2,J2,K2,CLRQ2")
|
||||
ENTRYX(7474, TTL_7474, "+CLK,D,CLRQ,PREQ")
|
||||
ENTRYX(7483, TTL_7483, "+A1,A2,A3,A4,B1,B2,B3,B4,C0")
|
||||
ENTRYX(7490, TTL_7490, "+A,B,R1,R2,R91,R92")
|
||||
@ -116,15 +118,18 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRYX(74107A, TTL_74107A, "+CLK,J,K,CLRQ")
|
||||
ENTRYX(74123, TTL_74123, "-")
|
||||
ENTRYX(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G")
|
||||
ENTRYX(74161, TTL_74175, "-")
|
||||
ENTRYX(74175, TTL_74175, "-")
|
||||
ENTRYX(74192, TTL_74192, "-")
|
||||
ENTRYX(74193, TTL_74193, "-")
|
||||
ENTRYX(DM9334, TTL_DM9334, "-")
|
||||
//ENTRY(74279, TTL_74279, "-") // only dip available
|
||||
ENTRYX(SN74LS629, SN74LS629, "CAP")
|
||||
ENTRYX(82S16, TTL_82S16, "-")
|
||||
ENTRYX(9310, TTL_9310, "-")
|
||||
ENTRYX(9312, TTL_9312, "-")
|
||||
ENTRYX(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
|
||||
ENTRYX(AM2847, TTL_AM2847, "-")
|
||||
ENTRYX(CD4020, CD4020, "")
|
||||
ENTRYX(CD4066_GATE, CD4066_GATE, "")
|
||||
/* entries with suffix WI are legacy only */
|
||||
@ -135,6 +140,8 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRYX(4538_dip, CD4538_DIP, "-")
|
||||
ENTRYX(7448_dip, TTL_7448_DIP, "-")
|
||||
ENTRYX(7450_dip, TTL_7450_DIP, "-")
|
||||
ENTRYX(7473_dip, TTL_7473_DIP, "-")
|
||||
ENTRYX(7473A_dip, TTL_7473A_DIP, "-")
|
||||
ENTRYX(7474_dip, TTL_7474_DIP, "-")
|
||||
ENTRYX(7483_dip, TTL_7483_DIP, "-")
|
||||
ENTRYX(7490_dip, TTL_7490_DIP, "-")
|
||||
@ -151,6 +158,8 @@ static void initialize_factory(factory_list_t &factory)
|
||||
ENTRYX(9310_dip, TTL_9310_DIP, "-")
|
||||
ENTRYX(9312_dip, TTL_9312_DIP, "-")
|
||||
ENTRYX(9316_dip, TTL_9316_DIP, "-")
|
||||
ENTRYX(AM2847_dip, TTL_AM2847_DIP, "-")
|
||||
ENTRYX(DM9334_dip, TTL_DM9334_DIP, "-")
|
||||
ENTRYX(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2")
|
||||
ENTRYX(NE555_dip, NE555_DIP, "-")
|
||||
ENTRYX(MM5837_dip, MM5837_DIP, "-")
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "nld_4066.h"
|
||||
#include "nld_7448.h"
|
||||
#include "nld_7450.h"
|
||||
#include "nld_7473.h"
|
||||
#include "nld_7474.h"
|
||||
#include "nld_7483.h"
|
||||
#include "nld_7490.h"
|
||||
@ -25,6 +26,7 @@
|
||||
#include "nld_74107.h"
|
||||
#include "nld_74123.h"
|
||||
#include "nld_74153.h"
|
||||
#include "nld_74161.h"
|
||||
#include "nld_74175.h"
|
||||
#include "nld_74192.h"
|
||||
#include "nld_74193.h"
|
||||
@ -35,6 +37,9 @@
|
||||
#include "nld_9312.h"
|
||||
#include "nld_9316.h"
|
||||
|
||||
#include "nld_am2847.h"
|
||||
#include "nld_dm9334.h"
|
||||
|
||||
#include "nld_ne555.h"
|
||||
#include "nld_mm5837.h"
|
||||
|
||||
|
131
src/lib/netlist/devices/nld_74161.cpp
Normal file
131
src/lib/netlist/devices/nld_74161.cpp
Normal file
@ -0,0 +1,131 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_74161.c
|
||||
*
|
||||
*/
|
||||
|
||||
#define MAXCNT 15
|
||||
|
||||
#include "nld_74161.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(74161)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74161)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_CLEAR(*this, "CLEAR")
|
||||
, m_LOAD(*this, "LOAD")
|
||||
, m_CLK(*this, "CLK")
|
||||
, m_ENABLEP(*this, "ENABLEP")
|
||||
, m_ENABLET(*this, "ENABLET")
|
||||
, m_cnt(*this, "m_cnt", 0)
|
||||
, m_last_CLK(*this, "m_last_CLK", 0)
|
||||
, m_Q(*this, {{"QA", "QB", "QC", "QD"}})
|
||||
, m_RCO(*this, "RCO")
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_RESETI();
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
logic_input_t m_A;
|
||||
logic_input_t m_B;
|
||||
logic_input_t m_C;
|
||||
logic_input_t m_D;
|
||||
logic_input_t m_CLEAR;
|
||||
logic_input_t m_LOAD;
|
||||
logic_input_t m_CLK;
|
||||
logic_input_t m_ENABLEP;
|
||||
logic_input_t m_ENABLET;
|
||||
|
||||
state_var<unsigned> m_cnt;
|
||||
state_var<unsigned> m_last_CLK;
|
||||
|
||||
object_array_t<logic_output_t, 4> m_Q;
|
||||
logic_output_t m_RCO;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(74161_dip, 74161)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(74161_dip, 74161)
|
||||
{
|
||||
register_subalias("1", m_CLEAR);
|
||||
register_subalias("2", m_CLK);
|
||||
register_subalias("3", m_A);
|
||||
register_subalias("4", m_B);
|
||||
register_subalias("5", m_C);
|
||||
register_subalias("6", m_D);
|
||||
register_subalias("7", m_ENABLEP);
|
||||
|
||||
register_subalias("9", m_LOAD);
|
||||
register_subalias("10", m_ENABLET);
|
||||
register_subalias("11", m_Q[3]);
|
||||
register_subalias("12", m_Q[2]);
|
||||
register_subalias("13", m_Q[1]);
|
||||
register_subalias("14", m_Q[0]);
|
||||
register_subalias("15", m_RCO);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
NETLIB_RESET(74161)
|
||||
{
|
||||
m_cnt = 0;
|
||||
m_last_CLK = 0;
|
||||
}
|
||||
|
||||
// FIXME: Timing
|
||||
static const netlist_time delay[4] =
|
||||
{
|
||||
NLTIME_FROM_NS(40),
|
||||
NLTIME_FROM_NS(40),
|
||||
NLTIME_FROM_NS(40),
|
||||
NLTIME_FROM_NS(40)
|
||||
};
|
||||
|
||||
NETLIB_UPDATE(74161)
|
||||
{
|
||||
netlist_sig_t tRippleCarryOut = 0;
|
||||
if (m_CLEAR())
|
||||
{
|
||||
m_cnt = 0;
|
||||
}
|
||||
else if (m_CLK() && !m_last_CLK)
|
||||
{
|
||||
if (m_LOAD())
|
||||
{
|
||||
m_cnt = (m_D() << 3) | (m_C() << 2)
|
||||
| (m_B() << 1) | (m_A() << 0);
|
||||
}
|
||||
else if (m_ENABLET() && m_ENABLEP())
|
||||
{
|
||||
m_cnt++;
|
||||
if (m_cnt > MAXCNT)
|
||||
m_cnt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_ENABLET() && (m_cnt == MAXCNT))
|
||||
tRippleCarryOut = 1;
|
||||
|
||||
m_last_CLK = m_CLK();
|
||||
|
||||
for (std::size_t i=0; i<4; i++)
|
||||
m_Q[i].push((m_cnt >> i) & 1, delay[i]);
|
||||
|
||||
m_RCO.push(tRippleCarryOut, NLTIME_FROM_NS(20)); //FIXME
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(74161)
|
||||
NETLIB_DEVICE_IMPL(74161_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
36
src/lib/netlist/devices/nld_74161.h
Normal file
36
src/lib/netlist/devices/nld_74161.h
Normal file
@ -0,0 +1,36 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_74161.h
|
||||
*
|
||||
* DM74161: Synchronous 4-Bit Binary Counter with Clock
|
||||
*
|
||||
* +--------------+
|
||||
* CLEAR |1 ++ 16| VCC
|
||||
* CLK |2 15| RCO
|
||||
* A |3 14| QA
|
||||
* B |4 74161 13| QB
|
||||
* C |5 12| QC
|
||||
* D |6 11| QD
|
||||
* ENABLEP |7 10| ENABLET
|
||||
* GND |8 9| LOAD
|
||||
* +--------------+
|
||||
*
|
||||
* RCO: Ripple carry output
|
||||
*
|
||||
* Naming convention attempts to follow National Semiconductor datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_74161_H_
|
||||
#define NLD_74161_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_74161(name) \
|
||||
NET_REGISTER_DEV(TTL_74161, name)
|
||||
|
||||
#define TTL_74161_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74161_DIP, name)
|
||||
|
||||
#endif /* NLD_74161_H_ */
|
198
src/lib/netlist/devices/nld_7473.cpp
Normal file
198
src/lib/netlist/devices/nld_7473.cpp
Normal file
@ -0,0 +1,198 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nld_74107.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_74107.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(7473_flipflop_base)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(7473_flipflop_base)
|
||||
, m_CLK(*this, "CLK")
|
||||
, m_CLR(*this, "CLR")
|
||||
, m_J(*this, "J")
|
||||
, m_K(*this, "K")
|
||||
, m_Q(*this, "Q")
|
||||
, m_QQ(*this, "QQ")
|
||||
, m_last_CLK(*this, "m_last_CLK", 0)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_RESETI();
|
||||
|
||||
public:
|
||||
logic_input_t m_CLK;
|
||||
logic_input_t m_CLR;
|
||||
logic_input_t m_J;
|
||||
logic_input_t m_K;
|
||||
|
||||
logic_output_t m_Q;
|
||||
logic_output_t m_QQ;
|
||||
|
||||
state_var<netlist_sig_t> m_last_CLK;
|
||||
|
||||
void tick();
|
||||
};
|
||||
|
||||
NETLIB_RESET(7473_flipflop_base)
|
||||
{
|
||||
m_last_CLK = 0;
|
||||
}
|
||||
|
||||
inline NETLIB_FUNC_VOID(7473_flipflop_base, tick, (void))
|
||||
{
|
||||
const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
|
||||
|
||||
const netlist_sig_t j = m_J();
|
||||
const netlist_sig_t k = m_K();
|
||||
const netlist_sig_t old_q = m_Q.net().Q();
|
||||
netlist_sig_t q = old_q;
|
||||
if (j && k)
|
||||
{
|
||||
q ^= 1;
|
||||
}
|
||||
else if (j)
|
||||
{
|
||||
q = 1;
|
||||
}
|
||||
else if (k)
|
||||
{
|
||||
q = 0;
|
||||
}
|
||||
|
||||
if (q != old_q)
|
||||
{
|
||||
m_Q.push(q, delay[q]);
|
||||
m_QQ.push(q ^ 1, delay[q ^ 1]);
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_OBJECT_DERIVED(7473_flipflop, 7473_flipflop_base)
|
||||
{
|
||||
public:
|
||||
NETLIB_CONSTRUCTOR_DERIVED(7473_flipflop, 7473_flipflop_base) { }
|
||||
NETLIB_UPDATEI();
|
||||
};
|
||||
|
||||
NETLIB_UPDATE(7473_flipflop)
|
||||
{
|
||||
if (m_CLR())
|
||||
{
|
||||
m_Q.push(0, NLTIME_FROM_NS(40));
|
||||
m_QQ.push(1, NLTIME_FROM_NS(25));
|
||||
}
|
||||
else if (m_CLK())
|
||||
{
|
||||
tick();
|
||||
}
|
||||
|
||||
m_last_CLK = m_CLK();
|
||||
}
|
||||
|
||||
NETLIB_OBJECT_DERIVED(7473A_flipflop, 7473_flipflop_base)
|
||||
{
|
||||
public:
|
||||
NETLIB_CONSTRUCTOR_DERIVED(7473A_flipflop, 7473_flipflop_base) { }
|
||||
NETLIB_UPDATEI();
|
||||
};
|
||||
|
||||
NETLIB_UPDATE(7473A_flipflop)
|
||||
{
|
||||
if (m_CLR())
|
||||
{
|
||||
m_Q.push(0, NLTIME_FROM_NS(40));
|
||||
m_QQ.push(1, NLTIME_FROM_NS(25));
|
||||
}
|
||||
else if (!m_CLK() && m_last_CLK)
|
||||
{
|
||||
tick();
|
||||
}
|
||||
|
||||
m_last_CLK = m_CLK();
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(7473)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(7473)
|
||||
, m_FF1(*this, "FF1")
|
||||
, m_FF2(*this, "FF2")
|
||||
{ }
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(7473_flipflop) m_FF1;
|
||||
NETLIB_SUB(7473_flipflop) m_FF2;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(7473A)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(7473A)
|
||||
, m_FF1(*this, "FF1")
|
||||
, m_FF2(*this, "FF2")
|
||||
{ }
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(7473A_flipflop) m_FF1;
|
||||
NETLIB_SUB(7473A_flipflop) m_FF2;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(7473_dip, 7473)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(7473_dip, 7473)
|
||||
{
|
||||
register_subalias("1", m_FF1.m_CLK);
|
||||
register_subalias("2", m_FF1.m_CLR);
|
||||
register_subalias("3", m_FF1.m_K);
|
||||
// register_subalias("4", ); ==> VCC
|
||||
register_subalias("5", m_FF2.m_CLK);
|
||||
register_subalias("6", m_FF2.m_CLR);
|
||||
register_subalias("7", m_FF2.m_J);
|
||||
|
||||
register_subalias("8", m_FF2.m_QQ);
|
||||
register_subalias("9", m_FF2.m_Q);
|
||||
register_subalias("10", m_FF2.m_K);
|
||||
// register_subalias("11", ); ==> GND
|
||||
register_subalias("12", m_FF1.m_Q);
|
||||
register_subalias("13", m_FF1.m_QQ);
|
||||
register_subalias("14", m_FF1.m_J);
|
||||
}
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(7473A_dip, 7473A)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(7473A_dip, 7473A)
|
||||
{
|
||||
register_subalias("1", m_FF1.m_CLK);
|
||||
register_subalias("2", m_FF1.m_CLR);
|
||||
register_subalias("3", m_FF1.m_K);
|
||||
// register_subalias("4", ); ==> VCC
|
||||
register_subalias("5", m_FF2.m_CLK);
|
||||
register_subalias("6", m_FF2.m_CLR);
|
||||
register_subalias("7", m_FF2.m_J);
|
||||
|
||||
register_subalias("8", m_FF2.m_QQ);
|
||||
register_subalias("9", m_FF2.m_Q);
|
||||
register_subalias("10", m_FF2.m_K);
|
||||
// register_subalias("11", ); ==> GND
|
||||
register_subalias("12", m_FF1.m_Q);
|
||||
register_subalias("13", m_FF1.m_QQ);
|
||||
register_subalias("14", m_FF1.m_J);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
NETLIB_DEVICE_IMPL(7473)
|
||||
NETLIB_DEVICE_IMPL(7473A)
|
||||
NETLIB_DEVICE_IMPL(7473_dip)
|
||||
NETLIB_DEVICE_IMPL(7473A_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
75
src/lib/netlist/devices/nld_7473.h
Normal file
75
src/lib/netlist/devices/nld_7473.h
Normal file
@ -0,0 +1,75 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
/*
|
||||
* nld_7473.h
|
||||
*
|
||||
* DM7473: Dual Master-Slave J-K Flip-Flops with Clear and Complementary Outputs
|
||||
* DM7473A: Dual Negative-Edge-Triggered Master-Slave J-K Flip-Flops with Clear and Complementary Outputs
|
||||
*
|
||||
* +--------------+
|
||||
* CLK1 |1 ++ 14| J1
|
||||
* CLR1 |2 13| QQ1
|
||||
* K1 |3 12| Q1
|
||||
* VCC |4 7473 11| GND
|
||||
* CLK2 |5 10| K2
|
||||
* CLR2 |6 9| Q2
|
||||
* J2 |7 8| QQ2
|
||||
* +--------------+
|
||||
*
|
||||
*
|
||||
* Function table 73
|
||||
*
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* | CLR | 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 |
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* _
|
||||
* * = _| |_
|
||||
*
|
||||
* This is positive triggered, J and K
|
||||
* are latched during clock high and
|
||||
* transferred when CLK falls.
|
||||
*
|
||||
* Function table 73A
|
||||
*
|
||||
* +-----+-----+-----+---++---+-----+
|
||||
* | CLR | 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 73A is negative triggered.
|
||||
*
|
||||
* Naming conventions follow Fairchild Semiconductor datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_7473_H_
|
||||
#define NLD_7473_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_7473A(name, cCLK, cJ, cK, cCLR) \
|
||||
NET_REGISTER_DEV(TTL_7473A, name) \
|
||||
NET_CONNECT(name, CLK, cCLK) \
|
||||
NET_CONNECT(name, J, cJ) \
|
||||
NET_CONNECT(name, K, cK) \
|
||||
NET_CONNECT(name, CLRQ, cCLRQ)
|
||||
|
||||
#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 /* NLD_74107_H_ */
|
131
src/lib/netlist/devices/nld_am2847.cpp
Normal file
131
src/lib/netlist/devices/nld_am2847.cpp
Normal file
@ -0,0 +1,131 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_am2847.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_am2847.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(Am2847_shifter)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(Am2847_shifter)
|
||||
, m_RC(*this, "RC")
|
||||
, m_IN(*this, "IN")
|
||||
, m_buffer(*this, "m_buffer", 0)
|
||||
, m_OUT(*this, "OUT")
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
void shift();
|
||||
|
||||
logic_input_t m_RC;
|
||||
logic_input_t m_IN;
|
||||
|
||||
state_var<uint_fast32_t[5]> m_buffer;
|
||||
|
||||
logic_output_t m_OUT;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(AM2847)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(AM2847)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_CP(*this, "CP")
|
||||
, m_last_CP(*this, "m_last_CP", 0)
|
||||
{
|
||||
register_subalias("OUTA", m_A.m_OUT);
|
||||
register_subalias("OUTB", m_B.m_OUT);
|
||||
register_subalias("OUTC", m_C.m_OUT);
|
||||
register_subalias("OUTD", m_D.m_OUT);
|
||||
register_subalias("INA", m_A.m_IN);
|
||||
register_subalias("INB", m_B.m_IN);
|
||||
register_subalias("INC", m_C.m_IN);
|
||||
register_subalias("IND", m_D.m_IN);
|
||||
register_subalias("RCA", m_A.m_RC);
|
||||
register_subalias("RCB", m_B.m_RC);
|
||||
register_subalias("RCC", m_C.m_RC);
|
||||
register_subalias("RCD", m_D.m_RC);
|
||||
}
|
||||
|
||||
NETLIB_RESETI();
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(Am2847_shifter) m_A;
|
||||
NETLIB_SUB(Am2847_shifter) m_B;
|
||||
NETLIB_SUB(Am2847_shifter) m_C;
|
||||
NETLIB_SUB(Am2847_shifter) m_D;
|
||||
logic_input_t m_CP;
|
||||
|
||||
state_var<uint_fast32_t> m_last_CP;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(AM2847_dip, AM2847)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(AM2847_dip, AM2847)
|
||||
{
|
||||
register_subalias("1", m_A.m_OUT);
|
||||
register_subalias("2", m_A.m_RC);
|
||||
register_subalias("3", m_A.m_IN);
|
||||
register_subalias("4", m_B.m_OUT);
|
||||
register_subalias("5", m_B.m_RC);
|
||||
register_subalias("6", m_B.m_IN);
|
||||
register_subalias("7", m_C.m_OUT);
|
||||
|
||||
register_subalias("9", m_C.m_RC);
|
||||
register_subalias("10", m_C.m_IN);
|
||||
register_subalias("11", m_CP);
|
||||
register_subalias("13", m_D.m_OUT);
|
||||
register_subalias("14", m_D.m_RC);
|
||||
register_subalias("15", m_D.m_IN);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
NETLIB_RESET(AM2847)
|
||||
{
|
||||
m_last_CP = 0;
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(AM2847)
|
||||
{
|
||||
unsigned cp = m_CP();
|
||||
if (cp != m_last_CP && cp != 0)
|
||||
{
|
||||
m_A.shift();
|
||||
m_B.shift();
|
||||
m_C.shift();
|
||||
m_D.shift();
|
||||
}
|
||||
|
||||
m_last_CP = m_CP();
|
||||
}
|
||||
|
||||
inline NETLIB_FUNC_VOID(Am2847_shifter, shift, (void))
|
||||
{
|
||||
unsigned out = m_buffer[0] & 1;
|
||||
uint_fast32_t in = (m_RC() ? out : m_IN());
|
||||
for (std::size_t i=0; i < 5; i++)
|
||||
{
|
||||
uint_fast32_t shift_in = (i == 4) ? in : m_buffer[i + 1];
|
||||
m_buffer[i] >>= 1;
|
||||
m_buffer[i] |= shift_in << 31;
|
||||
}
|
||||
|
||||
m_OUT.push(out, NLTIME_FROM_NS(200));
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(AM2847)
|
||||
NETLIB_DEVICE_IMPL(AM2847_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
32
src/lib/netlist/devices/nld_am2847.h
Normal file
32
src/lib/netlist/devices/nld_am2847.h
Normal file
@ -0,0 +1,32 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_am2847.h
|
||||
*
|
||||
* Am2847: Quad 80-Bit Static Shift Register
|
||||
*
|
||||
* +--------------+
|
||||
* OUTA |1 ++ 16| VSS
|
||||
* RCA |2 15| IND
|
||||
* INA |3 14| RCD
|
||||
* OUTB |4 Am2847 13| OUTD
|
||||
* RCB |5 12| VGG
|
||||
* INB |6 11| CP
|
||||
* OUTC |7 10| INC
|
||||
* VDD |8 9| RCC
|
||||
* +--------------+
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_AM2847_H_
|
||||
#define NLD_AM2847_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_AM2847(name) \
|
||||
NET_REGISTER_DEV(TTL_AM2847, name)
|
||||
|
||||
#define TTL_AM2847_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_AM2847_DIP, name)
|
||||
|
||||
#endif /* NLD_AM2847_H_ */
|
152
src/lib/netlist/devices/nld_dm9334.cpp
Normal file
152
src/lib/netlist/devices/nld_dm9334.cpp
Normal file
@ -0,0 +1,152 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_dm9334.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "nld_dm9334.h"
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
namespace devices
|
||||
{
|
||||
NETLIB_OBJECT(DM9334)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(DM9334)
|
||||
, m_C(*this, "C")
|
||||
, m_E(*this, "E")
|
||||
, m_D(*this, "D")
|
||||
, m_A(*this, {{"A0", "A1", "A2"}})
|
||||
, m_Q(*this, {{"Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7"}})
|
||||
, m_last_C(*this, "m_last_C", 0)
|
||||
, m_last_E(*this, "m_last_E", 0)
|
||||
, m_last_D(*this, "m_last_D", 0)
|
||||
, m_last_A(*this, "m_last_A", 0)
|
||||
, m_last_Q(*this, "m_last_Q", 0)
|
||||
{
|
||||
}
|
||||
|
||||
NETLIB_RESETI();
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
logic_input_t m_C;
|
||||
logic_input_t m_E;
|
||||
logic_input_t m_D;
|
||||
object_array_t<logic_input_t, 3> m_A;
|
||||
object_array_t<logic_output_t, 8> m_Q;
|
||||
|
||||
state_var<unsigned> m_last_C;
|
||||
state_var<unsigned> m_last_E;
|
||||
state_var<unsigned> m_last_D;
|
||||
state_var<unsigned> m_last_A;
|
||||
state_var<unsigned> m_last_Q;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(DM9334_dip, DM9334)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(DM9334_dip, DM9334)
|
||||
{
|
||||
register_subalias("1", m_A[0]);
|
||||
register_subalias("2", m_A[1]);
|
||||
register_subalias("3", m_A[2]);
|
||||
register_subalias("4", m_Q[0]);
|
||||
register_subalias("5", m_Q[1]);
|
||||
register_subalias("6", m_Q[2]);
|
||||
register_subalias("7", m_Q[3]);
|
||||
|
||||
register_subalias("9", m_Q[4]);
|
||||
register_subalias("10", m_Q[5]);
|
||||
register_subalias("11", m_Q[6]);
|
||||
register_subalias("12", m_Q[7]);
|
||||
register_subalias("13", m_D);
|
||||
register_subalias("14", m_E);
|
||||
register_subalias("15", m_C);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
NETLIB_RESET(DM9334)
|
||||
{
|
||||
m_last_C = 0;
|
||||
m_last_E = 0;
|
||||
m_last_D = 0;
|
||||
m_last_A = 0;
|
||||
m_last_Q = 0;
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(DM9334)
|
||||
{
|
||||
uint_fast8_t a = 0;
|
||||
for (std::size_t i=0; i<3; i++)
|
||||
{
|
||||
a |= (m_A[i]() << i);
|
||||
}
|
||||
|
||||
netlist_time delay = NLTIME_FROM_NS(27); // Clear Low to High Level Output (not documented, making reasonable guess)
|
||||
|
||||
if (a != m_last_A)
|
||||
{
|
||||
delay = NLTIME_FROM_NS(35);
|
||||
}
|
||||
else if (m_D() != m_last_D)
|
||||
{
|
||||
if (m_last_D)
|
||||
{
|
||||
delay = NLTIME_FROM_NS(28);
|
||||
}
|
||||
else
|
||||
{
|
||||
delay = NLTIME_FROM_NS(35);
|
||||
}
|
||||
}
|
||||
else if (m_E() != m_last_E)
|
||||
{
|
||||
if (m_last_E)
|
||||
{
|
||||
delay = NLTIME_FROM_NS(27);
|
||||
}
|
||||
else
|
||||
{
|
||||
delay = NLTIME_FROM_NS(28);
|
||||
}
|
||||
}
|
||||
|
||||
uint_fast8_t q = m_last_Q;
|
||||
|
||||
if (!m_C())
|
||||
{
|
||||
if (m_E())
|
||||
{
|
||||
q = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
q = m_D() << a;
|
||||
}
|
||||
}
|
||||
else if(!m_E())
|
||||
{
|
||||
q &= ~(1 << a);
|
||||
q |= (m_D() << a);
|
||||
}
|
||||
|
||||
m_last_C = m_C();
|
||||
m_last_E = m_E();
|
||||
m_last_D = m_D();
|
||||
m_last_A = a;
|
||||
|
||||
if (q != m_last_Q)
|
||||
{
|
||||
m_last_Q = q;
|
||||
for (std::size_t i=0; i<8; i++)
|
||||
m_Q[i].push((q >> i) & 1, delay);
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(DM9334)
|
||||
NETLIB_DEVICE_IMPL(DM9334_dip)
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
76
src/lib/netlist/devices/nld_dm9334.h
Normal file
76
src/lib/netlist/devices/nld_dm9334.h
Normal file
@ -0,0 +1,76 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ryan Holtz
|
||||
/*
|
||||
* nld_DM9334.h
|
||||
*
|
||||
* DM9334: 8-Bit Addressable Latch
|
||||
*
|
||||
* +--------------+
|
||||
* A0 |1 ++ 16| VCC
|
||||
* A1 |2 15| /C
|
||||
* A2 |3 14| /E
|
||||
* Q0 |4 DM9334 13| D
|
||||
* Q1 |5 12| Q7
|
||||
* Q2 |6 11| Q6
|
||||
* Q3 |7 10| Q5
|
||||
* GND |8 9| Q4
|
||||
* +--------------+
|
||||
*
|
||||
* +---+---++---++---+---+---++---+---+---+---+---+---+---+---+
|
||||
* | C | E || D || A0| A1| A2|| Q0| Q1| Q2| Q3| Q4| Q5| Q6| Q7|
|
||||
* +===+===++===++===+===+===++===+===+===+===+===+===+===+===+
|
||||
* | 1 | 0 || X || X | X | X || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* +---+---++---++---+---+---++---+---+---+---+---+---+---+---+
|
||||
* | 1 | 1 || 0 || 0 | 0 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 0 | 0 | 0 || 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 0 | 0 | 1 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 0 | 0 | 1 || 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 0 | 1 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 0 | 1 | 0 || 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 0 | 1 | 1 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 0 | 1 | 1 || 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 1 | 0 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 1 | 0 | 0 || 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 1 | 0 | 1 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 1 | 0 | 1 || 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
|
||||
* | 1 | 1 || 0 || 1 | 1 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 1 | 1 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
|
||||
* | 1 | 1 || 0 || 1 | 1 | 1 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
* | 1 | 1 || 1 || 1 | 1 | 1 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
|
||||
* +---+---++---++---+---+---++---+---+---+---+---+---+---+---+
|
||||
* | 0 | 0 || X || X | X | X || P | P | P | P | P | P | P | P |
|
||||
* +---+---++---++---+---+---++---+---+---+---+---+---+---+---+
|
||||
* | 0 | 1 || 0 || 0 | 0 | 0 || 0 | P | P | P | P | P | P | P |
|
||||
* | 0 | 1 || 1 || 0 | 0 | 0 || 1 | P | P | P | P | P | P | P |
|
||||
* | 0 | 1 || 0 || 0 | 0 | 1 || P | 0 | P | P | P | P | P | P |
|
||||
* | 0 | 1 || 1 || 0 | 0 | 1 || P | 1 | P | P | P | P | P | P |
|
||||
* | 0 | 1 || 0 || 0 | 1 | 0 || P | P | 0 | P | P | P | P | P |
|
||||
* | 0 | 1 || 1 || 0 | 1 | 0 || P | P | 1 | P | P | P | P | P |
|
||||
* | 0 | 1 || 0 || 0 | 1 | 1 || P | P | P | 0 | P | P | P | P |
|
||||
* | 0 | 1 || 1 || 0 | 1 | 1 || P | P | P | 1 | P | P | P | P |
|
||||
* | 0 | 1 || 0 || 1 | 0 | 0 || P | P | P | P | 0 | P | P | P |
|
||||
* | 0 | 1 || 1 || 1 | 0 | 0 || P | P | P | P | 1 | P | P | P |
|
||||
* | 0 | 1 || 0 || 1 | 0 | 1 || P | P | P | P | P | 0 | P | P |
|
||||
* | 0 | 1 || 1 || 1 | 0 | 1 || P | P | P | P | P | 1 | P | P |
|
||||
* | 0 | 1 || 0 || 1 | 1 | 0 || P | P | P | P | P | P | 0 | P |
|
||||
* | 0 | 1 || 1 || 1 | 1 | 0 || P | P | P | P | P | P | 1 | P |
|
||||
* | 0 | 1 || 0 || 1 | 1 | 1 || P | P | P | P | P | P | P | 0 |
|
||||
* | 0 | 1 || 1 || 1 | 1 | 1 || P | P | P | P | P | P | P | 1 |
|
||||
* +---+---++---++---+---+---++---+---+---+---+---+---+---+---+
|
||||
*
|
||||
* Naming convention attempts to follow Texas Instruments / National Semiconductor datasheet Literature Number SNOS382A
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NLD_DM9334_H_
|
||||
#define NLD_DM9334_H_
|
||||
|
||||
#include "nl_setup.h"
|
||||
|
||||
#define TTL_DM9334(name) \
|
||||
NET_REGISTER_DEV(TTL_DM9334, name)
|
||||
|
||||
#define TTL_DM9334_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_DM9334_DIP, name)
|
||||
|
||||
#endif /* NLD_DM9334_H_ */
|
Loading…
Reference in New Issue
Block a user