from pycircuit.circuit import numeric, SubCircuit, gnd from pycircuit.circuit.elements import VCVS, VCCS, C c = SubCircuit() iplus, iminus, int0, oplus, ominus = c.add_nodes("1", "2", "3", "4", "5") c["vccs"] = VCCS(iplus, iminus, int0, gnd, gm=1.0) c["vcvs"] = VCVS(int0, gnd, oplus, ominus, g=-1.0) c["c"] = C(int0, gnd, c=1.0)
# Copyright (c) 2008 Pycircuit Development Team # See LICENSE for details. from pycircuit.circuit import SubCircuit, VCCS, G, C, IS, VS, Parameter, gnd, \ R, symbolic, TwoPortAnalysis, AC, Noise from pycircuit.circuit.mos import MOS from sympy import Symbol, simplify, ratsimp, sympify, factor, limit from numpy import array, zeros from copy import copy from pycircuit.circuit.symbolicapprox import * ## Create regulated cascode circuit c = SubCircuit() nin, nout, n1 = c.add_nodes('in', 'out', 'n1') gm1, gm2, gds1, gds2, Cgs1, Cgs2 = [ Symbol(symname, real=True) for symname in 'gm1,gm2,gds1,gds2,Cgs1,Cgs2'.split(',') ] c['M2'] = MOS(nin, n1, gnd, gnd, gm=gm2, gds=gds2, Cgs=0 * Cgs1) c['M1'] = MOS(n1, nout, nin, nin, gm=gm1, gds=gds1, Cgs=0 * Cgs2) #c['r'] = R(nin, gnd, r = Symbol('Rs', real=True)) ## Perform twoport analysis with noise twoportana = TwoPortAnalysis(c, nin, gnd,
## The test vehicle is a 1dB tee resistive attenuator ## designed for 50ohm matching impedance ## o---R1----*---R3---o ## | ## R2 ## | ## o---------*--------o ## T = 290 R1, R3 = 3., 3. R2 = 433. circuit.default_toolkit = numeric cir = SubCircuit() nin,n1,nout = cir.add_nodes('nin','n1','nout') cir['R1'] = R(nin,n1,r=R1) cir['R2'] = R(n1,gnd,r=R2) cir['R3'] = R(nout,n1,r=R3) # S,Z,Y-parameters Sref = np.array([[0.00219681, 0.88898926],[0.88898926, 0.00219681]]) Zref = np.array([[R1+R2, R2],[R2, R2+R3]]) Yref = np.linalg.inv(Zref) Aref = np.array([[-Yref[1,1]/Yref[1,0], -1/Yref[1,0]], [Yref[0,1]-Yref[0,0]*Yref[1,1]/Yref[1,0], -Yref[0,0]/Yref[1,0]]]) ## Using Bosma's theorem CYref = 4 * kboltzmann * T * np.real(Yref) CZref = 4 * kboltzmann * T * np.real(Zref)
# Copyright (c) 2008 Pycircuit Development Team # See LICENSE for details. from pycircuit.circuit import SubCircuit, VCCS, G, C, IS, VS, Parameter, gnd, \ R, symbolic, TwoPortAnalysis, AC, Noise from pycircuit.circuit.mos import MOS from sympy import Symbol, simplify, ratsimp, sympify, factor, limit from numpy import array, zeros from copy import copy from pycircuit.circuit.symbolicapprox import * ## Create regulated cascode circuit c = SubCircuit() nin, nout, n1 = c.add_nodes('in', 'out', 'n1') gm1, gm2, gds1, gds2, Cgs1, Cgs2= [Symbol(symname, real=True) for symname in 'gm1,gm2,gds1,gds2,Cgs1,Cgs2'.split(',')] c['M2'] = MOS(nin, n1, gnd, gnd, gm = gm2, gds = gds2, Cgs=0*Cgs1) c['M1'] = MOS(n1, nout, nin, nin, gm = gm1, gds = gds1, Cgs=0*Cgs2) #c['r'] = R(nin, gnd, r = Symbol('Rs', real=True)) ## Perform twoport analysis with noise twoportana = TwoPortAnalysis(c, nin, gnd, nout, gnd, noise=True, noise_outquantity='i', toolkit=symbolic) res2port = twoportana.solve(Symbol('s'), complexfreq=True) y11 = res2port['twoport'].Y[0,0]
from pycircuit.circuit import numeric, SubCircuit, gnd from pycircuit.circuit.elements import VCVS, VCCS, C c = SubCircuit() iplus,iminus,int0,oplus,ominus = c.add_nodes('1', '2', '3', '4', '5') c['vccs'] = VCCS(iplus,iminus,int0,gnd,gm=1.) c['vcvs'] = VCVS(int0,gnd,oplus,ominus,g=-1.) c['c'] = C(int0,gnd, c=1.)