{ "metadata": { "name": "", "signature": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Chapter 2 - Metal oxide semiconductor field effect transistor(MOSFET)" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.1 - page 75" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Given data \n", "V_S= 0 # As source is connected to ground\n", "V_G= 1.5 # in V\n", "V_D= 0.5 # in V\n", "Vt= 0.7 # in V\n", "# Part(a) V_D= 0.5 # in V\n", "V_D= 0.5 # in V\n", "V_DS= V_D-V_S # in V\n", "V_GS= V_G-V_S # in V\n", "if V_GS < Vt:\n", " print \"At V_D = 0.5 , the device is in cut off region\"\n", "elif V_DS<= (V_GS-Vt):\n", " print \"At V_D = 0.5 , the device is in triode region\" \n", "else:\n", " print \"At V_D = 0.5 , the device is in saturation region\"\n", "\n", "# Part(b) V_D= 0.9 # in V\n", "V_D= 0.9 # in V\n", "V_DS= V_D-V_S # in V\n", "V_GS= V_G-V_S # in V\n", "if V_GS < Vt:\n", " print \"At V_D = 0.9 , the device is in cut off region\"\n", "elif V_DS<= (V_GS-Vt):\n", " print \"At V_D = 0.9 , the device is in triode region\"\n", "else:\n", " print \"At V_D = 0.9 , the device is in saturation region\" \n", "\n", "\n", "# Part(c) V_D= 3 # in V\n", "V_D= 3 # in V\n", "V_DS= V_D-V_S # in V\n", "V_GS= V_G-V_S # in V\n", "if V_GS < Vt:\n", " print \"At V_D = 3 , the device is in cut off region\"\n", "elif V_DS<= (V_GS-Vt):\n", " print \"At V_D = 3 , the device is in triode region\"\n", "else:\n", " print \"At V_D = 3 , the device is in saturation region\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "At V_D = 0.5 , the device is in triode region\n", "At V_D = 0.9 , the device is in saturation region\n", "At V_D = 3 , the device is in saturation region\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.2 - page 77" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Given data \n", "unCox= 100 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "L= 1 #in \u00b5m\n", "L= L*10**-6 # in m\n", "W=10 # in \u00b5m\n", "W=W*10**-6 # in m\n", "V_GS= 1.5 # in V\n", "Vt= 0.7 # in V\n", "# For V_DS= 0.5 V\n", "V_DS= 0.5 # in V\n", "if V_DS<= (V_GS-Vt):\n", " I_D= unCox*W/L*((V_GS-Vt)*V_DS-V_DS**2/2)\n", " print \"The device is in triode region. SO the drain current in the triode region = %0.f \u00b5A\" %(I_D*10**6)\n", "else:\n", " I_D= unCox*W/(2*L)*(V_GS-VT)**2\n", " print \"The device is in saturation region. SO the drain current in the saturation region = %0.1f \u00b5A\" %(I_D*10**6)\n", "\n", "# For V_DS= 0.9 V\n", "V_DS= 0.9 # in V\n", "if V_DS<= (V_GS-Vt):\n", " I_D= unCox*W/L*((V_GS-Vt)*V_DS-V_DS**2/2)\n", " print \"The device is in triode region. So the drain current in the triode region = %0.1f \u00b5A\" %(I_D*10**6)\n", "else:\n", " I_D= unCox*W/(2*L)*(V_GS-Vt)**2\n", " print \"The device is in saturation region. So drain current in the saturation region = %0.f \u00b5A\" %(I_D*10**6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The device is in triode region. SO the drain current in the triode region = 275 \u00b5A\n", "The device is in saturation region. So drain current in the saturation region = 320 \u00b5A\n" ] } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.3 - page 78" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Given data \n", "Vt= 0.7 # in V\n", "ID = 100 # in \u00b5A\n", "V_GS= 1.2 # in V\n", "V_DS= 1.2 # in V\n", "\n", "# Let assume \u00b5n*Cox*W/(2*L) = K\n", "# For triode region\n", "if V_DS<= (V_GS-Vt):\n", " #triode region\n", " K = ID*10**-6/(V_GS-Vt)**2\n", " \n", "else:\n", " # saturation region\n", " K = ID*10**-6/(V_GS-Vt)**2\n", "\n", "V_DS= 3 # inV\n", "V_GS = 1.5 # in V\n", "I_D= K*(V_GS-Vt)**2 # in A\n", "I_D*=10**6 # in \u00b5A\n", "print \"Value of ID = %0.1f \u00b5A\" %I_D\n", "# Drain to source resistance\n", "V_GS = 3.2 # in V\n", "r_DS = 1/(2*K*(V_GS-Vt))\n", "print \"Drain to source resistance, rDS = %0.1f ohm\" %r_DS" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Value of ID = 256.0 \u00b5A\n", "Drain to source resistance, rDS = 500.0 ohm\n" ] } ], "prompt_number": 21 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.4 - page 82" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "I_D= 0.4 # in mA\n", "I_D=I_D*10**-3 # in A\n", "Vt= 0.7 # in V\n", "V_SS= -2.5 # in V\n", "V_DD= 2.5 # in V\n", "unCox= 100 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "W= 32 # in m\n", "L= 1 # in m\n", "# V_GS-Vt= V_OV\n", "# I_D= unCox*W/(2*L)*(V_OV)**2\n", "V_OV= sqrt(I_D/(unCox*W/(2*L))) # in V\n", "V_GS= V_OV+Vt # in V\n", "print \"The value of V_GS = %0.1f Volt\" %V_GS\n", "V_G= 0 \n", "# Formula V_GS= V_G-V_S\n", "V_S= V_G-V_GS # in V\n", "R_S= (V_S-V_SS)/I_D# in \u03a9\n", "print \"The value of R_S = %0.2f k\u03a9\" %(R_S*10**-3)\n", "V_D= 0.5 # in V\n", "R_D= (V_DD-V_D)/I_D #in \u03a9\n", "print \"The value of R_D = %0.1f k\u03a9\" %(R_D*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of V_GS = 1.2 Volt\n", "The value of R_S = 3.25 k\u03a9\n", "The value of R_D = 5.0 k\u03a9\n" ] } ], "prompt_number": 25 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.5 - page 83" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "V_DD= 3 # in V\n", "I_D= 80 # in \u00b5A\n", "I_D=I_D*10**-6 # in A\n", "Vt= 0.6 # in V\n", "unCox= 200 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "L= 0.8 #in \u00b5m\n", "L= L*10**-6 # in m\n", "W=4 # in \u00b5m\n", "W=W*10**-6 # in m\n", "# V_GS-Vt= V_OV\n", "# I_D= unCox*W/(2*L)*(V_OV)**2\n", "V_OV= sqrt(I_D/(unCox*W/(2*L))) # in V\n", "V_GS= V_OV+Vt # in V\n", "V_D= 1 # in V\n", "V_G= V_D # in V\n", "R= (V_DD-V_D)/I_D # in \u03a9\n", "print \"The value of R = %0.f k\u03a9\" %(R*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of R = 25 k\u03a9\n" ] } ], "prompt_number": 29 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.6 - page 84" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "V_DD= 10 # in V\n", "I_D= 0.4 # in mA\n", "I_D=I_D*10**-3 # in A\n", "Vt= 2 # in V\n", "unCox= 20 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "L= 10 #in \u00b5m\n", "L= L*10**-6 # in m\n", "W=100 # in \u00b5m\n", "W=W*10**-6 # in m\n", "V_S= 0 # in V as source is connected to ground\n", "# I_D= unCox*W/(2*L)*(V_OV)**2\n", "V_OV= sqrt(I_D/(unCox*W/(2*L))) # in V\n", "V_GS= V_OV+Vt # in V\n", "V_D= V_GS # in V\n", "R= (V_DD-V_D)/I_D # in \u03a9\n", "print \"The value of R = %0.2f k\u03a9\" %(R*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of R = 15.00 k\u03a9\n" ] } ], "prompt_number": 30 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.7 - page 85" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "KnWbyL= 1 # in mA\n", "KnWbyL=KnWbyL*10**-3 # in A\n", "Vt= 1 # in V\n", "V_DS= 0.1 # in V\n", "V_D= V_DS # in V\n", "V_GS= 5 # in V\n", "V_DD= V_GS # in V\n", "# Formula I_D= K'nW/L*[(V_GS-Vt)*V_DS-V_DS**2/2]\n", "I_D= KnWbyL*((V_GS-Vt)*V_DS-V_DS**2/2) # in A\n", "R_D= (V_DD-V_D)/I_D #in \u03a9\n", "print \"The required value of R_D = %0.1f k\u03a9\" %(R_D*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The required value of R_D = 12.4 k\u03a9\n" ] } ], "prompt_number": 32 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.8 - page 86" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "KnWbyL= 1 # in mA/V**2\n", "KnWbyL=KnWbyL*10**-3 # in A/V**2\n", "Vt= 1 # in V\n", "V_DD= 10 # in V\n", "R_D= 6 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "R_S= 6 # in k\u03a9\n", "R_S= R_S*10**3 # in \u03a9\n", "R_G1= 10 # in M\u03a9\n", "R_G1= R_G1*10**6 # in \u03a9\n", "R_G2= 10 # in M\u03a9\n", "R_G2= R_G2*10**6 # in \u03a9\n", "V_G= V_DD*R_G2/(R_G1+R_G2) # in V\n", "# V_S= R_S*I_D\n", "# V_GS= V_G-V_S= V_G-R_S*I_D\n", "# Formula I_D= K'nW/2*L*(V_GS-Vt)**2, Putting the value of V_GS, We get\n", "# 18*I_D**2 -25*I_D +8= 0\n", "# I_D= 0.89 mA or I_D= 0.5\n", "I_D= 0.5 # in mA\n", "I_D=I_D*10**-3 # in A\n", "V_S= R_S*I_D # in V\n", "V_GS= V_G-V_S # in V\n", "V_D= V_DD-I_D*R_D # in V\n", "print \"The value of I_D = %0.2f mA\" %(I_D*10**3)\n", "print \"The value of V_S = %0.2f Volt\" %(V_S)\n", "print \"The value of V_GS = %0.2f Volt\" %(V_GS)\n", "print \"The value of V_D = %0.2f Volt\" %(V_D)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of I_D = 0.50 mA\n", "The value of V_S = 3.00 Volt\n", "The value of V_GS = 2.00 Volt\n", "The value of V_D = 7.00 Volt\n" ] } ], "prompt_number": 33 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.9 - page 98" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "R_D= 20 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "R1= 30 # in k\u03a9\n", "R1= R1*10**3 # in \u03a9\n", "R2= 20 # in k\u03a9\n", "R2= R2*10**3 # in \u03a9\n", "V_DD= 5 # in V\n", "Vtn= 1 # in V\n", "Kn= 0.1 # in mA/V**2\n", "Kn=Kn*10**-3 # in A/V**2\n", "V_GS= R2*V_DD/(R1+R2) # in V\n", "# I_D= 1/2*\u00b5nCox*W/L*(V_GS-Vtm)**2 \n", "I_D = Kn*(V_GS-Vtn)**2 # in mA (As Kn= 1/2*\u00b5nCox*W/L)\n", "V_DS= V_DD-I_D*R_D # in V\n", "print \"The value of V_GS = %0.f Volt\" %(V_GS)\n", "print \"The value of I_D = %0.2f mA\" %(I_D*10**3)\n", "print \"The value of V_DS = %0.f Volt\" %(V_DS)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of V_GS = 2 Volt\n", "The value of I_D = 0.10 mA\n", "The value of V_DS = 3 Volt\n" ] } ], "prompt_number": 35 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.10 - page 99" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "V_DD= 15 # in V\n", "Vt= 1 # in V\n", "V_D= 10 # in V\n", "V_S= 5 # in V\n", "KnWbyL= 1 # in mA/V**2\n", "KnWbyL=KnWbyL*10**-3 # in A/V**2\n", "R_G1= 8 # in M\u03a9\n", "R_G1= R_G1*10**6 # in \u03a9\n", "I_D= 0.5 # in mA\n", "I_D=I_D*10**-3 #in A\n", "R_D= (V_DD-V_D)/I_D # in \u03a9\n", "R_S= V_S/I_D # in \u03a9\n", "# Formul I_D= 1/2*KnWbyL*(V_OV)**2\n", "V_OV= sqrt(2*I_D/KnWbyL) # in V\n", "# Formula V_OV= V_GS-Vt\n", "V_GS= V_OV+Vt # in V\n", "V_G= V_GS+V_S # in V\n", "# Formul V_G= R_G2*V_DD/(R_G1+R_G2)\n", "R_G2= R_G1*V_G/(V_DD-V_G) #in \u03a9\n", "print \"The value of R_D = %0.1f k\u03a9\" %(R_D*10**-3)\n", "print \"The value of R_S = %0.1f k\u03a9\" %(R_S*10**-3)\n", "print \"The value of V_OV = %0.1f Volt\" %(V_OV)\n", "print \"The value of V_GS = %0.1f Volt\" %V_GS\n", "print \"The value of R_G2 = %0.1f M\u03a9\" %(R_G2*10**-6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of R_D = 10.0 k\u03a9\n", "The value of R_S = 10.0 k\u03a9\n", "The value of V_OV = 1.0 Volt\n", "The value of V_GS = 2.0 Volt\n", "The value of R_G2 = 7.0 M\u03a9\n" ] } ], "prompt_number": 36 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.11 - page 110" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "V_DD= 15 # in V\n", "KnWbyL= 0.25 # in mA/V**2\n", "KnWbyL=KnWbyL*10**-3 # in A/V**2\n", "Vt= 1.5 # in V\n", "V_A= 50 # in V\n", "R_D= 10 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "R_L= 10 # in k\u03a9\n", "R_L= R_L*10**3 # in \u03a9\n", "R_G= 10 # in M\u03a9\n", "R_G= R_G*10**6 # in \u03a9\n", "# I_D= 1/2*KnWbyL*(V_D-Vt)**2 , (V_GS= V_D, as dc gate current is zero) (i)\n", "# V_D= V_DD- I_D*R_D (ii)\n", "I_D= 1.06 # in mA\n", "I_D = I_D*10**-3 # in A\n", "V_D= V_DD- I_D*R_D # in V\n", "V_GS=V_D # in V\n", "# The coordinates of operating point \n", "V_GSQ= V_D # in V\n", "I_DQ= I_D*10**3 # in mA\n", "print \"The coordinates of operating point(bias point) are V_GSQ =\",V_GSQ,\"V and I_DQ =\",I_DQ,\"mA\"\n", "gm= KnWbyL*(V_GS-Vt) # in A/V\n", "r_o= V_A/I_D #in \u03a9\n", "# The gain is : Av= vo/vi = -gm*(R_D||R_L||r_o)\n", "Av= -gm*(R_D*R_L*r_o/(R_D*R_L+R_D*r_o+R_L*r_o)) # in V/V\n", "print \"VOltage gain is %0.1f V/V\" %Av\n", "# i_i= (vi-vo)/R_G\n", "# i_i= vi/R_G*(1-vo/vi) and Rin= vi/i_i = R_G/(1-Av)\n", "Rin= R_G/(1-Av) # in \u03a9\n", "print \"The input resistance = %0.2f M\u03a9\" %(Rin*10**-6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The coordinates of operating point(bias point) are V_GSQ = 4.4 V and I_DQ = 1.06 mA\n", "VOltage gain is -3.3 V/V\n", "The input resistance = 2.34 M\u03a9\n" ] } ], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.12 - page 143" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "I_D= 0.5 # in mA\n", "I_D= I_D*10**-3 # in mA\n", "V_D= 3 # in V\n", "Vt= -1 # in V\n", "KpWbyL= 1 # in mA/V**2\n", "KpWbyL=KpWbyL*10**-3 # in A/V**2\n", "# Formul I_D= 1/2*KpWbyL*(V_OV)**2\n", "V_OV= sqrt(2*I_D/KpWbyL) # in V\n", "# For PMOS\n", "V_OV= -V_OV # in V\n", "V_GS= V_OV+Vt # in V\n", "R_D= V_D/I_D # in \u03a9\n", "V_Dmax= V_D+abs(Vt) # in V\n", "R_D= V_Dmax/I_D # in \u03a9 \n", "print \"\"\"The largest value that R_D can have\n", "while maintaining saturation-region operation is %0.2f k\u03a9\"\"\" %(R_D*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The largest value that R_D can have\n", "while maintaining saturation-region operation is 8.00 k\u03a9\n" ] } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.14 - page 145" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "V_GS1= 1.5 # in V\n", "Vt= 1 # in V\n", "r_DS1= 1 # in k\u03a9\n", "r_DS1= r_DS1*10**3 # in \u03a9\n", "r_DS2= 200 # in k\u03a9\n", "# r_DS1= 1/(KnWbyL*(V_GS1-Vt)) (i)\n", "# r_DS2= 1/(KnWbyL*(V_GS2-Vt)) (i)\n", "# dividing equation (i) by (ii)\n", "V_GS2= (r_DS1/r_DS2)*(V_GS1-Vt)+Vt # in V\n", "print \"To Optain rDS= 200, The value of V_GS should be %0.2f Volt\" %V_GS2\n", "# For V_GS= 1.5 # V\n", "# W2= 2*W1 \n", "# r_DS1/r_DS2= 2\n", "r_DS2= r_DS1/2 # in \u03a9\n", "print \"For V_GS= 1.5 V , the value of r_DS2 = %0.1f \u03a9 \" %r_DS2\n", "# For V_GS= 3.5 V\n", "r_DS2= 200/2 # in \u03a9\n", "print \"For V_GS= 3.5 V , the value of r_DS2 = %0.1f \u03a9\" %r_DS2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "To Optain rDS= 200, The value of V_GS should be 3.50 Volt\n", "For V_GS= 1.5 V , the value of r_DS2 = 500.0 \u03a9 \n", "For V_GS= 3.5 V , the value of r_DS2 = 100.0 \u03a9\n" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.15 page 146" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "I_D= 0.2 # in mA\n", "I_D= I_D*10**-3 # in mA\n", "Vt= 1 # in V\n", "KpWbyL= 0.1 # in mA/V**2\n", "KpWbyL=KpWbyL*10**-3 # in A/V**2\n", "# Formul I_D= 1/2*KpWbyL*(V_GS-VT)**2\n", "V_GS= sqrt(2*I_D/KpWbyL)+Vt # in V\n", "V_DSmin= V_GS-Vt # in V\n", "print \"Required V_GS = %0.1f Volt\" %V_GS\n", "print \"The minimum required V_DS = %0.1f Volt\" %V_DSmin\n", "# For I_D= 0.8 mA\n", "I_D = 0.8*10**-3 # in A\n", "V_GS= sqrt(2*I_D/KpWbyL)+Vt # in V\n", "V_DSmin= V_GS-Vt # in V\n", "print \"Required V_GS = %0.1f Volt\" %V_GS\n", "print \"The minimum required V_DS = %0.1f Volt\" %V_DSmin" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Required V_GS = 3.0 Volt\n", "The minimum required V_DS = 2.0 Volt\n", "Required V_GS = 5.0 Volt\n", "The minimum required V_DS = 4.0 Volt\n" ] } ], "prompt_number": 14 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.16 - page 147" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "V_SS= -5 # in V\n", "unCox= 60 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "Vt= 1 # in V\n", "W= 100 # in \u00b5m\n", "L= 3 # in \u00b5m\n", "V_G=0 # in V\n", "V_DD= 5 # in V\n", "V_D=0 #in V\n", "I_D= 1*10**-3 # in A\n", "# I_D= (V_DD-V_D)/R_D\n", "R_D= (V_DD-V_D)/I_D # in \u03a9\n", "print \"The value of R_D = %0.f k\u03a9\" %(R_D*10**-3)\n", "# Formul I_D= 1/2*unCox*W/L*(V_GS-Vt)**2\n", "V_GS= sqrt(2*I_D*L/(unCox*W))+Vt # in V\n", "V_S= V_G-V_GS # in V\n", "R_S= (V_S-V_SS)/I_D # in \u03a9\n", "print \"The resistance = %0.f k\u03a9\" %(R_S*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of R_D = 5 k\u03a9\n", "The resistance = 3 k\u03a9\n" ] } ], "prompt_number": 15 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.17 - page 148" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "V_D= 3.5 # in V\n", "I_D= 115*10**-6 #in A\n", "upCox= 60 # in \u00b5A/V**2\n", "upCox= upCox*10**-6 # in A/V**2\n", "L= 0.8 #in \u00b5m\n", "V_GS= -1.5 # in V\n", "Vt= 0.7 # in V\n", "R= V_D/I_D # in \u03a9\n", "print \"The value required for R = %0.1f k\u03a9\" %(R*10**-3)\n", "# Formul I_D= 1/2*upCox*W/L*(V_GS-Vt)**2\n", "W= 2*I_D*L/(upCox*(V_GS-Vt)**2)\n", "print \"The value required for W = %0.1f \u00b5m\" %(W)\n", "\n", "# Note: Calculation of evaluating the value of W in the book is wrong , so the Answer of the book is wrong " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value required for R = 30.4 k\u03a9\n", "The value required for W = 0.6 \u00b5m\n" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.18 - page 149" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "Vt= 1 # in V\n", "unCox= 120 # in \u00b5A/V**2\n", "unCox= unCox*10**-6 # in A/V**2\n", "L1=1 # in \u00b5m\n", "L2=L1 # in \u00b5m\n", "I_D= 120 #in \u00b5A\n", "I_D= I_D*10**-6 #in A\n", "V_GS1= 1.5 #in V\n", "V_G2= 3.5 # in V\n", "V_S2= 1.5 # in V\n", "V_DD= 5 # in V\n", "V_D2= 3.5 # in V\n", "# Formul I_D= 1/2*unCox*W/L*(V_GS1-Vt)**2\n", "W1= 2*I_D*L1/(unCox*(V_GS1-Vt)**2) # in \u00b5m\n", "print \"The value of W1 = %0.1f \u00b5m\" %W1\n", "V_GS2= V_G2-V_S2 #in V\n", "# Formul I_D= 1/2*unCox*W/L*(V_GS1-Vt)**2\n", "W2= 2*I_D*L2/(unCox*(V_GS2-Vt)**2) # in \u00b5m\n", "print \"The value of W2 = %0.1f \u00b5m\" %W2\n", "R= (V_DD-V_D2)/I_D # in \u03a9\n", "print \"Resistance = %0.1f k\u03a9\" %(R*10**-3) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of W1 = 8.0 \u00b5m\n", "The value of W2 = 2.0 \u00b5m\n", "Resistance = 12.5 k\u03a9\n" ] } ], "prompt_number": 18 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.19 - page 150" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "Vt= 2 # in V\n", "K1WbyL= 1 # in mA/V**2\n", "K1WbyL= K1WbyL*10**-3 #in mA/V**2\n", "I_D= 10 #in \u00b5A\n", "I_D= I_D*10**-6 #in A\n", "V_DD= 10 # in V\n", "R_D= 4 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "\n", "# Formul I_D= 1/2*K1WbyL*(V_GS-Vt)**2\n", "V_GS= sqrt(2*I_D/K1WbyL)+Vt # in V\n", "V1= -V_GS # in V\n", "# Part (b)\n", "I_D= 2 # in mA\n", "I_D= I_D*10**-3 # in A\n", "V2= V_DD-I_D*R_D #in V\n", "# Formul I_D= 1/2*K1WbyL*(V_GS-Vt)**2\n", "V_GS= sqrt(2*I_D/K1WbyL)+Vt # in V\n", "V3= -V_GS # in V\n", "# Part (c)\n", "I_D= 1 # in mA\n", "I_D= I_D*10**-3 # in A\n", "# Formul I_D= 1/2*K1WbyL*(V_GS-Vt)**2\n", "V_GS= sqrt(2*I_D/K1WbyL)+Vt # in V\n", "V4= V_GS # in V\n", "# Part (d)\n", "I_D= 2 # in mA\n", "R_D= 2.5 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "V_SS= 10 # in V\n", "I_D= I_D*10**-3 # in A\n", "V_GS= sqrt(2*I_D/K1WbyL)+Vt # in V\n", "V5= -V_SS+I_D*R_D # in V\n", "print \"The value of V1 = %0.2f Volt\" %V1\n", "print \"The value of V2 = %0.f Volt\" %V2\n", "print \"The value of V3 = %0.f Volt\" %V3\n", "print \"The value of V4 = %0.2f Volt\" %V4\n", "print \"The value of V5 = %0.f Volt\" %V5" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of V1 = -2.14 Volt\n", "The value of V2 = 2 Volt\n", "The value of V3 = -4 Volt\n", "The value of V4 = 3.41 Volt\n", "The value of V5 = -5 Volt\n" ] } ], "prompt_number": 23 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.20 - page 152" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "# Given data \n", "unCox= 20*10**-6 #in A/V**2\n", "upCox= unCox/2.5 # in A/V**2\n", "V_DD= 3 #in V\n", "Vt= 1 # in V\n", "W= 30 # in \u00b5m\n", "L= 10 # in \u00b5m\n", "\n", "# V_GS1= V_GS2\n", "# Formula V_DD= V_GS1+V_GS2\n", "V_GS1= V_DD/2 #in V\n", "V_GS2= V_GS1 # in V\n", "V2= V_GS1 # inV\n", "I1= 1/2*unCox*W/L*(V_GS1-Vt)**2 # in A\n", "# Both transistor have V_D = V_G and therefore they are operating in saturation \n", "#1/2*unCox*W/L*(V4-Vt)**2 = 1/2*upCox*W/L*(V_DD-V4-Vt)\n", "V4= (V_DD-Vt+sqrt(unCox/upCox))/(1+sqrt(unCox/upCox)) \n", "I3= 1/2*unCox*W/L*(1.39-Vt)**2 \n", "print \"The value of V2 = %0.1f Volt\" %V2\n", "print \"The value of I1 = %0.1f \u00b5A\" %(I1*10**6,)\n", "print \"The value of V4 = %0.1f Volt \" %V4\n", "print \"The value of I3 = %0.1f \u00b5A\" %(I3*10**6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The value of V2 = 1.5 Volt\n", "The value of I1 = 7.5 \u00b5A\n", "The value of V4 = 1.4 Volt \n", "The value of I3 = 4.6 \u00b5A\n" ] } ], "prompt_number": 24 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.22 - page 155" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import sqrt\n", "# Given data \n", "Vt= 0.9 # in V\n", "V_A= 50 # in V\n", "V_D= 2 # in V\n", "R_L= 10 # in M\u03a9\n", "R_L= R_L*10**3 # in \u03a9\n", "R_G= 10 # in M\u03a9\n", "R_G= R_G*10**6 # in \u03a9\n", "I_D= 500 # in \u00b5A\n", "I_D= I_D*10**-6 # in A\n", "V_GS= V_D # in V\n", "ro= V_A/I_D # in \u03a9\n", "gm= 2*I_D/(V_GS-Vt) # in A/V\n", "# vo= -gm*vi*(ro || R_L)\n", "vo_by_vi = -gm*(ro*R_L/(ro+R_L)) # in V/V\n", "print \"The voltage gain = %0.1f V/V\" %(vo_by_vi )\n", "# For I= 1 mA or twice the current \n", "I_D1= I_D # in A\n", "I_D2= 2*I_D1 # in A\n", "gm1= gm # in A/V\n", "# Effect on V_D\n", "# I_D1/I_D2 = (V_GS1-Vt)**2/(V_GS2-Vt)**2\n", "V_GS1= V_GS \n", "V_GS2= Vt+sqrt(2)*(V_GS1-Vt) # in V\n", "print \"The new value of V_GS = %0.1f Volt\" %(V_GS2)\n", "# Effect on gm\n", "# gm1/gm2= sqrt(I_D1/I_D2)\n", "gm2= sqrt(I_D2/I_D1)*gm1 # in A/V\n", "print \"The new value of gm2 = %0.1f mA/V\" %(gm2*10**3)\n", "# Effect on ro\n", "# ro1/ro2= I_D2/I_D1\n", "ro1= ro # in \u03a9\n", "ro2= I_D1*ro1/I_D2 # in \u03a9\n", "print \"The new value of ro = %0.1f k\u03a9/V\" %(ro2*10**-3)\n", "# Effect on gain\n", "# Av= -gm*(ro2 || R_L)\n", "Av= -gm*(ro2*R_L/(ro2+R_L)) # in V/V\n", "print \"The new value of voltage gain = %0.1f V/V\" %(Av)\n", "#Answer wrong in the textbook because of calculation accuracy." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The voltage gain = -8.3 V/V\n", "The new value of V_GS = 2.5 Volt\n", "The new value of gm2 = 1.3 mA/V\n", "The new value of ro = 50.0 k\u03a9/V\n", "The new value of voltage gain = -7.6 V/V\n" ] } ], "prompt_number": 26 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.23 - page 157" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import pi\n", "# Given data \n", "I_D= 1 # in mA\n", "I_D= I_D*10**-3 # in A\n", "gm= 1 #in mA/V\n", "gm= gm*10**-3 #in A/V\n", "f_L= 10 # in Hz\n", "R_S= 6 # in k\u03a9\n", "R_S= R_S*10**3 # in \u03a9\n", "R_D= 10 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "vo_by_vi= -gm*R_D/(1+gm*R_S) # in V/V\n", "print \"Mid band gain = %0.2f V/V \" %(vo_by_vi)\n", "# Formula f_L= 1/(2*pi*(1/gm || R_S)) * CS\n", "CS= 1/(2*pi*(1/gm*R_S/(1/gm+R_S))*f_L) #in F\n", "print \"The value of Cs = %0.2f \u00b5F\" %(CS*10**6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Mid band gain = -1.43 V/V \n", "The value of Cs = 18.57 \u00b5F\n" ] } ], "prompt_number": 29 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Exa 2.24 - page 159" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from numpy import pi\n", "# Given data \n", "Rsig= 100 # in k\u03a9\n", "Rsig= Rsig*10**3 # in \u03a9\n", "R_G= 4.7 # in M\u03a9\n", "R_G= R_G*10**6 # in \u03a9\n", "R_D= 15 # in k\u03a9\n", "R_D= R_D*10**3 # in \u03a9\n", "R_L= R_D # in \u03a9\n", "gm= 1 #in mA/V\n", "gm= gm*10**-3 #in A/V\n", "ro=150 # in k\u03a9\n", "ro=ro*10**3 # in \u03a9\n", "Cgs= 1 # in pF\n", "Cgs=Cgs*10**-12 #in F\n", "Cgd= 0.4 # in pF\n", "Cgd=Cgd*10**-12 #in F\n", "vgsBYvsig= R_G/(Rsig+R_G) \n", "Rdesh_L= R_D*R_L/(R_D+R_L) # in \u03a9\n", "voBYvgs= -gm*Rdesh_L \n", "Av= voBYvgs/vgsBYvsig # in V/V\n", "print \"The Mid-band gain = %0.2f V/V\" %(Av)\n", "CM= Cgd*(1+gm*Rdesh_L) # in F\n", "# f_H= 1/(2*pi*(Rsig || R_G)*(Cgs*CM))\n", "f_H= 1/(2*pi*(Rsig * R_G/(Rsig + R_G))*(Cgs+CM)) # in Hz\n", "print \"Frequency = %0.1f kHz\" %(f_H*10**-3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The Mid-band gain = -7.66 V/V\n", "Frequency = 369.4 kHz\n" ] } ], "prompt_number": 32 } ], "metadata": {} } ] }