% /home/cdimarzio/Documents/working/12140/matlab/cs_amp_freq.m
% Mon Apr  4 10:04:10 2016
% see notes 2412w11-12
%
f=10.^[1:0.1:4];
omega=2*pi*f;
Ri=100e3;C1=0.01e-6;R1=3e6;R2=1e6;
RD=4.7e3;RS=2.7e3;CS=100e-6;C2=1e-6;
RL=10e3;
gm=1.77e-3;
%
XC1=1./(1j*omega*C1);
XCS=1./(1j*omega*CS);
XC2=1./(1j*omega*C2);
R12=R1*R2/(R1+R2);
% Test point at gate
vg_by_v=R12./(Ri+XC1+R12)./(1+gm*(RS*XCS)./(RS+XCS));% 750/850
% Current
id_by_v=gm*R12./(Ri+XC1+R12)./(1+gm*(RS*XCS)./(RS+XCS));
% Test point at source
vs_by_v=id_by_v.*(RS*XCS)./(RS+XCS); % zero

figure;loglog(f,abs(id_by_v));grid on;
xlabel('f, Frequency, Hz');ylabel('i_d/V, A/V');

% Test point at drain
vd_by_v=id_by_v.*(RD*(RL+XC2))./(RD+RL+XC2);

% Input voltage
vin_by_v=(XC1+R12)/(Ri+XC1+R12);

Av=-(RD*RL)./(RD+RL+XC2).*id_by_v./vin_by_v;
figure;semilogx(f,20*log10(abs(Av)));grid on;
xlabel('f, Frequency, Hz');ylabel('|A_v|, Voltage Gain, dB');
figure;semilogx(f,angle(Av)*180/pi);grid on;
xlabel('f, Frequency, Hz');ylabel('angle of A_v, deg.');