Here is my circuit in LTspice.
The frequency AC is here:
This is DC with .op
command.--- MOSFET Transistors ---Name: m1Model: nmos-shId: 1.91e-04Vgs: 7.96e-01Vds: 9.03e-01Vbs: 0.00e+00Vth: 4.00e-01Vdsat: 3.96e-01Gm: 9.61e-04Gds: 1.75e-05Gmb: 0.00e+00Cbd: 0.00e+00Cbs: 0.00e+00Cgsov: 0.00e+00Cgdov: 0.00e+00Cgbov: 0.00e+00Cgs: 0.00e+00Cgd: 0.00e+00Cgb: 0.00e+00
The following code is to calculate gain in MATLAB:
clearvarssyms Vin Vx Vout RS RF RD g_m ro Cgs Cgd seq1 = (Vin - Vx) / RS == (Vx - Vout) / RF + (Vx - Vout) * s * Cgd + Vx * s * Cgs;eq2 = (Vx - Vout)/ RF + (Vx - Vout) * s * Cgd - Vout/RD == Vx * g_m + Vout / ro;sol_out = solve([eq1, eq2], [Vout, Vx]);Av= sol_out.Vout / Vin
$$\frac{R_{D}r_{o}-R_{D}R_{F}g_{m}r_{o}+C_{\mathrm{gd}}R_{D}R_{F}r_{o}s}{R_{D}R_{F}+R_{D}R_{S}+R_{F}r_{o}+R_{D}r_{o}+R_{S}r_{o}+R_{D}R_{S}g_{m}r_{o}+C_{\mathrm{gd}}R_{D}R_{F}R_{S}s+C_{\mathrm{gs}}R_{D}R_{F}R_{S}s+C_{\mathrm{gd}}R_{D}R_{F}r_{o}s+C_{\mathrm{gd}}R_{F}R_{S}r_{o}s+C_{\mathrm{gs}}R_{F}R_{S}r_{o}s+C_{\mathrm{gs}}R_{D}R_{S}r_{o}s+C_{\mathrm{gd}}R_{D}R_{F}R_{S}g_{m}r_{o}s+C_{\mathrm{gd}}C_{\mathrm{gs}}R_{D}R_{F}R_{S}r_{o}s^{2}}$$
When \$R_S\$ is 1 kΩ.
Here is the code:
clearvarsCgd = 3.58*10^(-15);Cgs = 7.11*10^(-14);ro = 1/(1.75*10^(-5));RF = 10^3;RS = 10^3;RD = 10^3;g_m = 9.61*10^(-4);zeros = (- 1 + RF*g_m)/(Cgd*RF);f_zero = zeros/(2*pi)p1 = -(Cgd*RD*RF*RS - (Cgd^2*RD^2*RF^2*RS^2 + 2*Cgd*Cgs*RD^2*RF^2*RS^2 + Cgs^2*RD^2*RF^2*RS^2 + 2*Cgd^2*RD^2*RF^2*RS*ro + 2*Cgd^2*RD*RF^2*RS^2*ro - 2*Cgd*Cgs*RD^2*RF^2*RS*ro + 4*Cgd*Cgs*RD*RF^2*RS^2*ro - 2*Cgd*Cgs*RD^2*RF*RS^2*ro + 2*Cgs^2*RD*RF^2*RS^2*ro + 2*Cgs^2*RD^2*RF*RS^2*ro + Cgd^2*RD^2*RF^2*ro^2 + 2*Cgd^2*RD*RF^2*RS*ro^2 + Cgd^2*RF^2*RS^2*ro^2 - 2*Cgd*Cgs*RD*RF^2*RS*ro^2 - 2*Cgd*Cgs*RD^2*RF*RS*ro^2 + 2*Cgd*Cgs*RF^2*RS^2*ro^2 - 2*Cgd*Cgs*RD*RF*RS^2*ro^2 + Cgs^2*RF^2*RS^2*ro^2 + 2*Cgs^2*RD*RF*RS^2*ro^2 + Cgs^2*RD^2*RS^2*ro^2 + 2*Cgd^2*RD^2*RF^2*RS^2*g_m*ro + 2*Cgd*Cgs*RD^2*RF^2*RS^2*g_m*ro + 2*Cgd^2*RD^2*RF^2*RS*g_m*ro^2 + 2*Cgd^2*RD*RF^2*RS^2*g_m*ro^2 + 2*Cgd*Cgs*RD*RF^2*RS^2*g_m*ro^2 - 2*Cgd*Cgs*RD^2*RF*RS^2*g_m*ro^2 + Cgd^2*RD^2*RF^2*RS^2*g_m^2*ro^2)^(1/2) + Cgs*RD*RF*RS + Cgd*RD*RF*ro + Cgs*RD*RS*ro + Cgd*RF*RS*ro + Cgs*RF*RS*ro + Cgd*RD*RF*RS*g_m*ro)/(2*Cgd*Cgs*RD*RF*RS*ro);f_p1 = p1/(2*pi)p2 = -((Cgd^2*RD^2*RF^2*RS^2 + 2*Cgd*Cgs*RD^2*RF^2*RS^2 + Cgs^2*RD^2*RF^2*RS^2 + 2*Cgd^2*RD^2*RF^2*RS*ro + 2*Cgd^2*RD*RF^2*RS^2*ro - 2*Cgd*Cgs*RD^2*RF^2*RS*ro + 4*Cgd*Cgs*RD*RF^2*RS^2*ro - 2*Cgd*Cgs*RD^2*RF*RS^2*ro + 2*Cgs^2*RD*RF^2*RS^2*ro + 2*Cgs^2*RD^2*RF*RS^2*ro + Cgd^2*RD^2*RF^2*ro^2 + 2*Cgd^2*RD*RF^2*RS*ro^2 + Cgd^2*RF^2*RS^2*ro^2 - 2*Cgd*Cgs*RD*RF^2*RS*ro^2 - 2*Cgd*Cgs*RD^2*RF*RS*ro^2 + 2*Cgd*Cgs*RF^2*RS^2*ro^2 - 2*Cgd*Cgs*RD*RF*RS^2*ro^2 + Cgs^2*RF^2*RS^2*ro^2 + 2*Cgs^2*RD*RF*RS^2*ro^2 + Cgs^2*RD^2*RS^2*ro^2 + 2*Cgd^2*RD^2*RF^2*RS^2*g_m*ro + 2*Cgd*Cgs*RD^2*RF^2*RS^2*g_m*ro + 2*Cgd^2*RD^2*RF^2*RS*g_m*ro^2 + 2*Cgd^2*RD*RF^2*RS^2*g_m*ro^2 + 2*Cgd*Cgs*RD*RF^2*RS^2*g_m*ro^2 - 2*Cgd*Cgs*RD^2*RF*RS^2*g_m*ro^2 + Cgd^2*RD^2*RF^2*RS^2*g_m^2*ro^2)^(1/2) + Cgd*RD*RF*RS + Cgs*RD*RF*RS + Cgd*RD*RF*ro + Cgs*RD*RS*ro + Cgd*RF*RS*ro + Cgs*RF*RS*ro + Cgd*RD*RF*RS*g_m*ro)/(2*Cgd*Cgs*RD*RF*RS*ro);f_p2 = p2/(2*pi)
The results are the following:
f_zero =
-1.7338e+09
f_p1 =
-4.3206e+09
f_p2 =
-9.2038e+10
However, the zero frequency is 2.1146314 GHz (3 dB). pole 1 is 3.225216 GHz (3 dB) and pole 2 is 99.366294 GHz (3 dB) measured in SPICE.
The following are the measurement in SPICE.
I have created my MATLAB graph for this SPICE.
The following is SPICE asc file.
Version 4SHEET 1 880 680WIRE 64 -80 -80 -80WIRE 320 -80 64 -80WIRE -80 -64 -80 -80WIRE -80 32 -80 16WIRE -80 32 -240 32WIRE -240 48 -240 32WIRE -80 64 -80 32WIRE -16 64 -80 64WIRE -80 80 -80 64WIRE -80 80 -96 80WIRE -80 96 -80 80WIRE -16 96 -80 96WIRE -208 112 -240 112WIRE -80 112 -80 96WIRE -16 160 -80 160WIRE 480 160 480 112WIRE 640 160 640 112WIRE -320 192 -368 192WIRE -288 192 -320 192WIRE -208 192 -208 112WIRE -176 192 -176 80WIRE -176 192 -208 192WIRE -128 192 -176 192WIRE 320 192 320 -80WIRE -176 272 -176 256WIRE -176 272 -368 272WIRE -80 272 -80 208WIRE -80 272 -176 272WIRE -16 272 -16 160WIRE -16 272 -80 272WIRE 320 272 -16 272WIRE 480 272 480 240WIRE 480 272 320 272WIRE 640 272 640 240WIRE 640 272 480 272WIRE -368 288 -368 272FLAG -368 288 0FLAG 64 -80 VDDFLAG -176 192 VGFLAG -16 64 VOIOPIN -16 64 OutFLAG 480 112 VicmFLAG 640 112 VidFLAG -320 192 VINSYMBOL nmos4 -128 112 R0WINDOW 3 56 60 Left 2SYMATTR Value NMOS-SHSYMATTR InstName M1SYMATTR Value2 l=1u w=12.35u ad=6.2p as=6.2p pd=13.4u ps=13.4uSYMBOL voltage 320 176 R0WINDOW 123 0 0 Left 0WINDOW 39 0 0 Left 0SYMATTR InstName VDDSYMATTR Value 1.2SYMBOL voltage 480 144 R0WINDOW 123 0 0 Left 0WINDOW 39 0 0 Left 0SYMATTR InstName VicmSYMATTR Value 0.69SYMBOL voltage 640 144 R0WINDOW 3 24 152 Left 2WINDOW 123 24 124 Left 2WINDOW 39 0 0 Left 0SYMATTR Value 0SYMATTR Value2 AC 1SYMATTR InstName VidSYMBOL bv -368 176 R0WINDOW 0 -60 23 Left 2SYMATTR InstName VIN1SYMATTR Value V=V(Vicm)+V(Vid)SYMBOL res -80 64 R90WINDOW 0 0 56 VBottom 2WINDOW 3 32 56 VTop 2SYMATTR InstName Rf1SYMATTR Value 1kSYMBOL res -96 -80 R0SYMATTR InstName RDSYMATTR Value 1kSYMBOL res -192 176 R90WINDOW 0 0 56 VBottom 2WINDOW 3 32 56 VTop 2SYMATTR InstName RSSYMATTR Value 1kSYMBOL cap -192 192 R0WINDOW 0 39 29 Left 2SYMATTR InstName CgsSYMATTR Value 7.11e-14SYMBOL cap -256 48 R0WINDOW 3 -61 49 Left 2SYMATTR Value 3.58e-15SYMATTR InstName CgdovTEXT -496 -216 Left 2 !.MODEL PMOS-SH pmos(kp=45u,vto=-0.42, lambda = {0.14/1}, gamma = 0)TEXT -496 -160 Left 2 !.MODEL NMOS-SH nmos(kp=180u,vto=0.4, lambda = {0.1/1}, gamma = 0)TEXT -464 -248 Left 2 ;M1: l=1u w=12.35u ad=6.2p as=6.2p pd=13.4u ps=13.4uTEXT -408 -24 Left 2 !.op\n.ac oct 10 100Meg 1TTEXT -400 -72 Left 2 !;tf V(VO) VidTEXT -400 -136 Left 2 !;dc VDD 0 1.8 0.01TEXT 392 -88 Left 2 !.param Rf =1e2TEXT 392 -64 Left 2 !.step param Rf list 1e2 1e3 1e4