{
 "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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": [
      "", 
      "#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": []
    }
   ]
  }
 ]
}