summaryrefslogtreecommitdiff
path: root/Analog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Analog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb')
-rwxr-xr-xAnalog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb531
1 files changed, 531 insertions, 0 deletions
diff --git a/Analog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb b/Analog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb
new file mode 100755
index 00000000..415497af
--- /dev/null
+++ b/Analog_Integrated_Circuits_by_R.S._Tomar/Chapter2_1.ipynb
@@ -0,0 +1,531 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:08f6666963b63d68f1720253f0e8a698e5752723f4515bbc0a7b3ce6b79e7e0a"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter2 - Differential amplifiers"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Ex 2.1 - page 31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "v1=7 #mV\n",
+ "v2=9 #mV\n",
+ "Ad=80 #dB\n",
+ "CMRR=90 #dB\n",
+ "vid=v2-v1 #mV\n",
+ "vcm=(v1+v2)/2 #mV\n",
+ "Ad=10**(Ad/20) #unitless\n",
+ "CMRR=10**(CMRR/20) #unitless\n",
+ "vout=Ad*(vid+vcm/CMRR)/1000 #V\n",
+ "print \"Output Voltage is %0.2f V\" %vout"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Output Voltage is 20.00 V\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.2 - page 31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "v1=50.0 #micro V\n",
+ "v2=55.0 #micro V\n",
+ "Ad=2*10**5 #unitless\n",
+ "CMRR=80 #dB\n",
+ "vid=v2-v1 #micro V\n",
+ "vcm=(v1+v2)/2 #mV\n",
+ "CMRR=10**(CMRR/20) #unitless\n",
+ "vout=Ad*(vid+vcm/CMRR)/10**6 #V\n",
+ "print \"Output Voltage is %0.3f V\" %vout \n",
+ "Verror=vout-Ad*vid/10**6 #V\n",
+ "print \"Error Voltage is %0.3f V\" %Verror\n",
+ "error_p=(Verror/vout)*100 #% error\n",
+ "print \"Percentage error is %0.3f %%\" %error_p \n",
+ "#Percentage error answer is not correct in the book."
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Output Voltage is 1.001 V\n",
+ "Error Voltage is 0.001 V\n",
+ "Percentage error is 0.105 %\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.3 - page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "import math\n",
+ "IT=1.0 #mA\n",
+ "VCC=15 #V\n",
+ "RE=50 #kohm\n",
+ "RC=15 #kohm\n",
+ "Beta=120 #unitless\n",
+ "alfa=Beta/(Beta+1) #unitless\n",
+ "Vid=6 #mV\n",
+ "VT=26 #mV\n",
+ "#Part (a)\n",
+ "iC1=alfa*IT/(1+math.exp(-Vid/VT)) #mA\n",
+ "iC2=IT-iC1 #mA\n",
+ "print \"dc Collector current through transistors is %0.3f mA\" %iC2 \n",
+ "#Part (b)\n",
+ "iC=IT/2 #mA(let iC1=iC2=iC)\n",
+ "re=VT/iC #ohm(let re1=re2=re)\n",
+ "Ad=-RC*1000/re #unitless\n",
+ "Acm=-RC*1000/(re+2*RE*1000) #unitless\n",
+ "Acm=abs(Acm) ##unitless\n",
+ "CMRR=abs(Ad/Acm) ##unitless\n",
+ "print \"Ad is %0.2f\" %Ad \n",
+ "print \"Acm is %0.2f \" %Acm \n",
+ "CMRR=20*math.log10(CMRR) #dB\n",
+ "print \"CMRR is %0.1f dB\" %CMRR"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "dc Collector current through transistors is 0.447 mA\n",
+ "Ad is -288.46\n",
+ "Acm is 0.15 \n",
+ "CMRR is 65.7 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.4 - page 44"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "RC=2 #kohm\n",
+ "RE=4.3 #kohm\n",
+ "VEE=5 #V\n",
+ "VBE=0.7 #V\n",
+ "IT=(VEE-VBE)/RE #mA\n",
+ "VT=26 #mV\n",
+ "re=2*VT/IT #ohm\n",
+ "Ad=-RC*1000/2/re #unitless\n",
+ "print \"Ad = \",round(Ad,2) \n",
+ "Acm=-RC*1000/(re+2*RE*1000) #unitless\n",
+ "print \"Acm = \",round(Acm,2)\n",
+ "CMRR=abs(Ad/Acm) ##unitless\n",
+ "print \"CMRR = \",round(CMRR,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Ad = -19.23\n",
+ "Acm = -0.23\n",
+ "CMRR = 83.2\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.5 - page 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=100 #unitless\n",
+ "VBE=0.715 \n",
+ "VD1=0.715 #V\n",
+ "VZ=6.2 #V\n",
+ "VT=26 #mV\n",
+ "IZt=41 #mA\n",
+ "VCC=10 #V\n",
+ "VEE=10 #V\n",
+ "RE=2.7 #kohm\n",
+ "RC=4.7 #kohm\n",
+ "VB=-VEE+VZ+VD1 #V\n",
+ "VE=VB-VBE #V\n",
+ "IE3=(VE-(-VEE))/(RE) #mA\n",
+ "IT=IE3 #mA\n",
+ "ICQ=IT/2 #mA(let ICQ1=ICQ2=ICQ)\n",
+ "VCEQ=VCC+VBE-ICQ*RC #V\n",
+ "#Q=[ICQ,VCEQ] #[mA V](Q point)\n",
+ "print \"Q point (ICQ(mA), VCEQ(V)), ICQ is \",round(ICQ,2),\"mA & VCEQ is \",round(VCEQ,2),\"V\"\n",
+ "re=2*VT/IT #ohm\n",
+ "Ad=-RC*1000/re #unitless\n",
+ "Rid=2*Beta*re/1000 #kohm\n",
+ "print \"Ad = \",round(Ad)\n",
+ "print \"Rid is %0.2f kohm\" %Rid"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q point (ICQ(mA), VCEQ(V)), ICQ is 1.15 mA & VCEQ is 5.32 V\n",
+ "Ad = -208.0\n",
+ "Rid is 4.53 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.6 - page 47"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=100 #unitless\n",
+ "VBE=0.7 #V\n",
+ "VCC=10 #V\n",
+ "VEE=10 #V\n",
+ "VT=26 #mV\n",
+ "RC=2.7 #kohm\n",
+ "R=2.2 #kohm\n",
+ "IExt=(VEE-VBE)/R #mA\n",
+ "IC3=IExt \n",
+ "IT=IExt #mA\n",
+ "ICQ=IT/2 #mA\n",
+ "re=2*VT/IT #ohm(let re1=re2=re)\n",
+ "Ad=-RC*1000/re #unitless\n",
+ "Rid=2*Beta*re/1000 #kohm(let Rid1=Rid2=Rid)\n",
+ "print \"Differntial mode gain, Ad = \", round(Ad,1) \n",
+ "print \"Differntial input resistance, Rid is %0.2f kohm\" %Rid"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Differntial mode gain, Ad = -219.5\n",
+ "Differntial input resistance, Rid is 2.46 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.7 - page 49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=100 #unitless\n",
+ "VBE=0.7 #V\n",
+ "VD1=0.7 #V\n",
+ "VD2=0.7#V\n",
+ "VCC=15 #V\n",
+ "VEE=15 #V\n",
+ "VT=26 #mV\n",
+ "RE=560 #ohm\n",
+ "RC=6.8 #kohm\n",
+ "R=220 #ohm\n",
+ "VB=-VEE+VD1+VD2 #V\n",
+ "VE=VB-VBE #V\n",
+ "IE3=(VE-(-VEE))/RE*1000 #mA\n",
+ "IT=IE3 #mA\n",
+ "ICQ=IT/2 #mA\n",
+ "VCEQ=VCC+VBE-ICQ*RC #V\n",
+ "#Q=[ICQ VCEQ] #[mA V](Q point)\n",
+ "print \"Q point (ICQ(mA), VCEQ(V)), ICQ is \",round(ICQ,3),\"mA & VCEQ is \",round(VCEQ,2),\"V\"\n",
+ "re=2*VT/IT #ohm\n",
+ "Ad=-RC*1000/re #unitless\n",
+ "print \"Differntial mode gain, Ad = \",round(Ad,2) \n",
+ "#Answer in the book is wrong for Q point."
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q point (ICQ(mA), VCEQ(V)), ICQ is 0.625 mA & VCEQ is 11.45 V\n",
+ "Differntial mode gain, Ad = -163.46\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.8 - page 50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "ICQ=200.0 #micro A\n",
+ "Beta=1000.0 #unitless\n",
+ "Ad=180.0 #unitless\n",
+ "CMRR=80.0 #dB\n",
+ "VT=26.0 #mV\n",
+ "re=VT/(ICQ/1000) #ohm(Let re=re1=re2)\n",
+ "RC=Ad*re/1000 #kohm\n",
+ "CMRR=10**(CMRR/20) #untless\n",
+ "RE=(CMRR-1)*re/2/1000 #kohm\n",
+ "print \"Value of RC is %0.2f kohm & RE is %0.f kohm\" %(RC,RE) \n",
+ "Rid=2*Beta*re/1000 #kohm(Let Rid=Rid1=Rid2)\n",
+ "print \"Differntial input resistance, Rid is %0.f kohm \" %Rid \n",
+ "Ric=(Beta+1)*(re+2*RE*1000)/10**6 #Mohm\n",
+ "print \"Common mode input resistance, Ric is %0.f Mohm \" %Ric\n",
+ "#Answer for last part is wrong in the textbook."
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of RC is 23.40 kohm & RE is 650 kohm\n",
+ "Differntial input resistance, Rid is 260 kohm \n",
+ "Common mode input resistance, Ric is 1301 Mohm \n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.9 - page 51"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=110 #unitless\n",
+ "VBE=0.7 #V\n",
+ "VT=26 #mV\n",
+ "VCC=10 #V\n",
+ "VEE=10 #V\n",
+ "RC=1.8 #kohm\n",
+ "R=3.9 #kohm\n",
+ "IExt=(VCC-VBE-(-VEE))/R #mA\n",
+ "IT=IExt #mA\n",
+ "ICQ=IT/2 #mA\n",
+ "V1=0 \n",
+ "V2=0 #V\n",
+ "VE=-2*VBE #V\n",
+ "VC=VCC-ICQ*RC #V\n",
+ "VCEQ=VC-VE #V\n",
+ "# Q=[ICQ VCEQ] #[mA V](Q point)\n",
+ "print \"Q point (ICQ(mA), VCEQ(V)), ICQ is \",round(ICQ,2),\"mA & VCEQ is \",round(VCEQ,2),\"V\"\n",
+ "re=2*VT/IT #ohm(let re1=re2=re)\n",
+ "reD=2*re #ohm\n",
+ "Ad=-RC*1000/reD #unitless\n",
+ "print \"Differntial mode gain, Ad = \",round(Ad,1) \n",
+ "BetaD=Beta**2 #unitless\n",
+ "Rid=2*BetaD*reD/1000 #kohm(let Rid1=Rid2=Rid)\n",
+ "print \"Differntial input resistance, Rid is %0.1f kohm\" %Rid\n",
+ "#Answer for Ad is wrong(+ve) in the book while it is negative."
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q point (ICQ(mA), VCEQ(V)), ICQ is 2.47 mA & VCEQ is 6.95 V\n",
+ "Differntial mode gain, Ad = -85.7\n",
+ "Differntial input resistance, Rid is 508.6 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.10 - page 54"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=100 #unitless\n",
+ "VBE=0.7 #V\n",
+ "R=18.6 #kohm\n",
+ "VT=26 #mV\n",
+ "VCC=5 #V\n",
+ "VEE=5 #V\n",
+ "IExt=(VCC-VBE-(-VEE))/R #mA\n",
+ "IT=IExt #mA\n",
+ "re=2*VT/IT #ohm(let re1=re2=re)\n",
+ "Rid=2*Beta*re/1000 #kohm(let Rid1=Rid2=Rid)\n",
+ "print \"Differntial input resistances, Rid1=Rid2 is %0.1f kohm\" %Rid"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Differntial input resistances, Rid1=Rid2 is 20.8 kohm\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Ex 2.11 - page 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "from __future__ import division\n",
+ "Beta=100 #unitless\n",
+ "VBE=0.7 #V\n",
+ "RC=2.7 #kohm\n",
+ "R=2.2 #kohm\n",
+ "VT=26 #mV\n",
+ "VCC=10 #V\n",
+ "VEE=10 #V\n",
+ "IExt=(VEE-VBE)/R #mA\n",
+ "IT=IExt #mA\n",
+ "IE=IT/2 #mA(Let IE1=IE2=IE)\n",
+ "re=2*VT/IT \n",
+ "re1=re #ohm \n",
+ "re2=re #ohm \n",
+ "re3=re #ohm\n",
+ "re4=re #ohm\n",
+ "reD=re1+re2 #ohm\n",
+ "BetaD=Beta**2 #unitless\n",
+ "Ad=-RC*1000/reD #unitless\n",
+ "print \"Differential voltage gain, Ad = \",round(Ad,2)\n",
+ "Rid=2*BetaD*reD/1000 #kohm(let Rid1=Rid2=Rid)\n",
+ "print \"Differntial input resistances, Rid1=Rid2 is %0.2f kohm \" %Rid \n",
+ "#Answer in the book is not accurate."
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Differential voltage gain, Ad = -109.75\n",
+ "Differntial input resistances, Rid1=Rid2 is 492.04 kohm \n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file