Difference between revisions of "Symbolsk løsning av nodeligninger med Matlab"
m (Updated for newer Matalb versions (tested on R2020b)) |
m |
||
Line 29: | Line 29: | ||
% Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 | % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 | ||
% to find Vo as a function of Is | % to find Vo as a function of Is | ||
− | % Kjetil Ullaland, | + | % Kjetil Ullaland, 2020 |
syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; | syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; | ||
%% With feedforward capacitor | %% With feedforward capacitor | ||
− | eq1= | + | eq1=(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2==0; |
− | eq2= | + | eq2=(V1-Vo)/Zc+V1*s*C1+V1/R1+Is==0; |
− | eq1=subs(eq1,Zc, | + | eq1=subs(eq1,Zc,1/(s*C)); |
− | eq2=subs(eq2,Zc, | + | eq2=subs(eq2,Zc,1/(s*C)); |
− | + | disp('Solve for Vo and V1 and calculate Vo/Is with capacitor only in feedforward loop'); | |
− | + | solved=solve(eq1,eq2,Vo,Is); | |
− | + | VoOnIs=solved.Vo/solved.Is; | |
− | + | pretty(simplify(VoOnIs)); | |
− | pretty(simplify( | ||
%% With series resistor and capacitor in feedforward loop | %% With series resistor and capacitor in feedforward loop | ||
− | eq1= | + | eq1=(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2==0; |
− | eq2= | + | eq2=(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is==0; |
− | eq1=subs(eq1,Zc, | + | eq1=subs(eq1,Zc,1/(s*C)); |
− | eq2=subs(eq2,Zc, | + | eq2=subs(eq2,Zc,1/(s*C)); |
− | + | disp('Solve for Vo and V1 and calculate Vo/Is with resistor and capacitor in feedforward loop'); | |
− | + | solved=solve(eq1,eq2,Vo,Is); | |
− | + | VoOnIs=solved.Vo/solved.Is; | |
− | + | pretty(simplify(VoOnIs)); | |
− | pretty(simplify( | ||
</pre> | </pre> |
Revision as of 13:13, 23 September 2020
Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin
% Using Kirchoff's current law (KCL) on a source follower configuration % to find Vo as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland syms s C Vin Vo Vgs Zc gm Rl Rs R Av Avo eq1=(Vo-Vgs)/(R+Zc)+gm*Vgs+Vo/Rl == 0; eq2=(Vgs-Vo)/(R+Zc)+(Vgs-Vin)/Rs == 0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit node 2:'); pretty(eq2); disp('Solve for Vo and Vin and calculate Av (Vo/Vin):'); solved=solve(eq1,eq2,Vo,Vin); Av=solved.Vo/solved.Vin; pretty(simplify(Av)); pretty(subs(Av,Rl*gm,Avo));
Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is
% Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2020 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/Zc+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with capacitor only in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs)); %% With series resistor and capacitor in feedforward loop eq1=(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with resistor and capacitor in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs));