Previous 199869 Revisions Next

r31066 Saturday 21st June, 2014 at 20:54:41 UTC by Couriersud
Added CD4020 device.
[src/emu/netlist]netlist.mak
[src/emu/netlist/devices]net_lib.c net_lib.h nld_4020.c* nld_4020.h* nld_4066.c nld_4066.h nld_cmos.h*

trunk/src/emu/netlist/devices/net_lib.c
r31065r31066
101101   ENTRY(gnd,                  GND,                    "-")
102102   ENTRY(switch2,              SWITCH2,                "-")
103103   ENTRY(nicRSFF,              NETDEV_RSFF,            "+S,R")
104    ENTRY(4020,                 CD_4020,                "+IP,RESET,VDD,VSS")
105    //ENTRY(4066,                 CD_4066,                "+A,B")
104106   ENTRY(7400,                 TTL_7400_NAND,          "+A,B")
105107   ENTRY(7402,                 TTL_7402_NOR,           "+A,B")
106108   ENTRY(7404,                 TTL_7404_INVERT,        "+A")
r31065r31066
127129   ENTRY(SN74LS629,            SN74LS629,              "CAP")
128130   ENTRY(9316,                 TTL_9316,               "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
129131   ENTRY(NE555,                NE555,                  "-")
130   ENTRY(4066_dip,             CD_4066_DIP,            "-")
132   ENTRY(4020_dip,             CD_4020_DIP,            "-")
133    ENTRY(4066_dip,             CD_4066_DIP,            "-")
131134   ENTRY(7400_dip,             TTL_7400_DIP,           "-")
132135   ENTRY(7402_dip,             TTL_7402_DIP,           "-")
133136   ENTRY(7404_dip,             TTL_7404_DIP,           "-")
trunk/src/emu/netlist/devices/net_lib.h
r31065r31066
5454#include "nld_signal.h"
5555#include "nld_system.h"
5656
57#include "nld_4020.h"
5758#include "nld_4066.h"
5859#include "nld_7400.h"
5960#include "nld_7402.h"
trunk/src/emu/netlist/devices/nld_4020.c
r0r31066
1/*
2 * nld_4020.c
3 *
4 */
5
6#include "nld_4020.h"
7
8NETLIB_START(4020)
9{
10   register_sub(sub, "sub");
11
12   register_input("RESET", m_RESET);
13    register_subalias("IP", sub.m_IP);
14    register_subalias("Q1", sub.m_Q[0]);
15    register_subalias("Q4", sub.m_Q[3]);
16    register_subalias("Q5", sub.m_Q[4]);
17    register_subalias("Q6", sub.m_Q[5]);
18    register_subalias("Q7", sub.m_Q[6]);
19    register_subalias("Q8", sub.m_Q[7]);
20    register_subalias("Q9", sub.m_Q[8]);
21    register_subalias("Q10", sub.m_Q[9]);
22    register_subalias("Q11", sub.m_Q[10]);
23    register_subalias("Q12", sub.m_Q[11]);
24    register_subalias("Q13", sub.m_Q[12]);
25    register_subalias("Q14", sub.m_Q[13]);
26    register_subalias("VDD", m_supply.m_vdd);
27    register_subalias("VSS", m_supply.m_vss);
28}
29
30NETLIB_RESET(4020)
31{
32   sub.do_reset();
33}
34
35
36NETLIB_START(4020_sub)
37{
38   register_input("IP", m_IP);
39
40   register_output("Q1", m_Q[0]);
41    register_output("Q4", m_Q[3]);
42    register_output("Q5", m_Q[4]);
43    register_output("Q6", m_Q[5]);
44    register_output("Q7", m_Q[6]);
45    register_output("Q8", m_Q[8]);
46    register_output("Q9", m_Q[8]);
47    register_output("Q10", m_Q[9]);
48    register_output("Q11", m_Q[10]);
49    register_output("Q12", m_Q[11]);
50    register_output("Q13", m_Q[12]);
51   register_output("Q14", m_Q[13]);
52
53   save(NAME(m_cnt));
54}
55
56NETLIB_RESET(4020_sub)
57{
58   m_IP.set_state(netlist_input_t::STATE_INP_HL);
59   m_cnt = 0;
60}
61
62NETLIB_UPDATE(4020_sub)
63{
64   UINT8 cnt = m_cnt;
65    cnt = ( cnt + 1) & 0x3fff;
66    update_outputs(cnt);
67   m_cnt = cnt;
68}
69
70NETLIB_UPDATE(4020)
71{
72
73    if (INPLOGIC(m_RESET))
74    {
75        sub.m_cnt = 0;
76        static const netlist_time reset_time = netlist_time::from_nsec(140);
77        OUTLOGIC(sub.m_Q[0], 0, reset_time);
78        for (int i=3; i<14; i++)
79            OUTLOGIC(sub.m_Q[i], 0, reset_time);
80    }
81
82}
83
84inline NETLIB_FUNC_VOID(4020_sub, update_outputs, (const UINT16 cnt))
85{
86   const netlist_time out_delayQ1 = netlist_time::from_nsec(180);
87    const netlist_time out_delayQn = netlist_time::from_nsec(100);
88
89    OUTLOGIC(m_Q[0], 0, out_delayQ1);
90    for (int i=3; i<14; i++)
91        OUTLOGIC(m_Q[i], (cnt >> i) & 1, out_delayQn);
92}
93
94NETLIB_START(4020_dip)
95{
96   NETLIB_NAME(4020)::start();
97
98    /*          +--------------+
99    *      Q12 |1     ++    16| VDD
100    *      Q13 |2           15| Q11
101    *      Q14 |3           14| Q10
102    *       Q6 |4    4020   13| Q8
103    *       Q5 |5           12| Q9
104    *       Q7 |6           11| RESET
105    *       Q4 |7           10| IP (Input pulses)
106    *      VSS |8            9| Q1
107    *          +--------------+
108    */
109
110   register_subalias("1", sub.m_Q[11]);
111   register_subalias("2", sub.m_Q[12]);
112   register_subalias("3", sub.m_Q[13]);
113   register_subalias("4", sub.m_Q[5]);
114   register_subalias("5", sub.m_Q[4]);
115   register_subalias("6", sub.m_Q[6]);
116   register_subalias("7", sub.m_Q[3]);
117    register_subalias("8", m_supply.m_vss);
118
119   register_subalias("9", sub.m_Q[1]);
120   register_subalias("10", sub.m_IP);
121   register_subalias("11", m_RESET);
122   register_subalias("12", sub.m_Q[8]);
123   register_subalias("13", sub.m_Q[7]);
124   register_subalias("14", sub.m_Q[9]);
125   register_subalias("15", sub.m_Q[10]);
126    register_subalias("16", m_supply.m_vdd);
127}
128
129NETLIB_UPDATE(4020_dip)
130{
131   NETLIB_NAME(4020)::update();
132}
133
134NETLIB_RESET(4020_dip)
135{
136   NETLIB_NAME(4020)::reset();
137}
Property changes on: trunk/src/emu/netlist/devices/nld_4020.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/emu/netlist/devices/nld_4020.h
r0r31066
1// license:GPL-2.0+
2// copyright-holders:Couriersud
3/*
4 * nld_4020.h
5 *
6 *  CD4020: CMOS Ripple-Carry Binary Counters/Dividers
7 *
8 *          +--------------+
9 *      Q12 |1     ++    16| VDD
10 *      Q13 |2           15| Q11
11 *      Q14 |3           14| Q10
12 *       Q6 |4    4020   13| Q8
13 *       Q5 |5           12| Q9
14 *       Q7 |6           11| RESET
15 *       Q4 |7           10| IP (Input pulses)
16 *      VSS |8            9| Q1
17 *          +--------------+
18 *
19 *
20 *  Naming conventions follow Texas Instruments datasheet
21 *
22 *  FIXME: Timing depends on VDD-VSS
23 *         This needs a cmos d-a/a-d proxy implementation.
24 *
25 */
26
27#ifndef NLD_4020_H_
28#define NLD_4020_H_
29
30#include "../nl_base.h"
31#include "nld_cmos.h"
32
33#define CD_4020(_name, _IP, _RESET, _VDD, _VSS)                                \
34      NET_REGISTER_DEV(4020, _name)                                          \
35      NET_CONNECT(_name, IP, _IP)                                            \
36      NET_CONNECT(_name, RESET,  _RESET)                                     \
37        NET_CONNECT(_name, VDD,  _VDD)                                         \
38        NET_CONNECT(_name, VSS,  _VSS)
39
40#define CD_4020_DIP(_name)                                                     \
41      NET_REGISTER_DEV(4020_dip, _name)
42
43NETLIB_SUBDEVICE(4020_sub,
44   ATTR_HOT void update_outputs(const UINT16 cnt);
45
46   netlist_ttl_input_t m_IP;
47
48   netlist_state_t<UINT16> m_cnt;
49
50   netlist_ttl_output_t m_Q[14];
51);
52
53NETLIB_DEVICE(4020,
54   NETLIB_NAME(4020_sub) sub;
55    NETLIB_NAME(vdd_vss) m_supply;
56    netlist_ttl_input_t m_RESET;
57);
58
59NETLIB_DEVICE_DERIVED(4020_dip, 4020,
60);
61
62#endif /* NLD_4020_H_ */
Property changes on: trunk/src/emu/netlist/devices/nld_4020.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/netlist/devices/nld_4066.c
r31065r31066
55
66#include "nld_4066.h"
77
8NETLIB_START(vdd_vss)
9{
10}
118
12NETLIB_RESET(vdd_vss)
13{
14}
15
16NETLIB_UPDATE(vdd_vss)
17{
18}
19
209NETLIB_START(4066)
2110{
2211   register_input("CTL", m_control);
trunk/src/emu/netlist/devices/nld_4066.h
r31065r31066
2525#define NLD_4066_H_
2626
2727#include "../nl_base.h"
28#include "../analog/nld_twoterm.h"
28#include "nld_cmos.h"
2929
3030#define CD_4066_DIP(_name)                                                         \
3131      NET_REGISTER_DEV(4066_dip, _name)
3232
33NETLIB_SUBDEVICE(vdd_vss,
34   netlist_analog_input_t m_vdd;
35   netlist_analog_input_t m_vss;
36
37public:
38   ATTR_HOT inline double vdd() { return INPANALOG(m_vdd); }
39   ATTR_HOT inline double vss() { return INPANALOG(m_vss); }
40);
41
4233NETLIB_SUBDEVICE(4066,
4334public:
4435
trunk/src/emu/netlist/devices/nld_cmos.h
r0r31066
1/*
2 * nld_cmos.h
3 *
4 */
5
6#ifndef NLD_CMOS_H_
7#define NLD_CMOS_H_
8
9#include "../nl_base.h"
10#include "../analog/nld_twoterm.h"
11
12class nld_vdd_vss : public netlist_device_t
13{
14    public:
15        nld_vdd_vss ()
16        : netlist_device_t()
17            { }
18
19        netlist_analog_input_t m_vdd;
20        netlist_analog_input_t m_vss;
21
22    protected:
23        ATTR_HOT void update() {};
24        ATTR_HOT void start()  {};
25        ATTR_HOT void reset()  {};
26
27public:
28    ATTR_HOT inline double vdd() { return INPANALOG(m_vdd); }
29    ATTR_HOT inline double vss() { return INPANALOG(m_vss); }
30};
31
32#endif /* NLD_CMOS_H_ */
Property changes on: trunk/src/emu/netlist/devices/nld_cmos.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/netlist/netlist.mak
r31065r31066
3333   $(NETLISTOBJ)/analog/nld_solver.o \
3434   $(NETLISTOBJ)/analog/nld_switches.o \
3535   $(NETLISTOBJ)/analog/nld_twoterm.o \
36   $(NETLISTOBJ)/devices/nld_4020.o \
3637   $(NETLISTOBJ)/devices/nld_4066.o \
3738   $(NETLISTOBJ)/devices/nld_7400.o \
3839   $(NETLISTOBJ)/devices/nld_7402.o \

Previous 199869 Revisions Next


© 1997-2024 The MAME Team