{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapter 5: MOSFETs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.10: Necessary_value_of_Rs.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.10\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "V_GS = 4;// in V\n", "V_P = 2;// in V\n", "R2 = 10;// in k ohm\n", "R1 = 30;// in k ohm\n", "R_D= 2.5;// in kohm\n", "I_D= 15;// in mA\n", "I_D= I_D*10^-3;// in A\n", "V_DD = 25;// in V\n", "V_G = (V_DD/R_D)*V_DD/(R1+R2);// in V\n", "// The necessary value for R_S\n", "R_S = (V_G-V_GS)/I_D;// in ohm\n", "disp(R_S,'The value of R_S in ohm is');" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.11: ID_and_VDS.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.11\n", "format('v',5)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "k= 0.1;// in mA/V^2\n", "V_T= 1;// in V\n", "R2= 87*10^3;// in Ω\n", "R1= 110*10^3;// in Ω\n", "R_S=2;// in kΩ\n", "R_D=2;// in kΩ\n", "//R_D=3*10^3;// in Ω\n", "V_DD= 6;// in V\n", "V_SS= 6;// in V\n", "V_G= (V_DD+V_SS)*R2/(R1+R2);// in V\n", "// V_S= I_D*R_S-V_SS\n", "// V_GS= V_G-V_S= V_G+V_SS-(I_D*R_S)\n", "// I_D= k*[V_GS-V_T]^2 = k*[(V_G+V_SS-V_T)-(I_D*R_S)]^2\n", "//(I_D*R_S)^2- I_D*(2*R_S*(V_G+V_SS-V_T)+1/k) +(V_G+V_SS-V_T)^2\n", "A= R_S^2;// assumed\n", "B= -(2*R_S*(V_G+V_SS-V_T)+1/k);// assumed\n", "C= (V_G+V_SS-V_T)^2;// assumed\n", "I_D= [A B C]\n", "I_D= roots(I_D);// in mA\n", "I_D= I_D(2);// in mA\n", "disp(I_D,'The value of I_D in mA is : ')\n", "// Applying KVL to drain source loop, V_DD+V_SS= I_D*R_D+V_DS+I_D*R_S\n", "V_DS=V_DD+V_SS-I_D*R_D-I_D*R_S;// in V\n", "disp(V_DS,'The value of V_DS in volts is : ')\n", "\n", "" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.12: Designing_of_NMOS_CS_circuit.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.12\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "k = 0.16;// in mA/V^2\n", "V_T = 2;// in V\n", "I_D = 0.5;// in mA\n", "V_DD = 6;// in V\n", "V_SS = -6;// in V\n", "V_GS = V_T + (sqrt(I_D/k));// in V\n", "R_S = 2;// in k ohm\n", "V_S = (I_D*R_S) - V_DD;// in V\n", "V_G = V_GS+V_S;// in V\n", "I = 0.1*I_D;// in mA\n", "R2 = (V_G+V_DD)/I;// in k ohm\n", "disp(R2,'The value of R2 in k ohm is');\n", "R1 = (V_DD - V_G)/I;// in k ohm\n", "disp(R1,'The value of R1 in k ohm is');\n", "R_D = 10;// in k ohm\n", "V_DS = (V_DD-V_SS) - (I_D*(R_S+R_D));// in V\n", "disp(V_DS,'The value of V_DS in V is');\n", "V_DSsat = V_GS-V_T;// in V\n", "disp(V_DSsat,'The value of V_DS(sat) in V is');\n", "if V_DS>V_DSsat then\n", " disp('The MOSFET is in saturation region')\n", "end\n", "\n", "// Note: The value of R1 is in k ohm but in the book it is wrong." ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.13: IDQ_and_VDS.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.13\n", "format('v',5)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "V_DD = 6;// in V\n", "V_D = 3;// in V\n", "R_D = 10;// in k ohm\n", "// The value of I_DQ can be find as,\n", "I_DQ = (V_DD-V_D)/R_D;// in mA\n", "disp(I_DQ,'The value of I_DQ in mA is');\n", "V_T = 0.8;// in V\n", "k = 0.12;// in mA/V^2\n", "// The value of Ground to Source voltage,\n", "V_GS = sqrt(I_DQ/k) + V_T;// in V\n", "V_S = -V_GS;// in V\n", "// The value of Drain to Source voltage,\n", "V_DS = V_D-V_S;// in V\n", "disp(V_DS,'The value of V_DS in V is');" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.14: The_region_of_operation.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.14\n", "format('v',5)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "I_D = 0.3;// in mA\n", "k = 0.12;// in mA/V^2\n", "V_T = 1;// in V\n", "V_GS = V_T + (sqrt(I_D/k));// in V\n", "V_S = -V_GS;// in V\n", "V_DD = 6;// in V\n", "V_D = 3;// in V\n", "I_DQ = 0.3;// in mA\n", "R_D = (V_DD-V_D)/I_DQ;// in k ohm\n", "disp(R_D,'The value of R_D in k ohm is');\n", "V_DS = V_D - V_S;// in V\n", "disp(V_DS,'The value of V_DS in V is');\n", "V_DSsat = V_GS - V_T;// in V\n", "disp(V_DSsat,'The value of V_DS(sat) in V is');\n", "if V_DS>V_DSsat then\n", " disp('The MOSFET is in saturation region')\n", "end" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.15: VDS_VGS_and_ID.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.15\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "k= 0.05;// in mA/V^2\n", "V_T= 1;// in V\n", "V_DD= 6;// in V\n", "R_S= 9.1;//in kΩ\n", "//V_GS= V_DD-I_D*R_S\n", "//I_D= k*(V_DD-I_D*R_S)^2\n", "//I_D^2*R_S^2-I_D*(2*V_DD*R_S+1/k)+V_DD^2\n", "A= R_S^2;// assumed\n", "B=-(2*V_DD*R_S+1/k);// assumed\n", "C= V_DD^2;// assumed\n", "I_D= [A B C];\n", "I_D= roots(I_D);// in mA\n", "I_D= I_D(2);// in mA\n", "V_GS= V_DD-I_D*R_S;// in V\n", "V_DS= V_GS;// in V\n", "disp(I_D,'The value of I_D in mA is : ')\n", "disp(V_GS,'The value of V_GS in volts is : ')\n", "disp(V_DS,'The value of V_DS in volts is : ')" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.16: All_dc_voltages.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.16\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "k1= 0.01;// in mA/V^2\n", "k2= 0.05;// in mA/V^2\n", "V_DD= 5;// in V\n", "V_T1=1;// in V\n", "V_T2=1;// in V\n", "// Analysis for Vi= 5V\n", "Vi= 5;// in V\n", "//I_D1= k1*(V_GS1-V_T1)^2 and I_D2= k2*(2*(V_GS2-V_T2)*V_DS2-V_DS2^2)\n", "// But V_GS2= Vi, V_DS2= Vo, V_GS1= V_DS1= V_DD-Vo\n", "//Vo^2*(k1+k2)-Vo*[2*k1*(V_DD-V_T1)+2*k2*(Vi-V_T2)]+k1*(V_DD-V_T1)^2\n", "A=(k1+k2);\n", "B=-[2*k1*(V_DD-V_T1)+2*k2*(Vi-V_T2)];\n", "C=k1*(V_DD-V_T1)^2;\n", "Vo= [A B C]\n", "Vo= roots(Vo);// in V\n", "Vo= Vo(2);// in V\n", "V_GS2= Vi;// in V\n", "V_DS2= Vo;// in V\n", "V_GS1= V_DD-Vo;// in V\n", "I_D1= k1*(V_GS1-V_T1)^2;// in mA\n", "I_D2= I_D1;// in mA\n", "disp('Part (i) For Vi = 5 V')\n", "disp(Vo,'The output voltage in volts is : ')\n", "disp(I_D1,'The value of I_D1 in mA is : ')\n", "disp(I_D2,'The value of I_D2 in mA is : ')\n", "// Analysis for Vi= 1.5V\n", "Vi= 1.5;// in V\n", "//I_D2= k2*(V_GS2-V_T2)^2 and I_D1= k1*(V_GS1-V_T1)^2\n", "// But V_GS2= Vi, V_DS2= Vo, V_GS1= V_DS1= V_DD-Vo\n", "//k2*(Vi-V_T2)^2= k1*(V_DD-Vo-V_T1)^2 or \n", "Vo= V_DD-V_T1-sqrt(k2/k1)*(Vi-V_T2);// in V\n", "I_D2= k2*(Vi-V_T2)^2;//in mA\n", "I_D1= I_D2;// in mA\n", "disp('Part (ii) For Vi = 1.5 V')\n", "disp(Vo,'The output voltage in volts is : ')\n", "disp(I_D1,'The value of I_D1 in mA is : ')\n", "disp(I_D2,'The value of I_D2 in mA is : ')\n", "\n", "\n", "\n", "\n", "\n", "" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.17: ID_and_VDS.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.17\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "k = 0.12;// in mA/V^2\n", "V_T = -2.5;// in V\n", "V_GS = 0;\n", "I_D = k*((V_GS-V_T)^2);// in mA\n", "disp(I_D,'The value of I_D in mA is');\n", "V_DD = 6;// in V\n", "R_S = 4.7;// in k ohm \n", "V_DS = V_DD -(I_D*R_S);// in V\n", "disp(V_DS,'The value of V_DS in V is '); \n", "V_S = 0;// in V \n", "V_DSsat = V_S - V_T;// in V\n", "disp(V_DSsat,'The value of V_DS(sat) in V is');\n", "if V_DSV_DSsat then\n", " disp('MOSFET is in saturation region')\n", "end" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.7: DC_load_line_and_operating_point.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.7\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "V_DD= 6;// in V\n", "R_D= 18;// in kohm\n", "// for maximum value of I_D\n", "V_DS=0;// in V\n", "I_Dmax= (V_DD-V_DS)/R_D;// in mA\n", "// for maximum value of V_DS\n", "I_D=0;// in mA\n", "V_DSmax=V_DD-I_D*R_D;// in V\n", "V_DS= 0:0.1:V_DSmax;// in V\n", "I_D= (V_DD-V_DS)/R_D;// in mA\n", "plot(V_DS,I_D)\n", "xlabel('V_DS in volts')\n", "ylabel('I_D in mA')\n", "title('DC load line')\n", "disp('DC load line shown in figure');\n", "disp('Q-points are : 2.8V, 0.178 mA')" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.8: Region_at_which_MOSFET_ia_biased.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.8\n", "format('v',5)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "R2 = 18;// in k ohm\n", "R1 = 33;// in k ohm\n", "V_DD = 6;// in V\n", "V_G = (R2/(R1+R2))*V_DD;// in V\n", "V_S = V_DD;// in V\n", "V_SG = V_S-V_G;// in V\n", "disp(V_SG,'The value of V_SG in V is');\n", "k = 0.1;\n", "V_T = -1;// in V\n", "I_D = k*((V_SG+V_T)^2);// in mA\n", "disp(I_D,'The value of I_D in mA is');\n", "R_D = 3;// in k ohm\n", "V_SD = V_DD - (I_D*R_D);// in V\n", "disp(V_SD,'The value of V_SD in V is');\n", "V_SDsat = V_SG+V_T;// in V\n", "disp(V_SDsat,'The value of V_SD(sat) in V is');\n", "if V_SD>V_SDsat then\n", " disp('The p MOSFET is indeed biased in the saturation region')\n", "end" ] } , { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 5.9: IDQ_and_VDSQ.sce" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "// Exa 5.9\n", "format('v',6)\n", "clc;\n", "clear;\n", "close;\n", "// Given data\n", "V_G= 1.5;// in V\n", "V_P= -3;// in V\n", "R_S= 750;// in Ω\n", "R_D= 1800;// in Ω\n", "I_DSS= 6*10^-3;// in A\n", "V_DD= 18;// in V\n", "// V_GS= V_G-I_D*R_S\n", "// I_D= I_DSS*(1-V_GS/V_P)^2 or I_DSS*(1-(V_G-I_D*R_S)/V_P)^2\n", "//I_D^2*R_S^2+I_D*(2*R_S*(V_P-V_G)-V_P^2/I_DSS)+(V_P-V_G)^2\n", "A= R_S^2;\n", "B=(2*R_S*(V_P-V_G)-V_P^2/I_DSS);\n", "C=(V_P-V_G)^2;\n", "// Evaluating the value of I_D by using polynomial\n", "I_D= [A B C]\n", "I_D= roots(I_D);// in A\n", "I_D= I_D(2);// in A\n", "I_DQ= I_D;// in A\n", "V_DS= V_DD-I_D*(R_D+R_S);// in V\n", "V_DSQ= V_DS;// in V\n", "disp(I_DQ*10^3,'The value of I_DQ in mA is : ')\n", "disp(V_DSQ,'The value of V_DSQ in volts is : ')" ] } ], "metadata": { "kernelspec": { "display_name": "Scilab", "language": "scilab", "name": "scilab" }, "language_info": { "file_extension": ".sce", "help_links": [ { "text": "MetaKernel Magics", "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" } ], "mimetype": "text/x-octave", "name": "scilab", "version": "0.7.1" } }, "nbformat": 4, "nbformat_minor": 0 }