Symbolsk løsning av nodeligninger med Matlab: Difference between revisions

From ift
mNo edit summary
Line 1: Line 1:
=== Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin ===
<pre>
<pre>
% Using Kirchoff's current law (KCL) on a source follower configuration
% Using Kirchoff's current law (KCL) on a source follower configuration
Line 23: Line 24:
</pre>
</pre>


=== Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is ===
<pre>
<pre>
% 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
Line 29: Line 31:


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
eq1=sym('(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2=0');
eq2=sym('(V1-Vo)/Zc+V1*s*C1+V1/R1+Is=0');
eq1=subs(eq1,Zc,'1/(s*C)');
eq2=subs(eq2,Zc,'1/(s*C)');
solV1=solve(eq2,V1);
eq3=subs(eq1,V1,solV1);
SolVo=simplify(solve(eq3,[Vo]));
disp('With capacitor only in feedforward loop');
pretty(simplify(SolVo/Is));
%% With series resistor and capacitor in feedforward loop
eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0');
eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0');
eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0');
eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0');
Line 36: Line 52:
solV1=solve(eq2,V1);
solV1=solve(eq2,V1);
eq3=simplify(subs(eq1,V1,solV1));
eq3=simplify(subs(eq1,V1,solV1));
SolVo=simplify(solve(eq3,[Vo]));
SolVo=solve(eq3,[Vo]);
disp('With series resistor and capacitor in feedforward loop');
pretty(simplify(SolVo/Is));
pretty(simplify(SolVo/Is));
</pre>
</pre>

Revision as of 07:58, 9 October 2015

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 Vout as a function of Vin
% Only Cgd is considered (Zc)
% Kjetil Ullaland

ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0';
ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0';
ligning1=subs(ligning1,'1/(j*w*C)','Zc');
ligning2=subs(ligning2,'1/(j*w*C)','Zc');
pretty(ligning1);
pretty(ligning2);


disp('Solve for Vgs');
vgs_solved=solve(ligning2,'Vgs');
pretty(simplify(vgs_solved));

disp('Solve for Vout(vin)');
ligning3=subs(ligning1,vgs_solved,'Vgs');
Vout_solved=solve(ligning3,'Vout');
pretty(simplify(Vout_solved))

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, 2015

syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz;

%% With feedforward capacitor
eq1=sym('(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2=0');
eq2=sym('(V1-Vo)/Zc+V1*s*C1+V1/R1+Is=0');
eq1=subs(eq1,Zc,'1/(s*C)');
eq2=subs(eq2,Zc,'1/(s*C)');

solV1=solve(eq2,V1);
eq3=subs(eq1,V1,solV1);
SolVo=simplify(solve(eq3,[Vo]));
disp('With capacitor only in feedforward loop');
pretty(simplify(SolVo/Is));

%% With series resistor and capacitor in feedforward loop
eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0');
eq2=sym('(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)');

solV1=solve(eq2,V1);
eq3=simplify(subs(eq1,V1,solV1));
SolVo=solve(eq3,[Vo]);
disp('With series resistor and capacitor in feedforward loop');
pretty(simplify(SolVo/Is));