summaryrefslogtreecommitdiff
path: root/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb')
-rwxr-xr-xMicroelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb421
1 files changed, 421 insertions, 0 deletions
diff --git a/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb b/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb
new file mode 100755
index 00000000..78acbede
--- /dev/null
+++ b/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb
@@ -0,0 +1,421 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:b6ca6f88473b518209629b5a50e034951050cc84cc7fdfcdcdfe2cbba83ff5c4"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter03:Diodes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.1:pg-143"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Example 3.1: Peak value of diode current and maximum reverse voltage\n",
+ "#v_s is sinusoidal input voltage with peak 24V\n",
+ "#battery charges to 12V\n",
+ "I_d=(24-12)/100.0\n",
+ "max_v_rev=24+12.0;\n",
+ "print round(I_d,2),\"peak value of diode current (A)\\n\",round(max_v_rev,2),\"maximum reverse voltage acrossthe diode (V)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0.12 peak value of diode current (A)\n",
+ "36.0 maximum reverse voltage acrossthe diode (V)\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.2:pg-145"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Example 3.2 : Values of Iand V for the circuit given\n",
+ "print \"Consider fig 3.6(a). Assume both diodes are conducting\"\n",
+ "I_D2=(10-0)/10.0;\n",
+ "I=(0-(-10))/5.0-I_D2; # node eqution at B for fig 3.6(a)\n",
+ "V_B=0;\n",
+ "V=0;\n",
+ "print I,\"= I (mA)\\n\", V,\"= V (V)\\n\" ,\"D_1 is conducting as assumed originally\"\n",
+ "print \"Consider fig 3.6(a). Assume both diodes are conducting\"\n",
+ "I_D2=(10-0)/5.0;\n",
+ "I=(0-(-10.0))/10-2; # node eqution at B for fig 3.6(b)\n",
+ "print I,\"= I (mA)\\n \", V,\"=V (V)\"\n",
+ "print \"Implies assumption is wrong. lets assume D_1 is off and D_2 is on\"\n",
+ "I_D2=(10-(-10))/15.0;\n",
+ "V_B=-10+10.0*I_D2;\n",
+ "I=0;\n",
+ "print I,\"= I (mA)\\n\", round(V_B,1),\"= V (V)\\n D_1 is reverse biased\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Consider fig 3.6(a). Assume both diodes are conducting\n",
+ "1.0 = I (mA)\n",
+ "0 = V (V)\n",
+ "D_1 is conducting as assumed originally\n",
+ "Consider fig 3.6(a). Assume both diodes are conducting\n",
+ "-1.0 = I (mA)\n",
+ " 0 =V (V)\n",
+ "Implies assumption is wrong. lets assume D_1 is off and D_2 is on\n",
+ "0 = I (mA)\n",
+ "3.3 = V (V)\n",
+ " D_1 is reverse biased\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.3:pg-150"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Example 3.3 : Evaluating junction scaling constant\n",
+ "#i-I_S*exp(v/(n*V_T)) implies I_S=i*exp(-v/(n*V_T))\n",
+ "n=1;\n",
+ "i=10**-3; # (A)\n",
+ "v=700; # (V)\n",
+ "V_T=25; # (V)\n",
+ "I_S=i*exp(-v/(n*V_T))\n",
+ "print round(I_S,17),\"= I_S (A) for n=1\"\n",
+ "n=2;\n",
+ "I_S=i*exp(-v/(n*V_T))\n",
+ "print round(I_S,11),\"= I_S (A) for n=2\"\n",
+ "print \"These values implies I_S is 1000 times greater \""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "6.9e-16 = I_S (A) for n=1\n",
+ "8.3e-10 = I_S (A) for n=2\n",
+ "These values implies I_S is 1000 times greater \n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.4:pg-154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Example 3.4: To determine I_D and V_D\n",
+ "V_DD=5; # (V)\n",
+ "R=1000; # (ohm)\n",
+ "I_1=1*10**-3; # (A)\n",
+ "V_D=0.7; # (V)\n",
+ "V_1=V_D;\n",
+ "I_D=(V_DD-V_D)/R;\n",
+ "I_2=I_D;\n",
+ "V_2=V_1+0.1*log10(I_2/I_1);\n",
+ "I_D=(V_DD-V_2)/R;\n",
+ "print round(I_D*1000.0,3),\"= The diode current (mA)\"\n",
+ "V_D=V_2+0.1*log10(I_D/I_2)\n",
+ "print round(V_D,3),\"= The diode volage (V)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "4.237 = The diode current (mA)\n",
+ "0.763 = The diode volage (V)\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.5:pg-157"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example 3.5 : Repeating example 3.4 using piecewise linear model\n",
+ "V_D0=0.65; # (V)\n",
+ "r_D=20; # (ohm)\n",
+ "R=1000; # (ohm)\n",
+ "V_DD=5; # (V)\n",
+ "I_D=(V_DD-V_D0)/(R+r_D);\n",
+ "print round(I_D*1000,2),\"= I_D (mA)\"\n",
+ "V_D=V_D0+I_D*r_D;\n",
+ "print round(V_D,3),\"= The diod voltage (V)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "4.26 = I_D (mA)\n",
+ "0.735 = The diod voltage (V)\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.6:pg-162"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example 3.6 : Power supply ripple\n",
+ "V_S=10; # V_S=V_+\n",
+ "V_D=0.7; # (V)\n",
+ "R=10*10**3; # (ohm)\n",
+ "n=2;\n",
+ "V_T=25*10**-3; # (V)\n",
+ "V_s=1; # (V)\n",
+ "I_D=(V_S - V_D)/R;\n",
+ "r_D=n*V_T/I_D;\n",
+ "v_d=V_s*r_D/(R+r_D);\n",
+ "print round(v_d*1000,2),\"= v_d(peak (mV))\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "5.35 = v_d(peak (mV))\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.7:pg-163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example 3.7 : Percentage change in regulated voltage\n",
+ "V_DD=10; # (V)\n",
+ "V_D=0.7*3; # string of 3 diodes provide this constant voltage\n",
+ "R=1*10**3;\n",
+ "I_D=(V_DD-V_D)/R;\n",
+ "n=2;\n",
+ "V_T= 25*10**-3; # (V)\n",
+ "r_d=n*V_T/I_D; # incremental resistance \n",
+ "r=3*r_d; # total incremental resistance\n",
+ "deltav_O=2*r/(r+R); # deltav is peak to peak change in output voltage\n",
+ "print round(deltav_O*1000,1),\"is Percentage change (mV) in regulated voltage caused by 10% change in power supply\"\n",
+ "I=2.1*10**-3; # The current drawn from the diode string\n",
+ "deltav_O=-I*r; # Decrease in voltage across diode string\n",
+ "print round(deltav_O*1000,1),\"is Decrease in voltage across diode string (mV)\"\n",
+ "# The answer in the textbook is slightly different due to approximation"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "37.3 is Percentage change (mV) in regulated voltage caused by 10% change in power supply\n",
+ "-39.9 is Decrease in voltage across diode string (mV)\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.8:pg-169"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example 3.8 : line regulation load regulation\n",
+ "\n",
+ "V_Z=6.8; # (V)\n",
+ "I_Z=0.005; # (A)\n",
+ "r_Z=20; # (ohm)\n",
+ "V=10; # V=V_+\n",
+ "R=0.5*10**3; # (ohm)\n",
+ "\n",
+ "# 3.8a\n",
+ "V_ZO=V_Z-r_Z*I_Z;\n",
+ "I_Z=(V-V_ZO)/(R+r_Z)\n",
+ "V_O=V_ZO+I_Z*r_Z;\n",
+ "print round(V_O,2),\"= V_O (V)\"\n",
+ "\n",
+ "# 3.8b\n",
+ "deltaV=1; # change in V is +1 and -1\n",
+ "deltaV_O=deltaV*r_Z/(R+r_Z); # corresponding change in output voltage\n",
+ "print round(deltaV_O*1000,1),\"= Line regulation (mV/V)\"\n",
+ "\n",
+ "# 3.8c\n",
+ "I_L=1*10**-3; # load current\n",
+ "deltaI_L=1*10**-3;\n",
+ "deltaI_Z=-1*10**-3; # change in zener current\n",
+ "deltaV_O=r_Z*deltaI_Z;\n",
+ "print round(deltaV_O*1000),\"= Load regulation (mV/mA)\"\n",
+ "\n",
+ "# 3.8d\n",
+ "I_L=6.8/2000; # load current with load resistance of 2000\n",
+ "deltaI_Z=-I_L;\n",
+ "deltaV_O=r_Z*deltaI_Z;\n",
+ "print round(deltaV_O*1000,2),\"= Corresponding change in zener voltage (mV) for zener current change of -3.4mA\"\n",
+ "\n",
+ "# 3.8e\n",
+ "R_L=0.5*10**3; # (ohm)\n",
+ "V_O=V*R_L/(R+R_L);\n",
+ "print V_O,\"V_O (V) for R_L=0.5K ohm\"\n",
+ "\n",
+ "# 3.8f\n",
+ "I_Z=0.2*10**-3; # Zener t be at the edge of breakdown I_Z=I_ZK\n",
+ "V_Z=6.7; # V_Z=V_ZK\n",
+ "I_Lmin=(9-6.7)/0.5; # Lowest current supplied to R\n",
+ "I_L=I_Lmin-I_Z; # load current\n",
+ "R_L=V_Z/I_L;\n",
+ "print round(R_L,1),\"= R_L (Kohm)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "6.83 = V_O (V)\n",
+ "38.5 = Line regulation (mV/V)\n",
+ "-20.0 = Load regulation (mV/mA)\n",
+ "-68.0 = Corresponding change in zener voltage (V) for zener current change of -3.4mA\n",
+ "5.0 V_O (V) for R_L=0.5K ohm\n",
+ "1.5 = R_L (Kohm)\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex3.9:pg-181"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example 3.9 : Value of capacitance C that will result in peak-peak ripple of 2V\n",
+ "V_P=100.0; # (V)\n",
+ "V_r=2.0; # (V)\n",
+ "f=60.0; # (Hz)\n",
+ "R=10.0*10**3; # (ohm)\n",
+ "I_L=V_P/R;\n",
+ "C=V_P/(V_r*f*R);\n",
+ "print round(C*1000000,1),\"= C (microF)\"\n",
+ "wdeltat=math.sqrt(2*V_r/V_P);\n",
+ "print wdeltat,\"= Conduction angle (rad)\"\n",
+ "i_Dav=I_L*(1+math.pi*math.sqrt(2*V_P/V_r));\n",
+ "print round(i_Dav*1000),\"= i_Dav (A)\"\n",
+ "i_Dmax=I_L*(1+2*math.pi*math.sqrt(2*V_P/V_r));\n",
+ "print round(i_Dmax*1000),\"= i_Dmax (mA)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "83.3 = C (microF)\n",
+ "0.2 = Conduction angle (rad)\n",
+ "324.0 = i_Dav (A)\n",
+ "638.0 = i_Dmax (mA)\n"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file