1 // license:BSD-3-Clause 2 // copyright-holders:Ryan Holtz 3 4 #include "devices/net_lib.h" 5 6 // 7 // ICL8038 is broadly similar to a 566 VCO, and can be simulated partially as such. 8 // 9 10 NETLIST_START(ICL8038_DIP) 11 VCVS(VI, 1) 12 CCCS(CI1, -1) 13 CCCS(CI2, 2) 14 SYS_COMPD(COMP) 15 SYS_DSW2(SW) 16 VCVS(VO, 1) 17 RES(R_SHUNT, RES_R(50)) 18 19 PARAM(VO.RO, 50) 20 PARAM(COMP.MODEL, "FAMILY(TYPE=CUSTOM IVL=0.16 IVH=0.4 OVL=0.01 OVH=0.01 ORL=50 ORH=50)") 21 PARAM(SW.GOFF, 0) // This has to be zero to block current sources 22 23 NET_C(VI.OP, CI1.IN, CI2.IN) 24 NET_C(CI1.OP, VO.IP) 25 NET_C(COMP.Q, SW.I) 26 NET_C(CI2.OP, SW.2) 27 NET_C(COMP.VCC, R_SHUNT.1) 28 NET_C(SW.1, R_SHUNT.2) 29 NET_C(SW.3, VO.IP) 30 NET_C(VO.OP, COMP.IN) 31 32 // Avoid singular Matrix due to G=0 switch 33 RES(RX1, 1e10) 34 RES(RX2, 1e10) 35 NET_C(RX1.1, SW.1) 36 NET_C(RX2.1, SW.3) 37 38 NET_C(COMP.GND, RX1.2, RX2.2) 39 40 RES(R1, 5000) 41 RES(R2, 5000) 42 RES(R3, 5000) 43 44 // Square output wave 45 VCVS(V_SQR, 1) 46 NET_C(COMP.Q, V_SQR.IP) 47 48 NET_C(COMP.GND, SW.GND, VI.ON, VI.IN, CI1.ON, CI2.ON, VO.IN, VO.ON, R2.2, V_SQR.IN, V_SQR.ON) 49 NET_C(COMP.VCC, SW.VCC, R1.2) 50 NET_C(COMP.IP, R1.1, R2.1, R3.1) 51 NET_C(COMP.Q, R3.2) 52 53 ALIAS(11, VI.ON) // GND 54 ALIAS(9, V_SQR.OP) // Square out 55 ALIAS(3, VO.OP) // Triag out 56 ALIAS(8, VI.IP) // VC 57 ALIAS(4, CI1.IP) // R1 58 ALIAS(5, CI2.IP) // R2 59 ALIAS(10, VO.IP) // C1 60 ALIAS(6, COMP.VCC) // V+ 61 NETLIST_END() 62