* class-a mosfet amp 30W, gain of 30dB * ideal power supply x1 vdd1 vss1 vdd2 vss2 pwrideal * simulated power supply with ripple *x1 vdd1 vss1 vdd2 vss2 pwrreal * input drive for 30W into 8ohm *v1 vin 0 dc 0 ac 1 distof1 1 0 sin (0 692.82m 1k) * input drive for 30W into 4ohm *v1 vin 0 dc 0 ac 1 distof1 1 0 sin (0 489.898m 1k) * input drive for 2.828Vrms v1 vin 0 dc 0 ac 1 distof1 1 0 sin (0 126.491m 1k) * input drive for peak *v1 vin 0 dc 0 ac 1 distof1 1 0 sin (0 0.9 1k) * input for 0V ac to use fourier to measure hum at output *v1 vin 0 dc 0 ac 1 distof1 1 0 sin (0 0 60) *input load r1 vin 0 100k *coupling capacitor c1 commented out because * it interferes with dc transfer curve analysis *c1 vin vinac 10u r2 vin 0 100k * slew rate analysis has not been done to obtain a final value for c2 *c2 vinac 0 30p * feedback network rg vfb 0 162 rf vout vfb 4.99k * external lead-lag compensation *cf vout vfb 3.9p * input stage j1 vdj1 vin vs lsk170a j2 vd vz3 vdj1 lsk170a * feedback connected to j2 for closed-loop operation j3 vdj3 vfb vs lsk170a * feedback disconnected for open-loop evaluation *j3 vdj3 0 vs lsk170a j4 vdd1 vz3 vdj3 lsk170a * connect feedback to ground to analyze open-loop gain *j3 vdd1 0 vs lsk170a r4 vs vz1 3.16k * r3 10k pot trimmed for low dc offset r3 vd vdd1 4.237k * bias *xbias vz1 vz2 vz3 vdd1 vss1 biaszener xbias vz1 vz2 vz3 vdd1 vss1 biasideal * second stage amplifier r9 vd vgm1 56 m1 A vgm1 vdd1 vdd1 irf9510 L=2u W=200m * second stage current source load * r7 a and b total 10k trimmed for 45mA bias r7a vz2 vbias 3.738k r7b vbias vss1 6.262k r10 vbias vgm2 56 m2 B vgm2 vss1 vss1 irf510 L=2u W=640m * second stage resistive load (best place to alter open loop gain) * inital values, low open-loop gain, give positive bend *r11 A 0 1.5k *r12 B 0 1.5k * medium open-loop gain, gives two bend curve r11 A 0 1.8k r12 B 0 1.8k * high open-loop gain gives negative bend *r11 A 0 6k *r12 B 0 6k * ammeters for second stage adjustment normally commented out *vaa A 0 dc 0 *vab 0 B dc 0 * r13 adjusts follower bias * 4A bias *r13 A B 225 * 2A bias r13 A B 211 * 1A bias *r13 A B 202 * 1.4A bias *r13 A B 205 c6 A B 100u ic=9.21425 * output follower r14 A vg3 56 m3 vdd2 vg3 vout vout irfp240 L=2U W=680M r15 A vg4 56 m4 vdd2 vg4 vout vout irfp240 L=2U W=680M r16 B vg5 56 m5 vss2 vg5 vout vout irfp9240 L=2U W=1.4 r17 B vg6 56 m6 vss2 vg6 vout vout irfp9240 L=2U W=1.4 * load rl vout 0 8 .subckt biaszener vz1 vz2 vz3 vdd1 vss1 r8 vdd1 vz3 1.6k d3 0 vz3 1N4744 c5 vz3 0 100u ic=14.9749 d1 vz1 0 1n4735 c3 0 vz1 100u ic=6.11506 j5 vz1 vgj5 vs5 2n3819 r5 vs5 vgj5 10 r6 vgj5 vz2 620 d2 vss1 vz2 1n4735 c4 vz2 vss1 100u ic=6.123507 .ends .subckt biasideal vz1 vz2 vz3 vdd1 vss1 vbias1 0 vz1 dc 6.11506 vbias2 vz2 vss1 dc 6.123507 vbias3 vz3 0 dc 14.9749 .ends * models .MODEL 1N4735 D IS=15N N=2.22 BV=6.2 IBV=41M + RS=169M CJO=4P VJ=750M M=330M TT=100N .MODEL 1N4744 D IS=15N N=2.22 BV=15 IBV=17M + RS=169M CJO=4P VJ=750M M=330M TT=100N .MODEL LSK170A NJF + BETA = 0.0378643 VTO = -0.4025156 LAMBDA = 4.783719E-3 + IS = 3.55773E-14 + RD = 10.6565 RS = 6.8790487 + CGD = 3.99E-11 CGS = 4.06518E-11 + PB = 0.981382 FC = 0.5 + KF = 0 AF = 1 .MODEL 2N3819 NJF VTO=-2.9985 BETA=1.3046M LAMBDA=2.2507M RD=1 RS=1 + CGD=1.5964P CGS=2.4199P PB=500M IS=33.582F KF=0 AF=1 .MODEL IRF510 NMOS LEVEL=3 VTO=3.699 KP=20.82U RD=21.08M + RS=450.8M IS=202.7F CBD=366.6P + CGSO=604.9P CGDO=62.62P .MODEL IRF9510 PMOS LEVEL=3 VTO=-3.919 KP=10.45U UO=300 + RD=452.3M RS=371.5M IS= 2.891E-18 + CBD=333.8P CGSO=2.533N CGDO=313.6P .MODEL IRFP240 NMOS LEVEL=3 VTO=3.76 KP=20.79U RD=75.29M + RS=20.68M IS=2.9P CBD=1.933N + CGSO=1.457N CGDO=317.1P .MODEL IRFP9240 PMOS LEVEL=3 VTO=-3.828 KP=10.65U UO=300 + RD=279.3M RS=76.83M IS=2.08P + N=2 CBD=1.534N CGSO=961.9P CGDO=138.4P .include ./pwr.txt .end .control options itl2=100 set units=degrees op print all *ac dec 25 10Hz 1GHz *setplot ac1 *plot db(5) noise v(5) v1 dec 25 20Hz 20kHz setplot noise2 print all *setplot noise1 *plot onoise_spectrum *set fourgridsize=1024 set nfreqs=16 set polydegree=3 tran 1u 0.1 0 1u uic fourier 1k vout dc v1 -0.1 0.1 0.001 plot vout-(vin*(vout[200]-vout[0])/0.2) dc v1 -0.7 0.7 0.007 plot vout-(vin*(vout[200]-vout[0])/1.4) .endc