summaryrefslogtreecommitdiff
path: root/Digital_Communications_by_S._Haykin/Chapter9.ipynb
blob: ca08a40eea0530e92a9b0d68656761b8c34d1a9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter 9 Spread Spectrum Modulation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example9.1 page 461"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The PN sequence at step: 1\n",
      "x= [1, 0, 0]\n",
      "The PN sequence at step: 2\n",
      "x= [1, 1, 0]\n",
      "The PN sequence at step: 3\n",
      "x= [1, 1, 1]\n",
      "The PN sequence at step: 4\n",
      "x= [0, 1, 1]\n",
      "The PN sequence at step: 5\n",
      "x= [1, 0, 1]\n",
      "The PN sequence at step: 6\n",
      "x= [0, 1, 0]\n",
      "The PN sequence at step: 7\n",
      "x= [0, 0, 1]\n",
      "Table 9.1 Range of PN Sequence lengths\n",
      "_________________________________________________________\n",
      "Length of shift register (m) = [7, 8, 9, 10, 11, 12, 13, 17, 19]\n",
      "PN sequence Length (N) = [127, 255, 511, 1023, 2047, 4095, 8191, 131071, 524287]\n",
      "_________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "#Program to generate Maximum Length Pseudo Noise Sequence\n",
    "#Period of PN Sequence N = 7\n",
    "\n",
    "#Assign Initial value for PN generator\n",
    "x0= 1#\n",
    "x1= 0#\n",
    "x2 =0#\n",
    "x3 =0#\n",
    "N = 7 # the period of the signal\n",
    "for i in range(1,N+1):\n",
    "  x3 =x2\n",
    "  x2 =x1\n",
    "  x1 = x0\n",
    "  x0 =(x1^x3)\n",
    "  print 'The PN sequence at step:',i\n",
    "  x = [x1, x2, x3]\n",
    "  print 'x=',x\n",
    "\n",
    "m = [7,8,9,10,11,12,13,17,19]#\n",
    "N = [2**mm-1 for mm in m]\n",
    "print 'Table 9.1 Range of PN Sequence lengths'\n",
    "print '_________________________________________________________'\n",
    "print 'Length of shift register (m) =',m\n",
    "print 'PN sequence Length (N) =',N\n",
    "print '_________________________________________________________'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example9.2 page 462"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The PN sequence at step : 1\n",
      "x= [1, 0, 0]\n",
      "The PN sequence at step : 2\n",
      "x= [1, 1, 0]\n",
      "The PN sequence at step : 3\n",
      "x= [1, 1, 1]\n",
      "The PN sequence at step : 4\n",
      "x= [0, 1, 1]\n",
      "The PN sequence at step : 5\n",
      "x= [1, 0, 1]\n",
      "The PN sequence at step : 6\n",
      "x= [0, 1, 0]\n",
      "The PN sequence at step : 7\n",
      "x= [0, 0, 1]\n",
      "Output Sequence :  [0, 0, 1, 1, 1, 0, 1]\n",
      "Output Sequence levels : [-1, -1, 1, 1, 1, -1, 1]\n",
      "Number of 1s in the given PN sequence :  4\n",
      "Number of 0s in the given PN sequence : 3\n",
      "Property 1 (Balance property) is satisified\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f421c158a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy import corrcoef as corr\n",
    "%matplotlib inline\n",
    "from matplotlib.pyplot import plot,xlabel,ylabel,title,show\n",
    "\n",
    "#Period of PN Sequence N = 7\n",
    "#Properites of maximum-length sequence\n",
    "\n",
    "#Assign Initial value for PN generator\n",
    "x0= 1#\n",
    "x1= 0#\n",
    "x2 =0#\n",
    "x3 =0#\n",
    "N = 7 #the period of the signal\n",
    "one_count = 0\n",
    "zero_count = 0\n",
    "C=[]\n",
    "C_level=[]\n",
    "t=[]\n",
    "for i in range(1,N+1):\n",
    "  x3 =x2#\n",
    "  x2 =x1#\n",
    "  x1 = x0#\n",
    "  x0 =(x1^x3)\n",
    "  print 'The PN sequence at step :',i\n",
    "  x = [x1 ,x2 ,x3]\n",
    "  print 'x=',x\n",
    "  C.append(x3)\n",
    "  if(C[i-1]==1):\n",
    "    C_level.append(1)\n",
    "    one_count = one_count+1\n",
    "  elif(C[i-1]==0):\n",
    "    C_level.append(-1)\n",
    "    zero_count = zero_count+1\n",
    "  \n",
    "print 'Output Sequence : ',C #refer equation 9.4\n",
    "print 'Output Sequence levels :',C_level#refer equation 9.5\n",
    "if(zero_count < one_count):\n",
    "  print 'Number of 1s in the given PN sequence : ',one_count\n",
    "  print 'Number of 0s in the given PN sequence :',zero_count\n",
    "  print 'Property 1 (Balance property) is satisified'\n",
    "\n",
    "Rc_tuo = corr(C_level,rowvar=N)\n",
    "t = range(1,2*len(C_level)+1)\n",
    "plot(t,C_level+C_level)\n",
    "xlabel('                                        t')\n",
    "title('Waveform of maximum-length sequence [0 0 1 1 1 0 1 0 0 1 1 1 0 1]')\n",
    "show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example9.3 page 468"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The processing gain is: 4095.0\n",
      "The required PN sequence is: 4095.0\n",
      "The feedback shift register length: 12.0\n",
      "Jamming Margin in dB: 26.122539061\n"
     ]
    }
   ],
   "source": [
    "from math import log,log10\n",
    "def log2(x):\n",
    "    return log(x,2)\n",
    "\n",
    "Tb = 4.095*10**-3##Information bit duration\n",
    "Tc = 1*10**-6##PN chip duration\n",
    "PG = Tb/Tc##Processing gain\n",
    "print 'The processing gain is:',PG\n",
    "N = PG# #PN sequence length\n",
    "m = log2(N+1)##feedback shift register length\n",
    "print 'The required PN sequence is:',N\n",
    "print 'The feedback shift register length:',m\n",
    "Eb_No = 10##Energy to noise density ratio\n",
    "J_P = PG/Eb_No##Jamming Margin\n",
    "print 'Jamming Margin in dB:',10*log10(J_P)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example9.4 page 469"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of bits per symbol K = 2\n",
      "Number of MFSK tones M= 4\n",
      "Period of the PN sequence N = 15\n",
      "length of PN sequence per hop k = 3\n",
      "Total number of frequency hops = 8\n"
     ]
    }
   ],
   "source": [
    "#Slow and Fast Frequency Hopping\n",
    "K =2# #number of bits per symbol\n",
    "M = 2**K# #Number of MFSK tones\n",
    "N = 2**M-1##Period of the PN sequence\n",
    "k = 3# #length of PN sequence per hop\n",
    "print 'number of bits per symbol K =',K\n",
    "print 'Number of MFSK tones M=',M\n",
    "print 'Period of the PN sequence N =',N\n",
    "print 'length of PN sequence per hop k =',k\n",
    "print 'Total number of frequency hops =',2**k"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example9.5 page 470"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nreSLO92IZLTJSIOebEmTgb1SnPpJ8oGZmaR0f/LxZrZc0leAyZLmmdlzqRqWM59+Iu3C66+XbIiq\norbW+Zevvz67TTITJ7oSdB07llxaxZNcuPu3vw1bTelJrAXdckvYShzHHw+ffAIzZpQnWWNo+fSD\nvPg1Zva+pL2Bp82swWhZSSOADWb2hxTnyppw7d574R//qIyal1HAzBXv/tvfstsOf/750K8fXBKp\ne7/48uabrvDP4sUuN08lM2MGnHsuvPNOeXfhNsTPf+5CN//0p/KPXc6Eaw8BXw+efx3YLlpYUlNJ\nzYPnuwJ9gUjchPrY/OIiZe9bXrPG7WT0aReKR/furjbs00+HraT0hJF2IRO1tc7lFIe0DIV8bDcA\nfSQtAHoHx0hqKylRu2Yv4DlJM4FpwCNmNqkQwcVg1SqXHvW888JWUlkMGeJilj/5pOF248bB174G\nLVIG+XrypRpi9rdscZFKYUft1KdTJ9hvP5dDKurkbfTNbI2ZnWpmnc2sr5mtC15/z8zOCJ6/Y2aH\nBY+Dzew3xRJeCGPHutjy5s3DVlJZtGsHRxzhikc3RBRC7SqRRFqGjz8OW0npePJJl/OmS5ewlWxP\nXKKoInSDVD680SkdmWabb7/tis/361c+TdVCmzZw3HFw//1hKykdUd7MN3AgPPYYfPRR2EoapuqM\n/vz5biPFqaeGraQyOe88eO45WLky9fmRI922+R13LK+uaiEus818WL/e1b0IK+1CJvbc04XPjh8f\ntpKGqTqjX1fnfM8+7UJpaNbMbZgZO3b7c2b+LqvU9O8PL79cmWkZ7rvPGdVWrcJWkp44rKtUldH3\naRfKQ7ov/osvuovtkUeWX1O10KSJC2eMc+HudMRhwnDmmW7vz+LFYStJT1UZ/eeec4u3PXqEraSy\nOeUUWLbMFapOxu+ALg+VWFxlyRKX4+bMM8NW0jA77+xCkaOclqGqjL7P9VIeGjf+Yodogs8+cxvi\nfNqF0nPSSa4EZSXtNh81CgYMcLluok7iohvVtAxVY/Q/+cSlYh0yJGwl1UFt7ZcLdz/6qKvruu++\n4eqqBhKFu6PuW86WuK0FHXecyy316qthK0lNIfn0L5D0pqStktJmnJDUT9I8SW9Juirf8Qrl4Ydd\nDHm7dmEpqC4OPdRtvnr2WXccpx9tJZC46G7dGraSwpkxw03ajj8+bCXZIUV7QbeQmf5s4Fzg2XQN\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f228c011a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2287962410>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy import ones,sin,arange,hstack,nditer,pi\n",
    "%matplotlib inline\n",
    "from matplotlib.pyplot import plot,subplot,xlabel,ylabel,title,show\n",
    "\n",
    "\n",
    "#Figure 9.4:Generation of waveforms in DS/BPSK spread spectrum transmitter\n",
    "t = range(0,13+1)\n",
    "N = 7#\n",
    "wt = arange(0,0.01+1,0.01)\n",
    "bt = hstack([[1*xx for xx in ones(N)],[-1*yy for yy in ones(N)]])\n",
    "ct = [0,0,1,1,1,0,1,0,0,1,1,1,0,1]\n",
    "ct_polar = [-1,-1,1,1,1,-1,1,-1,-1,1,1,1,-1,1]\n",
    "mt = [a*b for a,b in nditer([bt,ct_polar])]\n",
    "Carrier = [2*sin(wtt*2*pi) for wtt in wt]\n",
    "\n",
    "st = []#\n",
    "for i in range(0,len(mt)):\n",
    "  st = st+[mt[i]*Cr for Cr in Carrier]\n",
    "\n",
    "subplot(3,1,1)\n",
    "plot(t,bt)\n",
    "xlabel('                                                               t')\n",
    "title('Data b(t)')\n",
    "subplot(3,1,2)\n",
    "plot(t,ct_polar)\n",
    "xlabel('                                                                t')\n",
    "title('Spreading code c(t)')\n",
    "subplot(3,1,3)\n",
    "plot(t,mt)\n",
    "xlabel('                                                               t')\n",
    "title('Product Signal m(t)')\n",
    "show()\n",
    "subplot(3,1,1)\n",
    "plot(t,mt)\n",
    "xlabel('                                                                t')\n",
    "title('Product Signal m(t)')\n",
    "subplot(3,1,2)\n",
    "plot(Carrier)\n",
    "xlabel('                                                               t')\n",
    "title('Carrier Signal')\n",
    "subplot(3,1,3)\n",
    "plot(st)\n",
    "xlabel('                                                               t')\n",
    "title('DS/BPSK signal s(t)')\n",
    "show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}