summaryrefslogtreecommitdiff
path: root/Linear_Integrated_Circuits/Chapter_11.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Linear_Integrated_Circuits/Chapter_11.ipynb')
-rw-r--r--Linear_Integrated_Circuits/Chapter_11.ipynb552
1 files changed, 552 insertions, 0 deletions
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