summaryrefslogtreecommitdiff
path: root/Linear_Integrated_Circuits
diff options
context:
space:
mode:
authorJovina Dsouza2014-06-18 12:43:07 +0530
committerJovina Dsouza2014-06-18 12:43:07 +0530
commit206d0358703aa05d5d7315900fe1d054c2817ddc (patch)
treef2403e29f3aded0caf7a2434ea50dd507f6545e2 /Linear_Integrated_Circuits
parentc6f0d6aeb95beaf41e4b679e78bb42c4ffe45a40 (diff)
downloadPython-Textbook-Companions-206d0358703aa05d5d7315900fe1d054c2817ddc.tar.gz
Python-Textbook-Companions-206d0358703aa05d5d7315900fe1d054c2817ddc.tar.bz2
Python-Textbook-Companions-206d0358703aa05d5d7315900fe1d054c2817ddc.zip
adding book
Diffstat (limited to 'Linear_Integrated_Circuits')
-rw-r--r--Linear_Integrated_Circuits/Chapter_1.ipynb92
-rw-r--r--Linear_Integrated_Circuits/Chapter_10.ipynb376
-rw-r--r--Linear_Integrated_Circuits/Chapter_11.ipynb552
-rw-r--r--Linear_Integrated_Circuits/Chapter_2.ipynb482
-rw-r--r--Linear_Integrated_Circuits/Chapter_3.ipynb1284
-rw-r--r--Linear_Integrated_Circuits/Chapter_4.ipynb748
-rw-r--r--Linear_Integrated_Circuits/Chapter_5.ipynb212
-rw-r--r--Linear_Integrated_Circuits/Chapter_6.ipynb763
-rw-r--r--Linear_Integrated_Circuits/Chapter_7.ipynb459
-rw-r--r--Linear_Integrated_Circuits/Chapter_8.ipynb470
-rw-r--r--Linear_Integrated_Circuits/Chapter_9.ipynb77
-rw-r--r--Linear_Integrated_Circuits/README.txt10
-rw-r--r--Linear_Integrated_Circuits/screenshots/frequency_response.JPGbin0 -> 20522 bytes
-rw-r--r--Linear_Integrated_Circuits/screenshots/input_output_differentiator.JPGbin0 -> 29835 bytes
-rw-r--r--Linear_Integrated_Circuits/screenshots/ip_and_op_integrator.JPGbin0 -> 32114 bytes
15 files changed, 5525 insertions, 0 deletions
diff --git a/Linear_Integrated_Circuits/Chapter_1.ipynb b/Linear_Integrated_Circuits/Chapter_1.ipynb
new file mode 100644
index 00000000..b3bbe576
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_1.ipynb
@@ -0,0 +1,92 @@
+{
+ "metadata": {
+ "name": "Ch_1"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 1: Integrated circuit fabrication<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example 1.1, Page No:23<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''sheet resistance of P-type diffusion'''",
+ "",
+ "#Variable Declaration:",
+ "Rs=200.0 #Sheet resistance of p-type diffusion in ohm/square",
+ "R=5000.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "luponw= R/Rs #calculating dimentions of pattern ",
+ "",
+ "#Results:",
+ "print('L upon W =%d'%luponw)",
+ "print('\\n5kohm resistor can be fabricated by using a pattern of %d mil*1mil'%luponw)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "L upon W =25",
+ "",
+ "5kohm resistor can be fabricated by using a pattern of 25 mil*1mil"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example 1.2, Page No:23<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''sheet resistance of polysilicon layer'''",
+ "",
+ "#Variable Declaration:",
+ "Rs=30.0 #Sheet resistance of p-type diffusion in ohm/square",
+ "R=1000.0 #resistance in ohm",
+ "",
+ "#Calculations:",
+ "luponw=R/Rs #calculating dimentions of pattern ",
+ "",
+ "#Results:",
+ "print('L upon W =100/3')",
+ "print('\\n1kohm resistor can be fabricated by using a pattern of 100 mil* 3 mil')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "L upon W =100/3",
+ "",
+ "1kohm resistor can be fabricated by using a pattern of 100 mil* 3 mil"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_10.ipynb b/Linear_Integrated_Circuits/Chapter_10.ipynb
new file mode 100644
index 00000000..d9506c7e
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_10.ipynb
@@ -0,0 +1,376 @@
+{
+ "metadata": {
+ "name": "ch_10"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 10: Phase locked loop<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example 10.1, Page No: 429<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''DC Control voltage'''",
+ "",
+ "#Variable Declaration:",
+ "fs=20000.0 #Signal frequency in hertz",
+ "fr=21000.0 #Free running frquency in hertz",
+ "VCOf=4000.0 #V/F transfer coefficient of VCO in Khz/V",
+ "",
+ "#Calculation:",
+ "Vcd=(fr-fs)/VCOf #Calculating change in DC control voltage",
+ "",
+ "#Result:",
+ "print('Vcd= %.2f V'%Vcd)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vcd= 0.25 V"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 10.2, Page No: 430<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''VCO Circuit'''",
+ "",
+ "",
+ "#Part A",
+ "#Variable Ceclaration:",
+ "R1=15.0*10**3 #Resistance in ohm",
+ "R3=15.0*10**3 #Resistance in ohm",
+ "R2=2.2*10**3 #Resistance in ohm",
+ "C1=0.001*10**-6 #Capacitance in farad",
+ "Vcc=12.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "Vc=Vcc*(R3/(R2+R3)) #Calculating volatage in Vc",
+ "fo1=2*(Vcc-Vc)/(C1*R1*Vcc) #Calculating frequency",
+ "fo1n=fo1/1000.0 #Calculating frequency",
+ "",
+ "#Results:",
+ "print('\\nVc= %.3f V'%Vc)",
+ "print('\\nFo= %.2f kHz'%fo1n)",
+ "",
+ "#Part B",
+ "#Variable Declaration:",
+ "Vc1=7.0",
+ "Vc2=8.0",
+ "",
+ "#Calculation:",
+ "fo2=2*(Vcc-Vc1)/(C1*R1*Vcc) #Calculating frequency",
+ "fo2n=fo2/1000.0 #Calculating frequency",
+ "",
+ "fo3=2*(Vcc-Vc2)/(C1*R1*Vcc) #Calculating frequency",
+ "fo3n=fo3/1000.0 #Calculating frequency",
+ "",
+ "fch=fo2n-fo3n #Calculating chane in output frequency",
+ " ",
+ "#Results:",
+ "print('\\nFo= %.3f kHz'%fo2n)",
+ "print('\\nFo= %.3f kHz'%fo3n)",
+ "print('\\nChange in output frequency= %.3f kHz'%fch)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Vc= 10.465 V",
+ "",
+ "Fo= 17.05 kHz",
+ "",
+ "Fo= 55.556 kHz",
+ "",
+ "Fo= 44.444 kHz",
+ "",
+ "Change in output frequency= 11.111 kHz"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 10.3, Page No: 438<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''PLL565'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "fo=100.0*10**3 #Frequency in hertz",
+ "C=2.0*10**-6 #Capacitance in farad",
+ "Vcc=6.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "fld=7.8*fo/(2*Vcc) #Calculating lock frequency",
+ "fldn=fld/1000.0 #Calculating lock frequency",
+ "LR=2.0*fldn #Calculating lock range",
+ "",
+ "fcd=math.sqrt(fld/(C*2*math.pi*3.6*10**3))#Calculating capture frequency ",
+ "fcdn=fcd/1000.0 #Calculating capture frequency",
+ "CR=2*fcdn #Calculating capature range ",
+ "",
+ "R1=12.0*10**3",
+ "C1=1.2/(4*R1*fo) #Calculating value of capacitance ",
+ "C1n=C1*10**12 #Calculating value of capacitance",
+ "",
+ "#Results:",
+ "print('\\nDelta FL= +/- %d kHz'%fldn)",
+ "print('\\nLock Range= %d kHz'%LR)",
+ "print('\\nDelta FC= +/- %.3f kHz'%fcdn)",
+ "print('\\nCapture Range= %.3f kHz'%CR)",
+ "print('\\nC1= %d pF'%C1n)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Delta FL= +/- 65 kHz",
+ "",
+ "Lock Range= 130 kHz",
+ "",
+ "Delta FC= +/- 1.199 kHz",
+ "",
+ "Capture Range= 2.397 kHz",
+ "",
+ "C1= 250 pF"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 10.4, Page No: 438<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''IC565'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "R1=15000.0 #Resistance in ohm",
+ "C1=0.01*10**-6 #Capacitance in farad",
+ "C=1*10**-6 #Capacitance in farad",
+ "V=12.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "fo=1.2/(4*R1*C1) #Calculating output frequency ",
+ "fon=fo*10**-3 #Calculating output frequency",
+ "LR=7.8*fo/V #Calculating lock range",
+ "LR1=LR/1000.0 #Calculating lock range",
+ "fcd=math.sqrt(LR/(C*2*math.pi*3.6*1000)) #Calculating delta for capture frequency",
+ "",
+ "#Results:",
+ "print('\\nCentre frequency of VCO is= %.2f kHz'%fon)",
+ "print('\\nLock Range = +/- %.1f kHz'%LR1)",
+ "print('\\nDelta FC= %.2f Hz'%fcd)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Centre frequency of VCO is= 2.00 kHz",
+ "",
+ "Lock Range = +/- 1.3 kHz",
+ "",
+ "Delta FC= 239.73 Hz"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 10.5, Page No: 439<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''IC565 Output frequency'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "C1=470.0*10**-12 #Capacitance value in farad",
+ "C=20.0*10**-6 #Capacitance value in farad",
+ "V=12.0 #Voltage in volt",
+ "R1=15000.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "fo=1.2/(4*R1*C1) #Calculating centre frequency of the VCO",
+ "fon=fo/1000.0 #Calculating centre frequency of the VCO",
+ "",
+ "LR=7.8*fo/V #Calculating lock range ",
+ "LR1=LR/1000.0 #Calculating lock range",
+ "fcd=math.sqrt(LR/(C*2*math.pi*3.6*1000)) #Calculating capture range ",
+ "",
+ "#Results:",
+ "print('\\nCentre frequency of VCO is= %.3f kHz'%fon)",
+ "print('\\nLock Range = +/- %.2f kHz'%LR1)",
+ "print('\\nDelta FC= +/- %.2f Hz'%fcd)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Centre frequency of VCO is= 42.553 kHz",
+ "",
+ "Lock Range = +/- 27.66 kHz",
+ "",
+ "Delta FC= +/- 247.27 Hz"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 10.6, Page No: 439<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''PLL'''",
+ "",
+ "#Variable Declaration:",
+ "fr=300.0 #Free running frequency in hertz",
+ "bw=50.0 #Bandwidth in hertz",
+ "ip=320.0 #input signal frequency in hertz",
+ "",
+ "#Calculations:",
+ "pdop=fr+ip #Calculating phase detector output",
+ "difr=ip-fr #Calculating difference frequency",
+ "",
+ "#Results:",
+ "print('\\nPhase detector output= %d kHz'%pdop)",
+ "print('\\nDifference Frequency= %d kHz'%difr)",
+ "print('\\nAs Bandwidth is greater than difference frequency,')",
+ "print('\\nPLL can acquire lock')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Phase detector output= 620 kHz",
+ "",
+ "Difference Frequency= 20 kHz",
+ "",
+ "As Bandwidth is greater than difference frequency,",
+ "",
+ "PLL can acquire lock"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example no. 10.7, Page No: 440<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''IC565 as FM modulator'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "C1=0.01*10**-6 #Capacitance value in farad",
+ "C=0.04*10**-6 #Capacitance value in farad",
+ "V=12.0 #Voltage in volt",
+ "R1=10000.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "fo=120/(4*R1*C1) #Calculating centre frequency of the VCO",
+ "fon=fo/1000.0 #Calculating centre frequency of the VCO",
+ "",
+ "fld=7.8*fo/(V) #Calculating Lock range",
+ "fldn=fld/1000.0 #Calculating Lock range",
+ " ",
+ "fcd=math.sqrt(fld/(C*2*math.pi*3.6*10**3)) #Calculating capture range",
+ "fcdn=fcd/1000.0 #Calculating Capture range",
+ "",
+ "#Results:",
+ "print('\\nCentre frequency of VCO is= %.1f kHz'%fon)",
+ "print('\\nLock Range= %d kHz'%fldn)",
+ "print('\\nCapture Range= %.2f kHz'%fcdn)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Centre frequency of VCO is= 300.0 kHz",
+ "",
+ "Lock Range= 195 kHz",
+ "",
+ "Capture Range= 14.68 kHz"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_11.ipynb b/Linear_Integrated_Circuits/Chapter_11.ipynb
new file mode 100644
index 00000000..87c114d1
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_11.ipynb
@@ -0,0 +1,552 @@
+{
+ "metadata": {
+ "name": "ch_11"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 11: D/A and A/D Converters<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.1, Page No:460<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Resolution'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "n=12.0 #Number of bits in word",
+ "lv=2.0**n #Number of levels",
+ "Vo=4.0 #Output voltage in volt",
+ "",
+ "#Calculations:",
+ "st=10.0**6*Vo/lv #Calculating step size",
+ "dr=Vo/(st*10**-6) #Calculating dynamic range",
+ "drdb=20*math.log10(dr) #Calculating dynamic range",
+ "",
+ "#Results:",
+ "print('\\nStep Size= %d uV'%st)",
+ "print('\\nDynamic Range= %d'%dr)",
+ "print('\\nDynamic Range= %d dB'%drdb)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Step Size= 976 uV",
+ "",
+ "Dynamic Range= 4096",
+ "",
+ "Dynamic Range= 72 dB"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.2, Page NO: 460<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''D/A converter resolution'''",
+ "",
+ "#Variable Declaration:",
+ "n=8.0 #Number of bits in word",
+ "lv=2.0**n - 1 #Number of levels ",
+ "Vo=2.55 #Output voltage in volt",
+ "",
+ "#Calculation:",
+ "st=10.0**3*Vo/lv #Calculating step size ",
+ "",
+ "#Result:",
+ "print('\\nStep Size= %d mV'%st)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Step Size= 10 mV"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.3, Page No:460<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Ladder type D/A converter'''",
+ "",
+ "#Variable Declaration:",
+ "n=4.0 #Number of bits in word",
+ "R=10000.0 #Resistance in ohm",
+ "Vr=10.0 #Vpltage in volt",
+ "",
+ "#Calculations:",
+ "#Part A",
+ "reso=Vr*10**6/(R*2**n) #Calculating resolution for converter",
+ "",
+ "#Part B",
+ "k=int('1101',2) #decimal equivalent of binary '1101'",
+ "Io=reso*k/1000.0 #Calculating output current for given input",
+ "",
+ "#Results:",
+ "print('\\nResolution of 1 LSB= %.1f uA'%reso)",
+ "print('\\nOutput Io for digital input 1101= %.4f mA'%Io)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Resolution of 1 LSB= 62.5 uA",
+ "",
+ "Output Io for digital input 1101= 0.8125 mA"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.4, Page No: 461<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''8-bit D/A converter'''",
+ "",
+ "#Variable Declaration:",
+ "reso=10.0 #Resolution of D/A converter",
+ "#Calculations:",
+ "#Part A",
+ "k1=int('10001010',2) #Finding decimal equivalent",
+ "Vo=k1*reso #Calculating output voltage",
+ "Von=Vo/1000 #Calculating output voltage",
+ "",
+ "#Part B",
+ "k2=int('000100000',2) #Finding decimal equivalent",
+ "Vo1=k2*reso #Calculating output voltage",
+ "Von1=Vo1/1000 #Calculating output voltage",
+ "",
+ "#Results:",
+ "print('\\nVo= %.2f V'%Von)",
+ "print('\\nVo= %.2f V'%Von1)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Vo= 1.38 V",
+ "",
+ "Vo= 0.32 V"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.5, Page NO: 463<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''4-bit converter'''",
+ "",
+ "#Part A",
+ "print('\\nPart A')",
+ "#Variable Declaration:",
+ "R=10000.0 #Resistance in ohm",
+ "Vr=10.0 #Voltage in volt",
+ "n=4.0 #Number of bits in word",
+ "lsb=0.5 #output voltage for 1 LSB",
+ "",
+ "#Calculations:",
+ "Rf=(R*2**n)*lsb/Vr #Calculating value of resistance ",
+ "Rfn=Rf/1000.0 #Calculating value of resistance",
+ "",
+ "#Result:",
+ "print('\\nRf= %d kohm'%Rfn)",
+ "",
+ "#Part B",
+ "print('\\nPart B')",
+ "",
+ "#Variable Declaration:",
+ "b1=1.0 ",
+ "",
+ "#Calculations:",
+ "Rf1=R*6/(Vr*lsb) #Calculating value of resistance",
+ "Rfn1=Rf1/1000 #Calculating value of resistance",
+ "",
+ "",
+ "#Result:",
+ "print('\\nRf= %d kohm'%Rfn1)",
+ "",
+ "#Part c",
+ "print('\\nPart C')",
+ "#Variable Declaration:",
+ "Vfs=12.0 #Full scale voltage in volt",
+ "",
+ "#Calculations:",
+ "Rf2=R*Vfs/Vr #Calculating value of resistance",
+ "Rfn2=Rf2/1000 #Calculating value of resistance",
+ "",
+ "#Result:",
+ "print('\\nRf= %d kohm'% Rfn2)",
+ "",
+ "#Part D:",
+ "print('\\nPart D')",
+ "",
+ "#Variable Declaration",
+ "Vfs1=10.0 #Full scale voltage in volt ",
+ "bb=0.9375 ",
+ "",
+ "#Calculations:",
+ "Rf3=R*Vfs1/(Vr*bb) #Calculating value of resistance",
+ "Rfn3=Rf3/1000 #Calculating value of resistance",
+ "",
+ "",
+ "#Result:",
+ "print('\\nRf= %.3f kohm'% Rfn3)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Part A",
+ "",
+ "Rf= 8 kohm",
+ "",
+ "Part B",
+ "",
+ "Rf= 12 kohm",
+ "",
+ "Part C",
+ "",
+ "Rf= 12 kohm",
+ "",
+ "Part D",
+ "",
+ "Rf= 10.667 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.11.6 , Page No: 466<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Inverted R-2R ladder'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Vr=10.0 #Voltage in volt",
+ "R=10.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "I1=Vr/(2*R) #Calculating current",
+ "I1n=I1*1000.0 #Calculating current",
+ "",
+ "I2=I1/2.0 #Calculating current",
+ "I2n=I2*1000.0 #Calculating current",
+ "",
+ "I3=I1/4.0 #Calculating current ",
+ "I3n=I3*1000.0 #Calculating Current",
+ "I3n=math.ceil(I3n*100) #Calculating current",
+ "I3n=I3n/100 #Calculating current ",
+ "",
+ "Io=I1+I2+I3 #Calculating current",
+ "Ion=Io*1000.0 #Calculating current",
+ "",
+ "Vo=-1*Io*R #Calculating output voltage",
+ "",
+ "#Results:",
+ "print('\\nI1= %.1f mA'%I1n)",
+ "print('\\nI2= %.2f mA'% I2n)",
+ "print('\\nI3= %.2f mA'%I3n)",
+ "print('\\nIo= %.3f mA'% Ion)",
+ "print('\\nOutput Voltage Vo= %.2f V'%Vo)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "I1= 0.5 mA",
+ "",
+ "I2= 0.25 mA",
+ "",
+ "I3= 0.13 mA",
+ "",
+ "Io= 0.875 mA",
+ "",
+ "Output Voltage Vo= -8.75 V"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.7, Page NO:473<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' Output voltage for digital input'''",
+ "",
+ "#Variable Declaration:",
+ "lsb=8.0*10**-6 #Current for 1 LSB in ampere",
+ "Ifs=lsb*255.0 #Full scale current in ampere",
+ "R=5000.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "ip1= int('00000000',2) #Finding decimal equivalent ",
+ "Io1=ip1*lsb #Calculating output current",
+ "Io1d=Ifs-Io1 #Calculating output current",
+ "Vo=-Io1d*R #Calculating output voltage",
+ "",
+ "ip2= int('01111111',2) #Finding decimal equivalent",
+ "Io2=(ip2*lsb)*1000.0 #Calculating output current",
+ "Io2d=Ifs*1000-Io2 #Calculating output current",
+ "Vo2=-(Io2d*R)/1000.0 #Calculating output voltage",
+ "",
+ "",
+ "ip3=int('10000000',2) #Finding decimal equivalent",
+ "Io3=ip3*lsb #Calculating output current ",
+ "Io3d=Ifs-Io3 #Calculating output current",
+ "Vo3=-Io3d*R #Calculating output voltage",
+ "",
+ "",
+ "ip4= int('111111111',2) #Finding decimal equivalent",
+ "Io4=ip4*lsb #Calculating output current",
+ "Io4d=Ifs-Io4 #Calculating output current",
+ "Vo4=Io1d*R #Calculating output voltage",
+ "",
+ "#Results:",
+ "print('\\nCase 1: Vo= %.2f V'% Vo)",
+ "print('\\nCase 2: Vo= -0.04 V')",
+ "print('\\nCase 3: Vo= 0.04 V')",
+ "print('\\nCase 4: Vo= %.2f V'% Vo4)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Case 1: Vo= -10.20 V",
+ "",
+ "Case 2: Vo= -0.04 V",
+ "",
+ "Case 3: Vo= 0.04 V",
+ "",
+ "Case 4: Vo= 10.20 V"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.8, Page No: 478<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Resolution and dynamic range'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "n=16.0 #Number of bits in word",
+ "lv=2.0**n #Number of levels",
+ "V=2.0 #Output voltage in volt",
+ "",
+ "#Calculations:",
+ "st=V/lv #Calculating step size",
+ "lvn=st*10**6 #Calculating stepsize",
+ "dr=20*math.log10(lv) #Calculating dynamic range",
+ "",
+ "#Results:",
+ "print('\\nStep Size= %.2f uV'%lvn)",
+ "print('\\nDynamic Range= %d dB'%dr)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Step Size= 30.52 uV",
+ "",
+ "Dynamic Range= 96 dB"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.9, Page No: 482<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''8-bit A/D converter'''",
+ "",
+ "#Variable Declaration:",
+ "Vm=10.0 #Voltage in volt",
+ "n=8.0 #Number of bits in word",
+ "lv=2**n #Number of levels",
+ "",
+ "#Calculations:",
+ "lsb=Vm/lv #Calculating voltage for 1 lsb ",
+ "lsbn= lsb*1000.0 #Calculating voltage for 1 lsb",
+ "",
+ "Vifs=Vm-lsb #Calculating voltage",
+ "",
+ "ip=4.8 #voltage in volt",
+ "d=1+ ip/lsb #calculating digital output",
+ "d=123 #Calculating digital output",
+ "op=bin(d) #Finding binary equivalent",
+ "",
+ "#Results:",
+ "print('\\nPart A: 1 LSB= %.1f mV'%lsbn )",
+ "print('\\nPart B: Vifs= %.3f V'%Vifs )",
+ "print('\\nPart C: D= %d'%d)",
+ "print('\\n Digital Output= %s'% op)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Part A: 1 LSB= 39.1 mV",
+ "",
+ "Part B: Vifs= 9.961 V",
+ "",
+ "Part C: D= 123",
+ "",
+ " Digital Output= 0b1111011"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 11.10, Page No: 494<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Successive approximation A/D converter'''",
+ "",
+ "#Variable declaration:",
+ "n=8.0 #Number of bits in word",
+ "cl=2.0*10**6 #Clock frequency in Hertz",
+ "",
+ "#Calculations:",
+ "tp=1/cl #Calculating time period for one clock pulse ",
+ "tpn=tp*10**6 #Calculating time period for one clock pulse ",
+ "tm=(n+1)*tp #Calculating total time required for conversion",
+ "tmn=tm*10**6 #Calculating total time required for conversion ",
+ "",
+ "#Results:",
+ "print('\\n Time for one clock pulse= %.1f uS'% tpn)",
+ "print('\\n Time for resetting SAR and conversion= %.1f uS'%tmn)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ " Time for one clock pulse= 0.5 uS",
+ "",
+ " Time for resetting SAR and conversion= 4.5 uS"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "code",
+ "collapsed": true,
+ "input": [],
+ "language": "python",
+ "outputs": []
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_2.ipynb b/Linear_Integrated_Circuits/Chapter_2.ipynb
new file mode 100644
index 00000000..d8cc6868
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_2.ipynb
@@ -0,0 +1,482 @@
+{
+ "metadata": {
+ "name": "ch_2"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 2: Circuit configuration for linear IC's<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 2.1, Page no:40<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''current source to proide output current'''",
+ "",
+ "#Variable Declaration:",
+ "Vcc=5.0 #voltage Vcc in volt",
+ "Vbeon=0.6 #Voltage Vbeon in volt",
+ "Beta=150.0 #gain",
+ "Io=100.0*10**-6 #output current in amperes",
+ "",
+ "#Calculations:",
+ "Iref=Io*(1+ 2/Beta) #calculating reference current",
+ "Iref=Iref*10**6 #calculating reference current",
+ "",
+ "R=(Vcc-Vbeon)/Iref #Calculating value of resistance",
+ "R=R*1000.0 #Calculating value of resistance",
+ "",
+ "#Results:",
+ "print(\"Iref= %.2f uA\"% Iref)",
+ "print(\"\\nResistance= %.2f kohm\"% R)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Iref= 101.33 uA",
+ "",
+ "Resistance= 43.42 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 2.2, Page No:40<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' identical transistor circuit'''",
+ "",
+ "#Variable Declarations:",
+ "Vbe=0.7 #voltage Vbe in volt",
+ "Vcc=12.0 #voltage Vcc in volt",
+ "Rc1=1000.0 #collector resistance in ohm",
+ "Rc2=330.0 #collector resistance in ohm",
+ "",
+ "#Calculations:",
+ "Iref=(Vcc-Vbe)/Rc1 #calculating reference current ",
+ "I0=Iref #Output current is equal to Reference current ",
+ "V0=Vcc-Rc2*I0 #Calculating output volatge",
+ "",
+ "Iref=Iref/10**-3 #calculating reference current",
+ "",
+ "#Results:",
+ "print(\"Iref= %.1f mA\"%Iref)",
+ "print(\"\\nV0= %.3f V\"%V0)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Iref= 11.3 mA",
+ "",
+ "V0= 8.271 V"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example 2.3, Page No:40<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''output current of transistor'''",
+ "",
+ "#Variable Declaration",
+ "Vbe=0.6 #Voltage Vbe in volt",
+ "Vz=4.7 #Zener voltage in volt",
+ "Re=1000.0 #Emitter resistance in ohm",
+ "",
+ "#Calculations:",
+ "Vre=Vz-Vbe #Calculating voltage acrross emitter resistance",
+ "",
+ "I=(Vre)/Re #Calculating output current",
+ "I=I/10**-3 #Calculating output current",
+ "",
+ "#Results",
+ "print(\"I=%.1f mA\"%I)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "I=4.1 mA"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 2.4, Page No.: 42<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''resistance required to produce a current'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Vcc=20.0 #Vcc in volt",
+ "R1=19300.0 #resistance in ohm",
+ "Vbe=0.7 #Vbe voltage in Volt",
+ "Ic2=0.000005 #current in amperes",
+ "Vt=0.026 # Vt voltage in volt",
+ "",
+ "#Calculations:",
+ "Ic1=(Vcc-Vbe)/R1 #Calculating current through transistor Q1",
+ "",
+ "R2=(Vt/Ic2)*math.log(Ic1/Ic2) #Calculating value of R2 for desired current through transistor Q2",
+ "",
+ "Ic1=Ic1/10**-3 #Calculating current through transistor Q1",
+ "R2=R2/10**3 #Calculating value of R2 for desired current through transistor Q2",
+ "",
+ "#Results:",
+ "print(\"Ic1= %d mA\"%Ic1)",
+ "print(\"\\nR2= %.2f kohm\"%R2)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ic1= 1 mA",
+ "",
+ "R2= 27.55 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.2.5, Page No: 44<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''multiple current source'''",
+ "",
+ "#Variable Declaration:",
+ "Beta=100.0 #Gain for transistor",
+ "R=20000.0 #Resistance in ohm",
+ "Vcc=5.0 #Volatage Vcc in volt",
+ "Vbe=0.6 #Voltage Vbe in volt",
+ "N=3.0 #Number of multiple current source",
+ "",
+ "#Calculations: ",
+ "Iref=(Vcc-Vbe)/R #Calculating reference current",
+ "",
+ "Ic=Iref*(1+ 4/Beta) #Calculating current through transistor Q",
+ "Ic1=Iref*(Beta)/(Beta+N+1) #Calculating current through transistor Q1",
+ "Ic2=Iref*(Beta)/(Beta+N+1) #Calculating current through transistor Q2",
+ "Ic3=Iref*(Beta)/(Beta+N+1) #Calculating current through transistor Q3",
+ "",
+ "Iref=Iref/10**-3 #Calculating Reference current",
+ "Ic1=Ic1/10**-3 #Calculating current through transistor Q1",
+ "",
+ "#Results:",
+ "print(\"Iref= %.2f mA\"%Iref)",
+ "print(\"\\nIc1=Ic2=Ic3= %.3f mA\"%Ic1)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Iref= 0.22 mA",
+ "",
+ "Ic1=Ic2=Ic3= 0.212 mA"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.2.6, Page NO: 52<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''design current source using MOSFET'''",
+ "",
+ "#Variable Declaration:",
+ "Iref=0.25*10**-3 #Reference current in amperes",
+ "Io=0.2*10**-3 #Outpyt current in amperes",
+ "kn=20*10**-6 #Transconductance in ampere per volt square",
+ "Vth=1.0 #Threshold voltage in volt",
+ "Vgs2=1.752 #Voltage Vgs2 in volt",
+ "lamb=0.0 #Channel length modulation parameter",
+ "Vdd=5.0 #Voltge Vdd in volt",
+ "Vss=0.0 #voltage Vss in volt",
+ "",
+ "#Calculations:",
+ "wbyltwo=Io/(kn*(Vgs2-Vth)**2) #calculating width by length 2 ratio",
+ "Vdssat=Vgs2-Vth #Calculating voltage Vdssat",
+ "Vgs1=Vgs2 #Volage Vgs1 is eqaul to Vgs2",
+ "wbylone=Iref/(kn*(Vgs2-Vth)**2) #Calculating width by length 1 ratio",
+ "Vgs3=Vdd-Vss-Vgs1 #Calculating Vgs3",
+ "wbylthr=Iref/(kn*(Vgs3-Vth)**2) #calculating width by length 3 ratio",
+ "",
+ "#Results:",
+ "print(\"W/L2= %.1f\"%wbyltwo)",
+ "print(\"\\nVds(sat)= %.3f V\"%Vdssat)",
+ "print(\"\\nW/L1= %.1f\"%wbylone)",
+ "print(\"\\nVgs3= %.3f V\"%Vgs3)",
+ "print(\"\\nW/L3= %.2f\"% wbylthr)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "W/L2= 17.7",
+ "",
+ "Vds(sat)= 0.752 V",
+ "",
+ "W/L1= 22.1",
+ "",
+ "Vgs3= 3.248 V",
+ "",
+ "W/L3= 2.47"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 2.7, Page No: 75<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''differential amplifier CMRR'''",
+ "",
+ "#Variable Declaration:",
+ "cmrra=1000.0 #common mode rejection ratio",
+ "cmrrb=10000.0 #common mode rejection ratio ",
+ "v1a=100.0*10**-6 #input voltage in volt",
+ "v2a=-100.0*10**-6 #input voltage in volt",
+ "v1b=1100.0*10**-6 #input voltage in volt",
+ "v2b=900.0*10**-6 #input voltage in volt",
+ "",
+ "#Calculations",
+ "#for first set",
+ "vida=v1a-v2a #Calculating differential volatge",
+ "vcma=(v1a+v2a)/2 #calculating common mode voltage",
+ "vic=0.0 #Calculating common mode voltage",
+ "voa=vida*(1+vic/(cmrra*vida)) #Calculating Output voltage",
+ "voa=voa*10**6 #Calculating output volatge",
+ "",
+ "# for second set",
+ "vidb=v1b-v2b #Calculating differential volatge",
+ "vic=(v1b+v2b)/2 #calculating common mode voltage",
+ "vob=vidb*(1+vic/(cmrrb*vidb)) #Calculating Output voltage",
+ "vob=vob*10**6 #Calculating Output voltage",
+ "",
+ "#Results:",
+ "print(\"\\nVo for second set= %.1f uV\"%vob)",
+ "print(\"Vo for first set= %.1f uV\"% voa)",
+ "",
+ "#answer in textbook is wrong"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Vo for second set= 200.1 uV",
+ "Vo for first set= 200.0 uV"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.2.8, Page No.76<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Q-point of differential amplifier'''",
+ "",
+ "#Variable Declaration:",
+ "Beta=100.0 #Gain",
+ "Vee=15.0 #Voltage Vee in volt",
+ "Vcc=15.0 #Voltage Vcc in volt",
+ "Vbe=0.7 #Voltage Vbe in volt",
+ "Re=65.0*10**3 #Resistance in ohm",
+ "Rc=65.0*10**3 #Resistance in ohm",
+ "alpha=100.0/101.0 #Gain",
+ "Ve=-0.7 #Voltage Ve in volt",
+ "",
+ "#Calculations:",
+ "Ie=(Vee-Vbe)/(2*Re) #Calculating emitter current",
+ "Ic=alpha*Ie #Calculating collector current",
+ "Ib=Ic/Beta #Calculating base current",
+ "",
+ "Vc=Vcc-Ic*Rc #Calculating collector volatge",
+ "",
+ "Vce=Vc-Ve #Calculating voltage between collector and emitter",
+ "",
+ "Ie=Ie*10**6 #Calculating emitter current",
+ "",
+ "Ic=Ic*10**6 #Calculating collector current",
+ "",
+ "Ib=Ib*10**6 #Calculating base current",
+ "",
+ "# by approximating, because Vee>>Vbe",
+ "",
+ "Ieapprox=Vee/(2*Re) #calculating emitter current by approximation",
+ "Ieapprox=Ieapprox*10**6 #calculating emitter current by approximation",
+ "",
+ "#Results:",
+ "print('Ie= %.1f uA'%Ie)",
+ "print('\\nIc= %.1f uA'%Ic)",
+ "print('\\nIb= %.3f uA'%Ib)",
+ "print('\\nVc= %.3f V'%Vc)",
+ "print('\\nVce= %.3f V'%Vce)",
+ "",
+ "print('\\nIe (approx)= %.2f uA'%Ieapprox)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ie= 110.0 uA",
+ "",
+ "Ic= 108.9 uA",
+ "",
+ "Ib= 1.089 uA",
+ "",
+ "Vc= 7.921 V",
+ "",
+ "Vce= 8.621 V",
+ "",
+ "Ie (approx)= 115.38 uA"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.2.9, Page No.89<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Q-point for MOSFET of differential amplifier'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Vdd=12.0 #Voltage Vdd in volt",
+ "Vss=-12.0 #Voltage Vss in volt",
+ "Iss=175.0*10**-6 #Current Iss in amperes",
+ "Rd=65.0*10**3 #resistance Rd in ohm",
+ "kn=3.0*10**-3 #Transconductance",
+ "Vth=1.0 #Voltage Vth in volt",
+ "",
+ "#Calculations:",
+ "Ids=Iss/2.0 #Calculating Ids",
+ "",
+ "Vgs=Vth + math.sqrt(Iss/kn) #Calculating Vgs",
+ " ",
+ "Vds = Vdd- Ids*Rd + Vgs #Calculating Vds",
+ "",
+ "#Requirement for saturation",
+ "Vicmax= Vdd - Ids*Rd + Vth #Calculating Vicmax",
+ "",
+ "Ids=Ids*10**6 #Calculating Ids",
+ "",
+ "#Results:",
+ "print('\\nIds=%.1f uA'% Ids)",
+ "print('\\nVgs=%.3f V'%Vgs)",
+ "print('\\nVds=%.2f V'% Vds)",
+ "print('\\nVicmax=%.2f V'% Vicmax)",
+ "print('\\nRequirement of saturation for M1 \\nfor non-zero Vic necessiates Vic <= 7.312 V')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Ids=87.5 uA",
+ "",
+ "Vgs=1.242 V",
+ "",
+ "Vds=7.55 V",
+ "",
+ "Vicmax=7.31 V",
+ "",
+ "Requirement of saturation for M1 ",
+ "for non-zero Vic necessiates Vic <= 7.312 V"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_3.ipynb b/Linear_Integrated_Circuits/Chapter_3.ipynb
new file mode 100644
index 00000000..92c89180
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_3.ipynb
@@ -0,0 +1,1284 @@
+{
+ "metadata": {
+ "name": "ch_3"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 3: Operational Amplifier Characteristics<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.1, Page No: 107<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''input stage with bias circuit'''",
+ "",
+ "#Variable Declaration:",
+ "Vp=15.0 #Volatge in volt",
+ "Vm=-15.0 #Voltage in volt",
+ "R5=40.0*10**3 #Resistance in ohm",
+ "Vbe11=0.7 #Voltage in volt",
+ "Vbe12=Vbe11 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "Iref= (Vp-Vbe12-Vbe11-Vm)/R5 #Calculating reference current",
+ "",
+ "Iref=Iref*10**3 #Calculating reference current",
+ "",
+ "#Results:",
+ "print(\"Iref= %.3f mA\"%Iref)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Iref= 0.715 mA"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.2, Page No: 107<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''gain stage of op-amp'''",
+ "",
+ "#Variable Declaration:",
+ "Iref= 0.715*10**-3 #reference current in ampere",
+ "Ic13b= 0.75*Iref #Current in ampere",
+ "Ic17=Ic13b #Current in ampere",
+ "Ie17=Ic13b #Current in ampere",
+ "Beta=150.0 #Gain",
+ "Vbe17=0.7 #Vbe volatge in volt",
+ "R9=50.0*10**3 #Resistance in ohm",
+ "R8=100.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Ic16= (Ic17/Beta) + (Ie17*R8 + Vbe17)/R9 #Calculating current",
+ "Ic16=Ic16*1000000.0/1.232 #Calculating current",
+ "",
+ "#Results:",
+ "print(\"\\nIc16= %.1f uA\"%Ic16)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Ic16= 15.1 uA"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.3, Page No:108<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''output stage of op-amp'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Iref=0.000715 #Reference current in ampere",
+ "Vbe19=0.7 #Vbe voltage in volt",
+ "Is18=10**-14 #Current in ampere",
+ "Is19=10**-14 #Current in ampere",
+ "R10=50000.0 #Resistance in ohm",
+ "",
+ "Is14=2.0*10**-14 #Current in ampere",
+ "Is20=2.0*10**-14 #Current in ampere",
+ "Vbe=0.7 #Voltge Vbe in volt",
+ "Vbe19=0.612 #Voltage Vbe in volt",
+ "Beta=200.0 #Gain",
+ "Vbe18=0.549 #Volatge vbe in volt",
+ "",
+ "#Calculations:",
+ "Ic13a=0.25*Iref #Calculating Current ",
+ "",
+ "Ir10=Vbe19/R10 #Calculating current",
+ "Ic19=Ic13a-Ir10 #Calculating current",
+ "",
+ "Ib19=Ic19/Beta #Calculating current",
+ "Ic18=Ir10+Ib19 #Calculating current",
+ " ",
+ "Vbb=Vbe18+Vbe19 #calculating voltage",
+ "",
+ "Ic14=Is20*math.exp(Vbb/2*0.026) #Calculating current",
+ "Ic14=Ic14*10**15/0.2042 #Calculating current",
+ "",
+ "#Results:",
+ "print('Vbb= %.3f V'%Vbb)",
+ "print('\\nIc14= %.2f uA'%Ic14)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vbb= 1.161 V",
+ "",
+ "Ic14= 99.43 uA"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example no. 3.4, Page No: 115<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''average bias current'''",
+ "",
+ "#Variable Declaration:",
+ "Ib1=400.0*10**-9 #Current in ampere",
+ "Ib2=300.0*10**-9 #Current in ampere",
+ "",
+ "#Calculations:",
+ "Ib=(Ib1+Ib2)/2.0 #Calculating current",
+ "Ios=Ib1-Ib2 #Calculating current",
+ "Ib=Ib*10**9 #Calculating current",
+ "Ios=Ios*10**9 #Calculating current",
+ "",
+ "#Results:",
+ "print('Ib= %.1f nA'%Ib)",
+ "print('\\nIos= %.1f nA'%Ios)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ib= 350.0 nA",
+ "",
+ "Ios= 100.0 nA"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.5, Page No: 115<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''maximum output offset voltage'''",
+ "",
+ "#Variable Declaration:",
+ "Ios=400.0*10**-9 #Current in ampere",
+ "Rf=100.0*10**3 #Resistance in ohm ",
+ "R1=1.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Vo=Rf*Ios #Calculating output voltage",
+ "Vo=Vo*1000.0 #Calculating output voltage ",
+ "",
+ "#Results:",
+ "print('Vo= %.1f mV'%Vo)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vo= 40.0 mV"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.6, Page No: 117<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''bias current compensation'''",
+ "",
+ "#Variable Declaration:",
+ "Rf=10.0*10**3 #Resistance in ohm",
+ "R1=2.0*10**3 #Resistance in ohm",
+ "Vos=5.0*10**-3 #Voltage in volt",
+ "Ios=50.0*10**-9 #Input offset current in ampere",
+ "Ib=200.0*10**-9 #Input bias current in ampere",
+ "Ta=25.0 #Temperature in degree celsius",
+ "#Calculations:",
+ "# without compensating resistor",
+ "Vot=(1+Rf/R1)*Vos + Rf*Ib #Calculating output offset voltage",
+ "Vot=Vot*1000 #Calculating output offset voltage",
+ "print('Vot= %.1f mV'%Vot)",
+ "",
+ "",
+ "# with compensating resistor",
+ "Vot=(1+Rf/R1)*Vos + Rf*Ios #Calculating output offset voltage",
+ "Vot=Vot*1000 #Calculating output offset voltage",
+ "print('\\nVot= %.1f mV'%Vot)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vot= 32.0 mV",
+ "",
+ "Vot= 30.5 mV"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.7, Page No:119<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''op-amp drift specification'''",
+ "",
+ "#Part A",
+ "#Variable Declaration:",
+ "Vos=1.5*10**-3 #Voltage in volt",
+ "Rf=1.0*10**6 #feedback resistance in ohm",
+ "R1=100.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Vo=Vos*(1+Rf/R1) #Calculating output voltage",
+ "Vo=Vo*1000.0 #Calculating output voltage",
+ "",
+ "#Result:",
+ "print('Vo= %.1f mV'%Vo)",
+ "",
+ "#Part B",
+ "#Variable Declaration:",
+ "Iosch= 10.0*10**-9 #Ios current in ampere",
+ "",
+ "#Calculations:",
+ "Vosch=Iosch*Rf #Calculating output voltage",
+ "Vosch=Vosch*1000.0 #Calculating output voltage",
+ "",
+ "#Results:",
+ "print('\\nChange in Vo= %.1f mV'%Vosch)",
+ "print('\\n Worst case drift is 26.5 mV or -26.5 mV')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vo= 16.5 mV",
+ "",
+ "Change in Vo= 10.0 mV",
+ "",
+ " Worst case drift is 26.5 mV or -26.5 mV"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.3.8, Page No: 125<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''frequency response'''",
+ "f=1000.0 # frequency in hertz",
+ "#from graph",
+ "gain_db=60.0 # Gain in db",
+ "gain=1000.0 #Gain",
+ "",
+ "#Result:",
+ "print('Gain= %d'%gain)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gain= 1000"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.9, Page No: 126<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''unity gain bandwidth'''",
+ "",
+ "#Variable Declaration:",
+ "riset=0.7*10**-6 #rise time in microsecond",
+ "",
+ "#Calculations:",
+ "bw=0.35/riset #Finding unity gain bandwidth",
+ "bw=bw/1000.0 #Finding unity gain bandwidth",
+ "",
+ "#Results:",
+ "print('Bandwidth= %d kHz'%bw)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Bandwidth= 500 kHz"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Page No. 3.10, Page No: 126<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''open loop dc voltage gain'''",
+ "",
+ "#Variavle Declaration:",
+ "ugb=1.5*10**6 #Unity gain bandwidth in hertz",
+ "f1=2.0*10**3 #Signal frequency in hertz",
+ "",
+ "#Calculations:",
+ "A0=ugb/f1 #Calculating open loop DC voltage gain",
+ "",
+ "#Results:",
+ "print('Openloop Dc Voltage gain= %d '%A0)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Openloop Dc Voltage gain= 750 "
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.11, Page No: 134<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''time taken to change output'''",
+ "",
+ "#Variable Declaration:",
+ "Voch=10.0 #Change of voltage in volt",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "",
+ "#Calculations:",
+ "time=Voch/slew #Calculating time taken for output to change by 10V ",
+ "",
+ "#Results:",
+ "print('Time= %d us'%time)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time= 20 us"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.12, Page No: 135<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''undistorted sine wave'''",
+ "",
+ "import math",
+ "#Part A",
+ "#Variable Declaration:",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "Vm=12.0 #Voltage in volt",
+ "",
+ "#calculations:",
+ "fmax=slew/(2.0*math.pi*Vm) #calculating frequency of maximum undistorted wave",
+ "fmax=fmax*1000.0 #Calculating frequency of maximum undistorted wave",
+ "",
+ "#Results:",
+ "print('Fmax= %.1f kHz'%fmax)",
+ "",
+ "# Part B",
+ "#Variable Declarations:",
+ "Vm1=2.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "fmax1=slew/(2.0*math.pi*Vm1) #calculating frequency of maximum undistorted wave",
+ "fmax1=fmax1*1000.0 #calculating frequency of maximum undistorted wave",
+ "",
+ "#Results:",
+ "print('\\nFmax1= %.1f kHz'%fmax1)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Fmax= 6.6 kHz",
+ "",
+ "Fmax1= 39.8 kHz"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.13, Page No: 135<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''max input signal for undistorted output'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "f=10.0*10**3 #frequency in hertz",
+ "",
+ "#Calculations:",
+ "Vmmax=slew/(2*math.pi*f) #Calculating maximum peak to peak voltage",
+ "Vmmax=Vmmax*10**6 #Calculating maximum peak to peak voltage",
+ "",
+ "#Results:",
+ "print('Vm(max)= %.2f V'%Vmmax)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vm(max)= 7.96 V"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.14, Page No: 135<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''amplify square wave with rise time'''",
+ "",
+ "#Variable Declaration:",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "riset=4.0 #Rise time in microsecond",
+ "",
+ "print('\\nVo is greater than 1V')",
+ "Vswing=(0.9-0.1)*5.0 #Voltage swing in volt",
+ "",
+ "#Calculations:",
+ "slewreq=Vswing/riset #Calculating required slew rate",
+ "",
+ "#Results:",
+ "print('\\nSlew Rate Required= %d V/us'%slewreq)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Vo is greater than 1V",
+ "",
+ "Slew Rate Required= 1 V/us"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.15, Page No: 135<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''effect of output voltage change on slew rate'''",
+ "",
+ "#Variable Declaration:",
+ "Vch=20.0 #Change in voltage in volt",
+ "time=4.0 #Time in microseconds",
+ "",
+ "#Calculations:",
+ "slew=Vch/time #Calculating slew rate ",
+ "",
+ "#Results:",
+ "print('\\nSlew Rate = %d V/us'%slew)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Slew Rate = 5 V/us"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.16, Page No: 136<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''max input frequency for undistorted output'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "A=50.0 #Gain",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "Vid=20.0*10**-3 #Voltage difference in volt",
+ " ",
+ "#Calculations:",
+ "Vm=A*Vid #Calculating maximum voltage ",
+ "",
+ "fmax=(slew*10**6)/(2*math.pi*Vm) #calculating frequency of maximum undistorted wave ",
+ "fmax=fmax/1000.0 #calculating frequency of maximum undistorted wave",
+ "",
+ "#Results:",
+ "print('Fmax= %.1f kHz'%fmax)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Fmax= 79.6 kHz"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.17, Page No: 136<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''max input voltage for undistorted output'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "slew=0.5 #Slew rate in volt per microsecond",
+ "f=4.0*10**4 #frequency in hertz",
+ "",
+ "#Calculations:",
+ "Vm=(slew*10**6)/(2*math.pi*f) #Calculating Vm",
+ "Vmpp=2.0*Vm/10.0 #Calculating maximum peak to peak input signal that can be applied",
+ "",
+ "#Results:",
+ "print('Vpeak= %.2f V'%Vm)",
+ "print('\\nVoltage peak-to-peak= %.3f V'%Vmpp)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vpeak= 1.99 V",
+ "",
+ "Voltage peak-to-peak= 0.398 V"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.18, Page No: 138<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''noise gain of circuit'''",
+ "",
+ "#Variable Declaration:",
+ "Rf=10.0*10**3 #Resistance in ohm",
+ "R1=100.0 #Resistance in ohm",
+ "Vni=1*10**-6 #input rms noise voltage in volt",
+ "",
+ "#Calculations: ",
+ "Kn=1+Rf/R1 #Calculating noise gain",
+ "Vno=Vni*(1+Rf/R1) #Calculating output voltage",
+ "Vno=Vno*10**6 #Calculating output voltage",
+ "",
+ "#Results:",
+ "print('Output noise voltage= %d uV (rms)'%Vno)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Output noise voltage= 101 uV (rms)"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No: 3.19, Page No: 142<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''closed loop voltage gain'''",
+ "",
+ "#Variable Deeclaration:",
+ "Rf=10.0*10**3 #Feedback resistance in ohm",
+ "R1=1.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Av=-Rf/R1 #Calculating gain",
+ "",
+ "#Results:",
+ "print('Closed loop voltage gain= %d'%Av)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Closed loop voltage gain= -10"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.20, Page No: 147<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''closed loop voltage gain and beta'''",
+ "",
+ "#Variable Declaration:",
+ "Rf=10.0*10**3 #Feedback resistance in ohm",
+ "R1=1.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Av=1+ Rf/R1 #Calculating gain",
+ "",
+ "Beta=R1/(Rf+R1) #Calculating feedback factor",
+ "",
+ "#Results:",
+ "print('Closed loop voltage gain= %d'%Av)",
+ "print('\\nFeedback factor= %.3f'%Beta)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Closed loop voltage gain= 11",
+ "",
+ "Feedback factor= 0.091"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.21, Page No:147<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''non-inverting amplifier circuit'''",
+ "",
+ "#Variable Declaration:",
+ "R1=10.0*10**3 #Resistance in ohm",
+ "R2=1.0*10**3 #Resistance in ohm",
+ "R3=1.0*10**3 #Resistance in ohm",
+ "Rf=50.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "I=1/(R2+R3) #Calculating current ",
+ "Vi1=I*R2 #Calculating input voltage",
+ "Vo=Vi1*(1+ Rf/R1) #Calculating output voltage ",
+ "",
+ "#Result:",
+ "print('Vout= %d V'%Vo)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vout= 3 V"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No: 3.22, Page No: 147<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''non-inverting amplifier with IL'''",
+ "",
+ "#Variable Declration:",
+ "Vi=0.6 #volatge in volt ",
+ "Vi1=0.6 #volatge in volt",
+ "Vi2=0.6 #volatge in volt",
+ "R1=10.0*10**3 #Resistance in ohm",
+ "Rf=20.0*10**3 #Resistance in ohm",
+ "RL=2.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "I1=Vi/R1 #Calculating current",
+ "I1=I1*1000.0 #Calculating current",
+ "Av=1+Rf/R1 #Calculating gain",
+ "Vo=Av*Vi #Calculating output voltage",
+ "IL=Vo/RL #Calculating load current",
+ "IL=IL*1000 #Calculating load current",
+ "",
+ "#By Kirchhoff's current law",
+ "Io=I1+IL #Calculating output current",
+ "",
+ "#Results:",
+ "print('\\nIo=%.2f mA'%Io)",
+ "print('Av=%d'%Av)",
+ "print('\\nVo=%.1f V'%Vo)",
+ "print('\\nI1=%.1f mA'%IL)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Av=3",
+ "",
+ "Vo=1.8 V",
+ "",
+ "I1=0.9 mA",
+ "",
+ "Io=0.96 mA"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.23,Page No:151 <h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''capacitor coupled voltage follower'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "fL=50.0 #Frequency in hertz",
+ "RL=3.3*10**3 #Resistance in ohm",
+ "Ibmax=500.0*10**-9 #Current in ampere",
+ "R1max=140.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "C1=1/(2*math.pi*fL*R1max/10) #Calculating value of capacitor",
+ "C1=C1*10**6 #Calculating value of capacitor",
+ "",
+ "C2=1/(2*math.pi*fL*RL) #Calculating value of capacitor",
+ "C2=C2*10**6 #Calculating value of capacitor",
+ "",
+ "#Results:",
+ "print('C1=%.3f uF'%C1)",
+ "print('\\nC2=%.2f uF'%C2)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "C1=0.227 uF",
+ "",
+ "C2=0.96 uF"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.24, Page NO: 153<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' high impedence capacitor coupled voltage follower'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "",
+ "Vbe=0.6 #Voltage Vbe in volt",
+ "Ibmax=500.0*10**-9 #Current in ampere",
+ "fL=50.0 #frequency in hertz",
+ "RL=3.3*10**3 #Resistance in ohm",
+ "Mmin=50000.0",
+ "",
+ "#Calculations:",
+ "R1max=0.1*Vbe/Ibmax #Calculating maximum value of the resistance R1",
+ "R1=R1max/2.0 #Calculating value of R1",
+ "R2=R1 #Value of R2 is equal to R1",
+ "",
+ "C3=1/(2*math.pi*fL*RL) #Calculaing value of capacitance",
+ "C3=C3*10**6 #Calculaing value of capacitance",
+ "",
+ "C2=1/(2*math.pi*fL*R2/10) #Calculaing value of capacitance",
+ "C2=C2*10**6 #Calculaing value of capacitance",
+ "",
+ "",
+ "Zinmin=(1+Mmin)*56.0*10**3 #Calculating minimum input impedance",
+ "Zinmin=Zinmin/10**6 #Calculating minimum input impedance",
+ "",
+ "#Results:",
+ "print('\\nC3=%.2f uF'%C3)",
+ "print('\\nC2=%.2f uF'%C2)",
+ "# answer in textbook is wrong",
+ "print('\\nZin(min)= %d Mohm'%Zinmin)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "C3=0.96 uF",
+ "",
+ "C2=0.53 uF",
+ "",
+ "Zin(min)= 2800 Mohm"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.25, Page No: 156<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''high impedence capacitor coupled non-inverting amplifier'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Vo=3.0 #output voltage in volt",
+ "Vi=10.0*10**-3 #Input voltage in volt",
+ "R2=1.0*10**6 #Resistance in ohm",
+ "Av=300.0 #Gain",
+ "fL=100.0 #Frequency in hertz",
+ "RL=15.0*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "R3=R2/(Av-1) #Calculating value of resistance ",
+ "",
+ "R1=R2-R3 #Calculating value of resistance",
+ "C2=1/(2*math.pi*fL*R3) #Calculatinf value of capacitance",
+ "C2=C2*10**6 #Calculating value of capacitance",
+ " ",
+ "C3=1/(2*math.pi*fL*RL/10) #Calculating value of capacitance",
+ "C3=C3*10**6 #Calculating value of capacitance",
+ "",
+ "#Results:",
+ "print('\\nC2= %.2f uF'%C2)",
+ "print('\\nC3= %.2f uF'%C3)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "C2= 0.48 uF",
+ "",
+ "C3= 1.06 uF"
+ ]
+ }
+ ],
+ "prompt_number": 36
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.26, Page NO: 159<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''capacitor coupled inverting amplifier'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "fL=20.0 #frequency in hertz",
+ "fH=2000.0 #frequency in hertz",
+ "RL=300.0 #Resistance in ohm",
+ "R1=1.5*10**3 #Resistance in ohm",
+ "R2=56*10**3 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "C1=1/(2*math.pi*fL*R1/10) #Calculating value of capacitance",
+ "",
+ "C1=C1*10**6 #Calculating value of capacitance",
+ "",
+ "C2=1/(2*math.pi*fL*RL) #Calculating value of capacitance",
+ "C2=C2*10**6 #Calculating value of capacitance",
+ "",
+ "Cf=1/(2*math.pi*fH*R2) #Calculating value of capacitance",
+ "Cf=Cf*10**12 #Calculating value of capacitance",
+ "",
+ "",
+ "#Results:",
+ "print('\\nC1= %d uF'%C1)",
+ "print('\\nC2= %.1f uF'%C2)",
+ "print('\\nCf= %d pF'%Cf)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "C1= 53 uF",
+ "",
+ "C2= 26.5 uF",
+ "",
+ "Cf= 1421 pF"
+ ]
+ }
+ ],
+ "prompt_number": 37
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.27, Page No: 162<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''capacitor coupled non-inverting amplifier'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "Ibmax=500.0*10**-9 #Current in ampere",
+ "Vcc=24.0 #Volatge Vcc in volt",
+ "I2=50.0*10**-6 #Current in ampere",
+ "Vo=6.0 #Output voltage in volt",
+ "Av=100.0 #Gain",
+ "fL=100.0 #Frequency in hertz",
+ "RL=5.6*10**3 #Resistance in hertz",
+ "",
+ "#Calculations:",
+ "I2=100.0*Ibmax #Calculating current",
+ "R1=Vcc/(2.0*I2) #Calculating resistance",
+ "R2=R1 #value of R2 is equal to R1",
+ "Vi=Vo/Av #Calculating input voltage",
+ "",
+ "I4=100.0*Ibmax #Calculating current",
+ "R4=Vi/I4 #Calculating value of resistance",
+ "",
+ "R3=118.8*10**3 #Calculating value of resistance",
+ "R1pR2=(R1+R2)/4.0 #Calculating parellel combination of R1 and R2",
+ "",
+ "C1=1/(2*math.pi*fL*R1pR2/10.0) #Calculating value of capacitance",
+ "C1=C1*10**6 #Calculating value of capacitance",
+ " ",
+ "C2=1/(2*math.pi*fL*RL/10.0) #Calculating value of capacitance",
+ "C2=C2*10**6 #Calculating value of capacitance",
+ "",
+ "C3=1/(2*math.pi*fL*R4) #Calculating value of capacitance",
+ "C3=C3*10**6 #Calculating value of capacitance",
+ "",
+ "#Results:",
+ "print('\\nC1= %.3f uF'%C1)",
+ "print('\\nC2= %.3f uF'%C2)",
+ "print('\\nC3= %.3f uF'%C3)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "C2= 2.842 uF",
+ "",
+ "C1= 0.133 uF",
+ "",
+ "C3= 1.326 uF"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 3.28, Page No:166<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''common mode gain Acm'''",
+ "",
+ "#Variable Declaration:",
+ "cmrr=10**5 #Common mode rejection ratio",
+ "Adm=10**5 #Differential gain",
+ "",
+ "#Calculations:",
+ "Acm=Adm/cmrr #Calculating common mode gain",
+ "",
+ "#Results:",
+ "print('Common mode gain Acm= %d'%Acm)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Common mode gain Acm= 1"
+ ]
+ }
+ ],
+ "prompt_number": 39
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No: 3.29, Page NO: 168<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''differential amplifier with two op-amp'''",
+ "",
+ "#Variable Declaration:",
+ "R1=560.0 #Resistance value in ohm",
+ "R3=560.0 #Resistance value in ohm",
+ "Rf=5.6*10**3 #Resistance value in ohm",
+ "",
+ "R2=Rf #Value of R2 is equal to Rf",
+ "Vo1=-2.0 #Volatage in volt ",
+ "Ri=2.0*10**6 #Resistance value in ohm",
+ "Vo2=-1.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "# Part 1",
+ "Ad=1+Rf/R1 #Calculating differential gain",
+ "",
+ "# Part 2",
+ "A=200000.0 #Gain",
+ "Ri1=Ri*(1+ (A*R2)/(R2+R3)) #Calculating resistance value",
+ "Ri1=Ri1/10**9 #Calculating resistance value",
+ "",
+ "Ri2=Ri*(1+ (A*R1)/(R1+Rf)) #Calculating resistance value ",
+ "Ri2=Ri2/10**9 #Calculating resistance value",
+ " ",
+ "# Part 3",
+ "Vid=Vo2-Vo1 #Calculating differential voltage",
+ "Vo=(1+Rf/R1)*Vid #Calculating output voltage",
+ "Vo=Vo",
+ "",
+ "#Results:",
+ "print('\\nAd= %d'%Ad)",
+ "print('\\nRi1=%.1f Gohm'%Ri1)",
+ "print('\\nRi2=%.2f Gohm'%Ri2)",
+ "print('\\nVo=%d V'%Vo)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Ad= 11",
+ "",
+ "Ri1=363.6 Gohm",
+ "",
+ "Ri2=36.37 Gohm",
+ "",
+ "Vo=11 V"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "code",
+ "collapsed": true,
+ "input": [],
+ "language": "python",
+ "outputs": []
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_4.ipynb b/Linear_Integrated_Circuits/Chapter_4.ipynb
new file mode 100644
index 00000000..7405dd82
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_4.ipynb
@@ -0,0 +1,748 @@
+{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 4: Applications of Operational Amplifiers<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.1, Page No: 185<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "%pylab inline"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stderr",
+ "text": [
+ "WARNING: pylab import has clobbered these variables: ['prod', 'plotting', 'Circle', 'power', 'diag', 'fmax', 'sinh', 'trunc', 'binomial', 'plot', 'eye', 'f', 'det', 'tan', 'product', 'roots', 'sin', 'zeros', 'cosh', 'conjugate', 'take', 'solve', 'trace', 'beta', 'pylab', 'ones', 'transpose', 'vectorize', 'cos', 'interactive', 'diff', 'invert', 'tanh', 'Polygon', 'reshape', 'sqrt', 'floor', 'source', 'add', 'multinomial', 'test', 'poly', 'mod', 'sign', 'gamma', 'log', 'var', 'seterr', 'flatten', 'nan', 'pi', 'exp']\n",
+ "`%pylab --no-import-all` prevents importing * from pylab and numpy\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''phase lag circuit'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "R1=20.0*10**3 #Resistance in ohm\n",
+ "R=39.0*10**3 #Resistance in ohm\n",
+ "f=2000.0 #Frequencuy in hertz\n",
+ "Rf=R1 #Value of Rf is equal to R1 in ohm\n",
+ "C=10**-9 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "fo=1/(2*math.pi*R*C) #Calculating output frequency\n",
+ "\n",
+ "theta=-2*math.atan(f/fo) #Calculating phase angle\n",
+ "theta=theta*180/math.pi #Calculating phase angle\n",
+ "\n",
+ "td=theta/(f*360) #Calculating time delay\n",
+ "td=-td*10**6 #Calculating time delay\n",
+ "\n",
+ "#Results:\n",
+ "print('Phase angle=%.1f degree'%theta)\n",
+ "print('\\nTime delay td= %.1f us'%td)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Phase angle=-52.2 degree\n",
+ "\n",
+ "Time delay td= 72.5 us\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.2, Page No: 187<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''output current'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "Vee=12.0 #Volatge Vee in volt\n",
+ "Vcc=5.0 #Voltage Vcc in volt\n",
+ "RL=1000.0 #Resistance RL in ohm\n",
+ "\n",
+ "#Calculations:\n",
+ "Vdiff=Vee-Vcc #Calculating voltage difference\n",
+ "IL=Vdiff/RL #Calculating current\n",
+ "IL=IL*1000.0 #Calculating current\n",
+ "\n",
+ "#Results:\n",
+ "print('Current through RL is IL= %d mA'%IL)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current through RL is IL= 7 mA\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.3, Page NO: 187<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''determine the current'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "V=5.0 #Voltage in volt\n",
+ "R=1000.0 #Resistance in ohm\n",
+ "\n",
+ "#Calculations:\n",
+ "I=V/R #Calculating current\n",
+ "I=I*1000.0 #Calculating current\n",
+ "\n",
+ "#Results:\n",
+ "print('Current= %d mA'%I)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current= 5 mA\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No.4.4, Page NO: 187<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''determine the current through RL'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "Vcc=15.0 #Voltage in volt\n",
+ "Re2=1000.0 #Resistance in ohm\n",
+ "Vc1=5.0 #Voltage in volt\n",
+ "Ve2=5.0 #Voltage in volt\n",
+ "\n",
+ "#Calculations:\n",
+ "I=(Vcc-Ve2)/Re2 #Calculating current\n",
+ "I=I*1000.0 #Calculating current\n",
+ "\n",
+ "#Results:\n",
+ "print('Current= %d mA'%I)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current= 10 mA\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.5, Page No: 189<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''determine load gain'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "R1=22.0*10**3 #Resistance in ohm\n",
+ "Rf=1000.0 #Feedback Resistance in ohm\n",
+ "RL=10.0*10**3 #Load Resistance in ohm \n",
+ "Ii=10.0*10**-6 #Current in ampere\n",
+ "\n",
+ "#Calculations:\n",
+ "Ai=1+R1/Rf #Calculating gain \n",
+ "Io=Ai*Ii #Calculating output current\n",
+ "Io=Io*10**6 #Calculating output current\n",
+ "print('Current Io= %f uA'%Io)\n",
+ "\n",
+ "Io=Io/10**6 #Calculating output current \n",
+ "Vmax=Io*RL + Ii*R1 #Calculating maximum voltage\n",
+ "\n",
+ "#Results:\n",
+ "print('\\nVmax= %.2f V'%Vmax)\n",
+ "print('\\nHence output clipping doesnot occur')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current Io= 230.000000 uA\n",
+ "\n",
+ "Vmax= 2.52 V\n",
+ "\n",
+ "Hence output clipping doesnot occur\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.6, Page No: 192<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''voltage to current converter with floating load'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "Rf=10.0*10**3 #Feedback resistance in ohm\n",
+ "RL=2000.0 #Load resistance in ohm\n",
+ "Vi=0.5 #Input voltage in volt\n",
+ "\n",
+ "#Calculations:\n",
+ "IL=Vi/Rf #Calculating current\n",
+ "IL=IL*10**6 #Calculating current\n",
+ "print('Current IL= %d uA'%IL)\n",
+ "\n",
+ "IL=IL/10**6 #Calculating current\n",
+ "Vmax=IL*RL + IL*Rf #Calculating maximum voltage\n",
+ "\n",
+ "#Results:\n",
+ "print('\\nVmax= %.2f V'%Vmax)\n",
+ "print('\\nHence output clipping doesnot occur')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Current IL= 50 uA\n",
+ "\n",
+ "Vmax= 0.60 V\n",
+ "\n",
+ "Hence output clipping doesnot occur\n"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.7, Page No: 194<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''summing amplifier'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "V1=2.0 #Voltage in volt\n",
+ "V2=3.0 #Voltage in volt\n",
+ "V3=4.0 #Voltage in volt\n",
+ "Rf=1000.0 #Feedback resistance in ohm\n",
+ "R1=Rf #Resistance value of the R1 is equal to Rf in ohm\n",
+ "R2=Rf #Resistance value of the R2 is equal to Rf in ohm \n",
+ "R3=Rf #Resistance value of the R3 is equal to Rf in ohm\n",
+ "R=Rf #Resistance value of the R is equal to Rf in ohm \n",
+ "\n",
+ "#Calculations:\n",
+ "Vo=-(Rf/R1)*(V1+V2+V3) #Calculating output voltage\n",
+ "\n",
+ "#Results:\n",
+ "print('Vo= %d V'%Vo)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vo= -9 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 32
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No: 4.9, Page NO: 207<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''practical integrator circuit'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "R1=10.0*10**3 #Resistance in ohm\n",
+ "Rf=100.0*10**3 #Resistance in ohm\n",
+ "Cf=10.0*10**-9 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "fa=1/(2*math.pi*Rf*Cf) #Calculating lower frequency limit\n",
+ "\n",
+ "#PART (a)\n",
+ "Vo1=10**4/(2*3.14*2500) \n",
+ "#PART (b)\n",
+ "Vo2 = -10**4*0.2*10**-3 \n",
+ "#PART (c)\n",
+ "Vo3 = -10**4*0.6*10**-3\n",
+ "#Results:\n",
+ "print('fa= %d Hz'%fa)\n",
+ "print('output voltage for sine wave input is %.3f volt'%Vo1)\n",
+ "print('output voltage for square wave input is %d volt'%Vo2)\n",
+ "print('output voltage for step input is %d volt'%Vo3)\n",
+ "\n",
+ "##############(1)#############\n",
+ "t = arange(0.001, 1, 0.005)\n",
+ "k = arange(0.0001, 0.2, 0.0005)\n",
+ "subplot(221)\n",
+ "plot(t, sin(16*t))\n",
+ "plot(t,0.637*cos(16*t))\n",
+ "plot(t,(0*t)/t,'-')\n",
+ "plot(k,(-0.637*k)/k,'--')\n",
+ "ylim( (-1,1) )\n",
+ "text(-0.11,-0.637,'-0.637')\n",
+ "text(0.2,0.2,'Green = Vo')\n",
+ "text(0.07,0.5,'Blue = Vi')\n",
+ "ylabel('Vin')\n",
+ "xlabel('time in ms')\n",
+ "title('Input & output waveforms of integrator')\n",
+ "\n",
+ "##############(2)#################\n",
+ "n = arange(0.0001,0.2, 0.0005)\n",
+ "n1= arange(0.2, 2*0.2, 0.0005)\n",
+ "n2= arange(2*0.2, 3*0.2, 0.0005)\n",
+ "n3= arange(3*0.2,4*0.2, 0.0005)\n",
+ "n4= arange(4*0.2,5*0.2, 0.0005)\n",
+ "n5= arange(0.0001,5*0.2, 0.0005)\n",
+ "\n",
+ "a=arange(-1,1,0.0005)\n",
+ "\n",
+ "x5=(0.2*a)/a\n",
+ "x10=(2*0.2*a)/a\n",
+ "x15=(3*0.2*a)/a\n",
+ "x25=(4*0.2*a)/a\n",
+ "\n",
+ "subplot(223)\n",
+ "\n",
+ "plot(n5,(0*n5)/n5,'-')\n",
+ "plot(n,1*n/n,'b')\n",
+ "plot(n1,-1*n1/n1,'b')\n",
+ "plot(n2,1*n2/n2,'b')\n",
+ "plot(n3,-1*n3/n3,'b')\n",
+ "plot(n4,1*n4/n4,'b')\n",
+ "\n",
+ "plot(x5,a,'b')\n",
+ "plot(x10,a,'b')\n",
+ "plot(x15,a,'b')\n",
+ "plot(x25,a,'b')\n",
+ "\n",
+ "plot(n,(-10*n+1),'r')\n",
+ "plot(n1,(10*n-1),'r')\n",
+ "plot(n+0.4,(-10*n+1),'r')\n",
+ "plot(n3,(10*n-1),'r')\n",
+ "\n",
+ "ylim( (-1.1,1.1) )\n",
+ "text(0.3,-0.4,'Red = Vo')\n",
+ "text(0.05,0.5,'Blue = Vi')\n",
+ "ylabel('Vin')\n",
+ "xlabel('time in ms')\n",
+ "\n",
+ "###############(3)##################\n",
+ "t = arange(0.0001, 1, 0.0005)\n",
+ "t2 = arange(0.0001, 0.6, 0.0005)\n",
+ "a=arange(-6,0.0001,0.0005)\n",
+ "x=(0.6*a)/a\n",
+ "subplot(222)\n",
+ "plot(t,1*t/t,'r')\n",
+ "plot(t,0*t/t,'--')\n",
+ "plot(t2,-6*t2/t2,'--')\n",
+ "plot(x,a,'--')\n",
+ "plot(t,(-10*t),'b')\n",
+ "text(0.4,-4,'Vo')\n",
+ "text(0.3,1.1,'Vi')\n",
+ "xlabel('time in ms')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "fa= 159 Hz\n",
+ "output voltage for sine wave input is 0.637 volt\n",
+ "output voltage for square wave input is -2 volt\n",
+ "output voltage for step input is -6 volt\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 33,
+ "text": [
+ "<matplotlib.text.Text at 0xce594e0>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0xcb7c6a0>"
+ ]
+ }
+ ],
+ "prompt_number": 33
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No: 4.10, Page No: 210<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''design a differentiator'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fa=1.0*10**3 #Upper cut off frequency in hertz\n",
+ "C1=1.0*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "Rf=1/(2*math.pi*fa*C1) #Calculating value of resistance\n",
+ "Rf=Rf/100.0 #Calculating value of resistance \n",
+ "\n",
+ "#Results:\n",
+ "print('Rf= %.2f kohm'%Rf)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rf= 1.59 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 34
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 4.11, Page No: 213<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''design a differentiator using op-amp'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "import pylab\n",
+ "import numpy\n",
+ "fa=200.0 #frequency in hertz\n",
+ "fmax=fa #frequency fmax is equal to fa\n",
+ "C1=0.1*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ " \n",
+ "Rf=1/(2*math.pi*fa*C1) #Calcukating resistance value \n",
+ "Rf=Rf/1000.0 #Calculating resistance value\n",
+ "\n",
+ "fb=10.0*fa #Calculating frequency\n",
+ "R1=1/(2*math.pi*fb*C1) #Calculating resistance \n",
+ "R1=R1/1000.0 #Calculating resistance\n",
+ "\n",
+ "Cf=R1*C1/Rf #Calculating capacitance \n",
+ "Cf=Cf*10**6 #Calculating capacitance\n",
+ "\n",
+ "subplot(211)\n",
+ "plot(t,1*sin(2*pi*t))\n",
+ "\n",
+ "ylim( (-1,1) )\n",
+ "ylabel('Vin')\n",
+ "title('Input Waveform')\n",
+ "\n",
+ "\n",
+ "#Results:\n",
+ "print('Rf= %.3f kohm'%Rf)\n",
+ "print('\\nR1= %.3f kohm'%R1)\n",
+ "print('\\nCf= %.2f uF'%Cf)\n",
+ "\n",
+ "############PLOT###################\n",
+ "\n",
+ "##########(1)###############\n",
+ "t = arange(0.001, 5*pi, 0.005)\n",
+ "subplot(221)\n",
+ "plot(t, sin(pi*t/4))\n",
+ "plot(t,(0*t)/t,'-')\n",
+ "ylim( (-1,1) )\n",
+ "ylabel('Vin')\n",
+ "title('Input Waveform')\n",
+ "\n",
+ "###########(2)#######\n",
+ "subplot(223)\n",
+ "plot(t, cos((pi*t/4-135)))\n",
+ "plot(t,(0*t)/t,'-')\n",
+ "ylim( (-1,1) )\n",
+ "ylabel('Vout')\n",
+ "xlabel('(a)')\n",
+ "title('Output Waveform')\n",
+ "\n",
+ "##########(3)#########\n",
+ "k = arange(0.0001, pi, 0.0005)\n",
+ "k1= arange(pi, 2*pi, 0.0005)\n",
+ "k2= arange(2*pi, 3*pi, 0.0005)\n",
+ "k3= arange(3*pi,4*pi, 0.0005)\n",
+ "k4= arange(4*pi,5*pi, 0.0005)\n",
+ "m=arange(-1,1,0.0005)\n",
+ "x5=(pi*m)/m\n",
+ "x10=(2*pi*m)/m\n",
+ "x15=(3*pi*m)/m\n",
+ "x25=(4*pi*m)/m\n",
+ "subplot(222)\n",
+ "plot(t,(0*t)/t,'-')\n",
+ "plot(k,1*k/k,'b')\n",
+ "plot(k1,-1*k1/k1,'b')\n",
+ "plot(k2,1*k2/k2,'b')\n",
+ "plot(k3,-1*k3/k3,'b')\n",
+ "plot(k4,1*k4/k4,'b')\n",
+ "plot(x5,m,'b')\n",
+ "plot(x10,m,'b')\n",
+ "plot(x15,m,'b')\n",
+ "plot(x25,m,'b')\n",
+ "ylim( (-1.1,1.1) )\n",
+ "ylabel('Vin')\n",
+ "title('Input Waveform')\n",
+ "\n",
+ "############(4)############\n",
+ "subplot(224)\n",
+ "m1=arange(0.001,13,0.0005)\n",
+ "m2=arange(-13,0.001,0.0005)\n",
+ "y1=(0.01*pi*m2)/m2\n",
+ "y5=(pi*m1)/m1\n",
+ "y10=(2*pi*m2)/m2\n",
+ "y15=(3*pi*m1)/m1\n",
+ "y25=(4*pi*m2)/m2\n",
+ "plot(t,(0*t)/t,'-')\n",
+ "plot(y5,m1,'b')\n",
+ "plot(y10,m2,'b')\n",
+ "plot(y1,m2,'b')\n",
+ "plot(y15,m1,'b')\n",
+ "plot(y25,m2,'b')\n",
+ "plot(y5+0.1,m1,'b')\n",
+ "plot(y10+0.1,m2,'b')\n",
+ "plot(y1+0.1,m2,'b')\n",
+ "plot(y15+0.1,m1,'b')\n",
+ "plot(y25+0.1,m2,'b')\n",
+ "text(-2.5,13,'Vsat')\n",
+ "text(-2.5,-13,'-Vsat')\n",
+ "ylim(-13,13)\n",
+ "ylabel('Vout')\n",
+ "xlabel('(b)')\n",
+ "title('Output Waveform')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rf= 7.958 kohm\n",
+ "\n",
+ "R1= 0.796 kohm\n",
+ "\n",
+ "Cf= 0.01 uF\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 35,
+ "text": [
+ "<matplotlib.text.Text at 0xd0e5c18>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEZCAYAAACEkhK6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXlcjen7xz+nzWixDe0RKpWSyDpaSErIvhQm24yxjJnv\nzBh9zYLv11gGYwazMN+x/6bCMEIlSjJCY8TMyBBTpBQiIlSn+/fH7ZxpO3WWZznndL9fr/PS85zn\nue7ruV3nue71uiSEEAIGg8FgMBrBQGwFGAwGg6EbMIfBYDAYDKVgDoPBYDAYSsEcBoPBYDCUgjkM\nBoPBYCgFcxgMBoPBUArmMBicUFRUBD8/P7Ro0QILFy4UWx0GgzOYbf8Dcxhq4ujoiOTkZN7LWbp0\nKaZOnarw+5UrVyI0NLTGOWdn53rP7dmzhxcdAWDLli2wtLTE48ePsWbNGt7KYfAPs+2aMNv+B+Yw\n1EQikUAikYitBvz9/ZGeng7Z/ss7d+6gsrISFy9eRFVVlfzcjRs34Ofnx5seN2/ehJubm1r3VlZW\ncqwNQxOYbdeE2XY1CEMtHB0dSXJyMiGEkG3btpHXXnuNfPDBB6R169akY8eOJCEhQX6tv78/iYqK\nIr179yYtWrQgI0eOJA8ePCCEEHLixAlib29fQ3aHDh3I8ePHSUJCAjExMSHGxsbE3NycdO/evY4e\nL168IKampuTChQuEEEJiY2PJ9OnTib+/P/ntt9/k55ydnQkhhGzdupW4ubkRCwsL0qlTJ7J582a5\nLFdXV3L48GH5cUVFBWnbti3JzMwkhBBy5swZ0q9fP9KqVSvi5eVFUlNTCSGEREZGEmNjY2JiYkLM\nzc1JcnIyefHiBXnnnXeIra0tsbW1Je+++y558eKF/Jnt7OzI6tWribW1NZk6dSpZunQpGTduHJky\nZQqxsLAgnp6e5Nq1a2TFihXE0tKStG/fniQlJWnwP8ZQFmbbzLYVwXoYHJGRkQFXV1cUFxfjww8/\nxMyZM2t8v2vXLmzbtg137tyBkZERFixYoFCWrIUXEhKCxYsXY9KkSSgtLUVmZmada01MTNCnTx+c\nPHkSAJCWlgZfX18MGDAAaWlp8nOyFpiVlRWOHDmCx48fY9u2bfjXv/6FixcvAgAiIiIQHR0tl330\n6FFYWlqie/fuyM/Px/Dhw/Hpp5/i4cOHWLt2LcaOHYvi4mJs374dkydPxqJFi1BaWopBgwZh+fLl\nyMjIwKVLl3Dp0iVkZGRg+fLlctlFRUV4+PAhbt26hS1btoAQgsOHD+P111/Hw4cP4e3tjaCgIABA\nQUEBPvnkE8yePVud/xqGhjDbZrYtgzkMjujQoQNmzpwJiUSC119/HXfu3MHdu3cBQH7O3d0dpqam\n+O9//4s9e/bIu9oNQQhp9Dp/f3/5D+iXX36Bn58ffH195edOnToFf39/AEBoaCg6duwIAPDz88OQ\nIUPk14WHhyMuLg7Pnz8HAPz4448IDw8HAOzevRuhoaEICQkBAAwePBg+Pj44cuRIDV1l/Pjjj/j0\n00/Rtm1btG3bFkuWLMGuXbvk3xsYGGDZsmUwNjbGK6+8ItcnKCgIhoaGGDduHIqLixEVFQVDQ0NM\nnDgRubm5ePz4caN1xuAWZtvMtmUwh8ER1tbW8r9NTU0BAE+ePJGfc3BwkP/dvn17VFRU4P79+5yU\n7efnh19++QUPHz7EvXv30LlzZ/Tr1w/p6el4+PAhLl++LG+FJSQkoG/fvnj11VfRunVrxMfHo7i4\nGADg5OQENzc3xMXFoaysDIcOHUJERAQAOo67d+9etG7dWv45ffo0CgsL69WpoKAAHTp0qPHMBQUF\n8uN27drBxMSkxj2Wlpbyv5s3b462bdvKx9KbN28OoGadMoSB2XZNmrJtG4mtQFPh1q1bNf42NjZG\n27ZtYWZmhrKyMvl3UqkU9+7dkx8rM/nYt29fPHr0CN9//z1ee+01AECLFi1ga2uLLVu2wNbWFh06\ndMCLFy8wduxY7N69GyNHjoShoSFGjx5do/UUHh6O6OhoSKVSuLu7o1OnTgDoj2Lq1KnYsmWLUs9r\na2uL3Nxc+WThrVu3YGtrq/C5tGGSlaEezLabjm2zHoYAEEKwe/duXLlyBWVlZfj0008xfvx4SCQS\nuLi44Pnz54iPj0dFRQWWL1+OFy9eyO+1trZGbm5ug1335s2bw8fHB1988UWN1SIDBgzAF198Ie+y\nl5eXo7y8HG3btoWBgQESEhKQlJRUQ9akSZNw9OhRfPfdd5g8ebL8/JQpU3Do0CEkJSVBKpXi+fPn\nSE1NRX5+vvwZqxMeHo7ly5fj/v37uH//Pv7zn/80uIRSmSEMhvbBbLtp2TZzGBxQ3zLE6scSiQRT\np07FtGnTYGNjg/LycmzYsAEA0LJlS3zzzTeYNWsW7O3tYW5uXqOLP378eADAq6++Ch8fH4U6+Pv7\n4969exgwYID8nK+vL+7fvy//oVlYWGDDhg2YMGEC2rRpg+joaIwcObKGHGtra/Tv3x9nzpzBxIkT\n5eft7e1x8OBBrFixApaWlmjfvj3WrVsn/zHUroOPP/4YPj4+6NatG7p16wYfHx98/PHH9daPMnVY\n3zGDf5htM9uujoSI6P5mzJiBI0eOwNLSEn/88Ue91yxYsAAJCQkwNTXF9u3b4e3tLbCWmjNw4EBM\nnToVM2bMEFsVBoNTmG03LUTtYUyfPh2JiYkKv4+Pj8f169eRnZ2NLVu2YM6cOQJqxy361C1lMKrD\nbLvpIKrD8PX1RevWrRV+HxcXh8jISABAnz59UFJSgqKiIqHU4xRd6XIyGKrCbLvpoNWrpPLz82uM\nedrb2+P27duwsrISUSvVOXHihNgqMBi8wGy7aaH1k961u7usNcNgMBjioNUOw87ODnl5efLj27dv\nw87Ors51Tk5O8pUI7MM+XH+cnJxUstsZM2bAysoKnp6eCq9ZsGABnJ2d4eXlVW9YDADo3r276M/O\nPvr96d69u0q2rdUOIywsDDt37gQAnD17Fq1atap3OOrGjRvyMAOqfH75haBdO4Jff/3n3JIlS1Be\nTjB5MsHo0QRSqepyq8tS915tlPXnnwRt2xIcO1ZTllRK8M47BH5+BC9e6PYz1ve5ceOGSnbL1WKO\nS5cuaWV9MFn6IYsQgkuXLqlk26I6jPDwcPTv3x9Xr16Fg4MDtm7dis2bN2Pz5s0AaGyYTp06wcnJ\nCbNnz8Y333zDWdkPHwITJgDbtwO1l4AbGwNbtwJFRcDLJeVNnmfPgDFjgLVrgcGDa35nYAB88QXQ\nogXw6afi6KdNNKXFHIymhaiT3tWjRypi06ZNvJT9738Do0YBtXKxyDExoc6kf39g5EjgZUyzJsuq\nVYCnJ/DyPVcHAwPgf/8DunWjjrhHD2H10yVUWcwRH89NmdnZysl69AiQSoEpU7gpV1nOngUuXgTa\nt1dfhrLPWJ2CAqBzZ2DgQPXLVYd9+4Dnz4E2bVS7T51nrE3fvqqXK0OrV0nxxYULQFwckJVV97uA\ngAD5387OwIIFwEcfAT/+qHo51WVpipiycnOBr7+mP+iGZFlZAf/9L/DBB0ByMiBRcX2CttYXHxCi\n3GKOd95ZKv+7TZsAvPpqgFrlFRcHQJm21717tPfdkMPg4/9p9276m/TwUF+Wss9YnatXgV696joM\nvm3xs8+AqiqgninZBlHnGWven4qePVNRLRaiahA9QNXHCAsj5KuvlLu2tJQQa2tCXuZZaZK88QYh\nixcrd21FBSHOzoToSD4YpVDnZ5KTk0M8PDzq/W727NkkOjpaftylSxdSWFjISbmaEh9PSEiI4MWS\nb78lZPZs4cv9978J+ewz4cuNiCBk927hy62Nqjam1ZPefJCZCZw/D7zxhnLXm5sDixbRFkFT5OZN\n4KefgPfeU+56IyNg2TLa02DUj7KLORgMbaPJOYy1a4H33wdehqBXipkzgZQU+vJsanz1FX3+V19V\n/p7x4+kw1m+/8aaWViPmYg4Gg0+a1BzG3bvAkSNQeQzQwgKYPh3YuJE6nKZCWRmwcyftkamCkRHw\n9tvAl18C1RKRNRnEXMzBYPBJk+phbN0KjB0LNLDiUSHz5wPbttGVDU2F2Fi6osLRUfV7Z80CDh0C\nOEq8xmAwtIAm4zCqqoDvvgPUDXjr6EiXisbFcaqWVvPtt8Dcuerd27o1MHw4oERjm8Fg6AhNxmGk\npQEtW9bdpKcK06bRvRlNgb/+Am7fBoKD1ZfRlOqLwWgKNBmHER0NvMz5rjajR9MNRtXyvest0dHA\npEmAoaH6MgYOpOv6f/+dO70YDIZ4NAmHUV5Ol4ZOmqSZHFNTujs8JoYbvbQVQuhGxfBwzeQYGgKT\nJwP/93/c6MVgMMSlSTiMpCSgSxegQwfNZY0fT52PPiNbDqvJ8J0MWX0RlpSNwdB5moTDiInRfDhK\nRmAgcOUKkJ/PjTxtJDqa9i5UDe1RH97edMGBikExGQyGFqL3DqO8nO69GDOGG3kmJsCIEcCBA9zI\n0zYIoc82diw38iQSYNw4GmyNwWDoNnrvME6dokEEbWy4kzl2rP6+ALOyaLTSbt24kymrLzYsxWDo\nNnrvMOLigLAwbmUOGUJjUunjpjRZfXExHCWjd2/g6VO6VJfBYOgueu0wCKG7jbl2GK+8QpeMJiVx\nK1cbiIuj+T+4RCKheUcSEriVy2AwhEWvHcbly3TCtYHUymoTGspdchttobCQ9gL8/LiXrY/1xWA0\nNUR1GImJiXB1dYWzszNWr15d5/vU1FS0bNkS3t7e8Pb2xvLly1WSHxdHJ6i5HF6RERoKJCbS8X59\n4fBhurPbxIR72YGBwLlzQGkp97IZDIYwiOYwpFIp5s+fj8TERGRlZSE6OhpXrlypc52/vz8yMzOR\nmZmJjz/+WKUyDh+m8Yz4wN6eZsvKyOBHvhgkJADDhvEj29wc6NcPOH6cH/kMBoN/RHMYGRkZcHJy\ngqOjI4yNjTFp0iQcPHiwznVEzaU1jx4Bf/zBz/CKDH0aZqmspDk/goL4K0Of6qsx+O49MxhiIJrD\nyM/Ph4ODg/zY3t4e+bV2w0kkEqSnp8PLywuhoaHIqi8JtwJOnKAtWlUSJalKaCjd46EPnD8PODgA\n1tb8lSFzGPq+vFaI3jODIQaiJVBSlPS+Oj169EBeXh5MTU2RkJCAUaNG4dq1a/Veu3TpUvnfAQEB\nOHYsgNfWMkAd0t9/08RMaidV1xKSkuhyYT5xcQGaNaOLETw8+C1LE1JTU5Gamqr2/dV7zwDkvWc3\nN7ca16nbe2YwxEI0h2FnZ4e8vDz5cV5eHuzt7WtcY2FhIf976NChmDt3Lh48eIA2bdrUkVfdYQDA\nm28Ce/Zwq3NtjIzokNeJE8DEifyWxTfHjgFCNHIDA4HkZO12GAEBAQgICJAfL1u2TKX76+s9nzt3\nrsY11XvPdnZ2WLt2Ldzd3TXSm8HgG9Echo+PD7Kzs5GbmwtbW1vExsbWSW1ZVFQES0tLSCQSZGRk\ngBBSr7Oozc2bQEkJt7uVFTF4MH0B6rLDePwYuHgR8PXlv6zBg2n02nfe4b8sseCy91y751zdkTEY\nqqJp71k0h2FkZIRNmzYhODgYUqkUM2fOhJubGzZv3gwAmD17Nvbt24dvv/0WRkZGMDU1RYySccWP\nHaMvJgMBZmgCA2nual0mNRXo04eGb+ebQYOA2bPpJLuRnmaU57L3XLvnzGBogqa9Z1F/skOHDsXQ\noUNrnJs9e7b873nz5mHevHkqyz12DAgJ0Vg9pXB3B549A3JygI4dhSmTa44d43d1VHXataNh5s+f\np/nC9RE+e88Mhpjo3U7vqio6RCTUC1Aioa3m5GRhyuMDIR0G8M88hr5Svffs7u6OiRMnynvPsh70\nvn374Onpie7du+Pdd99VuvfMYIiJ3g0KXLoEtG1LN9YJRWAgfenOmiVcmVxRUEDTqHbvLlyZgYHA\n2rXARx8JV6bQ8NV7ZjDERO96GCdPAkLPC8omvquqhC2XC9LS6GS3EPM9Mvz86JBUWZlwZTIYDM3R\nS4fh7y9sme3bAy1bAn/+KWy5XCBGfVlYAF5ewOnTwpbLYDA0Q68cRlUVTZjEZzgQRQwcSFcb6Rpp\naay+GAyGcuiVw8jKAlq1okEBhcbPj758dYl792huciHnL2ToYn0xGE0dvXIYYgyvyPD3py9AXYr2\ncOoU0L8/YGgofNn9+9Oshc+eCV82g8FQD+YwOMLBATAz0600pGLWl5kZDQ9SK2IGg8HQYvTGYRAi\n3ni8DFkvQ1fQhvo6eVK88hkMhmrojcO4do1GQn0ZIFQU/Px05wX48CFw/TrQs6d4OrB5DAZDt9Ab\nh3HypLitZUC35jF++YXGj+IjHauyDBhAMxaWl4unA4PBUB69cRhpaeKNx8vo1Ik6i5wccfVQBm2o\nr5YtAWdnuomPwWBoP3rjMMScwJUhkejOsJQ29MgANizFYOgSeuMwKisBJyextdCNie/SUpr1rk8f\nsTVhE98Mhi6hNw7D35+28MVGF3oY6el0svuVV8TWhMaxSk+nDp/BYGg3jTqMn376Cc7OzmjRogUs\nLCxgYWGBFi1aCKGbSog9HCXDzY224Kvlz9E6tGH+QkbbtnQPy8WLwpetK7bNYGgLjTqMDz/8EHFx\ncXj8+DFKS0tRWlqKx48fc1J4YmIiXF1d4ezsjNWrV9d7zYIFC+Ds7AwvLy9kZmYqlKUN4/HAP/MY\np06JrYlitGX+QoZY8xi6YtsMhrbQqMOwtraGm5sb5wVLpVLMnz8fiYmJyMrKQnR0NK5cuVLjmvj4\neFy/fh3Z2dnYsmUL5syZo1CeuzvnKqqNNg9LPXtGQ3L07y+2Jv8gVn3pim0zGNpCowmUfHx8MHHi\nRIwaNQomLxftSyQSjBkzRqOCMzIy4OTkBMeXO+0mTZqEgwcP1vgBx8XFITIyEgDQp08flJSUoKio\nCFZWVnXkacP8hQx/f+C778TWon7OngU8PWloDm3Bzw+YO5dGGxYyL4eu2DaDoS006jAePXqE5s2b\nIykpqcZ5TX9U+fn5cHBwkB/b29vjXK3AQvVdc/v27Xp/VH/e1Z5kFBIrIL8CSL0CtH1VbG1qsjcN\ncA8A/rwrtibVMALMOwEH0oEuLsIVm1uUC0iA2LjYGuddBrig9SutYddCvbDHXNq20DlWcnPpHJzQ\n5RYUAA8eCF/uvXvA06fCl1tSQuc5xcih06kTYGqq3r2NOozt27erJ7kRJEp2CUitbdOK7hs0fZD8\nbzNnM5i5iNyEHge8fhDQtjnU3KfAq68CGfvE1qQmpSHA26lAm98FLFTBPM6IFSPQoaQDAhwD1BLL\npW0PGrRU/reZWQDMzNTTSVlKS+mLe9IkXoupw4MHwPPnNEWBkBQV0V6t0Dnmb9+m6aR37xa23KdP\nUxEcnApra/XuV+gwPv/8c3z44Yd4++2363wnkUiwYcMG9Up8iZ2dHfKqLSXKy8uDfa1E3LWvuX37\nNuwUJLu4e0SbmszAmjXArVvAxiixNfmH8nKgTRvg93y6y1qb2LkTOHQI2LuX/7JUte1ly5apJJ9L\n2757d6lKZWtKQgKwYQP9V0i++46ulBN6KHfxYsDcnP4rJJMnA6Gh9F9hCXj5oahq2wodxnfffYf+\n/fujZ8+e8paPrEWkbAuqIXx8fJCdnY3c3FzY2toiNjYW0dHRNa4JCwvDpk2bMGnSJJw9exatWrXS\nmTFef3/gjTfE1qImv/4KuLhon7MAaH0tXEhDq/A9H8Vsm8FQD4UOY8GCBVi4cCEKCgowceJEhIeH\nw9vbm7uCjYywadMmBAcHQyqVYubMmXBzc8PmzZsBALNnz0ZoaCji4+Ph5OQEMzMzbNu2jbPy+cbb\nm8aUevCAtuq1AW3af1GbDh3oRsKrVwFXV37LYrbNYKiHhNQeSK1Fbm4uYmJiEBsbi7KyMkRERCA8\nPBwuLgLOTjaCRCKpMx6sDQQH09U/I0eKrQll6FDgzTeB0aPF1qR+Xn+dRrB9801hylPWtsWyLzHK\nZUNSwiDekFRNVLWxRhcxOjo6IioqCpmZmYiJicGBAwd4Wbuuj2hTYL3KShqCw9dXbE0UI/R+DGbb\nDIZqNOowKisrERcXh4iICISEhMDV1RX79+8XQjedR5sC6128SENwtG0rtiaKkdWXUI1qZtsMhmoo\nnMNISkpCTEwMjhw5gt69eyM8PBxbtmyBubm5kPrpNL160Rzfjx+Lv7xWG8K/N4aTEyCV0rmfTp34\nK4fZNoOhHgodxqpVqxAeHo61a9eijbbM2uoYzZpRp3H6NJ0/EJO0NCAiQlwdGkMi+Sc8PJ8Og9k2\ng6EeCh1GSkqKkHroLbJ5DDEdRlUVDYaoreFKqiObx5g2jb8ymG0zGOqhN/kwtBVtmMf48086d2Fj\nI64eyqALCagYjKYKcxg807cv8PvvQFmZeDqkpWlXOPOGcHMDHj2ioRPEIj0diIkRr3wGQ1thDoNn\nTE0BLy/gzBnxdNCFCW8ZBgbiL0fetw/4+2/xymcwtBXmMARAzGEWQnSrhwGIP4yXmgoEBIhXPoOh\nrTCHIQBiJlS6ehVo3pyG3tAVxOxhPHwIZGcDPj7ilM9gaDPMYQjAa68B58/T8M1Co2u9CwDo1g0o\nLKShp4Xm1Ck67/QynxKDwagGcxgCYGFBJ3N//VX4srUtf7cyGBpSJytGXvTUVN2Z72EwhIY5DIEQ\nY1yeECAlBRg0qPFrtQ2x5jF0tb4YDCFgDkMgxBiXz8qiIcP53DXNF2LU1927NCxJr17Clstg6ArM\nYQiEry9w9izNeicUycnA4MHClcclPXrQl3dxsXBlnjhBHZWxsfoyHjx4gKCgILi4uGDIkCEoKSmp\n9zpHR0d069YN3t7e6N27t/oFMhgCwhyGQLRuTbPdnT0rXJnJyUBgoHDlcYmxMXWyQkbx4KK+Vq1a\nhaCgIFy7dg2BgYFYtWpVvddJJBKkpqYiMzMTGRkZmhXKYAiEKA6jqbbChgwBkpKEKauyks4B6PJ4\nvJD1BXDjMOLi4hAZGQkAiIyMxM8//6zwWm1M+sVgNIQoDqOptsKCgoBjx4Qp6/x5oH17wNJSmPL4\nQFZfQrxXc3OBJ08ADw/N5BQVFclzc1tZWaFIwdpgiUSCwYMHw8fHB99//71mhTIYAqEwWi2fxMXF\n4eTLJTCRkZEICAhQ6DT0qRXWvz9w5QrdHNa6Nb9l6fJwlAw3N9pTun4dcHbmtyxZfUkkjV8bFBSE\nwsLCOuc/++yzGscSiQQSBQJPnz4NGxsb3Lt3D0FBQXB1dYVvPekQly5dKv87ICAAAWwLOkMDUlNT\nkZqaqvb9ojgMVVthhoaGmD17Nt544w0h1eScZs3o/oKUFGDsWH7LSk4G3nuP3zL4RiKhvYykJOEc\nhjIca6CbaGVlhcLCQlhbW+POnTuwVNDFs3kZOrhdu3YYPXo0MjIyGnUYDIam1G50LFu2TKX7eRuS\nCgoKgqenZ51PXFxcjesaa4VlZmYiISEBX3/9NU6JsZOLY4QYly8ro5sEdW3DXn0IMYxXVcVdjyws\nLAw7duwAAOzYsQOjRo2qc01ZWRlKS0sBAE+fPkVSUhI8PT01L5zB4BneehhCtsIA3em6BwUBGzfy\nW8aJE0DPnuKnheWCwYOBuXOBigrNlrs2xIULQJs2gKMjPdak2x4VFYUJEybghx9+gKOjI/bs2QMA\nKCgowBtvvIEjR46gsLAQY8aMAUDzik+ePBlDhgzh4EkYDH4RZUhK1gpbtGhRg60wqVQKCwsLeSts\nyZIlCmXqSte9a1caU+rGDaBzZ37KOHIEGDaMH9lCY2kJdOwIZGTQ4Tw+iI+vWV+adNvbtGmD48eP\n1zlva2uLI0eOAAA6deqEixcvqq0vgyEWoqySioqKwrFjx+Di4oKUlBRERUUBoK2wYS9/uYWFhfD1\n9UX37t3Rp08fDB8+XC9aYbJx+aNH+ZFPCH0BhobyI18Mhgzhr74A/asvBoMvROlhNPVW2IgRwA8/\n0KEWrrlyhToNd3fuZYvF8OHAggXAf/7Dvex794C//gIGDOBeNoOhb7Cd3iIQHAycPg28nPfkFFlr\nWZnlobpCv35AXh5w6xb3shMT6eZGFs6cwWgc5jBEwMKC7sngY7VU7fF4fcDIiD7ToUPcy9bH+mIw\n+II5DJEICwNqrTDWmIcP6Q7vgQO5lasN8FFf5eV0bmToUG7lMhj6CnMYIjFiBF3NVFnJncy4OLoM\n1cyMO5nawpAhwJkzwOPH3MlMSQFcXQFbW+5kMhj6DHMYIuHgQGM9padzJ3PfPv53kIuFhQVdVpuY\nyJ3MffuAceO4k8dg6DvMYYjI2LHAy31dGvP4MY1OO3w4N/K0ES7rq7ISOHgQeLl/jsFgKAFzGCIS\nHk5fgBUVmss6fJimNW3ZUnNZ2srYsTRMyKNHmss6eZLu7Jbt7mYwGI3DHIaIdOpEP8nJmsuKjdX/\n4ZXWremE/oEDmstqCvXFYHANcxgiExEB/PijZjKKimiLWV/nL6rDRX09e0bnL6ZM4UYnBqOpwByG\nyEyYQFc3PX2qvowffwRGjQLMzbnTS1sZPpxG4r1zR30ZP/8M9O4N2NlxpxeD0RRgDkNkrK1pGPLo\naPXuJwTYtg2YNo1TtbQWU1M6lLR1q/oytm9vOvXFYHAJcxhawJw5wDffqJeKNCODphbVh9wXyjJn\nDrB5MyCVqn7vjRvAb78BI0dyrxeDoe8wh6EFBAcDJSX05a8q69cDb78NGDSh/8kePehmu5dxKlVi\n40Zg1iygeXPu9QKAvXv3omvXrjA0NMSFCxcUXpeYmAhXV1c4Oztj9erV/CjDYHBME3rNaC8GBsC8\nefTlrwp5eXSZ6cyZ/Oilzcyfr3p9PXoE7NxJ7+ULT09PHDhwAH4NdPmkUinmz5+PxMREZGVlITo6\nGleuXOFPKQaDI5jD0BJmz6aZ8lR5b6xdS8fi9SGznqpMmkSj16alKX/P11/TuFH29vzp5erqChcX\nlwavycjIgJOTExwdHWFsbIxJkybh4MGD/CnFYHCEKPkwGHUxNwfefRf473+VWzZ68yawe7dqDkaf\nMDICPvqHo0PIAAAgAElEQVQIWLqU7mNpLJz7w4e0R3L6tCDqNUh+fj4cHBzkx/b29jh37pyIGv1D\nZSX9cLE5UhWePeM2rpqyVFbSDJhCP29FhTjPqynMYWgR8+fTYHinTzeejnTxYpqASUE69CbB1KnA\nmjV0mezo0Q1fu3w5XXrcSONfKYKCglBYWFjn/IoVKzBixIhG75eokKxE6Fz1ly8Dqak0zpmQlJdT\n2xeaX3+lQS2/+krYcp89o8u6IyOFLVeTfPUAACICe/bsIe7u7sTAwID89ttvCq9LSEggXbp0IU5O\nTmTVqlUKr+PyMU6cOCGqrJgYQjw9CXn+XLGsI0cI6diRkCdPhNNLW2WdOEGIgwMhjx4plpWRQYiV\nFSF376qnlzr2FRAQoNC2z5w5Q4KDg+XHK1asqNe+9cmumSztk0WI6jYmyhyGNk8MauR9OZA1YQJt\nBS9YUL+smzfpKp///U/9MOZiPyOXsgIC6Ga+yEigqqqurPv36XzHhg1Au3acqKk0RME6aR8fH2Rn\nZyM3Nxfl5eWIjY1FWFgYr7qI/f/EZGmfLHUQxWGwiUHFSCR0I96ZM8DChTX3Gvz9N80L8eGHNK0o\ng/Lll0BxMV0tVl7+z/nCQiAkBBg/njpiIThw4AAcHBxw9uxZDBs2DENfZmcqKCjAsJep/YyMjLBp\n0yYEBwfD3d0dEydOhJubmzAKMhgaoLVzGNo8Mcg3FhZ0xdSECYC3Nx2fP3KE7iH473/p3AXjH0xM\ngIQE4PXXga5dab0lJ9NVUQsWAB9/LJwuo0ePxuh6JlRsbW1xpNrGkaFDh8qdCYOhM3A6IFaNwYMH\nEw8PjzqfuLg4+TUNjfPu27ePzJo1S368a9cuMn/+/Hqv7dy5MwHAPuzDy6dz587c/jiUxMvLS/Rn\nZx/9/nh5ealkk7z1MI4dO6bR/XZ2dsjLy5Mf5+XlwV7BAvrr169rVBaDoY1cvHhRbBUYjBqIvnGP\naNHEIIPBYDAUI4rDYBODDAaDoXtIiKImPoPBYDAY1RB9SEoTuIr4mZeXh4EDB6Jr167w8PDAhg0b\nNNZNKpXC29tbqZ2/DVFSUoJx48bBzc0N7u7uOHv2rNqyVq5cia5du8LT0xMRERF48eKF0vfOmDED\nVlZW8PT0lJ978OABgoKC4OLigiFDhqCkpEQjeQsXLoSbmxu8vLwwZswYPFIiXkN9cmSsW7cOBgYG\nePDggdo6AcDGjRvh5uYGDw8PLFq0SClZmsJsWzW0xba5smtFsmSIZtt8rO4QgsrKStK5c2eSk5ND\nysvLiZeXF8nKylJL1p07d0hmZiYhhJDS0lLi4uKitiwZ69atIxEREWTEiBEayXn99dfJDz/8QAgh\npKKigpSUlKglJycnh3Ts2JE8f7mFfMKECWT79u1K35+WlkYuXLhAPDw85OcWLlxIVq9eTQghZNWq\nVWTRokV17tu/fz+xt7cn5ubm5OLFiw3KS0pKIlKplBBCyKJFi+qVp4xehBBy69YtEhwcTBwdHUlx\ncbHaz5iSkkIGDx5MysvLCSGE3FV3u7gKMNtWDW2yba7sWpEsQsS1bZ11GOnp6TXCK6xcuZKsXLmS\nE9kjR44kx48fr3Fu27ZtxMPDg5iamhJra2syZ84chQael5dHAgMDSUpKChk+fDghhJAOHTqQ5ORk\nlfQoKSkhHTt2rPe7xuS5uLiQ2NhY+XF8fDwBQH744QdSUVFBhg8fTtavX08sLCzkxtwYOTk5NQyu\nS5cupLCwkBBCX0xdunSpc0+nTp1qLKVuSF519u/fTyZPnqyWXoQQMm7cOHLp0iWVflT1yRo/frzK\n/2+awmxbt22bK7tWJEtM29bZIan6Nvbl5+drLDc3NxeZmZno06eP/Ny6desQFRWFdevW4fHjxzh7\n9ixu3ryJoKAgVFRU1JHxr3/9C2vWrIFBtaxGEolE4YowReTk5KBdu3aYPn06evTogTfeeANlZWVK\nyfP390datdjfFy9ehI2NDd566y3Y2tqiVatWePbsGfr3719DT1UoKiqClZUVAMDKygpFRUU1vieE\n4NatW3B3d1dZ9tatWxESEqKWXgcPHoS9vT26deum1v3Vyc7ORlpaGvr27YuAgACcP39eY5mNwWxb\nf21769atCA0NRVX1ODYqILptq+RetAhVNvYpS2lpKenZsyc5cOCA/NyjR4+Iubk52bt3b41rnzx5\nQtq1a0e2bt1KCCEkMjKSfPzxx+TQoUNk7ty55MSJE6Rdu3Zk+PDhZMqUKcTAwIA0b96cmJubkzVr\n1pCcnBwikUjIli1biK2tLbGxsSFr166Vy4+MjCQzZswgRkZGJCMjg5w4cYKYm5uTTz75pF55tdm1\naxfx9PSUHwcEBBAbGxvi7u5OKioqyKhRo4iXlxf57LPPCCG01WJtbU1atmxJ/Pz8yOXLlwkhhJw9\ne5ZYW1uTqqoqeQtl//79pFu3bqRVq1ZEKpWSlStXks6dOxOJREImTJhAHjx4QJ4/f07MzMyIRCIh\nZmZmxMnJiRBCSFZWFvH39yetWrUiLi4upH379jWe+a233iIuLi7E0NCQHD9+nHTo0IGsWbOGeHp6\nEnNzczJjxgxSWFhIQkJCSIsWLcjgwYPJpUuX5C2np0+fkt69e5NHL6MROjo6kvv37yttA7VbYR4e\nHmTBggWEEEIyMjIUtoq5hNm2btt2ixYtSLNmzWr0PiIjI0nv3r2JlZUVMTMz01nb1tkehiob+5Sh\noqICY8eOxZQpUzBq1Cj5+fT0dDx//hxjxoypcb2ZmRlCQ0PlGxQlEgkkEgnS09MRFxeHSZMmobi4\nGCkpKZBIJGjfvj0OHz6M0tJSfPDBB3I5qampuH79OpKSkrB69WokJyfL5bVs2RL29vbo1asXAMDU\n1BQXLlzArl27FMqT4evri8uXL6OkpARVVVXIzMzEkCFDUFpaiidPnmDUqFG4cuWKPADksGHDcP36\nddy7dw89evTA5MmTAQB9+vSBmZmZXC8A+PHHHzF58mRYWVnhs88+Q1xcHPbu3QtnZ2e0bt0a8+bN\nQ7NmzfDkyRMAwO+//47s7GxUVFRgxIgRCAkJwb1797B06VLcvn0b165dk8vesWOH/N4BAwZAIpFg\n//79SE5OxtWrV3H48GEMHToUq1atwt27d1FVVYXt27fL779x4wZyc3Ph5eWFjh074vbt2+jZsyfu\n3r2rulGAtu5l//e9evWCgYEBiouL1ZKlLMy2ddu2f/vtN9jY2GDy5Mly275+/Tp+++03xMTE6LRt\n66zD4HJjHyEEM2fOhLu7O959990a392/fx9t27att2trbW1do4IJIVixYgXy8vIQExODV199FYMG\nDcLOnTsVlr1kyRI0b94cHh4emD59OqKjo+XfmZmZwcHBQW50z58/R9euXZV6pg4dOqB9+/ZIS0vD\npUuX0LFjR5w/fx59+/bFyZMnsXfvXhBC5MMT06ZNg5mZGYyNjbFkyRJcunQJpaWlAIDw8HC5XlKp\nFAkJCQgPD0dYWBg2bdqE5cuX4+jRoxg9ejSWLFmCffv21dvlPnv2LJ4+fYqoqCgYGRmhX79+sLCw\nkMvOz8+HiYkJUlJS8Morr6BZs2YAgLfffhvt2rWDra0tfH190a9fP3h5eaFZs2YYPXo0Ll++LC/D\n09MTRUVFyMnJQU5ODuzt7XHhwgVYqpk4ZNSoUUhJSQEAXLt2DeXl5Xj11VfVkqUszLYbRhds29zc\nHMOHD0d0dDQSExPx559/Yty4cfJ8Jrpq21obfLAxqm/sk0qlmDlzptob+06fPo3du3ejW7du8Pb2\nBkCX6YWEhKBt27a4f/8+qqqq6vyw7ty5g7Zt2zYou7FkOdXHqtu3b48//vijxvcbN27E5MmT8eDB\nA1RUVGDx4sVKP5efnx/S0tLQvn17DB06FK1atcL69euRkpKCTp06oX///jA2NoZUKsVHH32Effv2\n4d69ezAwMIBEIsH9+/dhYWGB8PBwdO/eHfHx8bh37x4MDQ1x/Phx+dh3UFAQDAwMYGZmhs2bN8PI\nyAhFRUWwsbGpoU9BQYH8ecPDw3Hy5EmUlpZizZo1cHBwwLlz5yCRSBAUFAQA6NevHwDIx5IBoHnz\n5jWOd+7ciUuXLsnr8j//+Q+mT5+udP1XR6ZTcXGxXNaMGTMwY8YMeHp6wsTEpMEXJFcw224cbbVt\nmQ3dv38fN2/eREFBAXbv3o3KykqkpqbC29sb/fr1wzfffANAB21b6QGwJkpJSQkxMzMje/bsqXG+\ntLSUWFpaypcFzps3j7z33nvy76Ojo4m9vb38uGPHjjVWJMjGef/66y/5uQ8//FA+dq2qvPr43//+\nR3r16kXGjRtH4uPjCSGEXLp0SX7u008/JYQQsnPnTuLm5kZyc3MJIYQ8fPiQSCQScuPGDbksLy8v\n8vPPP5MhQ4aQ7777Tn6+S5cuJD09XaEO1eWkpaXJx4xlhIeHk2XLlhFCCJk2bRr5+OOPa9zv6OhY\n4zmnTJlCli5dKj/+/vvvyeDBgxusBz4ZOHAgOXr0aI1z69evJ3PmzFFJzvr160lZWRmXqjUKs20K\ns23l0dkhKaFo2bIllixZgrfffhtHjx5FRUUFcnNzMWHCBDg4OGDq1KkAIG+lPHz4EIWFhfjyyy9r\nyLGyssKNGzfqyF++fDmePXuGy5cvY/v27Zg4caJG8qrj5+eHCxcuIC0tDa+9zPnq6emJv//+GydO\nnJCP8T558gTNmjVDmzZt8PTp03pbehEREfjyyy9x6tQpjB8/Xn7+rbfewuLFi3Hr1i0AwL179xAX\nF1evPn379oWpqSk+//xzVFRUIDU1FYcPH8akSZMAKI4rps2Eh4cjJiamxrnY2FhERESoJOerr76S\nrxISCmbbFGbbKiC2x9IVfvjhB+Lh4UGaN29OrKysyFtvvVVjrfrz58/JxIkTSYsWLYiXlxdZv349\ncXBwkH9/8OBB0r59e9KqVSuybt06eSvs+++/J7a2tsTa2rrGihBV5SnCxsamTgjj0NBQYmJiIm/R\nPnnyhIwcOZJYWFgQR0dHsnPnTmJgYFCjFXbr1i1iYGAgX3svo6qqinzxxRekS5cuxMLCgnTu3Jl8\n9NFH8u9ry7l8+TLx9/cnLVu2JF27diU///yz/Ltp06aRTz75pIb8+lphslYbIbSlGRQUpPD5+aa4\nuJhYWlqSiooKQghtXbdv357cuXOH+Pr6ku7duxMPDw/yyy+/EEIImTNnDvHx8SFdu3YlS5YsIYQQ\n8tVXXxETExPi6elJBg0aJPgzMNtmtq0sosaSmjFjBo4cOQJLS8s645syFixYgISEBJiammL79u3y\ncVhdJzc3F506dUJlZaXaa8UZ2sGIESPwxhtvICwsDKtWrUJxcTFsbGzw/PlzLF68GIQQPH36FObm\n5nj48CFat24NqVSKwYMHY+PGjfDw8EDHjh3x22+/oU2bNmI/jsYw29ZfRP3fnD59OhITExV+Hx8f\nj+vXryM7OxtbtmzBnDlzBNSOwVCO6sNSsuGoXr16Ydu2bVi2bBl+//13mJuby7/v2bMnevTogcuX\nLyMrK0tM1RkMlRDVYfj6+qJ169YKv4+Li0NkZCQAuma6pKSkzo5LXUaVVQ4M7SUsLAzJycnIzMxE\nWVkZvL294evri1OnTsHOzg7Tpk3Drl27kJOTg3Xr1iElJQWXLl3CsGHD8Pz5c7HV5wVm2/qJVvcX\n6wuRcPv2bRE14g5HR0dIpVLWZdcDzM3NMXDgQEyfPl0+2X3r1i20a9cOs2bNwqxZs5CZmYnS0lKY\nmZmhRYsWKCoqQkJCglyGhYUFHj9+LNYjcAqzbf1F6/dh1J5iqa/l4uTk1OiqCgZDXTp37txoGuDw\n8HCMGTMGe/bsAUB3Oa9ZswbGxsawsLDAzp070aFDB3h7e8PV1RUODg4YMGCA/P4333wTISEhsLOz\nk+887t69u3wdPoPBB15eXqqlAhZ3zr3hyI6zZ88m0dHR8uPqESSrw+VjyFauqEJVFSFvvUWIlxch\nly7Rc48fE9K37xLi5ETIrVvi6KXNspYsIcTJiZDTp+lxWRkhAQFLiJ0dIRpG39ZIr/oQ62cihl3H\nx1M7Hj9ec1nKILasf/+bkL59CdmwQXNZitBWWYSobmNa3WcMCwuT7z48e/YsWrVqVWMnpLawejWQ\nkQH88gsgCyJpYQEEBwMzZwIjRwICL7HXarZvB/7v/4D0dKB/f3queXPA3x9YvhwYPhzgOVwTg8FQ\nA1GHpKpvo3dwcMCyZcvkIZVnz56N0NBQxMfHw8nJCWZmZti2bZuY6tZLZibwxRf035cLYWqwaBFw\n6RLw0UfA+vXC66dt/P038MEHwMmTQLt2db+fNo3W5YIF1KkwGAztQVSHUT0YmSI2bdokgCb/IAsO\npgxSKe1BrFkD2NnVL0siATZuBDw8gMmTAR8f/vXSVlmEAPPmAQsXAvXFmZPJWrmS9tQSEoChQ/nX\nqymgD/bDZIlv16Ju3OMKdRK4cMH//R/w9dfA6dNAY6sIv/8eiIkBqkVSbnIcPQq88w7wxx+AsXHD\n18bFAR9/DFy8CIi92EYs+xKj3IQE4N//BlxcgJfz93rN4sXAiRNARATw9ttiayM8qtqYVs9haDMV\nFcCSJcBnnzXuLAA61HLzJvAymnCTgxBg6VL6acxZAMCIEYCZGXWyDAZDO2AOQ01iY4H27YGBA5W7\n3tgY+PRT6mCaIsePAyUlQLXYbg0ikVDnsmoVdTYMBkN8mMNQkw0bgH/9S7V7Jk0CsrLokExT48sv\n6dyFoaHy9wwZQueJTpzgTy++mTFjBqysrODp6Sk/9+DBAwQFBcHFxQVDhgxBSUmJiBoyGMrDHIYa\nnDtHl32Ghqp2n4kJMGcOdTZNiZwcWmcvIz0rjUQCvPuubq8uqy9e2qpVqxAUFIRr164hMDAQq1at\nEkk7BkM1mMNQg40b6WofVVrLMt56C9i7F9CTKBBKsXkzEBkJmJqqfu+UKXS/hq5GhKkvXlr1GGmR\nkZH4+eefxVCNwVAZ5jBU5PFj4NAh+gJUB0tLOu+xdy+3emkrFRXAtm3UUapD8+Z03mPXLm71EpOi\noiL5BlQrKyu9CqjJ0G+0PpaUtrF/PxAQADSSK71BIiPpZr+ZMzlTS2tJSgKcnABnZ/VlREbSVWZR\nUcqtSNMlJBJJg5Fdly5dKv87ICBA9HX4DN0mNTUVqampat/PHIaK7N6tfmtZRmgo8MYbdNdzp07c\n6KWtREfTNe6a0Lcv/ffMmX9CiegyVlZWKCwshLW1Ne7cuQNLS0uF11Z3GAyGptRudCxbtkyl+9mQ\nlArcvk3DVgwfrpkcExNg4kT6MtVnnj4FDh9WfimtIiQSOpehL3sywsLCsGPHDgDAjh07MGrUKJE1\nYjCUgzkMFdizBxg1CnjlFc1ljRsH/PST5nK0mUOHaO+ggQa00owbR4cDq6o0lyUk4eHh6N+/P65e\nvQoHBwds27YNUVFROHbsGFxcXJCSkoKoqCix1WQwlIINSanAzz/TcXQu8PWlPRZ9HpaKiVF9Ka0i\n3NyAli3p8tx+/biRKQSK4qUdP35cYE0YDM1hPQwluXsX+P13YNAgbuQZGtLeyv793MjTNp49o2FQ\nwsK4kzl2rP73yhgMbYY5DCU5fJjuPOZiOEqGPr8Ak5OBHj2ANm24kzluHLBvHwsVwmCIBXMYSnLg\nAO0RcMnAgcDVq0BBAbdytYG4OG57FwDg6Ul7ZixrKYMhDsxhKMGTJzThj6qhQBrDxIT2WhISuJUr\nNlVVdMJ7xAhu5UokwLBh+ldfDIauIKrDSExMhKurK5ydnbF69eo636empqJly5bw9vaGt7c3li9f\nLoKWwLFjQJ8+QKtW3MseOlT/XoDnzwOtW2u2WU8RoaFAfDz3chkMRuOItkpKKpVi/vz5OH78OOzs\n7NCrVy+EhYXBzc2txnX+/v6Ii4sTSUvK0aPqZ35rjJAQmlSookK5PBG6wKFD3A9HyfD3ByZMAB4+\npE6JwWAIh2g9jIyMDDg5OcHR0RHGxsaYNGkSDh48WOc6sRMCEkIdRnAwP/KtrGjojPR0fuSLgSap\nVRujeXPAz4+GHGEwGMIimsPIz8+Hg4OD/Nje3h75+fk1rpFIJEhPT4eXlxdCQ0ORlZUltJrIzqat\nf3d3/srQp2GW4mJaZ3zuldCn+mIwdAnRHEZDAddk9OjRA3l5ebh06RLefvttUUIoHD1KJ6b5DHqn\nT/MYycl0U6KJCX9lyOpL13Z9Mxi6jmhzGHZ2dsjLy5Mf5+Xlwd7evsY1FhYW8r+HDh2KuXPn4sGD\nB2hTz+J+vqJ6Hj0KTJ3KiSiF9O4N5OfTj50dv2XxTVISdbB80rEjnb/4/Xege3fu5Wsa0ZPB0FdE\ncxg+Pj7Izs5Gbm4ubG1tERsbWyeMQlFRESwtLSGRSJCRkQFCSL3OAuAnqueLF0BaGvAyThxvGBrS\nPRkpKfw7Jz4hhK4oe/99/ssKDKR5wvlwGJpG9FQFR0dHtGjRAoaGhjA2NkZGRgZvZTEYmiKawzAy\nMsKmTZsQHBwMqVSKmTNnws3NDZs3bwYAzJ49G/v27cO3334LIyMjmJqaIkbgcKWnT9MYRprkvlCW\nQYPocI4uO4zsbJqD29WV/7ICA4H//Q/44AP+y+ITiUSC1NRUhQ0hBkObEDX44NChQzG01nKa2bNn\ny/+eN28e5s2bJ7RacoQYXpERGAisWkVb6bqaJEhWX0LoP3AgMH06UF7O73yJEIi9EpDBUBa207sB\nUlO5CzbYGC4udBL3+nVhyuODY8eAoCBhymrThm4MPHdOmPL4QiKRYPDgwfDx8cH3338vtjoMRoMw\nh6GAJ0+AP//8J9sb30gktJeRnCxMeVxTUUHDpwQGClemLteXjNOnTyMzMxMJCQn4+uuvcerUKbFV\nYjAUwvJhKODMGcDbm24UE4pBg2hUXE1TwIpBZibQvj03yZKUJTAQWL4c0OUspjY2NgCAdu3aYfTo\n0cjIyICvr6/8e5bTm8ElLKc3T5w8SXcUC0lgIF1hVFUFGOhY3+/kSRq2Q0gGDKCO6skTwNxc2LK5\noKysDFKpFBYWFnj69CmSkpKwZMmSGtewnN4MLmE5vXkiLU34F6C9PV2R9fvvwpbLBWlpwjtYMzOg\nZ09AV0dxioqK4Ovri+7du6NPnz4YPnw4hgi1yoLBUAPWw6iHZ8+ACxeA/v2FLzswkO7H4GN/AV9I\npcAvv9BlrkIzaBBdnMBX7Co+6dixIy5evCi2GgyG0rAeRj2cOwd07SrOMIe/P22t6xJ//EGDKFpZ\nCV+2n5/u1ReDoaswh1EPYgxHyfD1pUMsuhQnSYz5Cxl9+1KH9fSpOOUzGE0J5jDqQcwXoK0t3WNw\n+bI45auDmA62eXM6fHfmjDjlMxhNCeYwalFeDmRkAK+9Jp4OujTMQog4E97V0aX6YjB0GeYwanH+\nPN1BzEc6VmXRpXmMK1eAFi3oCi+x0KX6YjB0GeYwaiHmcJQMWYtZF0IMibFfpTb9+1NH//y5uHow\nGPpOow7j77//VuqcvqANL8AOHWh+b12IKyXm/IUMCwsaVfjXX9WX0dTsnMFQh0YdxtixY+ucGz9+\nPC/KiE1lJZ08rRaZQRQkEuq0Tp4UV4/GIEQ7HCyg+bBUU7JzBkNdFG7cu3LlCrKysvDo0SPs378f\nhBBIJBI8fvwYz/W07y+Lh9S2rdia/DMsNWuW2Joo5sYNmvypY0exNaH1tWkT8NFHqt3XFO2cwVAX\nhQ7j2rVrOHToEB49eoRDhw7Jz1tYWOhtGGZtaS0DVI8VK8TWomFk9aUN+TsGDACmTKFRc42Nlb+v\nKdo5g6EuCh3GyJEjMXLkSJw5cwb9+vUTUifRSEujLx1toEsXGqLk5k06p6GNaMP8hYw2bWhPJzOT\n5khXlqZo5wyGujQaS2rLli3YsmWL/Fjysjm5detWjQtPTEzEu+++C6lUilmzZmHRokV1rlmwYAES\nEhJgamqK7du3w9vbW+Ny60MqpTusqz2qqMjmMdLStDdt68mTwOLFYmvxD7J5H1Uchgw+7VwRytg/\ng6FNNOowhg0bJv/xPHv2DAcOHICtra3GBUulUsyfPx/Hjx+HnZ0devXqhbCwMLi5ucmviY+Px/Xr\n15GdnY1z585hzpw5OHv2rMZl18cff9BcDtbWvIhXC212GDdv0mWsLi5ia/IPfn7Ajh3AwoWq38uX\nnStCGftnMLSNRh3GuHHjahxHRETgNQ62QWdkZMDJyQmOjo4AgEmTJuHgwYM1fjBxcXGIjIwEAPTp\n0wclJSUoKiqCFQ9R7rRpeEWGbCJXG5Ht7taG+QsZfn7Am2/S3qKhoWr38mXnilDG/hkMbUPl8ObX\nrl3DvXv3NC44Pz8fDg4O8mN7e3ucq5Wgub5rbt++Xa/D2Hhuo0b6bP0T8PICNmpRjmhCgDxb4LPj\nQAsLsbWpSfRvgF0v7aovADAZACw+CNjbaSbHotSCEztXhDL2DwBjx9KNiSYmvKlSg6ws4P592hDY\nqNlPSiUKCoC//wZsbIDOnYUr9/x5oLBQ+CXsV67QenZzE35V5vjx6o+kNOowzM3N5V11iUQCKysr\nrF69Wr3SqiFRsmlKam13VnTfrg275H/bedrBvpvysSoIgKvFgHc74Fqx0rcJgpU7cCoLcHYSW5Oa\nZN0FHHtqX321cwXOXAW8XlHtvs1jNwMvTYtUETRr1gyhwaG8ZbxT1v4PHlyKnBzAyAiwswuAvX0A\nL/rIePyYhqlv1Qq4do3Xomrw55/0JWpjQ3uIQmFiQl/YVVXCPm9yMvDwIY2y3KmTcOXevp2K69dT\n0bq1evc36jCePHminuRGsLOzQ15envw4Ly8P9rUCEtW+5vbt27Czq7/pmPF/GWrrcvkyEJ8JbPtJ\nbRG80SELyLkKbFwgtib/cOcO8ONUYPdu7Usl+38Pgf37gY3/Vu2+jc8UN6dVTWOpDMrYPwC0bLkU\nR8+yzDEAABh1SURBVI8C7dpxroJW8d13dP7ptdeAtWvF1oZ/Jk8G/vqLDqGOHClkyQEvPxReUrQe\nPHgQ77//Pj744IMaa9U1wcfHB9nZ2cjNzUV5eTliY2MRFhZW45qwsDDs3LkTAHD27Fm0atWqycxf\nyNDGwHppaXTfg7Y5C0CzOFx82LkilLF/BkPbaLSHERUVhV9//RWTJ08GIQQbNmxAeno6Vq5cqVnB\nRkbYtGkTgoODIZVKMXPmTLi5uWHz5s0AgNmzZyM0NBTx8fFwcnKCmZkZtm3bplGZijh5EggO5kW0\nxnh70xVJ9+9rxw50QLsdrIMDjS115Qrg7q78fXzZuSIU2T+DodWQRvDw8CCVlZXy48rKSuLh4dHY\nbYKixGMopKqKEGtrQm7c4FAhjgkOJuTAAbG1+IeuXQn59VextVDMtGmEfPONavc0ZOea2JcmACBt\n2hBy964oxQvKt98S0rcvIe+/L7YmwhARQUiPHoT8/LO4eqhq240OKkgkEpSUlMiPS0pKlJ6w0wWu\nX6cTitoQD0kR/v7aE4jw/n0gL49mudNW1EmopO92zmBwgcIhqblz5yIiIgKLFy9Gjx49MHDgQBBC\ncPLkSaxatUpIHXlFm+IhKcLPD1igJZPev/xCl3kaqbwgWzj8/WkQQkIa/39tKnbOYHCBwp+9i4sL\nFi5ciIKCAgwePBgdOnRA9+7dsXr1alhr03ZoDdGGhEmN0asXXfL36BHQsqW4umhTgEZFdOxIJ+Sv\nX6fZExuiqdg5g8EFCoek3n33XZw5cwYnT56Es7Mz9u/fj4ULF2Lz5s24JuSCZR6R5XMICBBbk4Yx\nMaFO45dfxNZEuye8ZUgkyq8uawp2zmBwRaNzGI6OjoiKisLFixcRExODAwcO6M1qjpwcGg67sVao\nNqANy2sfPaI9HR8fcfVQBlXnffTZzhkMrmjUYVRWViIuLg4REREICQmBq6sr9u/fL4RuvCMbjtLm\n+QsZ2pCB7/Rp2tMRKkyFJqg68a3Pds5gcIXCOYykpCTExMTgyJEj6N27N8LDw7FlyxaYm5sLqR+v\n6ML8hYy+fWn4hCdPALH+C2QBB3UBZfOJNAU7ZzC4QmEPY9WqVejXrx+uXLmCQ4cOISIiQu9+RLow\nfyGjeXO6ie/MGfF00CUHWz2fSEM0BTtnMLhCYQ8jJSVFSD0E5+ZNoKwMcHUVWxPlkb0Ag4KEL/vp\nU+D334E+fYQvW11k8xgN5RPRdztnMLhEC6MBCYMu7L+ojZgb+M6coZv1TE3FKV8d1NnAx2AwFNOk\nHYauDEfJ6NcPuHCBZroTGl2av5Dh4QEUF9PoutrG0qVLYW9vD29vb3h7eyMxMVFslRiMRmnSDkNX\nxuNlWFgAXbsC9eTZ4Z0TJ3SvvgwMaFRdbexlSCQSvPfee8jMzERmZiZCQkLEVonBaJQm6TBu3wZK\nSlSLZqotiLG89skTIDMT8PUVtlwu0KY4XLUh6sRgZzBEpEk6DNn8hTbmc2gMMV6Ap04BPXsCZmbC\nlssF2jyPsXHjRnh5eWHmzJk1Ah8yGNqKDr4yNef4cSAwUGwt1MPXF8jIEHYeIzlZd+ure3cgPx8o\nKhK+7KCgIHh6etb5xMXFYc6cOcjJycHFixdhY2OD999/X3gFGQwV0eKYo/xACHUY/1Yxhae20LIl\n4OlJ40oNHixMmcnJwKZNwpTFNUZGdHHD8eM0LaaQHDt2TKnrZs2ahREjRtT7XVnZUnz+Oe3dBQQE\nIEDXVmowtIrU1FSkpqaqfb8oDuPBgweYOHEibt68CUdHR+zZswetWrWqc52joyNatGgBQ0NDGBsb\nIyND/bzdMq5epUtpdSF+lCKCgoBjx4RxGPfvA3//DfTuzX9ZfCGrL6EdRkPcuXMHNjY2AIADBw7A\n09Oz3utMTZfiww/1P6c3QxhqNzp4yenNNatWrUJQUBCuXbuGwMBAhXkHJBIJUlNTkZmZyYmzAOiL\nIyhIt/Zf1Eb2AhSCEyfoSiNjY2HK4wNZfWnTHPOiRYvQrVs3eHl54eTJk1i/fr3YKjEYjSJKDyMu\nLg4nX87cRkZGIiAgQKHT4HolybFjQEQEpyIFp08f4MYN4N49/lueujx/IcPJiQZMzMqiy5K1gZ07\nd4qtAoOhMqL0MIqKimBlZQUAsLKyQpGCGUmJRILBgwfDx8cH33//vcblVlTQFUaDBmksSlSMjelq\nqeRk/stKThZuroQvJBJhe2UMhr7CWw8jKCgIhYWFdc5/9tlnNY4lEonC3MmnT5+GjY0N7t27h6Cg\nILi6usJXwWaApUuXyv9WNDmYkQF06gRYWir/HNpKUBCQlARMmsRfGTk5wOPHdMe0rhMUBGzfDrz7\nbuPXajoxyGDoK7w5jIZWiFhZWaGwsBDW1ta4c+cOLBW8wWWTgu3atcPo0aORkZGhlMNQrJM4gfv4\nYMgQ4PPPlctbrS7x8cDQobq5X6U2gwYBM2cCL14AzZo1fK2mE4MMhr4iyqsgLCwMO3bsAADs2LED\no0aNqnNNWVkZSktLAQBPnz5FUlKSwpUkypKYSF+0+oCLC3UUV6/yV0Z8PBAayp98IXn1VZojQ8zw\n8AyGriOKw4iKisKxY8fg4uKClJQUREVFAQAKCgowbNgwAEBhYSF8fX3RvXt39OnTB8OHD8cQDd72\nRUXAX3/pXgA9RUgkQEgIfanzwbNn4oVS54vgYP7qi8FoCoiySqpNmzY4fvx4nfO2trY4cuQIAKBT\np064ePEiZ2UmJNCXny6kF1WWsDBg7Vrgvfe4l52aShM2tW7NvWyxCAsDIiPpUB6DwVAdPRidVo7D\nh4Hhw8XWglsCA2m48wcPuJetT8NRMnx8aNDJ7GyxNWEwdJMm4TBevKChIYYOFVsTbmnenE7mJiRw\nK5cQ6jBejg7qDQYGwIgRwKFDYmvCYOgmTcJhpKUBbm76sZy2NmFhQFwctzL/+AOQSvVjOW1t+Kgv\nBqOp0CQcxsGDtGWpjwwbRvdjlJdzJ/Onn4Bx43Q7fIoiZMN4xcVia8Jg6B567zCkUmDfPmD8eLE1\n4QcrK9p7OnGCO5n79gFjx3InT5uQDeO9XFvBYDBUQO8dRloaYGur29FpG2PCBCAmhhtZV64Ajx7R\neFX6ysSJ3NVXQ+zduxddu3aFoaEhLly4UOO7lStXwtnZGa6urkhKSuJfGQaDA/TeYezZQ1+o+syE\nCcDPP3OTVOmnn4AxY/Rjd7ciwsKA9HQavJFPPD09ceDAAfjV2vyTlZWF2NhYZGVlITExEXPnzkVV\nVRW/yjAYHKDHrwWgspK+APXdYdjaAj16aL4pjRDgxx9pC1yfMTOjS4b37uW3HFdXV7i4uNQ5f/Dg\nQYSHh8PY2BiOjo5wcnLiLHw/g8Eneu0wjh4FOnakAQf1nYgI+rLXhF9/pRF9+/fnRidthov6UpeC\nggLY29vLj+3t7ZGfny+OMgyGCuh1itYffgBmzRJbC2EYMwZ4/326ia9NG/VkbN9Od0Lr4+qo2gwZ\nAkyfTvOKdO6svhxFUZlXrFihMO1qfSiK2MxStDK4RCdTtApBURFdObR9u9iaCEPr1nTp8Pbt6oUK\nef4ciI0FMjM5V00rMTGhznHzZs1ChSibt7s6dnZ2yMvLkx/fvn0bdnZ29V7LUrQyuEQnU7QKwc6d\nwOjRQIsWYmsiHHPnAt9+C6gzfxodDfTqBbRvz71e2spbb1EHy8VigcaonjkyLCwMMTExKC8vR05O\nDrKzs9Fbl5OmM5oMeukwKiqAjRuBefPE1kRY+valQxf1xHVsEEKAL78E/vUvfvTSVpycaIBFvia/\nDxw4AAcHB5w9exbDhg3D0Jexadzd3TFhwgS4u7tj6NCh+OabbxQOSTEY2oReOozYWPoy6NlTbE2E\nRSIBFiygEWxVITWVOll9yRWiCgsWAOvWqdcrq86gQYPq7Ke4efMmRowYgWfPnqGwsBAJ1YJ+LV68\nGNevX8dff/2F4ODgGvd9+eWXePbsmWYKMRg8oHcOQyoFVq8GFi4UWxNxmDKFRmNNT1fuekKAZcuA\nDz5oGpPdtQkNBQwNafgYTQgPD0dMrd2AsbGxiIiIUFnWV199hbKyMs0UYjB4QO8cxq5ddN4iJERs\nTcTBxAT46CPg00+pM2iMY8eAwkLg9df5100bkUiApUvpRypVX87YsWNx5MgRVFZWAgByc3NRUFCA\nAQMG4M6dO/Dz84O3tzc8PT1x+vRpAMDcuXPRq1cveHh4yFMMb9iwAQUFBRg4cKBmD8Zg8IAoDqOh\nkAnVSUxMhKurK5ydnbF69epG5ZaWAp98AqxZ0zRbyzIiI6kT+Omnhq978YKuqFqxAjDS2/VyjTN8\nONCqFfDdd+rLaNOmDXr37o34l7snY2JiMPHlDsgff/wRISEhyMzM/P/27jemreqNA/gXCsMEMUYc\nVSxIYTJaCl1hTGeGDgGZgmwwRNgW4tzUbFkM0yzExUSN4c9CiH+jycyQbSGMvVhkmmmUdWwzSCa2\nYyqLw6U4FNYFGA6GtFCe34uG/orS7fbeQkt9Pklf0N775UCfcrj3nnMuLly4AK1WCwCorKzEDz/8\ngK6uLpw+fRo///wzXnnlFURGRkoa+sjYfPFKh+FqyQRnNpsNu3btwtdff43u7m40NTXh4sWLt8x9\n9VX7eXgpE888+UH1VlZwsP2PX3k5MDjoOquy0j4HoaBgYdrlq1kBAfbf11tvAb294r+n82mp5uZm\nlJaWAgBWrVqFzz77DG+//TYuXLiAO++807FNamoqUlJS8Msvv6C7u1v8N78Nf3ifOMuzWWJ4pcNw\ntWSCs3PnzmHZsmWIiYlBcHAwSkpK0HKLE8319fZ5F+++K61tvvrmupu1Zo39ekZx8b+XPm9ra8MX\nX9gnNn7yibSjMX/5falUwN699s5zbEz4fh9//DF0Oh1SUlKQnp6OkydPwmg0Ynx8HDqdDgCQnp6O\ns2fP4oEHHsDzzz+Pw4cPw2Qyoa6uDnq9Hl1dXcjNzcXEPI7v9Zf3ibM8lyWGz17D+PPPPxEVFeX4\n+nbLJ7zxhn3J6v/SvIvbqay0T+jLzQUGBuzPEdkn523bBhw7Zl+HitmVl9tX6c3IAJzm1d3Szp07\nYTQaYTAYEBUVhYyMDGzdunXWxe4rV65g6dKl2L59O7Zv3w6j0YjR0VGEhobirrvugtlsnjWCKiws\nDDdu3PD0j8eYZPN25lrqkgnujktvbwdiYtzaxe/JZPYhxm++CajVQHIy0N9v/w+6tdX+Nfu/gAD7\nEVdNDbB/P/DOO+5nlJaWorCwEEePHnU819bWhtraWgQHByMsLAyHDh3Cgw8+CJ1Oh4SEBERFRWHN\nmjWO7V966SWs+6+O2mC+jbxo7dq19OOPP8752vfff085OTmOr6uqqqimpmbObePi4ggAP/gxL4+4\nuLh5qf/b0Wq1Xv/Z+eHfD61W61ZNen1sDLkY+7ly5Ur09PSgt7cXkZGRaG5uRlNT05zb/vbbb/PZ\nRMa84vz5895uAmOzeOUahqslE/r7+5GbmwsACAoKwkcffYScnByo1Wo899xzUKlU3mguY4wxAAHk\n6l98xhhjzInPjpISwt2Jfa709fUhIyMDiYmJ0Gg0+OCDDyS3zWazQafTuXVPhLmMjIygqKgIKpUK\narUaHR0dorOqq6uRmJiIpKQkbNq0CRaLRfC+L7zwAuRyOZKSkhzPDQ8PIzs7G/Hx8XjyyScxMjIi\nKW/Pnj1QqVTQarUoLCzEX3/9JSpnRl1dHQIDAzE8PCy6TQDw4YcfQqVSQaPRoKKiQlCWVFzb7vGV\n2vZUXbvKmuG12p6Pi3ULYWpqiuLi4shkMpHVaiWtVkvd3d2isgYGBshoNBIR0ejoKMXHx4vOmlFX\nV0ebNm2iZ555RlJOWVkZHThwgIiIJicnaWRkRFSOyWQipVJJExMTRERUXFxMDQ0Ngvc/c+YMGQwG\n0mg0juf27NlD+/btIyKimpoaqqiokJT3zTffkM1mIyKiiooKQXlz5RARXblyhXJycigmJoaGhoZE\nt0mv11NWVhZZrVYiIrp27ZqgLCm4tt3jS7Xtqbp2lUXk3dpetB1Ge3v7rFFU1dXVVF1d7ZHs9evX\nU2trq+j9+/r6KDMzk/R6PeXl5YnOGRkZIaVSKXp/Z0NDQxQfH0/Dw8M0OTlJeXl59O2337qVYTKZ\nZhXc8uXL6erVq0Rk/8O0fPlySXnOjh07Rps3bxadU1RURF1dXW59qObKevbZZ+nkyZOC9/cErm33\n+Fpte6quXWV5s7YX7Skpdyf2CdXb2wuj0YiHH35YdMbu3btRW1uLwEBpv16TyYSlS5di69atSElJ\nwYsvvih6FdN77rkHr732GqKjoxEZGYm7774bWVlZktpnNpshl8sBAHK5HGazWVKes/r6ejz99NOi\n9m1paYFCoUCyByaa9PT04MyZM3jkkUewdu1adHZ2Ss68Ha5t9yym2pZS14D3a3vRdhjzccOZsbEx\nFBUV4f3333es9+OuL7/8EhEREdDpdC6HDAs1NTUFg8GAnTt3wmAwIDQ0FDU1NaKyLl++jPfee8+x\niurY2BgaGxsltc9ZQECAx96TyspKLFmyRNTS4OPj46iqqpp160kp78PU1BSuX7+Ojo4O1NbWori4\nWHSWUFzb7lkstS2lrgHfqO1F22H8877IfX19UCgUovMmJyexceNGbNmyBRs2bBCd097ejuPHj0Op\nVKK0tBR6vR5lItcOVygUUCgUSEtLAwAUFRXdcnXfW+ns7MSjjz6K8PBwBAUFobCwEO1Cb5rhglwu\nd8zmHxgYQEREhKQ8AGhoaMCJEydEf+AvX76M3t5eaLVaKJVK/PHHH0hNTcW1a9dE5SkUChQWFgIA\n0tLSEBgYiKGhIVFZQnFtu2cx1LbUugZ8o7YXbYfhPLHParWiubkZ+fn5orKICNu2bYNarUZ5ebmk\ndlVVVaGvrw8mkwlHjhzBE088gUOHDonKuu+++xAVFYVLly4BAFpbW5GYmCgqKyEhAR0dHfj7779B\nRGhtbYVarRaVNSM/Px8HDx4EABw8eFDSHyPAPjKotrYWLS0tuOOOO0RlJCUlwWw2w2QywWQyQaFQ\nwGAwiP7Ab9iwAXq9HgBw6dIlWK1WhIeHi8oSimvbPb5e256oa8BHatutKx4+5sSJExQfH09xcXFU\nVVUlOufs2bMUEBBAWq2WVqxYQStWrKCvvvpKcvva2tokjyQ5f/48rVy5kpKTk6mgoED0SBIion37\n9pFarSaNRkNlZWWO0RFClJSU0P3330/BwcGkUCiovr6ehoaGKDMzkx566CHKzs6m69evi847cOAA\nLVu2jKKjox3vwY4dOwTnLFmyxNEuZ0qlUvCFwbmyrFYrbdmyhTQaDaWkpNCpU6cE/4xScG27x1dq\n21N17ZzlS7XNE/cYY4wJsmhPSTHGGFtY3GEwxhgThDsMxhhjgnCHwRhjTBDuMBhjjAnCHQZjjDFB\nuMPwcxaLBY8//rjLJQQsFgsee+wxTE9PL3DLGBNvpq71er3LZdYzMzMxOjq6wC3zb9xh+LnGxkbk\n5eW5XAsnJCQE6enp+Pzzzxe4ZYyJN1PXMpnM5TYlJSX49NNPF7BV/o87DD/X1NSE9evX4+bNm8jK\nykJqaiqSk5Nx/Phxxzb5+fku75fOmC+aqWsAuHHjBvLy8pCQkIAdO3Y4jqbz8/Nx5MgRbzbT7/BM\nbz9ms9mgUCgwMDAAm82G8fFxhIWFYXBwEKtXr0ZPTw8A++F9bGysR5bQZmy+Odd1W1sbnnrqKVy8\neBHR0dFYt24dXn75ZWzcuBEAEBsbi59++gmhoaFebrV/4CMMPzY4OIiwsDAAwPT0NF5//XVotVpk\nZ2ejv7/fscplSEgIpqenMTEx4c3mMiaIc10DwKpVqxATE4PAwECUlpbiu+++c7wml8tnrfzLpAny\ndgPY/Jo5gGxsbMTg4CAMBgNkMhmUSuWsDoKI5uU+DIzNB+cTI851+8865rr2LD7C8GP33nsvxsbG\nANjP80ZEREAmk+HUqVP4/fffHdtZLBbIZDKEhIR4q6mMCeZc1wBw7tw59Pb2Ynp6GkePHkV6errj\nNbPZLOleImw27jD8mEwmg0ajwa+//orNmzejs7MTycnJOHz4MFQqlWM7o9GI1atXe7GljAnnXNcB\nAQFIS0vDrl27oFarERsb67h3xdWrVxEeHs7XLzyIL3r7uYaGBpjNZlRUVLjcZu/evUhLS0NBQcEC\ntowx8YTU9f79+3Hz5k3s3r17AVvm37jD8HNWqxVZWVk4ffr0nOdyLRYLsrOzXb7OmC+6XV0D9ol7\nLS0tou9hzv6NOwzGGGOC8DUMxhhjgnCHwRhjTBDuMBhjjAnCHQZjjDFBuMNgjDEmCHcYjDHGBPkf\nTLIKPpISrGkAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0xcb7cc18>"
+ ]
+ }
+ ],
+ "prompt_number": 35
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No.4.13, Page No: 226<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''transfer function using op-amp'''\n",
+ "import sympy\n",
+ "from sympy import *\n",
+ "sympy.init_printing()\n",
+ "\n",
+ "s = Symbol(\"s\")\n",
+ "H = 4/(s**2+3.3*s+0.9)\n",
+ "print(\"The given transfer function is:\")\n",
+ "display(H.simplify())\n",
+ "print(\"\\n\\n\\nThe above transfer function can be represented after factoring as given by:\")\n",
+ "display(factor(H))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The given transfer function is:\n"
+ ]
+ },
+ {
+ "latex": [
+ "$$\\frac{4}{s^{2} + 3.3 s + 0.9}$$"
+ ],
+ "metadata": {},
+ "output_type": "display_data",
+ "text": [
+ " 4 \n",
+ "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
+ " 2 \n",
+ "s + 3.3\u22c5s + 0.9"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "\n",
+ "\n",
+ "The above transfer function can be represented after factoring as given by:\n"
+ ]
+ },
+ {
+ "latex": [
+ "$$\\frac{40.0}{\\left(1.0 s + 3.0\\right) \\left(10.0 s + 3.0\\right)}$$"
+ ],
+ "metadata": {},
+ "output_type": "display_data",
+ "text": [
+ " 40.0 \n",
+ "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
+ "(1.0\u22c5s + 3.0)\u22c5(10.0\u22c5s + 3.0)"
+ ]
+ }
+ ],
+ "prompt_number": 42
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_5.ipynb b/Linear_Integrated_Circuits/Chapter_5.ipynb
new file mode 100644
index 00000000..c23dacd0
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_5.ipynb
@@ -0,0 +1,212 @@
+{
+ "metadata": {
+ "name": "ch_5"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 5: Operational Amplifiers- Non-linear Circuits<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.5.1, Page No: 234<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' transfer characteristics of comparator'''",
+ "",
+ "#Variable Declaration:",
+ "Vz1=5.5 #Volatage in volt",
+ "Vz2=5.5 #Voltage in volt",
+ "Aol=100000.0 #Open loop gain",
+ "Vd=0.7 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "Vo=Vz1+Vd # Plus or minus",
+ "Vich=Vo/Aol #Calculating change in voltage",
+ "Vich=Vich*1000.0 #Calculating change in voltage",
+ "",
+ "#Results:",
+ "print('Delta Vi=%.3f mV'%Vich)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Delta Vi=0.062 mV"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 5.2, Page No: 239<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''inverting schmitt trigger'''",
+ "",
+ "#Variable Declaration:",
+ "R1=56.0*10**3 #Resistance value in ohm",
+ "R2=150.0 #Resistance value in ohm",
+ "Vi=1.0 #Voltage in volt",
+ "f=50.0 #Frequency in hertz",
+ "Vsat=13.5 #Voltage in volt",
+ "Vref=0.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "Vut=Vsat*R2/(R1+R2) #Calculating Vut voltage",
+ "Vut=Vut*1000.0 #Calculating Vut voltage",
+ "VL=-Vut #Calculating Vlt voltage",
+ "",
+ "#Results:",
+ "print('Vut= %d mV'%Vut)",
+ "print('\\nVL= %d mV'%VL)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vut= 36 mV",
+ "",
+ "VL= -36 mV"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No: 5.3, Page No: 249<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''clipper circuit'''",
+ "",
+ "#Variable Declaration:",
+ "Vclipl=0.35 #Voltage in volt",
+ "Vp=0.5 #Voltage in volt",
+ "gain=10.0 #Gain",
+ "R=1000.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "Vounclip=Vp*gain #Calculating unclipped output voltage",
+ "Voclip=Vclipl*gain #Calculating clipped output voltage ",
+ "Vb=Voclip-0.7 #Calculating breakdown voltage",
+ "",
+ "#Results:",
+ "print('When unclipped, output voltage= %.1f V'%Vounclip)",
+ "print('\\nWhen clipped, output voltage= %.1f V'% Voclip)",
+ "print('\\nZener diode breakdown voltage= %.1f V'%Vb)",
+ "print('\\nA 2.8V Zener diode should be connected')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "When unclipped, output voltage= 5.0 V",
+ "",
+ "When clipped, output voltage= 3.5 V",
+ "",
+ "Zener diode breakdown voltage= 2.8 V",
+ "",
+ "A 2.8V Zener diode should be connected"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No: 5.4, Page NO: 251<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''negative clamping circuit'''",
+ "",
+ "#Variable Declaration:",
+ "Vref=1.5 #Voltage in volt",
+ "",
+ "#Part A",
+ "#Variable declaration:",
+ "Vpp=5.0 #Voltage in volt",
+ "Vnp=2.5 #Voltage in volt",
+ "",
+ "#Calculation:",
+ "Vc=Vnp + Vref #Calculating capacitor voltage ",
+ "",
+ "#Result:",
+ "print('\\nCapacitor voltage Vc= %.1f V'%Vc) ",
+ "",
+ "#Part B",
+ "#Calculation:",
+ "Vopeak=Vnp + Vref +Vpp #Calculating peak clamped output voltage",
+ "",
+ "#Result:",
+ "print('\\nPeak value of clamped output voltage Vo(peak)= %.1f V'%Vopeak)",
+ "",
+ "#Part C",
+ "#Calculation:",
+ "Voc=0.7 + Vref #Calating output voltage during charging",
+ "",
+ "#Result:",
+ "print('\\nOp-amp output voltage during charging Vo= %.1f V'% Voc) ",
+ "",
+ "#Part D",
+ "#Calculation:",
+ "Vd=Vref-Vopeak #Calculating maximum differenctial input voltage",
+ "",
+ "#Result:",
+ "print('\\nMaximum differential input voltage Vd= %.1f V'%Vd) "
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "Capacitor voltage Vc= 4.0 V",
+ "",
+ "Peak value of clamped output voltage Vo(peak)= 9.0 V",
+ "",
+ "Op-amp output voltage during charging Vo= 2.2 V",
+ "",
+ "Maximum differential input voltage Vd= -7.5 V"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_6.ipynb b/Linear_Integrated_Circuits/Chapter_6.ipynb
new file mode 100644
index 00000000..002417d5
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_6.ipynb
@@ -0,0 +1,763 @@
+{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 6: Active Filters<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.1, Page NO: 269<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "%pylab inline"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stderr",
+ "text": [
+ "WARNING: pylab import has clobbered these variables: ['f']\n",
+ "`%pylab --no-import-all` prevents importing * from pylab and numpy\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''first order low pass butterworth filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fH=10.0*10**3 #Frequency in hertz\n",
+ "f=12.0*10**3 #Frequency in hertz\n",
+ "\n",
+ "#Calculations:\n",
+ "t=(f**2/fH**2) \n",
+ "Hif=1/(math.sqrt(1+t)) #Calculating magnitude of voltage tranfer fuction\n",
+ "Hifdb=20*math.log(Hif)/math.log(10) #Calculating magnitude of voltage tranfer fuction\n",
+ "\n",
+ "#Result:\n",
+ "print('Delta Vi=%.2f dB'%Hifdb)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Delta Vi=-3.87 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.2, Page No: 270<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''first order low pass filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fh=2000.0 #Cut-off frequency in hertz\n",
+ "A=2.0 #Gain\n",
+ "C=0.01*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "R=1/(2*math.pi*fh*C) #Calculating value of resistance\n",
+ "R=R/1000.0 #Calculating resistance value\n",
+ "\n",
+ "#Results:\n",
+ "print('R= %.3f kohm'%R)\n",
+ "#Rf/Ri=A-1\n",
+ "print('\\n Hence Rf=Ri=10kohm')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 7.958 kohm\n",
+ "\n",
+ " Hence Rf=Ri=10kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No.6.3, Page No: 272<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''second order low pass butterworth filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fh=10.0*10**3 #Cut-off frequency in hertz \n",
+ "f=12.0*10**3 #Signal freuency in hertz\n",
+ "R=200.0*10**3 #Resistance value in ohm\n",
+ "\n",
+ "#Calaculations:\n",
+ "RC=1/(2*math.pi*fh) #Calculating value of resistance\n",
+ "C=RC/R #Calculating value of capacitance \n",
+ "C3=1.414*C #Calculating value of capacitance\n",
+ "C4=0.707*C #Calculating value of capacitance \n",
+ "\n",
+ "t=(f**4/fh**4) \n",
+ "Hif=1/(math.sqrt(1+t)) #Calculating magnitude of voltage tranfer fuction\n",
+ "Hifdb=20*math.log(Hif)/math.log(10) #Calculating magnitude of voltage tranfer fuction\n",
+ "\n",
+ "#Result:\n",
+ "print('Hif= %.2f dB'%Hifdb)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hif= -4.88 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3> Example 6.4, Page No-275<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''second order low pass butterworth filter with uppercutoff frequency'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "N=2.0 #Order of filter\n",
+ "fh=2.0*10**3 #upper cut-off frequency in hertz\n",
+ "C=0.1*10**-6 #Capacitance value in farad\n",
+ "alpha=1.414 #Value of damping coefficient\n",
+ "\n",
+ "#Calculations:\n",
+ "R=1/(2*math.pi*fh*C) #Calculating resistance value\n",
+ "Rkohm=R/1000.0 #Calculating resistance value\n",
+ "A=3-alpha #Calculating passband gain\n",
+ "RfbyRi=A-1 #Calculating ratio Rf/Ri\n",
+ "\n",
+ "#Results:\n",
+ "print('R= %.1f kohm'%Rkohm)\n",
+ "print('\\nRf/Ri= %.3f'%RfbyRi)\n",
+ "print('\\nHence, take Rf=5.86 kohm and Ri=10 kohm')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 0.8 kohm\n",
+ "\n",
+ "Rf/Ri= 0.586\n",
+ "\n",
+ "Hence, take Rf=5.86 kohm and Ri=10 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No.6.5, Page No: 276<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''third order low pass butterworth filter'''\n",
+ "\n",
+ "#Variable declaration:\n",
+ "import math\n",
+ "\n",
+ "fh=10.0*10**3 #cut-off frequency in hertz\n",
+ "f=12.0*10**3 #Signal frequency in hertz\n",
+ "\n",
+ "#For third order low pass butterworth filter\n",
+ "\n",
+ "#Calculations:\n",
+ "t=(f**6/fh**6) \n",
+ "Hif=1/(math.sqrt(1+t)) #Calculating magnitude of voltage transfer function\n",
+ "Hifdb=20*math.log(Hif)/math.log(10) #Calculating magnitude of voltage transfer function\n",
+ "\n",
+ "#Result:\n",
+ "print('Hif= %.4f dB'%Hifdb)\n",
+ "\n",
+ "#For fourth order low pass butterworth filter\n",
+ "\n",
+ "#Calculation:\n",
+ "t=(f**8/fh**8)\n",
+ "Hif=1/(math.sqrt(1+t))\n",
+ "Hifdb=20*math.log(Hif)/math.log(10)\n",
+ "\n",
+ "#Result:\n",
+ "print('\\nHif= %.2f dB'%Hifdb)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hif= -6.0054 dB\n",
+ "\n",
+ "Hif= -7.24 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.6, Page No: 276 <h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''fourth order low pass butterworth filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "N=2.0 #Order of filter\n",
+ "fh=2000.0 #cut-off frequency in hertz\n",
+ "C=0.1*10**-6 #Capacitance values in farad\n",
+ "alpha1=0.765 #damping coefficient\n",
+ "alpha2=1.848 #damping coefficient\n",
+ "\n",
+ "#Calculations:\n",
+ "R=1/(2*math.pi*fh*C) #Calculating resistance value\n",
+ "Rkohm=R/1000.0 #Calculating resistance value\n",
+ "\n",
+ "A1=3-alpha1 #Calculating passband gain\n",
+ "A2=3-alpha2 #Calculating passband gain\n",
+ "\n",
+ "Rf1byRi1=A1-1 #Calculating Rf1/Ri1 ratio\n",
+ "Rf2byRi2=A2-1 #Calculating Rf2/Ri2 ratio\n",
+ "\n",
+ "#Results:\n",
+ "print('R= %.1f kohm'%Rkohm)\n",
+ "print('\\nRf1/Ri1= %.3f'%Rf1byRi1)\n",
+ "print('\\nHence, take Rf1=12.35 kohm and Ri1=10 kohm')\n",
+ "print('\\nRf2/Ri2= %.3f'%Rf2byRi2)\n",
+ "print('\\nHence, take Rf2=15.2 kohm and Ri2=100 kohm')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 0.8 kohm\n",
+ "\n",
+ "Rf1/Ri1= 1.235\n",
+ "\n",
+ "Hence, take Rf1=12.35 kohm and Ri1=10 kohm\n",
+ "\n",
+ "Rf2/Ri2= 0.152\n",
+ "\n",
+ "Hence, take Rf2=15.2 kohm and Ri2=100 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.7, Page No: 279<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''first order high pass filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "A=2.0 #Gain\n",
+ "fL=2.0*10**3 #Frequency in hertz\n",
+ "C=0.01*10**-6 #Capacitance value in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "R=1/(2*math.pi*fL*C) #Calculating value of resistance\n",
+ "Rkohm=R/1000.0 #Calculating value of resistance\n",
+ "RfbyRi=A-1 #Calculating ratio Rf/Ri\n",
+ "\n",
+ "#Results:\n",
+ "print('R= %.1f kohm'%Rkohm)\n",
+ "print('\\nRf/Ri= %.3f'%RfbyRi)\n",
+ "print('\\nHence, take Rf=10 kohm and Ri=10 kohm')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 8.0 kohm\n",
+ "\n",
+ "Rf/Ri= 1.000\n",
+ "\n",
+ "Hence, take Rf=10 kohm and Ri=10 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No: 6.8, Page No: 282<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''second order high pass butterworth filter variable gain'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "\n",
+ "R2=16.0*10**3 #Resistance in ohm\n",
+ "R3=16.0*10**3 #Resistance in ohm\n",
+ "Rf=15.8*10**3 #Resistance in ohm\n",
+ "Ri=27.0*10**3 #Resistance in ohm\n",
+ "C2=0.01*10**-6 #Capacitance in farad\n",
+ "C3=0.01*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "fL=1/(2*math.pi*math.sqrt(R2*R3*C2*C3)) #Calculating lower cut-off frequency\n",
+ "fL=fL/1000.0 #Calculating lower cut-off frequency\n",
+ "A=1+Rf/Ri #Calculating passband gain\n",
+ "\n",
+ "#Results:\n",
+ "print('\\nfL= %.1f kHz'%fL)\n",
+ "print('\\nA= %.3f'%A)\n",
+ "\n",
+ "a=[-35.99,-23.96,-3.12,1.00,3.95,4.00,4.01,4.01,4.01]\n",
+ "b=[log10(100),log10(200),log10(700),log10(1000),log10(3000),log10(7000),log10(10000),log10(30000),log10(100000)]\n",
+ "plot(b,a,'b')\n",
+ "plot(log10(100),-35.99,'o')\n",
+ "plot(log10(200),-23.96,'o')\n",
+ "plot(log10(700),-3.12,'o')\n",
+ "plot(log10(1000),1.00,'o')\n",
+ "plot(log10(3000),3.95,'o')\n",
+ "plot(log10(7000),4.00,'o')\n",
+ "plot(log10(10000),4.01,'o')\n",
+ "plot(log10(30000),4.01,'o')\n",
+ "plot(log10(100000),4.01,'o')\n",
+ "m=arange(-40,1,0.0005)\n",
+ "x5=(3*m)/m\n",
+ "plot(x5,m,'--')\n",
+ "k = arange(2.0001,3.5, 0.0005)\n",
+ "plot(k,4.006*k/k,'--')\n",
+ "text(1.6,4.006,'+4.006')\n",
+ "text(3.3,-38,'Passband')\n",
+ "text(2.3,-38,'Stopband')\n",
+ "text(2.2,-10,'40 dB/decade')\n",
+ "text(3,2,'3dB')\n",
+ "title('Frequency response of ssecond order high-pass filter')\n",
+ "ylabel('Voltage gain in dB')\n",
+ "xlabel('frequency index n where n=log(f)')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "fL= 1.0 kHz\n",
+ "\n",
+ "A= 1.585\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 25,
+ "text": [
+ "<matplotlib.text.Text at 0x8410ba8>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEZCAYAAABWwhjiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVNX7wPHPsCQuCKgpigsKGpIbuO+4gJRLauWClX4t\nW0w0bdFMU8s1tV8uWX0t9zUzlyQVU8G1sMRcMBdyZTG3ZAcZzu+P0ftlBFQYYBh43q+XL+HOvec+\n985lnrnnnHuOTimlEEIIIfLAytwBCCGEsFySRIQQQuSZJBEhhBB5JklECCFEnkkSEUIIkWeSRIQQ\nQuSZJBFR4n311VdUqVKF8uXLc/v2bXOHky+WLVtG+/btC6x8V1dXdu/enS9lhYSEUKNGjRxff+ut\nt5g6depjlTVkyBAmTpyYL3EVhjNnztCkSRPKly/PggULjI71UeelqLAxdwDm4Orqyj///IO1tTUA\nOp2Os2fP4uzsbObIRGG7e/cu7777LmFhYTRo0MDc4VgMnU6HTqcrlH199dVXj71uYcaVHz777DO6\ndOnCsWPHHrmuq6srS5YsoXPnzoUQ2eMrkXciOp2Obdu2ER8fT3x8PHFxcVkSSHp6upmiM4+Sdrz3\nxcbGkpKSQv369c0dSpGU39dFSb3OcnLp0iU8PT0fa12dTkdenw1XSuV520cpkUkkJ1ZWVixatIi6\ndevy1FNPAbBt2zaaNGmCk5MTbdu25cSJE9r64eHheHt7U758eQYMGMCAAQO0W+nsqhOsrKz4+++/\nAUhNTeW9996jVq1aODs789Zbb5GSkgIYbmOrV6/O559/TpUqVahWrRrLli3TyklOTubdd9/F1dUV\nR0dHOnToQEpKCt27d2fhwoVG+2zUqBFbtmzJcqwXL17EysqKJUuWUKtWLbp27QrAkiVL8PT0pEKF\nCvj7+3P58mVtm9GjR1OlShUcHBxo1KgRERERgKEK4c0338TPz4/y5cvj4+NjtN2hQ4do3rw5jo6O\ntGjRgsOHD2uv+fj48PHHH9OuXTvKly9Pt27duHnzJgApKSm89NJLVKpUCScnJ1q0aME///wDwJ07\nd3j11VepVq0a1atXZ+LEiWRkZGT7vqampvLOO+/g4uKCi4sLo0ePJi0tjbNnz2rJw9HRUTsHmT0s\nhmXLluHm5kb58uWpU6cOa9as0bZ72Hk8deoUvr6+VKxYEWdnZ2bMmPHQOB/nmrh58ya9evXCwcGB\nli1bEhkZme25uG/r1q08/fTTODk50alTJ/766y/tNVdXVz777DMaNWqEvb09er2elStXUqtWLSpV\nqsT06dONylJKMXPmTNzd3alUqRL9+/fXqgVzus6yk9OxPVhF9dlnn2nv+7fffmv0dwVw69YtevTo\nQfny5WnVqpXRaw961LU7atQoatasiYODA82aNePAgQPaa2FhYTRr1gwHBwecnZ159913gYdfM5l1\n7tyZkJAQRowYQfny5Tl37lyO1XEvv/wyly9fpmfPntjb2zNnzhwAfv31V9q0aYOTkxNNmjQhNDRU\n28bHx4cJEybQtm1bypYty4ULF3I8DyZRJZCrq6v65ZdfsizX6XTKz89P3b59W6WkpKijR4+qypUr\nq7CwMJWRkaGWL1+uXF1dVVpamkpNTVU1a9ZUX3zxhUpPT1c//PCDsrW1VRMnTlRKKbV06VLVrl27\nLOVHRkYqpZR655131HPPPadu376t4uPjVc+ePdWHH36olFJq7969ysbGRk2aNEmlp6ern3/+WZUp\nU0b9+++/Simlhg8frjp16qSio6OVXq9Xhw8fVqmpqer7779XLVu21PZ37NgxVbFiRXX37t0sx3rh\nwgWl0+nU4MGDVVJSkkpOTlabN29W7u7u6q+//lJ6vV5NnTpVtWnTRiml1I4dO1TTpk3VnTt3lFJK\n/fXXXyomJkYppdTgwYOVvb292r9/v0pNTVWjRo3Sjv3mzZvK0dFRrVq1Sun1erV27Vrl5OSkbt26\npZRSqmPHjsrd3V2dO3dOJScnKx8fHzVu3DillFJff/216tmzp0pOTlYZGRnq6NGjKi4uTimlVO/e\nvdWbb76pkpKS1D///KNatGihvvnmm2zf74kTJ6rWrVur69evq+vXr6s2bdpo79PFixeVTqdTer0+\n221ziiEhIUGVL19enT17VimlVGxsrDp16pRSSj30PMbFxSlnZ2f1+eefq9TUVBUfH69+++23R8b5\nqGuif//+qn///iopKUmdPHlSubi4qPbt22d7TGfOnFFly5ZVv/zyi0pPT1efffaZcnd3166TWrVq\nKS8vL3X16lWVkpKiTp06pcqVK6e9v2PGjFE2NjZq9+7dSimlvvjiC9W6dWsVFRWl0tLS1BtvvKEG\nDhyY7XWWkpKSJZ5HHduQIUO087B9+3bl7OysIiIiVFJSkho0aJDR39XgwYNVxYoV1ZEjR1R6eroa\nNGiQGjBgQLbn4f76OV27Sim1atUqdevWLaXX69XcuXOVs7OzSk1NVUop1apVK7Vq1SqllFKJiYna\n+/iw6/ZBPj4+6rvvvtN+z3yse/fuVdWrV9dec3V11c65UkpdvXpVVaxYUW3fvl0ppdSuXbtUxYoV\n1Y0bN5RShr+tWrVqqYiICKXX67P9HMgPJTKJ1KpVS5UrV045OjoqR0dH1adPH6WU4UN+79692npv\nvvmm9obe99RTT6nQ0FAVGhqqqlWrZvRa5j/6hyWRjIwMVbZsWe3CV0qpQ4cOqdq1ayulDBdP6dKl\njT7YKleurH777Tel1+tV6dKl1fHjx7McV3JysnJyclLnz59XSin17rvvqrfffjvbc3D/j/vChQva\nMn9/f6MLWq/XqzJlyqhLly6pPXv2qHr16qlff/01ywfu4MGDtQ8NpZRKSEhQ1tbW6sqVK2rFihVG\niU0ppVq3bq2WLVumlDL8EU2bNk17bdGiRcrf318ppdSSJUtUmzZtshxrbGysKlWqlEpOTtaWrVmz\nRnXq1CnbY3Vzc9P+0JRSaufOncrV1dXoPOSURHKKISEhQTk6OqqNGzeqpKQko9cedh7XrFmjvL29\ncx3nw66J9PR0ZWtrq86cOaO9Nn78+CzX332ffPKJ6t+/v/Z7RkaGcnFxUaGhoUopw4fV0qVLtden\nTJli9P4mJiaqJ554QvtAq1+/vtGHW3R0tLK1tVV6vT7b6+xBDzs2pYw/WP/zn/+o8ePHa+udP3/e\nKIkMGTJEDRs2THv9559/Vh4eHjnuO6dr9+rVq9mu7+TkpF0LHTp0UJMmTVLXr183WienayY7Pj4+\n6ttvv9V+HzJkiJowYYJS6tFJZObMmerll182Kq9bt25q+fLlWtmTJk16ZAymKpHVWTqdji1btnD7\n9m1u377Njz/+qL2WuTfEpUuXmDt3Lk5OTtq/q1evEhMTQ3R0NC4uLkbl1qpV67H2f/36dZKSkmja\ntKlW7jPPPMONGze0dSpWrIiV1f/enjJlypCQkMCNGzdISUnBzc0tS7l2dnb069ePlStXopRi3bp1\nvPzyyw+N5cHjHTVqlBZTxYoVAYiOjqZTp06MGDGCt99+mypVqvDGG28QHx8PGM5n9erVtXLKli1L\nhQoViI6OJiYmhpo1a2Y5T9HR0drvmdujSpcuTUJCAmC4he/WrRsDBgzAxcWFsWPHkp6ezqVLl7h7\n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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x5070fd0>"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.9, Page No: 284<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''fourth order high pass butterworth filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fh=50000.0 #frequency in hertz\n",
+ "C=0.001*10**-6 #capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "R=1/(2.0*math.pi*fh*C) #Calculating value of resistance\n",
+ "Rkohm=R/1000.0 #Calculating value of resistance\n",
+ "\n",
+ "R1=R/1.082 #Calculating value of resistance\n",
+ "R2=R/0.9241 #Calculating value of resistance\n",
+ "R3=R/2.613 #Calculating value of resistance\n",
+ "R4=R/0.3825 #Calculating value of resistance\n",
+ "Hif=0.02\n",
+ "s=(Hif**2)/(1-Hif**2) \n",
+ "s1=s**0.125 \n",
+ "f=fh/1.6815 * s1 #Calculating value of frequency\n",
+ "fkhz=f/1000.0 #Calculating value of frequency\n",
+ "\n",
+ "#Results:\n",
+ "print('R= %.3f kohm'%Rkohm)\n",
+ "print('\\nR1= %.3f kohm'% (R1/1000))\n",
+ "print('\\nR2= %.3f kohm'% (R2/1000))\n",
+ "print('\\nR3= %.3f kohm'% (R3/1000))\n",
+ "print('\\nR4= %.3f kohm'% (R4/1000))\n",
+ "print('\\nf= %.2f kHz'% fkhz)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 3.183 kohm\n",
+ "\n",
+ "R1= 2.942 kohm\n",
+ "\n",
+ "R2= 3.445 kohm\n",
+ "\n",
+ "R3= 1.218 kohm\n",
+ "\n",
+ "R4= 8.322 kohm\n",
+ "\n",
+ "f= 11.18 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.10, Page No: 286<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''bandpass filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "fh=2500.0 #Frequency in hertz\n",
+ "fL=250.0 #Frequency in hertz\n",
+ "\n",
+ "#Calculations:\n",
+ "B=fh-fL #Calculating bandwidth\n",
+ "fr=math.sqrt(fh*fL) #Calculating frequency\n",
+ "fc=(fL+fh)/2 #Calculating frequency\n",
+ "\n",
+ "#Results:\n",
+ "print('Bandwdth B= %d Hz'%B)\n",
+ "print('\\nResonant Frequency fr= %.2f Hz'%fr)\n",
+ "print('\\nCenter Frequency fr= %d Hz'%fc)\n",
+ "print('\\nHence, resonant frequency is always less than center frequency')"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Bandwdth B= 2250 Hz\n",
+ "\n",
+ "Resonant Frequency fr= 790.57 Hz\n",
+ "\n",
+ "Center Frequency fr= 1375 Hz\n",
+ "\n",
+ "Hence, resonant frequency is always less than center frequency\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.11, Page No: 286<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''bandpass filter with resonant frequency'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "#Part A\n",
+ "fr=1000.0 #Frequency in hertz\n",
+ "B=3000.0 #Bandwidth in hertz\n",
+ "\n",
+ "#Calculations:\n",
+ "Q=fr/B #Calculation Quality factor \n",
+ "\n",
+ "#Part B\n",
+ "fL= math.sqrt((B*B/4)+fr**2) - B/2 #Calculating lower cut-off frequency\n",
+ "\n",
+ "#Part C\n",
+ "fh=fL+B #Calculating high cut-off frequency \n",
+ "\n",
+ "#Results:\n",
+ "print('Quality factor Q= %.2f '%Q)\n",
+ "print('Since Q<0.5, this is a wideband filter')\n",
+ "print('\\nfL= %.2f Hz'%fL) \n",
+ "print('\\nfh= %.2f Hz'%fh)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Quality factor Q= 0.33 \n",
+ "Since Q<0.5, this is a wideband filter\n",
+ "\n",
+ "fL= 302.78 Hz\n",
+ "\n",
+ "fh= 3302.78 Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No: 6.12, Page No: 288<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''narrowband bandpass filter'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "import math\n",
+ "# Part A\n",
+ "#For a bandpass filter\n",
+ "R=20000.0 #Resistance in ohm\n",
+ "Rr=2700.0 #Resistance in ohm\n",
+ "C=0.01*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "fr=0.1125*(math.sqrt(1+R/Rr))/(R*C) #Calculating resonant frequency\n",
+ "\n",
+ "#Part B\n",
+ "B=0.1591/(R*C) #Calculating Bandwidth\n",
+ "\n",
+ "#Results:\n",
+ "print('Resonant frequency= %.1f Hz'%fr)\n",
+ "print('\\nBandwidth= %.1f Hz'%B)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Resonant frequency= 1631.0 Hz\n",
+ "\n",
+ "Bandwidth= 795.5 Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example NO. 6.13, Page No: 289<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''narrowband bandpass filter with resonant frequency'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "fr=200.0 #Resonant frequency in hertz\n",
+ "B=20.0 #Bandwidth in hertz\n",
+ "C=0.33*10**-6 #Capacitance in farad\n",
+ "\n",
+ "#Calculations:\n",
+ "Q=fr/B #Calculating quality factor\n",
+ " \n",
+ "R=0.1591/(B*C) #Calculating resistance value\n",
+ "Rr=R/(2.0*Q*Q-1) #Calculating resistance value\n",
+ "R=R/1000.0 #Calculating resistance value\n",
+ "\n",
+ "#Results:\n",
+ "print('\\nR= %.1f kohm'%R)\n",
+ "print('\\nRr= %.1f ohm'% Rr)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "R= 24.1 kohm\n",
+ "\n",
+ "Rr= 121.1 ohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example No. 6.14, Page NO: 307<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' clock frequency'''\n",
+ "\n",
+ "#Variable Declaration:\n",
+ "R=1.0*10**6 #Resistance in ohm\n",
+ "C=40.0*10**-12 #Capacitance value\n",
+ "\n",
+ "#Calculations:\n",
+ "fck=1/(R*C) #Calculating clock frequency\n",
+ "fck=fck/1000 #Calculating clock frequency\n",
+ "\n",
+ "#Result:\n",
+ "print('Fck= %.1f kHz'%fck)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Fck= 25.0 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_7.ipynb b/Linear_Integrated_Circuits/Chapter_7.ipynb
new file mode 100644
index 00000000..143b1a36
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_7.ipynb
@@ -0,0 +1,459 @@
+{
+ "metadata": {
+ "name": "ch_7"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 7: Waveform Generators<h>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.7.1 , Page NO: 324<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''RC Phase shift oscillator'''",
+ "",
+ "#Variable Declarartion:",
+ "import math",
+ "f=300.0 #frequency in hertz",
+ "C=0.1*10**-6 #capacitance in farad",
+ "",
+ "#Calculations:",
+ "t=f*C ",
+ "R=1/(2*math.pi*t*math.sqrt(6)) #Calculating resistance value",
+ "R=R/1000 #Calculating resistance value",
+ "R1=22000.0 #Calculating resistance value",
+ "Rf=29.0*R1 #Calculating resistance value",
+ "Rf=Rf/1000.0 #Calculating resistance value",
+ "",
+ "#Results:",
+ "print('R= %.2f kohm'%R)",
+ "print('\\nLet R=2.2 kohm, hence R1=22 kohm')",
+ "print('\\nRf= %d kohm'%Rf)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 2.17 kohm",
+ "",
+ "Let R=2.2 kohm, hence R1=22 kohm",
+ "",
+ "Rf= 638 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 7.2, Page No: 326<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Wien bridge oscillator'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "f=2000.0 #Frequency in hertz",
+ "C=0.05*10**-6 #Capacitance in farad",
+ "",
+ "#Calculations:",
+ "t=f*C",
+ "R=1/(2*math.pi*t) #Calculating resistance value",
+ "R=R/1000.0 #Calculating resistance value",
+ "R1=1800.0 #Calculating resistance value",
+ "Rf=2.0*R1 #Calculating resistance value",
+ "Rf=Rf/1000.0 #Calculating resistance value",
+ "",
+ "#Results:",
+ "print('R= %.3f kohm'%R)",
+ "print('\\nLet R=1.8 kohm')",
+ "print('\\nRf= %3f kohm'%Rf)",
+ "print('\\nStandard value Rf= 3.3 kohm')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 1.592 kohm",
+ "",
+ "Let R=1.8 kohm",
+ "",
+ "Rf= 3.600000 kohm",
+ "",
+ "Standard value Rf= 3.3 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.7.3, Page No: 329<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' Astable multivibrator'''",
+ "",
+ "#Variable Declaration:",
+ "R1=116.0*10**3 #Resistance in ohm",
+ "R2=100.0*10**3 #Resistance in ohm",
+ "Vsat=14.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "# Part A",
+ "f=1000.0 #Frequency in hertz ",
+ "",
+ "T=1/f ",
+ "# As log value is approx 1",
+ "RC=T/2 #Calculating time constant",
+ "RC1=RC*1000.0 #Calculating time constant",
+ "",
+ "# Part B",
+ "C=0.01*10**-6 #Capacitance in farad",
+ "R=RC/C #Calculating resistance",
+ "Rn=R/1000.0 #Calculating resistance",
+ "",
+ "# Part C",
+ "Vmax=2*Vsat*(R2/(R1+R2)) #Calculating maximum value of differential voltage",
+ "",
+ "#Results:",
+ "print('RC= %.1f *10^-3 sec'%RC1)",
+ "print('\\nR= %d kohm'%Rn)",
+ "print('\\nMaximum value of differential input voltage= %.2f V'%Vmax)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "RC= 0.5 *10^-3 sec",
+ "",
+ "R= 50 kohm",
+ "",
+ "Maximum value of differential input voltage= 12.96 V"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Exa ple NO. 7.4,Page NO: 330<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Square wave oscillator'''",
+ "",
+ "#Variable Declaration:",
+ "fo=1000.0 #Frequency in hertz",
+ "Vcc=12.0 #Voltage Vcc in volt",
+ "R1=10.0*10**3 #Resistance in ohm",
+ "R2=10.0*10**3 #Resistance in ohm",
+ "C=0.1*10**-6 #Capacitance value in farad",
+ "",
+ "#Calculations:",
+ "R=1/(2.2*C*fo) #Calulating resistance value",
+ "R=R/1000.0 #Calculating resistance value",
+ "",
+ "#Results:",
+ "print('R= %.3f kohm'%R)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 4.545 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 7.5, Page No: 334<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Triangular wave generator'''",
+ "",
+ "#Variable Declaration:",
+ "R1=100.0*10**3 #Resistance in ohm",
+ "R3=20.0*10**3 #Resistance in ohm",
+ "C1=0.01*10**-6 #Capacitance in farad",
+ "Vsat=14.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "# Part A",
+ "T=4*R1*R2*C1/R3 #Calculating time period",
+ "Tn=T*1000 #Calculating time period",
+ "",
+ "# Part B",
+ "f=1/T #Calculating frequency",
+ "",
+ "# Part C",
+ "",
+ "# Part D",
+ "Vp=R2*Vsat/R3 #Calculating peak value of the triangular wave",
+ "",
+ "#Results:",
+ "print('Time period T= %d ms'%Tn)",
+ "print('\\nfrequency f= %d Hz'%f)",
+ "print('\\nPeak value is +14V and -14V')",
+ "print('\\nTriangular wave oscillates between %d V and - %d V'%(Vp,Vp))"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time period T= 2 ms",
+ "",
+ "frequency f= 500 Hz",
+ "",
+ "Peak value is +14V and -14V",
+ "",
+ "Triangular wave oscillates between 7 V and - 7 V"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example NO. 7.6, Page No: 336<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Sawtooth wave generator'''",
+ "",
+ "#Variable Declaration:",
+ "Ri=10.0*10**3 #Resitance in ohm",
+ "Vp=10.0 #Voltage in volt",
+ "Vref=10.0 #Voltage in volt",
+ "fo=200.0 #Frequency in hertz",
+ "C1=0.1*10**-6 #Capacitance in farad",
+ "Vi=2.0 #Voltage in volt",
+ "",
+ "#Calculations:",
+ "t=Vi/Vref ",
+ "f=t/(Ri*C1) #Calculating frequency",
+ "",
+ "#Result:",
+ "print('Frequency f= %d Hz'%f)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Frequency f= 200 Hz"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 7.7, Page no: 345<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Monostable multivibrator'''",
+ "# Answer in textbook is wrong",
+ "#Varible Declaration:",
+ "C=0.1*10**-6 #Capacitance in farad",
+ "t=1*10**-3 #time in second",
+ "",
+ "#Calculations:",
+ "R=t/(1.22*C) #Calculating resistance value",
+ "R=R/1000 #Calculating resistance value",
+ "",
+ "#Result:",
+ "print('R= %.1f kohm'% R)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 8.2 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 7.8, Page No: 351<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Frequency of oscillation'''",
+ "",
+ "#Variable Declaration:",
+ "D=20.0 # 20 percent #Duty cycle",
+ "Ton=1.0*10**-3 #On time period in seconds ",
+ "",
+ "#Calculatins:",
+ "Tonpoff=100.0*Ton/D #Calculating total time period ",
+ "Tonpoff1=Tonpoff*1000.0 #Calculating total time period",
+ "f=1/Tonpoff #Calculating frequency of oscillation",
+ "",
+ "#Results:",
+ "print('Ton + Toff= %d ms'%Tonpoff1)",
+ "print('\\nFrequency of oscillation= %d Hz'%f)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ton + Toff= 5 ms",
+ "",
+ "Frequency of oscillation= 200 Hz"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 7.9, Page No: 351<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Astable multivibrator'''",
+ "",
+ "#Variable Declaration:",
+ "D=0.7 #Duty cycle ",
+ "f=1000.0 #Frequency in hertz",
+ "",
+ "RB=10.0**4/(6.43/3.0) #Resistance value in ohm",
+ "",
+ "#Calculations:",
+ "RA=4.0*RB/2.75 #Calculating resistance value",
+ "RB1=RB/1000.0 #Calculating resistance value",
+ "RA1=RA/1000.0 #Calculating resistance value",
+ "",
+ "#Results:",
+ "print('RB= %.1f kohm'%RB1)",
+ "print('\\nRA= %.1f kohm'%RA1)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "RB= 4.7 kohm",
+ "",
+ "RA= 6.8 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example 7.10, Page No: 352<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Teletypewrite'''",
+ "",
+ "#Variable Declaration:",
+ "f1=1070.0 #Frequency in hertz",
+ "RA=50000.0 #Resistance in ohm",
+ "C=0.01*10**-6 #Capacitance value in farad",
+ "Rc=76.0#Standard Value #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "t=1.45/(f1*C) ",
+ "RB=(t-RA)/2 #Calculating value of resistance ",
+ "RB=RB/1000 #Calculating value of resistance",
+ "",
+ "#Results:",
+ "print('Assuming RA= 50 kohm and C= 0.01 uF')",
+ "print('\\nHence, RB= %.2f kohm'%RB)",
+ "print('\\nRc= %d ohm (Standard Value)'%Rc)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Assuming RA= 50 kohm and C= 0.01 uF",
+ "",
+ "Hence, RB= 42.76 kohm",
+ "",
+ "Rc= 76 ohm (Standard Value)"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_8.ipynb b/Linear_Integrated_Circuits/Chapter_8.ipynb
new file mode 100644
index 00000000..09138a1f
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_8.ipynb
@@ -0,0 +1,470 @@
+{
+ "metadata": {
+ "name": "ch_8"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 8: Voltage Regulators<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.1 Page No:362 <h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Linear Voltage Regulator'''",
+ "",
+ "#Variable Declaration:",
+ "Vo=15.0 #Output voltage in volt",
+ "Vr=2.0 #Ripple voltage in volt",
+ "",
+ "#Calculations:",
+ "Vimin=Vo+3.0 #Calculating minimum input voltage ",
+ "",
+ "Vi=Vimin + Vr/2.0 #Calculating input voltage",
+ "",
+ "Vz=Vi/2.0 #Calculating zener voltage",
+ "",
+ "Vz=10.0 #Volatge in volt",
+ "Iz=20.0*10**-3 #Current in ampere",
+ "",
+ "R1=(Vi-Vz)/Iz #Calculating resistance value",
+ " ",
+ "I2=50.0*10**-6 #Current ampere",
+ "R2=(Vo-Vz)/I2 #Calculating Resistance value",
+ "R2=R2/1000.0 #Calculating resistance value",
+ "",
+ "R3=Vz/I2 #Calculating resistance value",
+ "R3=R3/1000.0 #Calculating resistance value",
+ "",
+ "Vcemax=Vi+Vr/2 #Calculating volatge",
+ "",
+ "IE=50.0*10**-6 #Current in ampere",
+ "IL=50.0*10**-6 #Current in ampere",
+ "",
+ "P=(Vi-Vo)*IL #Calculating power ",
+ "P1=P*1000000.0 #Calculating power",
+ "",
+ "",
+ "#Results:",
+ "print('As Vz=%.1f, use Zener diode 1N758 for 10V'%Vz)",
+ "print('\\nR1= %d ohm'%R1)",
+ "print('\\nR2= %.1f kohm'%R2)",
+ "print('\\nR3= %d kohm'%R3)",
+ "print('\\nSelect C1= 50uF')",
+ "print('\\nP= %.1f mW'%P1)",
+ "print('\\nUse the transstor 2N718 for Q1')"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "As Vz=10.0, use Zener diode 1N758 for 10V",
+ "",
+ "R1= 450 ohm",
+ "",
+ "R2= 100.0 kohm",
+ "",
+ "R3= 200 kohm",
+ "",
+ "Select C1= 50uF",
+ "",
+ "P= 200.0 mW",
+ "",
+ "Use the transstor 2N718 for Q1"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.2, Page No: 366<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''7805 Voltage Regulator'''",
+ "",
+ "#Variable Declaration:",
+ "IL=0.25 #Current in ampere",
+ "Vr=5.0 #Ripple voltage in volt",
+ "",
+ "#Calculations:",
+ "R=Vr/IL #Calculating value of resistance ",
+ "RL=10.0 #Calculating value of resistance",
+ "VL=IL*RL #Calculating voltage",
+ "",
+ "Vo=Vr+VL #Calculating output voltage",
+ "Vdrop=2.0 #Voltage drop in volt",
+ "Vi=Vo+Vdrop #Calculating voltage",
+ "",
+ "#Results:",
+ "print('R= %d ohm'%R)",
+ "print('\\nVo= %.1f V'%Vo)",
+ "print('\\nVo= %.1f V'%Vi)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "R= 20 ohm",
+ "",
+ "Vo= 7.5 V",
+ "",
+ "Vo= 9.5 V"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.3, Page No: 368<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''7805 Regulator Circuit'''",
+ "",
+ "#Variable Declaration:",
+ "VL=5.0 #Voltage in volt",
+ "RL=100.0 #Resistance in ohm",
+ "",
+ "#Calculations:",
+ "IL=VL/RL #Calculating current ",
+ "IL1=IL*1000.0 #Calculating current",
+ "#Part A",
+ "R1=7.0 #Resistance in ohm ",
+ "VR1=IL*R1 #Calculaing voltage drop across R1",
+ "VR1x=VR1*1000.0 #Calculatingvoltage drop across R1",
+ "",
+ "#Part B",
+ "VLb=5.0 #Voltage in volt",
+ "RLb=2.0 #Resistance in ohm",
+ "",
+ "ILb=VLb/RLb #Calculating current",
+ "",
+ "R1=7.0 #Resistance in ohm ",
+ "VR1=ILb*R1 #Calculating voltage drop accross R1",
+ "",
+ "Io=0.147 #Current in ampere ",
+ "Ic=ILb-Io #Calculating current",
+ "",
+ "#Results:",
+ "print('Part A')",
+ "print('\\nLoad Current IL= %d mA'% IL1)",
+ "print('\\nVoltage accross R1= %d mV'%VR1x)",
+ "print('\\nAs voltage < 0.7V, Q1 is OFF')",
+ "print('\\nHence IL=Io=Ii=50 mA')",
+ "print('\\n\\nPart B')",
+ "print('\\nLoad Current IL= %.1f A'%ILb)",
+ "print('\\nVoltage accross R1= %.1f V'%VR1)",
+ "print('\\nAs voltage > 0.7V, Q1 is ON')",
+ "print('\\nHence Ic= %.3f A'%Ic)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Part A",
+ "",
+ "Load Current IL= 50 mA",
+ "",
+ "Voltage accross R1= 350 mV",
+ "",
+ "As voltage < 0.7V, Q1 is OFF",
+ "",
+ "Hence IL=Io=Ii=50 mA",
+ "",
+ "",
+ "Part B",
+ "",
+ "Load Current IL= 2.5 A",
+ "",
+ "Voltage accross R1= 17.5 V",
+ "",
+ "As voltage > 0.7V, Q1 is ON",
+ "",
+ "Hence Ic= 2.353 A"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.4, Page No: 371<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''LM317 Regulator'''",
+ "",
+ "#Variable Declaration:",
+ "R1=240.0 #Resistance in ohm",
+ "R2=2000.0 #Resistance in ohm",
+ "Iadj=50.0*10**-6 #Current in ampere",
+ "Vref=1.25 #Reference voltage in volt ",
+ "",
+ "#Calculation:",
+ "Vo=(Vref*(1+R2/R1))+(Iadj*R2) #Calculating output voltage",
+ "",
+ "#Result:",
+ "print('Vo= %.2f V'%Vo)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Vo= 11.77 V"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.5, Page NO:371<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Voltage regulator using LM317'''",
+ "",
+ "#Variable Declaration:",
+ "Iadjmax=100.0*10**-6 #Current in ampere",
+ "R1=240.0 #Resistance in ohm",
+ "Vref=1.25 #Reference voltage in volt ",
+ " ",
+ "#Calculations:",
+ "#First case: Vo=4",
+ "Vo=4.0 #Voltage in volt",
+ "R2a1=(Vo-Vref)/(Vref/R1 + Iadjmax) #Calculating value of resistance",
+ "R2a=R2a1/1000.0 #Calculating value of resistance",
+ "",
+ "#First case: Vo=12",
+ "Vo=12.0 #Voltage in volt",
+ "R2b1=(Vo-Vref)/(Vref/R1 + Iadjmax) #Calculating value of resistance",
+ "R2b=R2b1/1000.0 #Calculating value of resistance",
+ "",
+ "#Results:",
+ "print('\\nR2= %.2f kohm'%R2a)",
+ "print('\\nR2= %.2f kohm'%R2b)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "R2= 0.52 kohm",
+ "",
+ "R2= 2.03 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.8.6, Page No: 377<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Current Limiting Circuit'''",
+ "",
+ "#Variable Declaration:",
+ "ILmax=0.5 #Current in ampere",
+ "",
+ "#Calculations:",
+ "#Part 1",
+ "Rsc=0.7/ILmax #Calculting value of resistance",
+ "",
+ "#Part 2",
+ "RL=100.0 #Resistance in ohm",
+ "Vo=20.0 #Voltage in volt",
+ "",
+ "IL1=Vo/RL #Calculating current",
+ "",
+ "#Part 3",
+ "RLn=10.0 #Resistance in ohm",
+ "",
+ "IL2=Vo/RLn #Calculating current",
+ "Von=RLn*ILmax #Calculating voltage",
+ "",
+ "#Results:",
+ "print('Rsc= %.1f ohm'%Rsc)",
+ "print('\\nIL= %.1f A'%IL1)",
+ "print('\\nIL= %.1f A'%IL2)",
+ "print('\\nSince IL > ILmax of 0.5A, current limiting will happen')",
+ "print('\\nVo= %.1f V'%Von)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rsc= 1.4 ohm",
+ "",
+ "IL= 0.2 A",
+ "",
+ "IL= 2.0 A",
+ "",
+ "Since IL > ILmax of 0.5A, current limiting will happen",
+ "",
+ "Vo= 5.0 V"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 8.7, Page No: 378<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "''' LM723 Regulator'''",
+ "",
+ "#Variable Declaration:",
+ "R2=10000.0 #Resistance in ohm ",
+ "Vo=12.0 #Output voltage in volt",
+ "Vref=7.15 #Reference voltage",
+ "",
+ "#Calculations:",
+ "R1=(Vo/Vref)*R2 - R2 #Calculating resistance value",
+ "R1a=R1/1000.0 #Calculating resistance value",
+ "",
+ "#Result:",
+ "print('\\nR1= %.2f kohm'%R1a)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "",
+ "R1= 6.78 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No.8.8, Page NO: 380<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Continuously adjustable power supply'''",
+ "",
+ "#Variable Declaration:",
+ "Vref=7.15 #Reference voltage in volt",
+ "Vo=5.0 #Output voltage in volt",
+ "",
+ "#Calculations:",
+ "k=Vref/Vo ",
+ "k1=k-1",
+ "",
+ "#For min voltage of 2V",
+ "Vom=2.0 ",
+ "km=Vref/Vom",
+ "km1=km-1.43",
+ "",
+ "R1a=10000.0 #Resistance in ohm",
+ "R1b=2000.0 #Resistance in ohm",
+ " ",
+ "R2=R1a/2.145 #Calculating resistance value",
+ "R2n=R2/1000.0 #Calculating resistance value",
+ "",
+ "R1=6000.0 #Resistance in ohm",
+ "R3=(R1*R2)/(R1+R2) #Calculating resistance value",
+ "R3n=R3/1000.0 #Calculating resistance value",
+ "",
+ "#Results:",
+ "print('(R1b+R2)/R2= %.2f'%k)",
+ "print('\\nR1 = %.2f * R2'%k1)",
+ "print('\\n(R1a+R1b+R2)/R2= %.3f'%km)",
+ "print('\\nR1a = %.3f * R2'%km1)",
+ "print('\\nR2= %.2f kohm'%R2n)",
+ "print('\\nR3= %.2f kohm'%R3n)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(R1b+R2)/R2= 1.43",
+ "",
+ "R1 = 0.43 * R2",
+ "",
+ "(R1a+R1b+R2)/R2= 3.575",
+ "",
+ "R1a = 2.145 * R2",
+ "",
+ "R2= 4.66 kohm",
+ "",
+ "R3= 2.62 kohm"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "code",
+ "collapsed": true,
+ "input": [],
+ "language": "python",
+ "outputs": []
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/Chapter_9.ipynb b/Linear_Integrated_Circuits/Chapter_9.ipynb
new file mode 100644
index 00000000..3dc8e5f6
--- /dev/null
+++ b/Linear_Integrated_Circuits/Chapter_9.ipynb
@@ -0,0 +1,77 @@
+{
+ "metadata": {
+ "name": "ch_9"
+ },
+ "nbformat": 2,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h1>Chapter 9:Analog Multipliers<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "<h3>Example No. 9.1, Page No:411<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''DC Component'''",
+ "",
+ "#Variable Declaration:",
+ "import math",
+ "",
+ "#Calculations:",
+ "#Part 1",
+ "th1=math.acos(0)",
+ "th=th1*180/math.pi #Calculating theta",
+ "#Part 2",
+ "Vodc=4.47*4.47*math.cos(th1)/20 #Calculating output voltage ",
+ "#For theta=+/-30 deg",
+ "Vodc1=math.cos(30*math.pi/180) #Calculating output voltage for theta 30",
+ "#For theta=+/-45 deg",
+ "Vodc2=math.cos(45*math.pi/180) #Calculating output voltage for theta 45",
+ "#For theta=+/-60 deg",
+ "Vodc3=math.cos(60*math.pi/180) #Calculating output voltage for theta 60",
+ "",
+ "#Results:",
+ "print('Theta= + or - %d degree'%th)",
+ "print('\\nVodc for 30 degree= %.3f V'%Vodc1)",
+ "print('\\nVodc for 45 degree= %.3f V'% Vodc2)",
+ "print('\\nVodc for 60 degree= %.1f V'% Vodc3)"
+ ],
+ "language": "python",
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Theta= + or - 90 degree",
+ "",
+ "Vodc for 30 degree= 0.866 V",
+ "",
+ "Vodc for 45 degree= 0.707 V",
+ "",
+ "Vodc for 60 degree= 0.5 V"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "code",
+ "collapsed": true,
+ "input": [],
+ "language": "python",
+ "outputs": []
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/README.txt b/Linear_Integrated_Circuits/README.txt
new file mode 100644
index 00000000..f34d66f4
--- /dev/null
+++ b/Linear_Integrated_Circuits/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Sagar Shinde
+Course: btech
+College/Institute/Organization: Vishwakarma institute of Technology, Pune.
+Department/Designation: ENTC
+Book Title: Linear Integrated Circuits
+Author: S Shalivahanan, V S Kanchana Bhaaskaran
+Publisher: Tata McGraw-Hill Publishing Company Limited, New Dehli
+Year of publication: 2008
+Isbn: 0-07-064818-2
+Edition: 1st \ No newline at end of file
diff --git a/Linear_Integrated_Circuits/screenshots/frequency_response.JPG b/Linear_Integrated_Circuits/screenshots/frequency_response.JPG
new file mode 100644
index 00000000..fcfef356
--- /dev/null
+++ b/Linear_Integrated_Circuits/screenshots/frequency_response.JPG
Binary files differ
diff --git a/Linear_Integrated_Circuits/screenshots/input_output_differentiator.JPG b/Linear_Integrated_Circuits/screenshots/input_output_differentiator.JPG
new file mode 100644
index 00000000..077129ed
--- /dev/null
+++ b/Linear_Integrated_Circuits/screenshots/input_output_differentiator.JPG
Binary files differ
diff --git a/Linear_Integrated_Circuits/screenshots/ip_and_op_integrator.JPG b/Linear_Integrated_Circuits/screenshots/ip_and_op_integrator.JPG
new file mode 100644
index 00000000..f7c036e1
--- /dev/null
+++ b/Linear_Integrated_Circuits/screenshots/ip_and_op_integrator.JPG
Binary files differ