330 lines
9.9 KiB
Plaintext
330 lines
9.9 KiB
Plaintext
* Copyright (c) 1998-2022 Analog Devices, Inc. All rights reserved.
|
|
*
|
|
.subckt ADA4930-1 1 2 3 4 5 6 7 8 9 10
|
|
R11 BOOST1 N024 {Rf1} Noiseless
|
|
C2 Clamp COM {Cfp1}
|
|
G1 COM BOOST1 Clamp N024 1k
|
|
C1 BOOST1 COM 1f
|
|
C3 N024 N028 {Cboost1}
|
|
L1 N028 N029 {Lboost1}
|
|
R2 N029 COM {Rg1} Noiseless
|
|
R1 BOOST1 COM 1 Noiseless
|
|
R32 BOOST2 N025 {Rf2} Noiseless
|
|
G24 COM BOOST2 BOOST1 N025 1k
|
|
C22 BOOST2 COM 1f
|
|
C23 N025 N030 {Cboost2}
|
|
L2 N030 N031 {Lboost2}
|
|
R33 N031 COM {Rg2} Noiseless
|
|
R34 BOOST2 COM 1 Noiseless
|
|
G25 COM N014 BOOST2 COM 1µ
|
|
R35 N014 COM 1Meg Noiseless
|
|
C4 7 COM 1p Rpar=8.3k Noiseless
|
|
R14 COM N054 1Meg Noiseless
|
|
C5 N054 COM {Cfp1o}
|
|
B1 COM Zo_inp I=0.5m*(V(Avo,COM)+ V(ComAdj,COM)) Rpar=1k Cpar=0.1f
|
|
B2 COM Zo_inn I=0.5m*V(ComAdj, Avo) Rpar=1k Cpar=0.1f
|
|
Cinp COM N012 {Ccm}
|
|
Cinn N017 COM {Ccm}
|
|
R22 N012 1 {Rser} Noiseless
|
|
Cdiff N012 N017 {Cdiff}
|
|
R21 N017 2 {Rser} Noiseless
|
|
R12 N012 N017 {Rdiff} Noiseless
|
|
R13 COM N012 {Rcm} Noiseless
|
|
R23 N017 COM {Rcm} Noiseless
|
|
R24 Zo_outp ComSense 1Meg Noiseless
|
|
R25 ComSense Zo_outn 1Meg Noiseless
|
|
R7 9 3 1m Noiseless
|
|
R26 8 4 1m Noiseless
|
|
C6 N036 N035 {C1a_CMR}
|
|
G9 COM N035 N050 COM {G1_CMR}
|
|
R28 N035 COM 1 Noiseless
|
|
R29 N036 N035 {R1a_CMR} Noiseless
|
|
R30 N036 COM {R2a_CMR} Noiseless
|
|
R31 N039 N040 {R1b_CMR} Noiseless
|
|
R42 N040 COM {R2b_CMR} Noiseless
|
|
G10 COM N041 N040 COM {G2_CMR}
|
|
C7 N040 N039 {C1b_CMR}
|
|
G11 COM N037 N036 COM 1
|
|
R44 N043 COM 1 Noiseless
|
|
R45 N043 N044 {R1c_CMR} Noiseless
|
|
R46 N044 COM {R2c_CMR} Noiseless
|
|
G12 COM CMR N044 COM {G3_CMR}
|
|
C8 N044 N043 {C1c_CMR}
|
|
R47 CMR COM 1 Noiseless
|
|
R48 N041 N042 {R1b_CMR} Noiseless
|
|
R49 N042 COM {R2b_CMR} Noiseless
|
|
G13 COM N043 N042 COM {G2_CMR}
|
|
C9 N042 N041 {C1b_CMR}
|
|
R50 N041 COM 1 Noiseless
|
|
C10 N038 N037 {C1a_CMR}
|
|
R51 N037 COM 1 Noiseless
|
|
R52 N038 N037 {R1a_CMR} Noiseless
|
|
R53 N038 COM {R2a_CMR} Noiseless
|
|
G14 COM N039 N038 COM {G1a_CMR}
|
|
B4 COM N050 I=1m*((V(1,COM)+ V(2,COM))/2)
|
|
R54 N050 COM 1k Noiseless
|
|
G15 COM N005 IVR COM 1k
|
|
R55 COM N005 1m Noiseless
|
|
C11 N005 COM 1f
|
|
G16 N006 N007 CMR COM 1m
|
|
R56 N007 N006 1k Noiseless
|
|
C12 N058 N057 {C1a_PSRp}
|
|
G17 COM N057 5 6 {G1_PSRp}
|
|
R57 N057 COM 1 Noiseless
|
|
R58 N058 N057 {R1a_PSRp} Noiseless
|
|
R59 N058 COM {R2a_PSRp} Noiseless
|
|
R60 N059 N060 {R1b_PSRp} Noiseless
|
|
R61 N060 COM {R2b_PSRp} Noiseless
|
|
G18 COM PSR N060 COM {G2_PSRp}
|
|
C13 N060 N059 {C1b_PSRp}
|
|
R62 N059 COM 1 Noiseless
|
|
R63 PSR COM 1 Noiseless
|
|
G19 COM N059 N058 COM 1
|
|
G20 N007 N008 PSR COM 1m
|
|
R64 N008 N007 1k Noiseless
|
|
R65 N004 COM 100k Noiseless
|
|
R66 E_n COM 100k Noiseless
|
|
A2 COM COM COM COM COM COM N004 COM OTA G=10u Iout=1m En={fA}/(freq**{M}) Vhigh=1k Vlow=-1k
|
|
A3 COM N004 COM COM COM COM E_n COM OTA G=10u Iout=1m En={BB/2} Vhigh=1k Vlow=-1k
|
|
G21 N008 N009 E_n COM 1m
|
|
R67 N009 N008 1k Noiseless
|
|
C14 BAL N061 {C1a_BAL}
|
|
G32 COM N061 8 9 {G1_BAL}
|
|
R70 N061 COM 1 Noiseless
|
|
R71 BAL N061 {R1a_BAL} Noiseless
|
|
R72 BAL COM {R2a_BAL} Noiseless
|
|
G8 COM N047 7 COM 1k
|
|
R27 COM N047 1m Noiseless
|
|
C15 N047 COM 1f
|
|
G33 N047 N046 BAL COM 1m
|
|
R73 N046 N047 1k Noiseless
|
|
R81 N006 N005 1k Noiseless
|
|
B5 N005 N006 I=1m*{Vos+Drift* (Temp-27)}
|
|
BIb N012 COM I={Ib}+{Ibd}* (Temp-27)
|
|
BIos N017 COM I={Ib-Ios}+{Ibd}* (Temp-27)
|
|
A6 5 6 COM COM COM COM N053 COM SCHMITT Vt={Vs_min} Vh=0 Trise=10n
|
|
A8 5 6 COM COM COM N052 COM COM SCHMITT Vt={Vs_max} Vh=0 Trise=10n
|
|
A9 N052 COM N053 COM _SHDN COM EN COM AND Trise={ENTon} Tfall={ENToff}
|
|
G34 0 Vcc_Int 5 0 1k
|
|
G35 0 Vee_Int 6 0 1k
|
|
R18 Vcc_Int 0 1m Noiseless
|
|
R74 Vee_Int 0 1m Noiseless
|
|
C16 Vcc_Int 0 1µ
|
|
C17 Vee_Int 0 1µ
|
|
BIq 5 6 I=IF(V(EN,COM)>0.5, {Iq_on},{Iq_off})
|
|
G36 5 6 Vimonp Vimonn 1
|
|
R77 N051 Vcc_Int 1Meg Noiseless
|
|
R82 N051 Vee_Int 1Meg Noiseless
|
|
C20 N051 0 1
|
|
C21 COM 0 1n
|
|
E3 COM 0 N051 0 1
|
|
R83 COM 0 1Meg Noiseless
|
|
C32 EN COM 10p Rpar=1G
|
|
C34 N053 COM 10p Rpar=1G
|
|
C35 N052 COM 10p Rpar=1G
|
|
Vimonp Zo_outp 8 0
|
|
Vimonn Zo_outn 9 0
|
|
R85 Vimonp COM 1k Noiseless
|
|
F1 COM Vimonp Vimonp 1m
|
|
C36 Vimonp COM 159f
|
|
R86 Vimonn COM 1k Noiseless
|
|
F2 COM Vimonn Vimonn 1m
|
|
C37 Vimonn COM 159f
|
|
BIpd 10 COM I=IF(V(EN,COM)>0.5, {Ipd_on},{Ipd_off})
|
|
A7 10 6 COM COM COM COM _SHDN COM SCHMITT Vt={ENVt-10m} Vh={ENVh} Trise={ENTon} Tfall={ENToff}
|
|
S1 COM Gain1 EN COM ENA
|
|
S2 COM Clamp EN COM ENA
|
|
G37 COM IVR N012 COM 1m
|
|
R9 COM IVR 1k Noiseless
|
|
C18 IVR COM 1f
|
|
B10 COM CMpi I=1m*(V(5,COM)+{Vcm_max}) Cpar=1n
|
|
G38 COM CMp CMpi COM 1k
|
|
R10 COM CMp 1m Noiseless
|
|
B11 COM CMni I=1m*(V(6,COM)+{Vcm_min}) Cpar=1n
|
|
G39 COM CMn CMni COM 1k
|
|
R87 COM CMn 1m Noiseless
|
|
R88 CMpi COM 1k Noiseless
|
|
R89 CMni COM 1k Noiseless
|
|
DIP1 CMp IVR DI
|
|
DIN1 IVR CMn DI
|
|
C19 IVR CMn 1f
|
|
C31 IVR CMp 1f
|
|
Rx1 Zo_outp N021 {Rx_Zo} Noiseless
|
|
Rdummy1 Zo_outp COM {Rdummy_Zo} Noiseless
|
|
B12 COM N021 I=Uplim(Dnlim({G1_Zo}* V(Zo_inp,Zo_outp), {Izon}, 25m), {Izop}, 25m)
|
|
Rx2 Zo_outn N032 {Rx_Zo} Noiseless
|
|
Rdummy2 Zo_outn COM {Rdummy_Zo} Noiseless
|
|
B13 COM N032 I=Uplim(Dnlim({G1_Zo}* V(Zo_inn,Zo_outn), {Izon}, 25m), {Izop}, 25m)
|
|
B18 COM Clamp I=Uplim(Dnlim({Avo2/1Meg}*V(Gain1,COM), {Isink},1u),{Isrc},1u)
|
|
DOP1 Vsatpp Zo_outp DO
|
|
DON1 Zo_outp Vsatnp DO
|
|
G2 COM Vsatpp Vsatpi COM 1k
|
|
G3 COM Vsatnp Vsatni COM 1k
|
|
C40 Vsatpp COM 1n
|
|
C41 Vsatnp COM 1n
|
|
I1 Vsatpi 5 1.62m
|
|
R75 Vsatpi 5 1k Noiseless
|
|
C33 Vsatpi 5 1n
|
|
I2 6 Vsatni 180µ
|
|
C38 Vsatni 6 1n
|
|
DOP2 Vsatpn Zo_outn DO
|
|
DON2 Zo_outn Vsatnn DO
|
|
G4 COM Vsatpn Vsatpi COM 1k
|
|
G5 COM Vsatnn Vsatni COM 1k
|
|
C39 Vsatpn COM 1n
|
|
C42 Vsatnn COM 1n
|
|
DGP1 N062 Clamp DG
|
|
DGN1 Clamp N063 DG
|
|
G40 COM N062 GRpi COM 1k
|
|
G41 COM N063 GRni COM 1k
|
|
R93 N062 COM 1m Noiseless
|
|
R94 N063 COM 1m Noiseless
|
|
R95 GRpi COM 1k Noiseless
|
|
R96 GRni COM 1k Noiseless
|
|
C43 GRni COM 10p
|
|
C44 GRpi COM 10p
|
|
I3 COM GRpi 20m
|
|
I4 GRni COM 20m
|
|
G42 COM ComAdj N054 COM 1µ
|
|
R15 COM ComAdj 1Meg Noiseless
|
|
C45 ComAdj COM {Cfp2o}
|
|
G44 COM N054 Vocmi ComSense 1
|
|
R5 Vocmi N046 1k Noiseless
|
|
I5 N046 Vocmi {1m*Voso}
|
|
Rpd1 COM 3 1G Noiseless
|
|
Rpd2 COM 4 1G Noiseless
|
|
C24 N014 COM {Cfp2}
|
|
G6 COM N015 N014 COM 1µ
|
|
R16 N015 COM 1Meg Noiseless
|
|
C25 N015 COM {Cfp2}
|
|
G22 COM N016 N015 COM 1µ
|
|
R36 N016 COM 1Meg Noiseless
|
|
C26 N016 COM {Cfp2}
|
|
G23 COM Avo N016 COM 1µ
|
|
R37 Avo COM 1Meg Noiseless
|
|
C27 Avo COM {Cfp2}
|
|
R39 N021 COM 1 Noiseless
|
|
R40 N032 COM 1 Noiseless
|
|
R41 I_np COM 100k Noiseless
|
|
R68 I_nn COM 100k Noiseless
|
|
G26 N012 COM I_np COM 1
|
|
G27 N017 COM I_nn COM 1
|
|
A1 N017 N009 COM COM COM COM Gain1 COM OTA G=100u Iout=1m Vhigh=1k Vlow=-1k
|
|
A4 COM COM COM COM COM COM I_np COM OTA G=10u Iout=1m En={Eni} Vhigh=1k Vlow=-1k
|
|
A5 COM COM COM COM COM COM I_nn COM OTA G=10u Iout=1m En={Eni} Vhigh=1k Vlow=-1k
|
|
R43 N039 COM 1 Noiseless
|
|
R69 Vsatpp COM 1m Noiseless
|
|
R76 Vsatnp COM 1m Noiseless
|
|
R79 Vsatni 6 1k Noiseless
|
|
R80 Vsatnn COM 1m Noiseless
|
|
R84 Vsatpn COM 1m Noiseless
|
|
.param Avo2_dB = {Avo_PB-40+1}
|
|
.param Avo2 = {pwr(10, (Avo2_dB)/20)}
|
|
.param Cfp1={1 / (2 * pi * fp1 * 1Meg)}
|
|
.param Cfp2={1 / (2 * pi * fp2 * 1Meg)}
|
|
.param Isrc = {Cfp1 * SRp * 1Meg}
|
|
.param Isink = {Cfp1 * SRn * 1Meg}
|
|
.param Avo_PB=63
|
|
.param SRp=5.3k SRn={-SRp}
|
|
.param fp1=2Meg fp2=100G
|
|
.param Rf1=10k Boost1=2.35 f01=775k Q1=1.4
|
|
.param Rg1={Rf1/(Boost1-1)}
|
|
.param Rpar1={Pwr(1/Rf1+1/Rg1,-1)}
|
|
.param Xcl1={Rpar1*Q1}
|
|
.param Lboost1={Xcl1/(2*pi*f01)}
|
|
.param Cboost1={1/(2*pi*f01*Xcl1)}
|
|
.param Rf2=10k Boost2=1.4 f02=5G Q2=5
|
|
.param Rg2={Rf2/(Boost2-1)}
|
|
.param Rpar2={Pwr(1/Rf2+1/Rg2,-1)}
|
|
.param Xcl2={Rpar2*Q2}
|
|
.param Lboost2={Xcl2/(2*pi*f02)}
|
|
.param Cboost2={1/(2*pi*f02*Xcl2)}
|
|
.param Rf=10k
|
|
.param Rser=1m
|
|
.param Ccm=1p Rcm=3Meg
|
|
.param Cdiff=1f Rdiff=150k
|
|
.param gain_CMR = {pow(10, (-Rej_dc_CMR/20))}
|
|
.param C1a_CMR = {1 / (2 * pi * R1a_CMR * fz1_CMR)}
|
|
.param R2a_CMR = {R1a_CMR/ ((2 * pi * fp1_CMR * C1a_CMR
|
|
+* R1a_CMR) - 1)}
|
|
.param actual1_CMR = {R2a_CMR / (R1a_CMR + R2a_CMR)}
|
|
.param G1_CMR = {gain_CMR/actual1_CMR}
|
|
.param G1a_CMR = {1/actual1_CMR}
|
|
.param Rej_dc_CMR=68.5
|
|
.param R1a_CMR=10k
|
|
.param fz1_CMR=650k
|
|
.param fp1_CMR=800k
|
|
.param R1b_CMR=10k
|
|
.param fz2_CMR=4.2Meg
|
|
.param fp2_CMR=5.6Meg
|
|
.param C1b_CMR={1 / (2 * pi * R1b_CMR * fz2_CMR)}
|
|
.param R2b_CMR = {R1b_CMR/ ((2 * pi * fp2_CMR * C1b_CMR
|
|
+* R1b_CMR) - 1)}
|
|
.param actual2_CMR = {R2b_CMR / (R1b_CMR + R2b_CMR)}
|
|
.param G2_CMR= {1/actual2_CMR}
|
|
.param R1c_CMR=10k
|
|
.param fz3_CMR=110Meg
|
|
.param fp3_CMR=800Meg
|
|
.param C1c_CMR={1 / (2 * pi * R1c_CMR * fz3_CMR)}
|
|
.param R2c_CMR = {R1c_CMR/ ((2 * pi * fp3_CMR * C1c_CMR
|
|
+* R1c_CMR) - 1)}
|
|
.param actual3_CMR = {R2c_CMR / (R1c_CMR + R2c_CMR)}
|
|
.param G3_CMR= {1/actual3_CMR}
|
|
.param gain_PSRp = {pow(10, (-Rej_dc_PSRp/20))}
|
|
.param C1a_PSRp = {1 / (2 * pi * R1a_PSRp * fz1_PSRp)}
|
|
.param R2a_PSRp = {R1a_PSRp/ ((2 * pi * fp1_PSRp * C1a_PSRp
|
|
+* R1a_PSRp) - 1)}
|
|
.param actual1_PSRp = {R2a_PSRp / (R1a_PSRp + R2a_PSRp)}
|
|
.param G1_PSRp = {gain_PSRp/actual1_PSRp}
|
|
.param Rej_dc_PSRp=92.73
|
|
.param R1a_PSRp=10k
|
|
.param fz1_PSRp=3.3Meg
|
|
.param fp1_PSRp=100G
|
|
.param R1b_PSRp=10k
|
|
.param fz2_PSRp=350Meg
|
|
.param fp2_PSRp=100G
|
|
.param C1b_PSRp={1 / (2 * pi * R1b_PSRp * fz2_PSRp)}
|
|
.param R2b_PSRp = {R1b_PSRp/ ((2 * pi * fp2_PSRp * C1b_PSRp
|
|
+* R1b_PSRp) - 1)}
|
|
.param actual2_PSRp = {R2b_PSRp / (R1b_PSRp + R2b_PSRp)}
|
|
.param G2_PSRp= {1/actual2_PSRp}
|
|
.param BB=140p fC=58k M=0.47 fA={BB*(fC**M)}
|
|
.param Eni=2.8p
|
|
.param gain_BAL = {pow(10, (-Rej_dc_BAL/20))}
|
|
.param C1a_BAL = {1 / (2 * pi * R1a_BAL * fz1_BAL)}
|
|
.param R2a_BAL = {R1a_BAL/ ((2 * pi * fp1_BAL * C1a_BAL
|
|
+* R1a_BAL) - 1)}
|
|
.param actual1_BAL = {R2a_BAL / (R1a_BAL + R2a_BAL)}
|
|
.param G1_BAL = {gain_BAL/actual1_BAL}
|
|
.param G1a_BAL = {1/actual1_BAL}
|
|
.param Rej_dc_BAL=56.6
|
|
.param R1a_BAL=1Meg
|
|
.param fz1_BAL=99G
|
|
.param fp1_BAL=100G
|
|
.param Vos=-176.94u Drift=0.9u
|
|
.param Ib=-23u Ios=99.2n Ibd=-50n
|
|
.param Vcm_min=0.3 Vcm_max=-2.2
|
|
.param Vs_min=3.3 Vs_max=5
|
|
.param Iscp=30m Iscn=-30m
|
|
.param Iq_on=34m Iq_off=1.8m
|
|
.param Ipd_on=90n Ipd_off=97u
|
|
.param IZop={Rx_Zo*Iscp} IZon={Rx_Zo*Iscn}
|
|
.param ENVt=2.75 ENVh=0.25
|
|
.param ENTon=12n ENToff=1u
|
|
.model DI D(Vfwd=1k Vrev=0 Revepsilon=0.1 Noiseless)
|
|
.model DG D(Vfwd=1k Vrev=0 Revepsilon=0.5 Ron=1m Noiseless)
|
|
.model DO D(Vfwd=1k Vrev=0 Revepsilon=0.1 Ron=1m Noiseless)
|
|
.model PD D(Ron=0.5 Epsilon=0.1 Noiseless)
|
|
.model ENA SW(Ron=1Meg Roff=1u Vt=500m Vh=-100m Noiseless)
|
|
.param beta_Zo=1.13
|
|
.param Rx_Zo = {100 * Zo_max}
|
|
.param Rdummy_Zo = {10 * Zo_max}
|
|
.param G1_Zo={Rx_Zo/(Zo_dc*beta_Zo)}
|
|
.param Zo_dc=100
|
|
.param Zo_max={Zo_dc}
|
|
.param Voso=350u
|
|
.param fp1o=1.55k fp2o=725Meg
|
|
.param Cfp1o={1 / (2 * pi * fp1o * 1Meg)}
|
|
.param Cfp2o={1 / (2 * pi * fp2o * 1Meg)}
|
|
.ends ADA4930-1
|