{ "metadata": { "name": "Chapter_12" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": "Chapter 12 :- Optical fiber systems 1: Intensity modulation/direct detection\n" }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.1, page 706" }, { "cell_type": "code", "collapsed": false, "input": "#Variable declaration\nn=8 #bits in a time slot\nt=32 #bits in a frame\nf=8*10**3 #frequency\nm=16 #bits in a multiframe\n\n#Calculation\nnb=n*t #number of bits in a frame\nfr=nb*f #transmission rate\ntr=fr**-1 #bit duration\nts=tr*n #duration of a time slot\ntf=ts*t #duration of a frame\ntm=tf*m #duration of a multiframe\n\n#Result\nprint'(a) Bit rate for the system = %.3f Mbit s^-1'%(fr*10**-6)\nprint'(b) Duration of the time slot = %.1f \u03bcs'%(ts*10**6)\nprint'(c) Duration of a frame = %d \u03bcs' %(tf*10**6)\nprint'Duration of a multiframe = %d ms' %(tm*10**3)\n\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Bit rate for the system = 2.048 Mbit s^-1\n(b) Duration of the time slot = 3.9 \u03bcs\n(c) Duration of a frame = 125 \u03bcs\nDuration of a multiframe = 2 ms\n" } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.2, page 720" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nm=4.24 #erfc = 2*10^9\na=2*math.sqrt(2)\n\n#Calculation\nsn=m*a #root of S/N = optical\nsn1=10*math.log10(sn) #in dB\nisq=sn**2 #S/N = electrical \nisq1=10*math.log10(isq) #in dB\n#Result\nprint'Optical SNR = %.1f'%sn\nprint' = %.1f dB'%sn1\nprint'Electrical SNR = %.1f'%round(isq)\nprint' = %.1f dB'%isq1", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Optical SNR = 12.0\n = 10.8 dB\nElectrical SNR = 144.0\n = 21.6 dB\n" } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.3, page 723" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nm=100 #multiplication factor\nk=0.02 #ratio of carrier ionization rates \nsn=144 #electrical SNR\nn=0.8 #quantum efficiency\nB=0.6\n\n#Calculation\nfm=(k*m)+(2-(1/m))*(1-k) #avalanche noise factor\nzm=2*B*round(fm)*sn/n #average number of photons\n\n#Result\nprint'Average no of photons = %d photons'%round(zm)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Average no of photons = 864 photons\n" } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.4, page 724" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nzm=864 #average no of photons\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nl1=10**-6 #wavelength\nl2=10**-14 #wavelength\nbt=10**7 \nn=14\n\n\n#Calculation\npo1=(zm*h*c*bt)/(2*l1) #At 10 Mbit s^-1\npo2=(zm*h*c*n*bt)/(2*l2) #At 140 Mbit s^-1\n\n#Result\nprint'Incident optical power (10 Mbit s^-l) = %.1f pW'%(po1*10**12)\nprint'Incident optical power (140 Mbit s^-l) = %.3f W'%po2 #value given in a textbook is incorrect", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Incident optical power (10 Mbit s^-l) = 858.2 pW\nIncident optical power (140 Mbit s^-l) = 1.201 W\n" } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.5, page 726" }, { "cell_type": "code", "collapsed": false, "input": "#Variable declaration\nafc=5 #fibre cable attenuation\nai=2 #splice losses\nl=4 #length in Km\naf=3.5+2.5 #connector losses at source and detector resp\n\n#Calculation\nCl=(afc+ai)*l+af #total channel loss\n\n#Result\nprint'Total channel loss = %d dB'%Cl", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Total channel loss = 34 dB\n" } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.6, page 727" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\ns=0.6*10**-9 #rms pulse broadening\nL=8 #length in km\nbt=25*10**6 #bit rates\nbt1=150*10**6 #bit rates\n\n#Calculation\nst=s*L #total rms pulse broadening\ndl1=2*(2*st*bt*math.sqrt(2))**4 #without mode coupling\nst1=s*math.sqrt(L) #total rms pulse broadening\ndl2=2*(2*st1*bt*math.sqrt(2))**4 #with mode coupling\ndl3=2*(2*st*bt1*math.sqrt(2))**4 #without mode coupling\ndl4=2*(2*st1*bt1*math.sqrt(2))**4 #with mode coupling\n\n#Result\nprint'(a) For 25 Mbit per sec'\nprint'dispersion\u2013equalization penalty (without mode coupling) = %.2f dB'%dl1\nprint'dispersion\u2013equalization penalty (with mode coupling) = %.2f x 10^-4 dB\\n'%(dl2*10**4)\nprint'(b) For 150 Mbit per sec'\nprint'dispersion\u2013equalization penalty (without mode coupling) = %.2f dB'%dl3\nprint'dispersion\u2013equalization penalty (with mode coupling) = %.2f dB'%dl4", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) For 25 Mbit per sec\ndispersion\u2013equalization penalty (without mode coupling) = 0.03 dB\ndispersion\u2013equalization penalty (with mode coupling) = 4.15 x 10^-4 dB\n\n(b) For 150 Mbit per sec\ndispersion\u2013equalization penalty (without mode coupling) = 34.40 dB\ndispersion\u2013equalization penalty (with mode coupling) = 0.54 dB\n" } ], "prompt_number": 6 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.7, page 731" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nts=8 #rise time for source in ns\ntn=5*ts #for fiber intermodal\ntc=1*ts #for pulse broadening\ntd=6 #for detector\n\n#Calculation\ntsys=1.1*(ts**2+tn**2+tc**2+td**2)**0.5 #total system rise time\nBt=0.7/(tsys*10**-9) #max bit rate\n\n\n#Result\nprint'Bt (Max) = %.1f Mbit per sec'%(Bt/10**6)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Bt (Max) = 15.2 Mbit per sec\n" } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.8, page 732" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\npo=-55 #mean power required at the APD receiver at 35 Mbit s^-1\npo1=-44 #mean power required at the APD receiver at 400 Mbit s^-1\npi=-3 #mean power launched from the laser transmitter\nl1=0.4 #cable fiber loss\nl2=0.1 #splice losses\nl3=1 #connector loss \nma=7 #safety margin\na=0.5 \nacr=2\ndl=1.5\n\n#Calculation \nL1=(pi-po-acr-ma)/a #for 35 Mbit s^-1\nL2=(pi-po1-acr-ma)/a #for 400 Mbit s^-1\nL3=(pi-po1-acr-dl-ma)/a #reduction in the maximum possible link\n\n#Result\nprint'(a) Maximum possible link length (operating at 35 Mbit s^-1) = %d km'%L1\nprint'(b) Maximum possible link length (operating at 400 Mbit s^-1) = %d km'%L2\nprint'(c) Reduction in the maximum possible link length = %d km'%L3", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Maximum possible link length (operating at 35 Mbit s^-1) = 86 km\n(b) Maximum possible link length (operating at 400 Mbit s^-1) = 64 km\n(c) Reduction in the maximum possible link length = 61 km\n" } ], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.9, page 734" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\npo=-10 #mean optical power launched into the fiber from the transmitter (100 \u03bcm)\nrs=-41 #receiver sensitivity at 20 Mbit s^-1\nl1=7*2.6 #cabled fiber loss\nl2=6*0.5 #splice losses\nl3=1*1.5 #connector loss \nms=6 #safety margin\n\n#Calculation\nts=po-rs #Total system margin\ntsl=l1+l2+l3+ms #Total system loss\npm=ts-tsl #Excess power margin \n\n#Result\nprint'Total system margin = %d dB'%ts\nprint'Total system loss = %.1f dB'%tsl\nprint'Excess power margin = %.1f dB'%pm\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Total system margin = 31 dB\nTotal system loss = 28.7 dB\nExcess power margin = 2.3 dB\n" } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.10, page 740" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nv=5 #output voltage\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nk=1.385*10**-23 #boltzman constant\nt=290 #tempreture in kelvin\nzo=100 #cable impedance\nn=0.7 #quantum efficiency\npi=10**-3 #optical power\nlam=0.85*10**-6 #wavelength\n\n#Calculation\nratio=(v**2*h*c)/(2*k*t*zo*n*pi*lam) #ratio\nratio1=10*math.log10(ratio) #ration in dB\n\n#Result\nprint'Ratio = %d dB'%ratio1", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Ratio = 40 dB\n" } ], "prompt_number": 10 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.11, page 744" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nma=0.8 #modulation index\nR=0.5 #responsivity\nb=0.7 #ratio of luminance to composite video\nsnr=3.162*10**5 #SNR\ne=1.602*10**-19 #electron volt\nB=5*10**6 #bandwidth\nK=1.385*10**-23 #boltzman constant \nT=293 #tempreture in kelvin\nFn=1.413\nRl=10**6\n\n#Calculation\na=(2*ma*R*b)**2\nc=snr*2*e*B*R\nd=snr*4*K*T*B*Fn/Rl\nf = (c**2)+(4*a*d)\npo=(c+math.sqrt(f))/(2*a) #average incident optical power \npo1=10*math.log10(po*1000) #in dB\n\n#Result\nprint'Average incident optical power = %.2f uW'%(po*10**6)\nprint' = %.1f dB m'%po1\n\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Average incident optical power = 0.93 uW\n = -30.3 dB m\n" } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.12, page 747" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\ne=1.602*10**-19 #1 electron volt\nn=0.6 #p\u2013i\u2013n photodiode quantum efficiency\nma=0.5 #modulation index\nlam=10**-6 #wavelength\nk=1.385*10**-23 #boltzman constant \nt=300 #tempreture in kelvin\nf=4 #amplifier noise figure\nrl=50*10**3 #effective load impedance\nsn=3.162*10**4 #signal to noise ratio\nB=10**7 #bandwidth\n\n#Calculation\na=h*c/(e*n*ma**2*lam)\nb=math.sqrt((8*k*t*f)/rl)\nc=math.sqrt(sn*B)\npo=a*b*c #optical power\npo1=10*math.log10(po*1000) #optical power in dB\n\n#Result\nprint'Optical power, Po = %.2f uW'%(po*10**6)\nprint' = %.1f dBm'%po1", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Optical power, Po = 7.58 uW\n = -21.2 dBm\n" } ], "prompt_number": 12 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.13, page 748" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\npo=-10 #mean optical power launched into the fiber from the transmitter (100 \u03bcm)\nrs=-25 #receiver sensitivity \nl1=2*3.5 #cable fiber loss\nl2=2*0.7 #splice losses\nl3=1.6 #connector loss \nms=4.0 #safety margin\nafc=3.5\nai=0.7\nacr=1.6\nma=7\n\n#Calculation\nts=po-rs #Total system margi\ntsl=l1+l2+l3+ms #Total system loss\npm=ts-tsl #Excess power margin \nL=((0-rs)-(acr+ma))/(afc+ai)\n\n#Result\nprint'(a) Total system margin = %d dB'%ts\nprint' Total system loss = %.1f dB'%tsl\nprint' Excess power margin = %.1f dB'%pm\nprint'\\n(b) Increase in link length = %.1f Km'%(L)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Total system margin = 15 dB\n Total system loss = 14.0 dB\n Excess power margin = 1.0 dB\n\n(b) Increase in link length = 3.9 Km\n" } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.14, page 750" }, { "cell_type": "code", "collapsed": false, "input": "#Variable declaration\nBop=6*10**6\nts=10 #rise time for source in ns\ntn=5*9 #for fiber intermodal\ntc=5*2 #for pulse broadening\ntd=3 #for detector\n\n\n#Calculation\ntsys=0.35/Bop\ntsys1=1.1*(ts**2+tn**2+tc**2+td**2)**0.5 #total system rise time\n\n#Result\nprint'Maximum permitted system rise time = %.1f ns'%(tsys*10**9)\nprint'Total system rise time = %.1f ns'%(tsys1)\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Maximum permitted system rise time = 58.3 ns\nTotal system rise time = 52.0 ns\n" } ], "prompt_number": 14 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.15, page 755" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nfd=400*10**3 #peak frequency deviation\nBa=4*10**3 #bandwidth\n\n#Calculation\nDf=fd/Ba #frequency deviation ratio\nsnr=1.76+(20*math.log10(Df)) #SNR improvement\nBm=2*(Df+1)*Ba #bandwidth of the FM\u2013IM signal \n \n#Result\nprint'(a) SNR improvement = %.2f dB'%snr\nprint'(b) Frequency deviation ratio = %d'%Df\nprint' Bandwidth of FM-IM signal = %d kHz'%(Bm/1000)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) SNR improvement = 41.76 dB\n(b) Frequency deviation ratio = 100\n Bandwidth of FM-IM signal = 808 kHz\n" } ], "prompt_number": 15 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.16, page 757" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nfm=3 #output FM ratio\npm=1 #output PM ratio\n\n#Calculation\nratio=fm/pm #SNR ratio\nratio1=10*math.log10(ratio) #SNR ratio in dB\n\n#Result\nprint'Ratio of output SNR = %.2f dB'%(ratio1)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Ratio of output SNR = 4.77 dB\n" } ], "prompt_number": 16 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.17, page 759" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nto=5*10**-8 #nominal pulse period\nfd=5*10**6 #Peak-to-peak frequency deviation\nM=60 #A PD multiplication factor\nR=0.7 #A PD responsivity\npo=10**-7 #peak optical power at receiver\ntr=12*10**-9 #Total system 10\u201390% rise time\nB=6*10**6 #baseband noise bandwidth\ni=10**-17 #Receiver mean square noise current\n\n\n#Calculation\nsnp=(3*(to*fd*M*R*po)**2)/(i*(2*math.pi*tr*B)**2) #peak-to-peak signal to rms noise ratio\nsnp1=10*math.log10(snp) #in dB\n\n#Result\nprint'Peak-to-peak signal to rms noise ratio = %.1f dB'%snp1\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Peak-to-peak signal to rms noise ratio = 62.1 dB\n" } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.18, page 763" }, { "cell_type": "code", "collapsed": false, "input": "%matplotlib inline\nimport math\nfrom pylab import *\nfrom numpy import *\n\n#Variable declaration\nacr=1 #connector loss in dB\nafc=5 #loss per kilometer in dB\nLbu=0.1 #fiber length between each of the access couplers\nLac=1 #insertion loss\nLtr=10 #loss due to the tap ratio\nLsp=3 #splitting loss\n \n#Calculating, we get two equation in terms of N, no of nodes, i.e C(1,N-1)=(3.5*N)+8.5 and C(star)=4.5+(10*log10(N)) \n\n#For Bus distribution system\n\nfor N in range(1,13,1):\n C=(3.5*N)+8.5;\n a=plot(N,C,'.r')\n \n \n#for Star distribution system\n \nfor N in range(1,30,1):\n C1=4.5+(10*log10(N));\n b=plot(N,C1,'.g')\n \n \n#To show plot in same graph\n#Graphical comparison showing total channel loss against number of nodes\n\nplt.annotate('Linear Bus',xy=(10, 43.5), xytext=(11, 40))\nplt.annotate('Star',xy=(16, 15), xytext=(17, 13))\nxlabel(\"Number of nodes $N$\")\nylabel(\"Total channel loss $CL$ (dB)\")\ntitle(\"Characteristics showing the total channel loss against the number of nodes\")\ngrid()\nshow(a)\nshow(b)\n", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Populating the interactive namespace from numpy and matplotlib\n" }, { "metadata": {}, "output_type": "display_data", "png": "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\nEEKIGv0/kAL13NFyzXoAAAAASUVORK5CYII=\n", "text": "" } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.19, page 782" }, { "cell_type": "code", "collapsed": false, "input": "#Variable declaration\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nlam=1.55*10**-6 #wavelength\nL=100*10**3 #length\nK=4 \nB=1.2*10**9 #bandwidth\nsnr=50 #SNR\na=10**-2.5\npi=10**-3\n\n#Calculation\nLt=(pi*lam*a*L)/(K*h*c*B*snr) #link with a large number of cascaded amplifiers\n\n#Result\nprint'Maximum system length = %d x 10^4 km'%(Lt/10**7)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "Maximum system length = 1 x 10^4 km\n" } ], "prompt_number": 19 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.21, page 791" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nb=17 #second-order dispersion coefficient for the latter path\nL2=20 #path length in km\nL1=160.00 #path length in km\ns1=-0.075 #dispersion slope\n\n#Calculation\na=-b*L2\nG=a/L1 #second-order dispersion coefficient\ns2=s1*L1/L2 #chromatic dispersion slope\n\n#Result\nprint'(a) Second-order dispersion coefficient = %.3f ps nm^-1 km^-1'%G \nprint'(b) chromatic dispersion slope = %.1f ps nm^-2 km^-1'%s2", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Second-order dispersion coefficient = -2.125 ps nm^-1 km^-1\n(b) chromatic dispersion slope = -0.6 ps nm^-2 km^-1\n" } ], "prompt_number": 20 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.22, page 798" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nto=70*10**-12 #bit period\nt=6*10**-12 #RZ pulse width\nB2=50*10**-12*10**-12*10**-3 #second-order dispersion coefficient\nL=50*10**3 #amplifier spacing\n\n#Calculation\nqo=0.5*to/t #separation of the soliton pulses \nBt=(2*qo*math.sqrt(B2*L))**-1 #transmission bit rate \n\n#Result\nprint'(a) Separation = %.1f'%qo\nprint'(b) Transmission bit rate = %.2f x 10^9'%(Bt*10**-8)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Separation = 5.8\n(b) Transmission bit rate = 17.14 x 10^9\n" } ], "prompt_number": 21 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Example 12.23, page 799" }, { "cell_type": "code", "collapsed": false, "input": "import math\n\n#Variable declaration\nto=40*10**-12 #bit period\nt=4*10**-12 #RZ pulse width\na=0.2*10**-3 #attenuation coefficient\nB2=1.25*10**-12*10**-12*10**-3 #second-order dispersion coefficient\n\n#Calculation\nqo=0.5*to/t #separation of the soliton pulses \nb=1/(2*qo)\nc=math.sqrt(a/B2)\nBt=b*c #transmission bit rate \n\n#Result\nprint'(a) Separation = %.1f'%qo\nprint'(b) Transmission bit rate = %.2f x 10^10 bit s^-1'%(Bt*10**-10)", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "(a) Separation = 5.0\n(b) Transmission bit rate = 4.00 x 10^10 bit s^-1\n" } ], "prompt_number": 22 } ], "metadata": {} } ] }