Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Id (mA)
Id (mA)
Vds (V)
Vds (V)
ECE 2C, HW 3 Solutions
Spring 2013
P1. (a).
(b) Red dashed line is the load line.
0 0.5 1 1.5 20
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5Ids (mA) vs Vds (V)
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.5 1 1.5 20
0.1
0.2
0.3
0.4
0.5
0.6
0.7Ids (mA) vs Vds (V)
Vout (V)
Vin (V)
(c) Find the intersecting points from (b). Note that the range of Vgs (=Vin)
is from 0.3 to 2 V in the following graph.
Vin=1 V corresponds to Vout=1 V.
(d) Draw a tangent line at Vout=1 V. The gain would be the slope of this
line shown with the red dashed line above. Av = -2.8 V/V.
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2Vout (V) vs Vin (V)
Sample MATLAB Code:
clear all; % ************************* part (a) ******************************* % Define Variables C = 1; % mA/V^2 lambda = 0; RL = 2; % kOhm VDD = 2.0; Vth = 0.3; % V Vgs = 0.3:0.1:1.0; Vds = linspace(0,VDD,100); % Find Id as a function of Vds and Vgs. for i_Vg = 1:1:length(Vgs) Vgs_x = Vgs(i_Vg); Id(:, i_Vg) = C * (Vgs_x-Vth)^2 * (1+lambda*Vds); Vds_Linear = Vds( Vds<(Vgs_x-Vth) ); Id(Vds<(Vgs_x-Vth), i_Vg) = C * (2*(Vgs_x-Vth)*Vds_Linear - Vds_Linear.^2) .* (1+lambda*Vds_Linear); end; % Plot figure; plot(Vds, Id, 'LineWidth', 3); title('Ids (mA) vs Vds (V)'); legend(num2str(Vgs')); % ************************* part (b) ******************************* Iload = (VDD-Vds)/RL; figure; plot(Vds, Id, '-k', 'LineWidth', 3); hold on; plot(Vds, Iload, '--r', 'LineWidth', 3); title('Ids (mA) vs Vds (V)'); % legend(num2str(Vgs')); ylim([0, 0.7]); % ************************* part (c) ******************************* % Part (c): Let's improve the input voltage spacing, and the limits of Vgs Vth = 0.3; % V Vgs = 0.3:0.01:2.0; Vds = linspace(0,VDD,1000); Iload = (VDD-Vds)/RL; clear Id for i_Vg = 1:1:length(Vgs) Vgs_x = Vgs(i_Vg); Id(:, i_Vg) = C * (Vgs_x-Vth)^2 * (1+lambda*Vds); Vds_Linear = Vds( Vds<(Vgs_x-Vth) );
Id(Vds<(Vgs_x-Vth), i_Vg) = C * (2*(Vgs_x-Vth)*Vds_Linear - Vds_Linear.^2) .* (1+lambda*Vds_Linear); [temp_I, ind] = min(abs(Id(:, i_Vg)-Iload')); Vout(i_Vg) = Vds(ind); Vin(i_Vg) = Vgs_x; % [Vout(i_Vg), Vin(i_Vg)] = min(abs(Id(:, i_Vg)-Iload')); end; figure; plot(Vin, Vout, 'LineWidth', 3); title('Vout (V) vs Vin (V)'); % ************************* part (d) ******************************* dVout_dVin = diff(Vout)./diff(Vin); dVout_dVin(length(Vin)) = dVout_dVin(length(Vin)-1) figure; plot(Vin, dVout_dVin, 'LineWidth', 3); title('Gain (V/V) vs Vin (V)');