(%i1) load("/home/vcaeken/Desktop/rfMaxima.mac")$

Result

Equivalent Input Noise Generators

See "Analysis and Design of Analog Integrated Circuits", 4th Ed.,
by P. R. Gray, P. J. Hurst, S. H. Lewis, R. G. Meyer, Wiley, 2001, p. 768-773

(%i2) declare([r_b,r_pi,C_pi,g_m,r_o],[constant,real,scalar])$
assume(r_b>0)$
assume(r_pi>0)$
assume(C_pi>0)$
assume(g_m>0)$
assume(r_o>0)$

1 ABCD Matrix

(%i8) Solution:linsolve([v_in-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2,i_out=i_3+g_m*v_1,v_out=r_o*i_3],[i_in,i_out,i_1,i_2,i_3,v_1]);
define(ABCD(s),Y2ABCD(Solution2Y(Solution)));

Result

2 r_b Contribution (|v_noise|^2=|v_b|^2=4*k*T*r_b*B)

(%i10) NoiseSolutionInputShorted1:linsolve([v_noise-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i11) NoiseSolutionInputOpened1:linsolve([v_in-v_1=r_b*i_noise,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_noise=i_1+i_2,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i12) NoiseSolutionInputShorted2:linsolve([v_noise-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i13) NoiseSolutionInputOpened2:linsolve([v_in-v_1=r_b*i_noise,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_noise=i_1+i_2,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i14) NoiseVoltage2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted1);

Result

(%i15) NoiseVoltage2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened1);

Result

(%i16) NoiseVoltage2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted2);

Result

(%i17) NoiseVoltage2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened2);

Result

3 i_b Contribution (|i_noise|^2=|i_b|^2=2*q*I_B*B+K_1*I_Ba/f*B)

(%i18) NoiseSolutionInputShorted1:linsolve([-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2+i_noise,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i19) NoiseSolutionInputShorted2:linsolve([-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2+i_noise,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i20) NoiseSolutionInputOpened1:linsolve([v_in=v_1,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),0=i_1+i_2+i_noise,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i21) NoiseSolutionInputOpened2:linsolve([v_in=v_1,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),0=i_1+i_2+i_noise,-i_out=i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i22) NoiseCurrent2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted1);

Result

(%i23) NoiseCurrent2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened1);

Result

(%i24) NoiseCurrent2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted2);

Result

(%i25) NoiseCurrent2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened2);

Result

4 i_c Contribution (|i_noise|^2=|i_c|^2=2*q*I_C*B)

(%i26) NoiseSolutionInputShorted1:linsolve([-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2,-i_out=i_noise+i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i27) NoiseSolutionInputShorted2:linsolve([-v_1=r_b*i_in,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),i_in=i_1+i_2,-i_out=i_noise+i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,i_in]);

Result

(%i28) NoiseSolutionInputOpened1:linsolve([v_in=v_1,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),0=i_1+i_2,-i_out=i_noise+i_3+g_m*v_1,v_out=r_o*i_3],[i_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i29) NoiseSolutionInputOpened2:linsolve([v_in=v_1,v_1=r_pi*i_1,v_1=i_2/(s*C_pi),0=i_1+i_2,-i_out=i_noise+i_3+g_m*v_1,v_out=r_o*i_3],[v_out,i_1,i_2,i_3,v_1,v_in]);

Result

(%i30) NoiseCurrent2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted1);

Result

(%i31) NoiseCurrent2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened1);

Result

(%i32) NoiseCurrent2EquivalentInputNoiseVoltage(ABCD(s),NoiseSolutionInputShorted2);

Result

(%i33) NoiseCurrent2EquivalentInputNoiseCurrent(ABCD(s),NoiseSolutionInputOpened2);

Result


Created with wxMaxima.