You are on page 1of 120

Scilab Code for Digital Communication, by Simon Haykin 1

Created by Prof. R. Senthilkumar Institute of Road and Transport Technology rsenthil signalprocess@in.com Cross-Checked by Prof. Saravanan Vijayakumaran, IIT Bombay sarva@ee.iitb.ac.in 23 August 2010

by a grant from the National Mission on Education through ICT, http://spoken-tutorial.org/NMEICT-Intro. This Text Book Companion and Scilab codes written in it can be downlaoded from the website www.scilab.in

1 Funded

Book Details
Authors: Simon Haykins Title: Digital Communication Publisher: Willey India Edition: Wiley India Edition Year: Reprint 2010 Place: Delhi ISBN: 9788126508242

Scilab numbering policy used in this document and the relation to the above book. Prb Problem (Unsolved problem) Exa Example (Solved example) Tab Table ARC Additionally Required Code (Scilab Code that is not part of the above book but required to solve a particular Example) AE Appendix to Example(Scilab Code that is an Appednix to a particular Example of the above book) CF Code for Figure(Scilab code that is used for plotting the respective gure of the above book ) For example, Prb 4.56 means Problem 4.56 of the above book. Exa 3.51 means solved example 3.51 of this book. Sec 2.3 means a scilab code whose theory is explained in Section 2.3 of the book.

Contents
List of Scilab Codes 1 Introduction 2 Fundamental Limit on Performance 3 Detection and Estimation 4 Sampling Process 5 Waveform Coding Techniques 6 Baseband Shaping for Data Transmission 7 Digital Modulation Techniques 8 Error-Control Coding 9 Spread-Spectrum Modulation 4 2 5 14 27 31 39 59 87 94

List of Scilab Codes


CF 1.2 Exa 2.1 Exa 2.2 Exa 2.3 Exa 2.4 Exa 2.5 Exa 2.6 Exa 2.7 Exa 3.1 Exa 3.2 Exa 3.3 Exa 3.4 Exa 3.6 CF 3.29 Exa 4.1 Exa 4.3 Exa 5.1 Exa 5.2 Digital Representation of Analog signal . . . . . . . . Entropy of Binary Memoryless source . . . . . . . . . Second order Extension of Discrete Memoryless Source Entropy, Average length, Variance of Human Encoding Entropy, Average length, Variance of Human Encoding Binary Symmetric Channel . . . . . . . . . . . . . . . Channel Capacity of a Binary Symmetric Channel . . Signicance of the Channel Coding theorem . . . . . . Orthonormal basis for given set of signals . . . . . . . M ARY Signaling . . . . . . . . . . . . . . . . . . . . Matched Filter output for RF pulse . . . . . . . . . . Matched Filter output for Noise-like signal . . . . . . . Linear Predictor of Order one . . . . . . . . . . . . . . Implementation of LMS Adaptive Filter algorithm . . Bound on Aliasing error for Time-shifted sinc pulse . . Equalizier to compensate Aperture eect . . . . . . . . Average Transmitted Power for PCM . . . . . . . . . Comparision of M-ary PCM with ideal system (Channel Capacity Theorem) . . . . . . . . . . . . . . . . . . . Exa 5.3 Signal-to-Quantization Noise Ratio of PCM . . . . . . Exa 5.5 Output Signal-to-Noise ratio for Sinusoidal Modulation CF 5.13a (a) u-Law companding . . . . . . . . . . . . . . . . . . CF 5.13b (b) A-law companding . . . . . . . . . . . . . . . . . . Exa 6.1 Bandwidth Requirements of the T1 carrier . . . . . . . CF 6.1a (a) Nonreturn-to-zero unipolar format . . . . . . . . . CF 6.1b (b) Nonreturn-to-zero polar format . . . . . . . . . . . CF 6.1c (c) Nonreturn-to-zero bipolar format . . . . . . . . . . Exa 6.2 Duobinary Encoding . . . . . . . . . . . . . . . . . . . 4 2 5 5 7 8 9 10 10 14 16 19 20 22 24 27 28 31 31 32 34 36 36 39 40 40 42 44

Exa 6.3 CF 6.4 CF 6.6b CF 6.7b CF 6.9 CF 6.15

Generation of bipolar output for duobinary coder . . . Power Spectra of dierent binary data formats . . . . (b) Ideal solution for zero ISI . . . . . . . . . . . . . . (b) Practical solution: Raised Cosine . . . . . . . . . Frequency response of duobinary conversion lter . . . Frequency response of modied duobinary conversion lter . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exa 7.1 QPSK Waveform . . . . . . . . . . . . . . . . . . . . . CF 7.1 Waveform of Dierent Digital Modulation techniques . Exa 7.2 MSK waveforms . . . . . . . . . . . . . . . . . . . . . CF 7.2 Signal Space diagram for coherent BPSK . . . . . . . Tab 7.3 Illustration the generation of DPSK signal . . . . . . . CF 7.4 Signal Space diagram for coherent BFSK . . . . . . . CF 7.6 Signal space diagram for coherent QPSK waveform . . Tab 7.6 Bandwidth eciency of M ary PSK signals . . . . . . Tab 7.7 Bandwidth eciency of M ary FSK signals . . . . . . CF 7.29 Power Spectra of BPSK and BFSK signals . . . . . . . CF 7.30 Power Spectra of QPSK and MSK signals . . . . . . . CF 7.31 Power spectra of M-ary PSK signals . . . . . . . . . . CF 7.41 Matched Filter output of rectangular pulse . . . . . . Exa 8.1 Repetition Codes . . . . . . . . . . . . . . . . . . . . . Exa 8.2 Hamming Codes . . . . . . . . . . . . . . . . . . . . . Exa 8.3 Hamming Codes Revisited . . . . . . . . . . . . . . . . Exa 8.4 Encoder for the (7,4) Cyclic Hamming Code . . . . . . Exa 8.5 Syndrome calculator for the(7,4) Cyclic Hamming Code Exa 8.6 Reed-Solomon Codes . . . . . . . . . . . . . . . . . . . Exa 8.7 Convolutional Encoding - Time domain approach . . . Exa 8.8 Convolutional Encoding Transform domain approach Exa 8.11 Fano metric for binary symmetric channel using convolutional code . . . . . . . . . . . . . . . . . . . . . . . Exa 9.1 PN sequence generation . . . . . . . . . . . . . . . . . Exa 9.2 Maximum length sequence property . . . . . . . . . . Exa 9.3 Processing gain, PN sequence length, Jamming margin in dB . . . . . . . . . . . . . . . . . . . . . . . . . . . Exa 9.4Example9.5 Fast Frequency hopping: FH/MFSK . . . . Slow and Fig 9.4Figure9.6 Sequence Spread Coherent BPSK . . . . . . . . Direct ARC 1 Alaw . . . . . . . . . . . . . . . . . . . . . . . . . . . ARC 2 auto correlation . . . . . . . . . . . . . . . . . . . . . 5

47 48 49 51 53 55 59 61 63 68 70 72 74 74 76 77 78 80 82 87 87 88 89 90 90 91 92 93 94 95 97 100 100 103 106

ARC ARC ARC ARC ARC ARC ARC ARC ARC

3 4 5 5 6 7 8 9 10

Convolutional Coding Hamming Distance . . Hamming Encode . . invmulaw . . . . . . . PCM Encoding . . . . PCM Transmission . . sinc new . . . . . . . . uniform pcm . . . . . xor . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

107 108 108 110 110 111 111 112 112

List of Figures
1.1 1.2 2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 5.1 5.2 5.3 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 Figure1.2a . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure1.2b . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . Example2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . Example2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . Example3.1a . Example3.1b . Example3.2 . Example3.3 . Example3.4 . Figure3.29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 6 11 13 16 17 19 21 23 26 28 30 33 37 38 41 43 45 50 52 54 56 58

Example4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . Example4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . Example5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure5.13a . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure5.13b . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure6.1a Figure6.1b Figure6.1c Figure6.4 Figure6.6 Figure6.7 Figure6.9 Figure6.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 9.1 9.2 9.3 9.4 9.5

Example7.1 Figure7.1a . Figure7.1b . Figure7.1c . Example7.2 Figure7.2 . Figure 7.4 . Figure7.6 . Figure7.12 . Figure7.29 . Figure7.30 . Figure7.31 . Figure7.41a Figure7.41b

. . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

61 64 65 66 69 70 73 75 77 79 81 83 85 86 98 99 103 104 105

Example9.2a . Example9.2b . Figure9.6a . . Figure9.6b . . Figure10.12 .

Chapter 1 Introduction
Scilab code CF 1.2 Digital Representation of Analog signal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// C a p t i o n : D i g i t a l R e p r e s e n t a t i o n o f Analog s i g n a l // F i g u r e 1 . 2 : Analog t o D i g i t a l C o n v e r s i o n clear ; close ; clc ; t = -1:0.01:1; x = 2* sin (( %pi /2) * t ) ; dig_data = [0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,1] // figure a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds =[ -2 , -3;2 ,3] plot (t , x ) plot2d3 ( gnn ,0.5 , sqrt (2) , -9) plot2d3 ( gnn , -0.5 , - sqrt (2) , -9) plot2d3 ( gnn ,1 ,2 , -9) plot2d3 ( gnn , -1 , -2 , -9) xlabel (

Time ) 21 ylabel ( 2

Figure 1.1: Figure1.2a

22 23 24 25 26 27 28

Voltage ) title ( Analog Waveform ) // figure a = gca () ; a . data_bounds = [0 ,0;21 ,5]; plot2d2 ([1: length ( dig_data ) ] , dig_data ,5) title ( D i g i t a l R e p r e s e n t a t i o n )

Figure 1.2: Figure1.2b

Chapter 2 Fundamental Limit on Performance


Scilab code Exa 2.1 Entropy of Binary Memoryless source
1 // C a p t i o n : Ent ropy o f B i n a r y M e m o r y l e s s s o u r c e 2 // Example 2 . 1 : Entropy o f B i n a r y M e m o r y l e s s S o u r c e 3 // p a g e 18 4 clear ; 5 close ; 6 clc ; 7 Po = 0:0.01:1; 8 H_Po = zeros (1 , length ( Po ) ) ; 9 for i = 2: length ( Po ) -1 10 H_Po ( i ) = - Po ( i ) * log2 ( Po ( i ) ) -(1 - Po ( i ) ) * log2 (1 - Po ( i

));
11 end 12 // p l o t 13 plot2d ( Po , H_Po ) 14 xlabel ( Symbol P r o b a b i l i t y , Po ) 15 ylabel ( H( Po ) ) 16 title ( Entropy f u n c t i o n H( Po ) ) 17 plot2d3 ( gnn ,0.5 ,1)

Scilab code Exa 2.2 Second order Extension of Discrete Memoryless Source 5

Figure 2.1: Example2.1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

// c a p t i o n : S e c o n d o r d e r E x t e n s i o n o f D i s c r e t e Memoryless Source // Example 2 . 2 : Entropy o f D i s c r e t e M e m o r y l e s s s o u r c e // p a g e 19 clear ; clc ; P0 = 1/4; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S0 P1 = 1/4; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S1 P2 = 1/2; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S2 H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) ; disp ( Entropy o f D i s c r e t e M e m o r y l e s s S o u r c e ) disp ( b i t s , H_Ruo ) // S e c o n d o r d e r E x t e n s i o n o f d i s c r e t e M e m o r y l e s s source P_sigma = [ P0 * P0 , P0 * P1 , P0 * P2 , P1 * P0 , P1 * P1 , P1 * P2 , P2 * P0 , P2 * P1 , P2 * P2 ]; disp ( T a b l e 2 . 1 A l p h a b e t P a r t i c u l a r s o f Secondo r d e r Extension o f a D i s c r e t e Memoryless Source ) disp ( ) disp ( S e q u e n c e o f Symbols o f r u o 2 : ) disp ( S0 S0 S0 S1 S0 S2 S1 S0 S1 S1 S1 S2 S2 S0 S2 S1 S2 S2 ) disp ( P_sigma , P r o b a b i l i t y p ( s i g m a ) , i = 0 , 1 . . . . . 8 ) disp ( ) disp ( ) H_Ruo_Square =0; for i = 1: length ( P_sigma ) H_Ruo_Square = H_Ruo_Square + P_sigma ( i ) * log2 (1/ P_sigma ( i ) ) ; end disp ( b i t s , H_Ruo_Square , H( R u o S q u a r e )= ) disp ( H( R u o S q u a r e ) = 2H( Ruo ) )

16 17 18 19

20 21 22 23 24 25 26

Scilab code Exa 2.3 Entropy,Average length, Variance of Human Encoding


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

22 23

// C a p t i o n : Entropy , A v e r a g e l e n g t h , V a r i a n c e o f Huffman E n c o d i n g // Example 2 . 3 : Huffman E n c o d i n g : C a l c u l a t i o n o f // ( a ) A v e r a g e code word l e n g t h L // ( b ) E ntropy H clear ; clc ; P0 = 0.4; // p r o b a b i l i t y o f c o d e w o r d 0 0 L0 = 2; // l e n g t h o f c o d e w o r d S0 P1 = 0.2; // p r o b a b i l i t y o f c o d e w o r d 1 0 L1 = 2; // l e n g t h o f c o d e w o r d S1 P2 = 0.2; // p r o b i l i t y o f c o d e w o r d 1 1 L2 = 2; // l e n g t h o f c o d e w o r d S2 P3 = 0.1; // p r o b i l i t y o f c o d e w o r d 0 1 0 L3 = 3; // l e n g t h o f c o d e w o r d S3 P4 =0.1; // p r o b i l i t y o f c o d e w o r d 0 1 1 L4 = 3; // l e n g t h o f c o d e w o r d S4 L = P0 * L0 + P1 * L1 + P2 * L2 + P3 * L3 + P4 * L4 ; H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) + P3 * log2 (1/ P3 ) + P4 * log2 (1/ P4 ) ; disp ( b i t s ,L , A v e r a g e code word Length L ) disp ( b i t s , H_Ruo , Entropy o f Huffman c o d i n g r e s u l t H) disp ( p e r c e n t ,((L - H_Ruo ) / H_Ruo ) *100 , A v e r a g e code word l e n g t h L e x c e e d s t h e e n t r o p y H( Ruo ) by o n l y ) sigma_1 = P0 *( L0 - L ) ^2+ P1 *( L1 - L ) ^2+ P2 *( L2 - L ) ^2+ P3 *( L3 - L ) ^2+ P4 *( L4 - L ) ^2; disp ( sigma_1 , V a r i n a c e o f Huffman c o d e ) Scilab code Exa 2.4 Entropy, Average length, Variance of Human Encoding

// C a p t i o n : Entropy , A v e r a g e l e n g t h , V a r i a n c e o f Huffman E n c o d i n g 8

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

// Example2 . 4 : I l l u s t r a t i n g n o n u n i q u e s s o f t h e Huffman E n c o d i n g // C a l c u l a t i o n o f ( a ) A v e r a g e code word l e n g t h L ( b ) Entr opy H clear ; clc ; P0 = 0.4; // p r o b a b i l i t y o f c o d e w o r d 1 L0 = 1; // l e n g t h o f c o d e w o r d S0 P1 = 0.2; // p r o b a b i l i t y o f c o d e w o r d 0 1 L1 = 2; // l e n g t h o f c o d e w o r d S1 P2 = 0.2; // p r o b i l i t y o f c o d e w o r d 0 0 0 L2 = 3; // l e n g t h o f c o d e w o r d S2 P3 = 0.1; // p r o b i l i t y o f c o d e w o r d 0 0 1 0 L3 = 4; // l e n g t h o f c o d e w o r d S3 P4 =0.1; // p r o b i l i t y o f c o d e w o r d 0 0 1 1 L4 = 4; // l e n g t h o f c o d e w o r d S4 L = P0 * L0 + P1 * L1 + P2 * L2 + P3 * L3 + P4 * L4 ; H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) + P3 * log2 (1/ P3 ) + P4 * log2 (1/ P4 ) ; disp ( b i t s ,L , A v e r a g e code word Length L ) disp ( b i t s , H_Ruo , Entropy o f Huffman c o d i n g r e s u l t H) sigma_2 = P0 *( L0 - L ) ^2+ P1 *( L1 - L ) ^2+ P2 *( L2 - L ) ^2+ P3 *( L3 - L ) ^2+ P4 *( L4 - L ) ^2; disp ( sigma_2 , V a r i n a c e o f Huffman c o d e ) Scilab code Exa 2.5 Binary Symmetric Channel

1 // C a p t i o n : B i n a r y Symmetric Channel 2 // Example2 . 5 : B i n a r y Symmetric Channel 3 clear ; 4 clc ; 5 close ; 6 p = 0.4; // p r o b a b i l i t y o f c o r r e c t r e c e p t i o n 7 pe = 1 - p ; // p r o b i l i t y o f e r r o r r e c e p t i o n ( i . e )

transition probility 8 disp (p , p r o b i l i t y o f 0 r e c e i v i n g i f a 0 i s s e n t = p r o b i l i t y o f 1 r e c e i v i n g i f a 1 i s s e n t= ) 9

9 10

disp ( T r a n s i t i o n p r o b i l i t y ) disp ( pe , p r o b i l i t y o f 0 r e c e i v i n g i f a 1 i s s e n t = p r o b i l i t y o f 1 r e c e i v i n g i f a 0 i s s e n t= ) Scilab code Exa 2.6 Channel Capacity of a Binary Symmetric Channel

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n : Channel C a p a c i t y o f a B i n a r y Symmetric Channel // Example2 . 6 : Channel C a p a c i t y o f B i n a r y Symmetri Channel clear ; close ; clc ; p = 0:0.01:0.5; for i =1: length ( p ) if ( i ~=1) C ( i ) = 1+ p ( i ) * log2 ( p ( i ) ) +(1 - p ( i ) ) * log2 ((1 - p ( i ) ) ) ; elseif ( i ==1) C ( i ) =1; elseif ( i == length ( p ) ) C ( i ) =0; end end plot2d (p ,C ,5) xlabel ( T r a n s i t i o n P r o b i l i t y , p ) ylabel ( Channel C a p a c i t y , C ) title ( F i g u r e 2 . 1 0 V a r i a t i o n o f c h a n n e l c a p a c i t y o f a binary symmetric channel with t r a n s i t i o n probility p ) Scilab code Exa 2.7 Signicance of the Channel Coding theorem

// C a p t i o n : S i g n i f i c a n c e o f t h e Channel Coding t h e o r e m // Example2 . 7 : S i g n i f i c a n c e o f t h e c h a n n e l c o d i n g theorem 3 // A v e r a g e P r o b i l i t y o f E r r o r o f R e p e t i t i o n Code


1 2

10

Figure 2.2: Example2.6

11

4 clear ; 5 clc ; 6 close ; 7 p =10^ -2; 8 pe_1 = p ; // A v e r a g e P r o b i l i t y

o f e r r o r f o r code r a t e

r = 1 9 pe_3 = 3* p ^2*(1 - p ) + p ^3; // p r o b i l i t y o f e r r o r f o r c o d e r a t e r =1/3 10 pe_5 = 10* p ^3*(1 - p ) ^2+5* p ^4*(1 - p ) + p ^5; // e r r o r f o r c o d e r a t e r =1/5 11 pe_7 = ((7*6*5) /(1*2*3) ) * p ^4*(1 - p ) ^3+(42/2) * p ^5*(1 - p ) ^2+7* p ^6*(1 - p ) + p ^7; // e r r o r f o r c o d e r a t e r =1/7 12 r = [1 ,1/3 ,1/5 ,1/7]; 13 pe = [ pe_1 , pe_3 , pe_5 , pe_7 ]; 14 a = gca () ; 15 a . data_bounds =[0 ,0;1 ,0.01]; 16 plot2d (r , pe ,5) 17 xlabel ( Code r a t e , r ) 18 ylabel ( A v e r a g e P r o b a b i l i t y o f e r r o r , Pe ) 19 title ( F i g u r e 2 . 1 2 I l l u s t r a t i n g s i g n i f i c a n c e o f t h e channel coding theorem ) 20 legend ( R e p e t i t i o n c o d e s ) 21 xgrid (1) 22 disp ( T a b l e 2 . 3 A v e r a g e P r o b i l i t y o f E r r o r f o r R e p e t i t i o n Code ) 23 disp ( ) 24 disp (r , Code Rate , r =1/n ,pe , A v e r a g e P r o b i l i t y o f E r r o r , Pe ) 25 disp ( )

12

Figure 2.3: Example2.7

13

Chapter 3 Detection and Estimation


Scilab code Exa 3.1 Orthonormal basis for given set of signals
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

// C a p t i o n : O r t h o n o r m a l b a s i s f o r g i v e n s e t o f s i g n a l s // Example3 . 1 : F i n d i n g o r t h o n o r m a l b a s i s f o r t h e g i v e n signals // u s i n g GramSchmidt o r t h o g o n a l i z a t i o n p r o c e d u r e clear ; close ; clc ; T = 1; t1 = 0:0.01: T /3; t2 = 0:0.01:2* T /3; t3 = T /3:0.01: T ; t4 = 0:0.01: T ; s1t = [0 , ones (1 , length ( t1 ) -2) ,0]; s2t = [0 , ones (1 , length ( t2 ) -2) ,0]; s3t = [0 , ones (1 , length ( t3 ) -2) ,0]; s4t = [0 , ones (1 , length ( t4 ) -2) ,0]; t5 = 0:0.01: T /3; phi1t = sqrt (3/ T ) *[0 , ones (1 , length ( t5 ) -2) ,0]; t6 = T /3:0.01:2* T /3; phi2t = sqrt (3/ T ) *[0 , ones (1 , length ( t6 ) -2) ,0]; t7 = 2* T /3:0.01: T ; phi3t = sqrt (3/ T ) *[0 , ones (1 , length ( t7 ) -2) ,0]; // 14

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

figure title ( F i g u r e 3 . 4 ( a ) S e t o f s i g n a l s t o be orthonormalized ) subplot (4 ,1 ,1) a = gca () ; a . data_bounds = [0 ,0;2 ,2]; plot2d2 ( t1 , s1t ,5) xlabel ( t ) ylabel ( s 1 ( t ) ) subplot (4 ,1 ,2) a = gca () ; a . data_bounds = [0 ,0;2 ,2]; plot2d2 ( t2 , s2t ,5) xlabel ( t ) ylabel ( s 2 ( t ) ) subplot (4 ,1 ,3) a = gca () ; a . data_bounds = [0 ,0;2 ,2]; plot2d2 ( t3 , s3t ,5) xlabel ( t ) ylabel ( s 3 ( t ) ) subplot (4 ,1 ,4) a = gca () ; a . data_bounds = [0 ,0;2 ,2]; plot2d2 ( t4 , s4t ,5) xlabel ( t ) ylabel ( s 4 ( t ) ) // figure title ( F i g u r e 3 . 4 ( b ) The r e s u l t i n g s e t o f o r t h o n o r m a l functions ) subplot (3 ,1 ,1) a = gca () ; a . data_bounds = [0 ,0;2 ,4]; plot2d2 ( t5 , phi1t ,5) xlabel ( t ) ylabel ( p h i 1 ( t ) ) subplot (3 ,1 ,2) 15

Figure 3.1: Example3.1a


59 60 61 62 63 64 65 66 67 68 69

a = gca () ; a . data_bounds = [0 ,0;2 ,4]; plot2d2 ( t6 , phi2t ,5) xlabel ( t ) ylabel ( p h i 2 ( t ) ) subplot (3 ,1 ,3) a = gca () ; a . data_bounds = [0 ,0;2 ,4]; plot2d2 ( t7 , phi3t ,5) xlabel ( t ) ylabel ( p h i 3 ( t ) )

16

Figure 3.2: Example3.1b

17

Scilab code Exa 3.2 M ARY Signaling


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n :M ARY S i g n a l i n g // Example3 . 2 : M ARY SIGNALING // S i g n a l c o n s t e l l a t i o n and R e p r e s e n t a t i o n o f d i b i t s clear ; close ; clc ; a =1; // a m p l i t u d e =1 T =1; // Symbol d u r a t i o n i n s e c o n d s // Four m e s s a g e p o i n t s Si1 = [( -3/2) * a * sqrt ( T ) ,( -1/2) * a * sqrt ( T ) ,(3/2) * a * sqrt ( T ) ,(1/2) * a * sqrt ( T ) ]; a = gca () ; a . data_bounds = [ -2 , -0.5;2 ,0.5] plot2d ( Si1 ,[0 ,0 ,0 ,0] , -10) xlabel ( p h i 1 ( t ) ) title ( F i g u r e 3 . 8 ( a ) S i g n a l c o n s t e l l a t i o n ) xgrid (1) disp ( F i g u r e 3 . 8 ( b ) . R e p r e s e n t a t i o n o f t r a n s m i t t e d dibits ) disp ( Loc . o f meg . p o i n t | ( 3/2) a s q r t (T) | ( 1 / 2 ) a s q r t ( T) | ( 3 / 2 ) a s q r t (T) | ( 1 / 2 ) a s q r t (T) ) disp ( ) disp ( T r a n s m i t t e d d i b i t | 00 | | 11 | 10 ) disp ( ) disp ( ) disp ( F i g u r e 3 . 8 ( c ) . D e c i s i o n i n t e r v a l s f o r received dibits ) disp ( R e c e i v e d d i b i t | 00 | | 11 | 10 ) disp (

20 21 22 23 24 25

01

01

) 26 disp ( I n t e r v a l on p h i 1 ( t ) | x1 < a . s q r t (T) | a . s q r t ( 18

Figure 3.3: Example3.2 T)<x1 <0| 0<x1<a . s q r t (T) | a . s q r t (T)<x1 ) Scilab code Exa 3.3 Matched Filter output for RF pulse
1 2 3 4 5 6 7 8

// C a p t i o n : Matched F i l t e r o u t p u t f o r RF p u l s e // Example3 . 3 : MATCHED FILTER FOR RF PULSE clear ; close ; clc ; fc =4; // c a r r i e r f r e q u e n c y i n Hz T =1; t1 = 0:0.01: T ; 19

9 10 11 12 13 14 15 16 17 18 19 20

phit = sqrt (2/ T ) * cos (2* %pi * fc * t1 ) ; hopt = phit ; phiot = convol ( phit , hopt ) ; phiot = phiot / max ( phiot ) ; t2 = 0:0.01:2* T ; subplot (2 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -1;1 ,1]; plot2d ( t1 , phit ) ; xlabel ( t ) ylabel ( phi ( t ) ) title ( F i g u r e 3 . 1 3 ( a ) RF p u l s e i n p u t ) subplot (2 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -1;1 ,1]; plot2d ( t2 , phiot ) ; xlabel ( t ) ylabel ( phi0 ( t ) ) title ( F i g u r e 3 . 1 3 ( b ) Matched F i l t e r o u t p u t ) Scilab code Exa 3.4 Matched Filter output for Noise-like signal

21

22 23 24 25 26 27 28 29

30

31

// C a p t i o n : Matched F i l t e r o u t p u t f o r N o i s e l i k e signal 2 // Example3 . 4 : Matched F i l t e r o u t p u t f o r n o i s e l i k e


1

20

Figure 3.4: Example3.3

21

3 4 5 6 7 8 9 10 11 12 13 14 15 16

input clear ; close ; clc ; phit =0.1* rand (1 ,10 , u n i f o r m ) ; hopt = phit ; phi0t = convol ( phit , hopt ) ; phi0t = phi0t / max ( phi0t ) ; subplot (2 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -1;1 ,1]; plot2d ([1: length ( phit ) ] , phit ) ; xlabel ( t ) ylabel ( phi ( t ) ) title ( F i g u r e 3 . 1 6 ( a ) N o i s e L i k e i n p u t s i g n a l ) subplot (2 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -1;1 ,1]; plot2d ([1: length ( phi0t ) ] , phi0t ) ; xlabel ( t ) ylabel ( phi0 ( t ) ) title ( F i g u r e 3 . 1 6 ( b ) Matched F i l t e r o u t p u t ) Scilab code Exa 3.6 Linear Predictor of Order one

17

18 19 20 21 22 23 24 25

26

27

22

Figure 3.5: Example3.4

23

1 2 3 4 5 6 7 8 9 10 11 12 13 14

// C a p t i o n : L i n e a r P r e d i c t o r o f Order one // Example3 . 6 : LINEAR PREDICTION : P r e d i c t o r o f Order One clear ; close ; clc ; Rxx = [0.6 1 0.6]; h01 = Rxx (3) / Rxx (2) ; // Rxx ( 2 ) = Rxx ( 0 ) , Rxx ( 3 ) = Rxx ( 1 ) sigma_E = Rxx (2) - h01 * Rxx (3) ; sigma_X = Rxx (2) ; disp ( sigma_E , P r e d i c t o r e r r o r v a r i a n c e ) disp ( sigma_X , P r e d i c t o r i n p u t v a r i a n c e ) if ( sigma_X > sigma_E ) disp ( The p r e d i c t o r e r r o r v a r i a n c e i s l e s s t h a n the variance of the p r e d i c t o r input ) end Scilab code CF 3.29 Implementation of LMS Adaptive Filter algorithm

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

// I m p l e m e n t a t i o n o f LMS ADAPTIVE FILTER // For n o i s e c a n c e l l a t i o n a p p l i c a t i o n clear ; clc ; close ; order = 18; t =0:0.01:1; x = sin (2* %pi *5* t ) ; noise = rand (1 , length ( x ) ) ; x_n = x + noise ; ref_noise = noise * rand (10) ; w = zeros ( order ,1) ; mu = 0.01*( sum ( x .^2) / length ( x ) ) ; N = length ( x ) ; for k =1:1010 for i = 1: N - order -1 buffer = ref_noise ( i : i + order -1) ; desired ( i ) = x_n ( i ) - buffer * w ; 24

19 w = w +( buffer * mu * desired ( i ) ) ; 20 end 21 end 22 subplot (4 ,1 ,1) 23 plot2d (t , x ) 24 title ( O r i g n a l I n p u t S i g n a l ) 25 subplot (4 ,1 ,2) 26 plot2d (t , noise ,2) 27 title ( random n o i s e ) 28 subplot (4 ,1 ,3) 29 plot2d (t , x_n ,5) 30 title ( S i g n a l+n o i s e ) 31 subplot (4 ,1 ,4) 32 plot ( desired ) 33 title ( n o i s e removed s i g n a l )

25

Figure 3.6: Figure3.29

26

Chapter 4 Sampling Process


Scilab code Exa 4.1 Bound on Aliasing error for Time-shifted sinc pulse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// C a p t i o n : Bound on A l i a s i n g e r r o r f o r Time s h i f t e d sinc pulse // Example4 . 1 : Maximum bound on a l i a s i n g e r r o r f o r sinc pulse clc ; close ; t = -1.5:0.01:2.5; g = 2* sinc_new (2* t -1) ; disp ( max ( g ) , A l i a s i n g e r r o r c a n n o t e x c e e d max | g ( t ) | ) f = -1:0.01:1; G = [0 ,0 ,0 ,0 , ones (1 , length ( f ) ) ,0 ,0 ,0 ,0]; f1 = -1.04:0.01:1.04; subplot (2 ,1 ,1) a = gca () ; a . data_bounds =[ -3 , -1;2 ,2]; a . x_location = o r i g i n a . y_location = o r i g i n plot2d (t , g ) xlabel ( t ) ylabel ( g( t ) ) title ( F i g u r e 4 . 8 ( a ) S i n c p u l s e g ( t ) ) subplot (2 ,1 ,2) 27

Figure 4.1: Example4.1


21 22 23 24 25 26 27 28

a = gca () ; a . data_bounds =[ -2 ,0;2 ,2]; a . x_location = o r i g i n a . y_location = o r i g i n plot2d2 ( f1 , G ) xlabel ( f ) ylabel ( G( f ) ) title ( F i g u r e 4 . 8 ( b ) A m p l i t u d e s p e c t r u m |G( f ) | ) Scilab code Exa 4.3 Equalizier to compensate Aperture eect

// C a p t i o n : E q u a l i z e r t o c o m p e n s a t e A p e r t u r e e f f e c t 28

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

// Example4 . 3 : E q u a l i z e r t o Compensate f o r a p e r t u r e effect clc ; close ; T_Ts = 0.01:0.01:0.6; //E = 1 / ( s i n c n e w ( 0 . 5 T Ts ) ) ; E (1) =1; for i = 2: length ( T_Ts ) E ( i ) = (( %pi /2) * T_Ts ( i ) ) /( sin (( %pi /2) * T_Ts ( i ) ) ) ; end a = gca () ; a . data_bounds = [0 ,0.8;0.8 ,1.2]; plot2d ( T_Ts ,E ,5) xlabel ( Duty c y c l e T/ Ts ) ylabel ( 1/ s i n c ( 0 . 5 ( T/ Ts ) ) ) title ( F i g u r e 4 . 1 6 N o r m a l i z e d e q u a l i z a t i o n ( t o c o m p e n s a t e f o r a p e r t u r e e f f e c t ) p l o t t e d v e r s u s T/ Ts )

29

Figure 4.2: Example4.3

30

Chapter 5 Waveform Coding Techniques


Scilab code Exa 5.1 Average Transmitted Power for PCM
1 // C a p t i o n : A v e r a g e T r a n s m i t t e d Power f o r PCM 2 // Example5 . 1 : A v e r a g e T r a n s m i t t e d Power o f PCM 3 // Page 187 4 clear ; 5 clc ; 6 sigma_N = input ( E n t e r t h e n o i s e v a r i a n c e ) ; 7 k = input ( E n t e r t h e s e p a r a t i o n c o n s t a n t f o r on o f f 8 9 10 11 12 13 14 15 16

s i g n a l i n g ); M = input ( E n t e r t h e number o f d i s c r e t e a m p l i t u d e l e v e l s f o r NRZ p o l a r ) ; disp ( The a v e r a g e t r a n s m i t t e d power i s : ) P = ( k ^2) *( sigma_N ) *(( M ^2) -1) /12; disp ( P ) // R e s u l t // E n t e r t h e n o i s e v a r i a n c e 10 6 // E n t e r t h e s e p a r a t i o n c o n s t a n t f o r on o f f s i g n a l i n g 7 // E n t e r t h e number o f d i s c r e t e a m p l i t u d e l e v e l s f o r NRZ p o l a r 2 // The a v e r a g e t r a n s m i t t e d power i s : 0 . 0 0 0 0 1 2 2 Scilab code Exa 5.2 Comaprision of M-ary PCM with ideal system (Channel Capacity Theorem) 31

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

// C a p t i o n : Comparison o f M r y PCM w i t h i d e a l s y s t e m a ( Channel C a p a c i t y Theorem ) // Example5 . 2 : Comparison o f M r y PCM s y s t e m a // Channel C a p a c i t y t h e o r e m clear ; close ; clc ; P_NoB_dB = [ -20:30]; // I n p u t s i g n a l to n o i s e r a t i o P/ NoB , d e c i b e l s P_NoB = 10^( P_NoB_dB /10) ; k =7; // f o r M r y PCM s y s t e m ; a Rb_B = log2 (1+(12/ k ^2) * P_NoB ) ; // bandwidth e f f i c i e n c y i n b i t s / s e c /Hz C_B = log2 (1+ P_NoB ) ; // i d e a l s y s t e m a c c o r d i n g t o Shannon s c h a n n e l c a p a c i t y t h e o r e m // p l o t a = gca () ; a . data_bounds = [ -30 ,0;40 ,10]; plot2d ( P_NoB_dB , C_B ,5) plot2d ( P_NoB_dB , Rb_B ,5) poly1 = a . children (1) . children (1) ; poly1 . thickness =2; poly1 . line_style = 4; xlabel ( I n p u t s i g n a l to n o i s e r a t i o P/NoB , d e c i b e l s ) ylabel ( Bandwidth e f f i c i e n c y , Rb/B , b i t s p e r s e c o n d per hertz ) title ( F i g u r e 5 . 9 Comparison o f M r y PCM w i t h t h e a i d e a l ssytem ) legend ([ I d e a l System , PCM ]) Scilab code Exa 5.3 Signal-to-Quantization Noise Ratio of PCM

1 2 3 4

// C a p t i o n : S i g n a l to Q u a n t i z a t i o n N o i s e R a t i o o f PCM // Example5 . 3 : S i g n a l to Q u a n t i z a t i o n n o i s e r a t i o // Channel Bandwidth B clear ; 32

Figure 5.1: Example5.2

33

5 clc ; 6 n = input ( E n t e r no . o f b i t s u s e d t o e n c o d e : ) 7 W = input ( E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz :

)
8 B = n*W; 9 disp (B , Channel w i d t h i n Hz : ) 10 SNRo = 6* n - 7.2; 11 disp ( SNRo , Output S i g n a l t o n o i s e r a t i o i n dB : ) 12 // R e s u l t 1 i f n = 8 bits 13 // E n t e r no . o f b i t s u s e d t o e n c o d e : 8 14 // E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz : 4 0 0 0 15 // Channel w i d t h i n Hz : 32000. 16 // Output S i g n a l t o n o i s e r a t i o i n dB : 4 0 . 8 17 // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 18 // R e s u l t 2 i f n = 9 b i t s 19 // E n t e r no . o f b i t s u s e d t o e n c o d e : 9 20 // E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz : 4 0 0 0 21 // Channel w i d t h i n Hz : 3 6 0 0 0 . 22 // Output S i g n a l t o n o i s e r a t i o i n dB : 4 6 . 8 23 // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 24 // C o n c l u s i o n : c o m p a r i n g r e s u l t 1 w i t h r e s u l t 2 i f 25

number o f b i t s i n c r e a s e d by 1 // c o r r e s p o n d i n g o u t p u t s i g n a l t o n o i s e i n PCM i n c r e a s e d by 6 dB . Scilab code Exa 5.5 Output Signal-to-Noise ratio for Sinusoidal Modulation

1 2 3 4 5 6

// Example 5 : D e l t a M o d u l a t i o n t o a v o i d s l o p e overload distortion //maximum o u t p u t s i g n a l to n o i s e r a t i o f o r s i n u s o i d a l modulation // p a g e 207 clear ; clc ; a0 = input ( E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l : );

34

7 f0 = input ( E n t e r t h e f r e q u e n c y o f

sinusoidal signal

i n Hz : ) ;
8 fs = input ( E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s

per s e c o n d s : );
9 Ts = 1/ fs ; // S a m p l i n g i n t e r v a l 10 delta = 2* %pi * f0 * a0 * Ts ; // S t e p 11 12 13 14 15 16 17 18 19 20 21 22 23

s i z e to avoid s l o p e

overload Pmax = ( a0 ^2) /2; //maximum p e r m i s s i b l e o u t p u t power sigma_Q = ( delta ^2) /3; // Q u a n t i z a t i o n e r r o r o r n o i s e variance W = f0 ; //Maximum m e s s a g e bandwidth N = W * Ts * sigma_Q ; // A v e r a g e o u t p u t n o i s e power SNRo = Pmax / N ; // Maximum o u t p u t s i g n a l to n o i s e ratio SNRo_dB = 10* log10 ( SNRo ) ; disp ( SNRo_dB , Maximum o u t p u t s i g n a l to n o s i e i n dB f o r Delta Modualtion : ) // R e s u l t 1 f o r f s = 8 0 0 0 H e r t z // E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l : 1 // E n t e r t h e f r e q u e n c y o f s i n u s o i d a l s i g n a l i n Hz :4000 // E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s p e r seconds :8000 //Maximum o u t p u t s i g n a l to n o s i e i n dB f o r D e l t a Modualtion : 5.1717849 // //////////////////////////////////////////////////////////////////

// R e s u l t 2 f o r f s = 1 6 0 0 0 H e r t z // E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l : 1 // E n t e r t h e f r e q u e n c y o f s i n u s o i d a l s i g n a l i n Hz :4000 27 // E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s p e r seconds :16000 28 //Maximum o u t p u t s i g n a l to n o s i e i n dB f o r D e l t a Modualtion : 3 . 8 5 9 1 1 5 29 // //////////////////////////////////////////////////////////////////


24 25 26

35

// C o n c l u s i o n : c o m p a r i n g r e s u l t 1 w i t h r e s u l t 2 , i f the sampling frequency 31 // i s d o u b l e d t h e s i g n a l t o n o i s e i n c r e a s e d by 9 dB


30

Scilab code CF 5.13a (a) u-Law companding


1 2 3 4 5 6 7 8 9 10 11 12 13 14

15

// C a p t i o n : uLaw companding // F i g u r e 5 . 1 3 ( a ) Mulaw companding N o n l i n e a r Quantization // P l o t t i n g mulaw c h a r a c t e r i s t i c s f o r d i f f e r e n t // V a l u e s o f mu clc ; x = 0:0.01:1; // N o r m a l i z e d i n p u t mu = [0 ,5 ,255]; // d i f f e r e n t v a l u e s o f mu for i = 1: length ( mu ) [ Cx (i ,:) , Xmax ( i ) ] = mulaw (x , mu ( i ) ) ; end plot2d ( x / Xmax (1) , Cx (1 ,:) ,2) plot2d ( x / Xmax (2) , Cx (2 ,:) ,4) plot2d ( x / Xmax (3) , Cx (3 ,:) ,6) xtitle ( C o m p r e s s i o n Law : uLaw companding , N o r m a l i z e d I n p u t | x | , N o r m a l i z e d Output | c ( x ) | ) ; legend ([ u =0 ] ,[ u=5 ] ,[ u=255 ]) Scilab code CF 5.13b (b) A-law companding

1 2 3 4 5 6 7 8

// C a p t i o n : Alaw companding // F i g u r e 5 . 1 3 ( b )Alaw companding , N o n l i n e a r Quantization // P l o t t i n g Alaw c h a r a c t e r i s t i c s f o r d i f f e r e n t // V a l u e s o f A clc ; x = 0:0.01:1; // N o r m a l i z e d i n p u t A = [1 ,2 ,87.56]; // d i f f e r e n t v a l u e s o f A for i = 1: length ( A ) 36

Figure 5.2: Figure5.13a

37

Figure 5.3: Figure5.13b


9 [ Cx (i ,:) , Xmax ( i ) ] = Alaw (x , A ( i ) ) ; 10 end 11 plot2d ( x / Xmax (1) , Cx (1 ,:) ,2) 12 plot2d ( x / Xmax (2) , Cx (2 ,:) ,4) 13 plot2d ( x / Xmax (3) , Cx (3 ,:) ,6) 14 xtitle ( C o m p r e s s i o n Law : ALaw companding ,

N o r m a l i z e d I n p u t | x | , N o r m a l i z e d Output | c ( x ) | ) ; 15 legend ([ A =1 ] ,[ A=2 ] ,[ A= 8 7 . 5 6 ])

38

Chapter 6 Baseband Shaping for Data Transmission


Scilab code Exa 6.1 Bandwidth Requirements of the T1 carrier
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

// C a p t i o n : Bandwidth R e q u i r e m e n t s o f t h e T1 c a r r i e r // Example6 . 1 : Bandwidth R e q u i r e m e n t s o f t h e T1 Carrier // Page 251 clear ; clc ; Tb = input ( E n t e r t h e b i t d u r a t i o n o f t h e TDM s i g n a l : ) Bo = 1/(2* Tb ) ; // minimum t r a n s m i s s i o n bandwidth o f T1 system // T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e s p e c t r u m B alpha = 1; // c o s i n e r o l l o f f f a c t o r f1 = Bo *(1 - alpha ) ; B = 2* Bo - f1 ; disp (B , T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e s p e c t r u m i n Hz : ) // R e s u l t // E n t e r t h e b i t d u r a t i o n o f t h e TDM s i g n a l :0.64710 6 // T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e s p e c t r u m 39

i n Hz : 1 5 4 5 5 9 5 . 1 Scilab code CF 6.1a (a) Nonreturn-to-zero unipolar format


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

// C a p t i o n : N o n r e t u r n to z e r o u n i p o l a r f o r m a t // F i g u r e 6 . 1 ( a ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n // [ 1 ] . U n i p o l a r NRZ // p a g e 235 clear ; close ; clc ; x = [0 1 0 0 0 1 0 0 1 1]; binary_zero = [0 0 0 0 0 0 0 0 0 0]; binary_one = [1 1 1 1 1 1 1 1 1 1]; L = length ( x ) ; L1 = length ( binary_zero ) ; total_duration = L * L ; // p l o t t i n g a = gca () ; a . data_bounds =[0 -2; L * L1 2]; for i =1: L if ( x ( i ) ==0) plot ([ i *L - L +1: i * L ] , binary_zero ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; else plot ([ i *L - L +1: i * L ] , binary_one ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; end end xgrid (1) title ( U n i p o l a r NRZ ) Scilab code CF 6.1b (b) Nonreturn-to-zero polar format

// C a p t i o n : N o n r e t u r n to z e r o p o l a r f o r m a t 40

Figure 6.1: Figure6.1a

41

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

// F i g u r e 6 . 1 ( b ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n // [ 2 ] . P o l a r NRZ // p a g e 235 clear ; close ; clc ; x = [0 1 0 0 0 1 0 0 1 1]; binary_negative = [ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]; binary_positive = [1 1 1 1 1 1 1 1 1 1]; L = length ( x ) ; L1 = length ( binary_negative ) ; total_duration = L * L1 ; // p l o t t i n g a = gca () ; a . data_bounds =[0 -2; L * L1 2]; for i =1: L if ( x ( i ) ==0) plot ([ i *L - L +1: i * L ] , binary_negative ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; else plot ([ i *L - L +1: i * L ] , binary_positive ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; end end xgrid (1) title ( P o l a r NRZ ) Scilab code CF 6.1c (c) Nonreturn-to-zero bipolar format

1 2 3 4 5 6

// C a p t i o n : N o n r e t u r n to z e r o b i p o l a r f o r m a t // F i g u r e 6 . 1 ( c ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n // [ 3 ] . B i P o l a r NRZ // p a g e 235 clear ; close ; 42

Figure 6.2: Figure6.1b

43

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

clc ; x = [0 1 1 0 0 1 0 0 1 1]; binary_negative = [ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]; binary_zero = [0 0 0 0 0 0 0 0 0 0]; binary_positive = [1 1 1 1 1 1 1 1 1 1]; L = length ( x ) ; L1 = length ( binary_negative ) ; total_duration = L * L1 ; // p l o t t i n g a = gca () ; a . data_bounds =[0 -2; L * L1 2]; for i =1: L if ( x ( i ) ==0) plot ([ i *L - L +1: i * L ] , binary_zero ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; elseif (( x ( i ) ==1) &( x (i -1) ~=1) ) plot ([ i *L - L +1: i * L ] , binary_positive ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; else plot ([ i *L - L +1: i * L ] , binary_negative ) ; poly1 = a . children (1) . children (1) ; poly1 . thickness =3; end end xgrid (1) title ( B i P o l a r NRZ ) Scilab code Exa 6.2 Duobinary Encoding

1 // C a p t i o n : D u o b i n a r y E n c o d i n g 2 // Example6 . 2 : P r e c o d e d D u o b i n a r y c o d e r and d e c o d e r 3 // Page 256 4 clc ; 5 b = [0 ,0 ,1 ,0 ,1 ,1 ,0]; // i n p u t b i n a r y s e q u e n c e : p r e c o d e r

input 44

Figure 6.3: Figure6.1c

45

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

a (1) = xor (1 , b (1) ) ; if ( a (1) ==1) a_volts (1) = 1; end for k =2: length ( b ) a ( k ) = xor ( a (k -1) ,b ( k ) ) ; if ( a ( k ) ==1) a_volts ( k ) =1; else a_volts ( k ) = -1; end end a = a ; a_volts = a_volts ; disp (a , P r e c o d e r o u t p u t i n b i n a r y form : ) disp ( a_volts , P r e c o d e r o u t p u t i n v o l t s : ) // D u o b i n a r y c o d e r o u t p u t i n v o l t s c (1) = 1+ a_volts (1) ; for k =2: length ( a ) c ( k ) = a_volts (k -1) + a_volts ( k ) ; end c = c ; disp (c , D u o b i n a r y c o d e r o u t p u t i n v o l t s : ) // D u o b i n a r y d e c o d e r o u t p u t by a p p l y i n g d e c i s i o n rule for k =1: length ( c ) if ( abs ( c ( k ) ) >1) b_r ( k ) = 0; else b_r ( k ) = 1; end end b_r = b_r ; disp ( b_r , R e c o v e r e d o r i g i n a l s e q u e n c e a t d e t e c t o r oupupt : ) // R e s u l t // P r e c o d e r o u t p u t i n b i n a r y form : // 46

42 43 44 45 46 47 48 49 50 51 52 53 54

// 1 . 1. 0. 0. 1. // // P r e c o d e r o u t p u t i n v o l t s : // // 1 . 1. 1. 1. 1. // // D u o b i n a r y c o d e r o u t p u t i n v o l t s // // 2 . 2. 0. 2. 0. // // R e c o v e r e d o r i g i n a l s e q u e n c e a t // // 0 . 0. 1. 0. 1.

0.

0.

1. : 0.

1.

2.

d e t e c t o r oupupt : 1. 0.

Scilab code Exa 6.3 Generation of bipolar output for duobinary coder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// C a p t i o n : G e n e r a t i o n o f b i p o l a r o u t p u t f o r d u o b i n a r y coder // Example6 . 3 : O p e r a t i o n o f C i r c u i t i n f i g u r e 6 . 1 3 // f o r g e n e r a t i n g b i p o l a r f o r m a t // p a g e 256 and p a g e 257 // R e f e r T a b l e 6 . 4 clc ; x = [0 ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,1 ,1]; // i n p u t b i n a r y s e q u e n c e : precoder input y (1) = 1; for k =2: length ( x ) +1 y ( k ) = xor ( x (k -1) ,y (k -1) ) ; end y_delay = y (1: $ -1) ; y = y ; y_delay = y_delay ; disp (y , Modulo 2 a d d e r o u t p u t : ) disp ( y_delay , D e l a y e l e m e n t o u t p u t : ) for k = 1: length ( y_delay ) z ( k ) = y ( k +1) - y_delay ( k ) ; end z = z ; 47

21 22 23 24 25 26 27 28

disp (z , d i f f e r e n t i a l e n c o d e r b i p o l a r o u t p u t i n : ) // R e s u l t // Modulo 2 a d d e r o u t p u t : // 1. 1. 0. 1. 1. 0. 0. 0. 1. 0. // D e l a y e l e m e n t o u t p u t : // 1. 1. 0. 1. 1. 0. 0. 0. 1. // d i f f e r e n t i a l e n c o d e r b i p o l a r o u t p u t i n v o l t s // 0. 1. 1. 0. 1. 0. 0. 1. 1.

volts

0.

0. : 0.

Scilab code CF 6.4 Power Spectra of dierent binary data formats


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n : Power S p e c t r a o f d i f f e r e n t b i n a r y d a t a formats // F i g u r e 6 . 4 : Power S p e c t a l D e n s i t i e s o f // D i f f e r e n t L i n e Coding T e c h n i q u e s // [ 1 ] . NRZ P o l a r Format [ 2 ] . NRZ B i p o l a r f o r m a t // [ 3 ] . NRZ U n i p o l a r f o r m a t [ 4 ] . M a n c h e s t e r f o r m a t // Page 241 close ; clc ; // [ 1 ] . NRZ P o l a r f o r m a t a = input ( E n t e r t h e A m p l i t u d e v a l u e : ) ; fb = input ( E n t e r t h e b i t r a t e : ) ; Tb = 1/ fb ; // b i t d u r a t i o n f = 0:1/(100* Tb ) :2/ Tb ; for i = 1: length ( f ) Sxxf_NRZ_P ( i ) = ( a ^2) * Tb *( sinc_new ( f ( i ) * Tb ) ^2) ; Sxxf_NRZ_BP ( i ) = ( a ^2) * Tb *(( sinc_new ( f ( i ) * Tb ) ) ^2) *(( sin ( %pi * f ( i ) * Tb ) ) ^2) ; if ( i ==1) Sxxf_NRZ_UP ( i ) = ( a ^2) *( Tb /4) *(( sinc_new ( f ( i ) * Tb ) ) ^2) +( a ^2) /4; else

48

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

Sxxf_NRZ_UP ( i ) = ( a ^2) *( Tb /4) *(( sinc_new ( f ( i ) * Tb ) ) ^2) ; end Sxxf_Manch ( i ) = ( a ^2) * Tb *( sinc_new ( f ( i ) * Tb /2) ^2) *( sin ( %pi * f ( i ) * Tb /2) ^2) ; end // P l o t t i n g a = gca () ; plot2d (f , Sxxf_NRZ_P ) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . plot2d (f , Sxxf_NRZ_BP ,2) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . plot2d (f , Sxxf_NRZ_UP ,5) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . plot2d (f , Sxxf_Manch ,9) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . xlabel ( f Tb> ) ylabel ( Sxx ( f )> ) title ( Power S p e c t r a l D e n s i t i e s o f D i f f e r e n t L i n e Codinig Techniques ) xgrid (1) legend ([ NRZ P o l a r Format , NRZ B i p o l a r f o r m a t , NRZ U n i p o l a r f o r m a t , M a n c h e s t e r f o r m a t ]) ; // R e s u l t // E n t e r t h e A m p l i t u d e v a l u e : 1 // E n t e r t h e b i t r a t e : 1 Scilab code CF 6.6b (b) Ideal solution for zero ISI

// C a p t i o n : I d e a l s o l u t i o n f o r z e r o I S I // F i g u r e 6 . 6 ( b ) : I d e a l S o l u t i o n f o r I n t e r s y m b o l Interference 3 // SINC p u l s e
1 2

49

Figure 6.4: Figure6.4

50

4 5 6 7 8 9 10 11 12 13 14 15

// p a g e 249 rb = input ( E n t e r t h e b i t r a t e : ) ; Bo = rb /2; t = -3:1/100:3; x = sinc_new (2* Bo * t ) ; plot (t , x ) xlabel ( t> ) ; ylabel ( p ( t )> ) ; title ( SINC P u l s e f o r z e r o I S I ) xgrid (1) // R e s u l t // E n t e r t h e b i t r a t e : 1 Scilab code CF 6.7b (b) Practical solution: Raised Cosine

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// C a p t i o n : P r a c t i c a l s o l u t i o n : R a i s e d C o s i n e // F i g u r e 6 . 7 ( b ) : P r a c t i c a l S o l u t i o n f o r I n t e r s y m b o l Interference // R a i s e d C o s i n e Spectrum // p a g e 250 close ; clc ; rb = input ( E n t e r t h e b i t r a t e : ) ; Tb =1/ rb ; t = -3:1/100:3; Bo = rb /2; Alpha =0; // I n t i a l i z e d t o z e r o x = t / Tb ; for j =1:3 for i =1: length ( t ) if (( j ==3) &(( t ( i ) ==0.5) |( t ( i ) == -0.5) ) ) p (j , i ) = sinc_new (2* Bo * t ( i ) ) ; else num = sinc_new (2* Bo * t ( i ) ) * cos (2* %pi * Alpha * Bo * t ( i ) ) ; den = 1 -16*( Alpha ^2) *( Bo ^2) *( t ( i ) ^2) +0.01; p (j , i ) = num / den ; 51

Figure 6.5: Figure6.6

52

21 end 22 end 23 Alpha = Alpha +0.5; 24 end 25 a = gca () ; 26 plot2d (t , p (1 ,:) ) 27 plot2d (t , p (2 ,:) ) 28 poly1 = a . children (1) . children (1) ; 29 poly1 . foreground =2; 30 plot2d (t , p (3 ,:) ) 31 poly2 = a . children (1) . children (1) ; 32 po1y2 . foreground =4; 33 poly2 . line_style = 3; 34 xlabel ( t /Tb> ) ; 35 ylabel ( p ( t )> ) ; 36 title ( RAISED COSINE SPECTRUM P r a c t i c a l 37

Solution

for ISI ) legend ([ R O l l o f f F a c t o r =0 , R O l l o f f F a c t o r =0.5 , R O l l o f f F a c t o r =1 ]) 38 xgrid (1) 39 // R e s u l t 40 // E n t e r t h e b i t r a t e : 1 Scilab code CF 6.9 Frequency response of duobinary conversion lter
1 2 3 4 5 6 7 8 9 10

// C a p t i o n : F r e q u e n c y r e s p o n s e o f d u o b i n a r y c o n v e r s i o n filter // F i g u r e 6 . 9 : F r e q u e n c y R e s p o n s e o f D u o b i n a r y Conversion f i l t e r // ( a ) A m p l i t u d e R e s p o n s e // ( b ) Phase R e s p o n s e // Page 254 clear ; close ; clc ; rb = input ( E n t e r t h e b i t r a t e= ) ; Tb =1/ rb ; // B i t d u r a t i o n 53

Figure 6.6: Figure6.7

54

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

f = - rb /2:1/100: rb /2; Amplitude_Response = abs (2* cos ( %pi * f .* Tb ) ) ; Phase_Response = -( %pi * f .* Tb ) ; subplot (2 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d (f , Amplitude_Response ,2) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . xlabel ( F r e q u e n c y f > ) ylabel ( | H( f ) | > ) title ( A m p l i t u d e R e p s o n s e o f D u o b i n a r y S i n g a l i n g ) subplot (2 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d (f , Phase_Response ,5) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . xlabel ( F r e q u e n c y f > ) ylabel ( <H( f ) > ) title ( Phase R e p s o n s e o f D u o b i n a r y S i n g a l i n g ) // R e s u l t // E n t e r t h e b i t r a t e =8 Scilab code CF 6.15 Frequency response of modied duobinary conversion lter

// C a p t i o n : F r e q u e n c y r e s p o n s e o f m o d i f i e d d u o b i n a r y conversion f i l t e r 2 // F i g u r e 6 . 1 5 : F r e q u e n c y R e s p o n s e o f M o d i f i e d duobinary conversion f i l t e r 3 // ( a ) A m p l i t u d e R e s p o n s e 4 // ( b ) Phase R e s p o n s e


1

55

Figure 6.7: Figure6.9

56

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

// p a g e 259 clear ; close ; clc ; rb = input ( E n t e r t h e b i t r a t e= ) ; Tb =1/ rb ; // B i t d u r a t i o n f = - rb /2:1/100: rb /2; Amplitude_Response = abs (2* sin (2* %pi * f .* Tb ) ) ; Phase_Response = -(2* %pi * f .* Tb ) ; subplot (2 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d (f , Amplitude_Response ,2) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . xlabel ( F r e q u e n c y f > ) ylabel ( | H( f ) | > ) title ( A m p l i t u d e R e p s o n s e o f M o d i f i e d D u o b i n a r y Singaling ) xgrid (1) subplot (2 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d (f , Phase_Response ,5) poly1 = a . children (1) . children (1) ; poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e . xlabel ( F r e q u e n c y f > ) ylabel ( <H( f ) > ) title ( Phase R e p s o n s e o f M o d i f i e d D u o b i n a r y Singaling ) xgrid (1) // R e s u l t // E n t e r t h e b i t r a t e =8

57

Figure 6.8: Figure6.15

58

Chapter 7 Digital Modulation Techniques


Scilab code Exa 7.1 QPSK Waveform
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

// C a p t i o n : Waveforms o f D i f f e r e n t D i g i t a l M o d u l a t i o n techniques // Example7 . 1 S i g n a l S p a c e Diagram f o r c o h e r e n t QPSK system clear ; clc ; close ; M =4; i = 1: M ; t = 0:0.001:1; for i = 1: M s1 (i ,:) = cos (2* %pi *2* t ) * cos ((2* i -1) * %pi /4) ; s2 (i ,:) = - sin (2* %pi *2* t ) * sin ((2* i -1) * %pi /4) ; end S1 =[]; S2 = []; S = []; Input_Sequence =[0 ,1 ,1 ,0 ,1 ,0 ,0 ,0]; m = [3 ,1 ,1 ,2]; for i =1: length ( m ) S1 = [ S1 s1 ( m ( i ) ,:) ]; S2 = [ S2 s2 ( m ( i ) ,:) ]; end 59

22 S = S1 + S2 ; 23 figure 24 subplot (3 ,1 ,1) 25 a = gca () ; 26 a . x_location = o r i g i n ; 27 plot ( S1 ) 28 title ( B i n a r y PSK wave o f Oddnumbered b i t s 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

of input sequence ) subplot (3 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; plot ( S2 ) title ( B i n a r y PSK wave o f Evennumbered b i t s o f input sequence ) subplot (3 ,1 ,3) a = gca () ; a . x_location = o r i g i n ; plot ( S ) title ( QPSK waveform ) // s i n ( ( 2 i 1) %pi / 4 ) %i ; // a n n o t = d e c 2 b i n ( [ 0 : l e n g t h ( y ) 1] , l o g 2 (M) ) ; // d i s p ( y , c o o r d i n a t e s o f m e s s a g e p o i n t s ) // d i s p ( annot , d i b i t s v a l u e ) // f i g u r e ; // a =g c a ( ) ; // a . d a t a b o u n d s = [ 1 , 1 ; 1 , 1 ] ; // a . x l o c a t i o n = o r i g i n ; // a . y l o c a t i o n = o r i g i n ; // p l o t 2 d ( r e a l ( y ( 1 ) ) , imag ( y ( 1 ) ) , 2) // p l o t 2 d ( r e a l ( y ( 2 ) ) , imag ( y ( 2 ) ) , 4) // p l o t 2 d ( r e a l ( y ( 3 ) ) , imag ( y ( 3 ) ) , 5) // p l o t 2 d ( r e a l ( y ( 4 ) ) , imag ( y ( 4 ) ) , 9) // x l a b e l ( In Phase ) ; // y l a b e l ( Quadrature ) ; 60

Figure 7.1: Example7.1


54 55

// t i t l e ( C o n s t e l l a t i o n f o r QPSK ) // l e g e n d ( [ m e s s a g e p o i n t 1 ( d i b i t 1 0 ) ; m e s s a g e p o i nt 2 ( d i b i t 00) ; message p o i nt 3 ( d i b i t 01) ; message p o in t 4 ( d i b i t 11) ] , 5 ) Scilab code CF 7.1 Waveform of Dierent Digital Modulation techniques

// C a p t i o n : Waveforms o f D i f f e r e n t D i g i t a l M o d u l a t i o n techniques 2 // F i g u r e 7 . 1 3 // D i g i t a l M o d u l a t i o n T e c h n i q u e s 4 //To P l o t t h e ASK, FSK and PSk Waveforms


1

61

5 clear ; 6 clc ; 7 close ; 8 f = input ( E n t e r t h e Analog C a r r i e r F r e q u e n c y i n Hz 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

); t = 0:1/512:1; x = sin (2* %pi * f * t ) ; I = input ( E n t e r t h e d i g i t a l b i n a r y d a t a ) ; // G e n e r a t i o n o f ASK Waveform Xask = []; for n = 1: length ( I ) if (( I ( n ) ==1) &( n ==1) ) Xask = [x , Xask ]; elseif (( I ( n ) ==0) &( n ==1) ) Xask = [ zeros (1 , length ( x ) ) , Xask ]; elseif (( I ( n ) ==1) &( n ~=1) ) Xask = [ Xask , x ]; elseif (( I ( n ) ==0) &( n ~=1) ) Xask = [ Xask , zeros (1 , length ( x ) ) ]; end end // G e n e r a t i o n o f FSK Waveform Xfsk = []; x1 = sin (2* %pi * f * t ) ; x2 = sin (2* %pi *(2* f ) * t ) ; for n = 1: length ( I ) if ( I ( n ) ==1) Xfsk = [ Xfsk , x2 ]; elseif ( I ( n ) ~=1) Xfsk = [ Xfsk , x1 ]; end end // G e n e r a t i o n o f PSK Waveform Xpsk = []; x1 = sin (2* %pi * f * t ) ; x2 = - sin (2* %pi * f * t ) ; for n = 1: length ( I ) if ( I ( n ) ==1) 62

42 Xpsk = [ Xpsk , x1 ]; 43 elseif ( I ( n ) ~=1) 44 Xpsk = [ Xpsk , x2 ]; 45 end 46 end 47 figure 48 plot (t , x ) 49 xtitle ( Analog C a r r i e r S i g n a l 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

f o r D i g i t a l Modulation

) xgrid figure plot ( Xask ) xtitle ( A m p l i t u d e S h i f t Keying ) xgrid figure plot ( Xfsk ) xtitle ( F r e q u e n c y S h i f t Keying ) xgrid figure plot ( Xpsk ) xtitle ( Phase S h i f t Keying ) xgrid // Example // E n t e r t h e Analog C a r r i e r F r e q u e n c y 2 // E n t e r t h e d i g i t a l b i n a r y d a t a [ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 ] Scilab code Exa 7.2 MSK waveforms

1 2 3 4 5 6 7 8 9

// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BPSK // Example7 . 2 : S e q u e n c e and Waveforms f o r MSK s i g n a l // T a b l e 7 . 2 s i g n a l s p a c e c h a r a c t e r i z a t i o n o f MSK clear clc ; close ; M =2; Tb =1; t1 = - Tb :0.01: Tb ; 63

Figure 7.2: Figure7.1a

64

Figure 7.3: Figure7.1b

65

Figure 7.4: Figure7.1c

66

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

t2 = 0:0.01:2* Tb ; phi1 = cos (2* %pi * t1 ) .* cos (( %pi /(2* Tb ) ) * t1 ) ; phi2 = sin (2* %pi * t2 ) .* sin (( %pi /(2* Tb ) ) * t2 ) ; teta_0 = [0 , %pi ]; teta_tb = [ %pi /2 , - %pi /2]; S1 = []; S2 = []; for i = 1: M s1 ( i ) = cos ( teta_0 ( i ) ) ; s2 ( i ) = - sin ( teta_tb ( i ) ) ; S1 = [ S1 s1 ( i ) * phi1 ]; S2 = [ S2 s2 (1) * phi2 ]; end for i = M : -1:1 S1 = [ S1 s1 ( i ) * phi1 ]; S2 = [ S2 s2 (2) * phi2 ]; end Input_Sequence =[1 ,1 ,0 ,1 ,0 ,0 ,0]; S = []; t = 0:0.01:1; S = [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ]; S = [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ]; S = [ S cos ( %pi ) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ]; S = [ S cos ( %pi ) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t ) ]; S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t ) ]; S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t ) ]; S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t ) ]; y = [ s1 (1) , s2 (1) ; s1 (2) , s2 (1) ; s1 (2) , s2 (2) ; s1 (1) , s2 (2) ]; disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s ) figure subplot (3 ,1 ,1) a = gca () ; 67

42 43 44 45 46 47 48 49 50 51 52 53 54

a . x_location = o r i g i n ; plot ( S1 ) title ( S c a l e d t i m e f u n c t i o n s 1 p h i 1 ( t ) ) subplot (3 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; plot ( S2 ) title ( S c a l e d t i m e f u n c t i o n s 2 p h i 2 ( t ) ) subplot (3 ,1 ,3) a = gca () ; a . x_location = o r i g i n ; plot ( S ) title ( O b t a i n e d by a d d i n g s 1 p h i 1 ( t )+s 2 p h i 2 ( t ) on a b i t byb i t b a s i s ) Scilab code CF 7.2 Signal Space diagram for coherent BPSK

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BPSK // F i g u r e 7 . 2 S i g n a l S p a c e Diagram f o r c o h e r e n t BPSK system clear clc ; close ; M =2; i = 1: M ; y = cos (2* %pi +( i -1) * %pi ) ; annot = dec2bin ([ length ( y ) -1: -1:0] , log2 ( M ) ) ; disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s ) disp ( annot , Mes sa ge p o i n t s ) figure ; a = gca () ; a . data_bounds = [ -2 , -2;2 ,2]; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d ( real ( y (1) ) , imag ( y (1) ) , -9) plot2d ( real ( y (2) ) , imag ( y (2) ) , -5) xlabel ( 68

Figure 7.5: Example7.2

69

Figure 7.6: Figure7.2

InPhase ) ; 20 ylabel ( Quadrature ); title ( C o n s t e l l a t i o n f o r BPSK ) legend ([ m e s s a g e p o i n t 1 ( b i n a r y 1 ) ; m e s s a g e p o i n t 2 ( b i n a r y 0 ) ] ,5) Scilab code Tab 7.3 Illustration the generation of DPSK signal
1

21 22

// C a p t i o n : I l l u s t r a t i n g t h e g e n e r a t i o n o f DPSK s i g n a l 70

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

// T a b l e 7 . 3 G e n e r a t i o n o f D i f f e r e n t i a l Phase s h i f t keying s i g n a l clc ; bk = [1 ,0 ,0 ,1 ,0 ,0 ,1 ,1]; // i n p u t d i g i t a l s e q u e n c e for i = 1: length ( bk ) if ( bk ( i ) ==1) bk_not ( i ) =~1; else bk_not ( i ) = 1; end end dk_1 (1) = 1& bk (1) ; // i n i t i a l v a l u e o f d i f f e r e n t i a l encoded sequence dk_1_not (1) =0& bk_not (1) ; dk (1) = xor ( dk_1 (1) , dk_1_not (1) ) // f i r s t b i t o f dpsk encoder for i =2: length ( bk ) dk_1 ( i ) = dk (i -1) ; dk_1_not ( i ) = ~ dk (i -1) ; dk ( i ) = xor (( dk_1 ( i ) & bk ( i ) ) ,( dk_1_not ( i ) & bk_not ( i ) )); end for i =1: length ( dk ) if ( dk ( i ) ==1) dk_radians ( i ) =0; elseif ( dk ( i ) ==0) dk_radians ( i ) = %pi ; end end disp ( T a b l e 7 . 3 I l l u s t r a t i n g t h e G e n e r a t i o n o f DPSK Signal ) disp ( ) disp ( bk , ( bk ) ) bk_not = bk_not ; disp ( bk_not , ( b k n o t ) ) dk = dk ; 71

29 30 31 32

33 34 35 36

disp ( dk , D i f f e r e n t i a l l y e n c o d e d s e q u e n c e ( dk ) ) dk_radians = dk_radians ; disp ( dk_radians , T r a n s m i t t e d p h a s e i n r a d i a n s ) disp ( ) Scilab code CF 7.4 Signal Space diagram for coherent BFSK

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BFSK // F i g u r e 7 . 4 S i g n a l S p a c e Diagram f o r c o h e r e n t BFSK system clear clc ; close ; M =2; y = [1 ,0;0 ,1]; annot = dec2bin ([ M -1: -1:0] , log2 ( M ) ) ; disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s ) disp ( annot , Mes sa ge p o i n t s ) figure ; a = gca () ; a . data_bounds = [ -2 , -2;2 ,2]; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d ( y (1 ,1) ,y (1 ,2) , -9) plot2d ( y (2 ,1) ,y (2 ,2) , -5) xlabel (

InPhase ) ; 19 ylabel ( Quadrature ); 20 title ( C o n s t e l l a t i o n f o r BFSK ) 21 legend ([ m e s s a g e p o i n t 1 ( b i n a r y 1 ) ; m e s s a g e p o i n t 2 ( b i n a r y 0 ) ] ,5)

72

Figure 7.7: Figure 7.4

73

Scilab code CF 7.6 Signal space diagram for coherent QPSK waveform
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

22

// C a p t i o n : S i g n a l s p a c e d i a g r a m f o r c o h e r e n t QPSK waveform // F i g u r e 7 . 6 S i g n a l S p a c e Diagram f o r c o h e r e n t QPSK system clear clc ; close ; M =4; i = 1: M ; y = cos ((2* i -1) * %pi /4) - sin ((2* i -1) * %pi /4) * %i ; annot = dec2bin ([0: M -1] , log2 ( M ) ) ; disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s ) disp ( annot , d i b i t s v a l u e ) figure ; a = gca () ; a . data_bounds = [ -1 , -1;1 ,1]; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d ( real ( y (1) ) , imag ( y (1) ) , -2) plot2d ( real ( y (2) ) , imag ( y (2) ) , -4) plot2d ( real ( y (3) ) , imag ( y (3) ) , -5) plot2d ( real ( y (4) ) , imag ( y (4) ) , -9) xlabel ( In Phase ) ; ylabel ( Quadrature ); title ( C o n s t e l l a t i o n f o r QPSK ) legend ([ m e s s a g e p o i n t 1 ( d i b i t 1 0 ) ; m e s s a g e p o i n t 2 ( d i b i t 00) ; message p o i nt 3 ( d i b i t 01) ; m e s s a g e p o i n t 4 ( d i b i t 1 1 ) ] ,5) Scilab code Tab 7.6 Bndwidth eciency of M ary PSK signals

23 24

74

Figure 7.8: Figure7.6

75

1 2 3 4 5 6 7 8 9

// C a p t i o n : Bandwidth e f f i c i e n c y o f M r y PSK s i g n a l s a // T a b l e 7 . 6 : Bandwidth E f f i c i e n c y o f M r y PSK a signals clear ; clc ; close ; M = [2 ,4 ,8 ,16 ,32 ,64]; //M r y a Ruo = log2 ( M ) ./2; // Bandwidth e f f i c i e n c y i n b i t s / s / Hz disp ( T a b l e 7 . 7 Bandwidth E f f i c i e n c y o f M r y PSK a signals ) disp ( ) disp (M , M ) disp (

10 11

) 12 disp ( Ruo , r i n b i t s / s /Hz ) 13 disp ( ) Scilab code Tab 7.7 Bandwidth eciency of M ary FSK signals
1 // C a p t i o n : Bandwidth e f f i c i e n c y o f M r y FSK s i g n a l s a 2 // T a b l e 7 . 7 : Bandwidth E f f i c i e n c y o f M r y FSK a 3 clear ; 4 clc ; 5 close ; 6 M = [2 ,4 ,8 ,16 ,32 ,64]; //M r y a 7 Ruo = 2* log2 ( M ) ./ M ; // Bandwidth e f f i c i e n c y i n b i t s / s

/Hz //M = M ; // Ruo = Ruo ; disp ( T a b l e 7 . 7 Bandwidth E f f i c i e n c y o f M r y FSK a signals ) 11 disp (


8 9 10

76

Figure 7.9: Figure7.12

) 12 disp (M , M ) 13 disp ( ) 14 disp ( Ruo , r i n b i t s / s /Hz ) 15 disp ( ) Scilab code CF 7.29 Power Spectra of BPSK and BFSK signals 77

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

// C a p t i o n : Power S p e c t r a o f BPSK and BFSK s i g n a l s // F i g u r e 7 . 2 9 : Comparison o f Power S p e c t r a l D e n s i t i e s o f BPSK // and BFSK clc ; rb = input ( E n t e r t h e b i t r a t e= ) ; Eb = input ( E n t e r t h e e n e r g y o f t h e b i t= ) ; f = 0:1/100:8/ rb ; Tb = 1/ rb ; // B i t d u r a t i o n for i = 1: length ( f ) if ( f ( i ) ==(1/(2* Tb ) ) ) SB_FSK ( i ) = Eb /(2* Tb ) ; else SB_FSK ( i ) = (8* Eb *( cos ( %pi * f ( i ) * Tb ) ^2) ) /(( %pi ^2) *(((4*( Tb ^2) *( f ( i ) ^2) ) -1) ^2) ) ; end SB_PSK ( i ) =2* Eb *( sinc_new ( f ( i ) * Tb ) ^2) ; end a = gca () ; plot ( f * Tb , SB_FSK /(2* Eb ) ) plot ( f * Tb , SB_PSK /(2* Eb ) ) poly1 = a . children (1) . children (1) ; poly1 . foreground = 6; xlabel ( N o r m a l i z e d F r e q u e n c y > ) ylabel ( N o r m a l i z e d Power S p e c t r a l D e n s i t y > ) title ( PSK Vs FSK Power S p e c t r a Comparison ) legend ([ F r e q u e n c y S h i f t Keying , Phase S h i f t Keying ]) xgrid (1) // R e s u l t // E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : 2 // E n t e r t h e Energy o f b i t : 1 Scilab code CF 7.30 Power Spectra of QPSK and MSK signals.

1 2

// C a p t i o n : Power S p e c t r a o f QPSK and MSK s i g n a l s // F i g u r e 7 . 3 0 : Comparison o f QPSK and MSK Power 78

Figure 7.10: Figure7.29

79

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

Spectrums // c l e a r ; // c l o s e ; // c l c ; rb = input ( E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : ) ; Eb = input ( E n t e r t h e Energy o f b i t : ) ; f = 0:1/(100* rb ) :(4/ rb ) ; Tb = 1/ rb ; // b i t d u r a t i o n i n s e c o n d s for i = 1: length ( f ) if ( f ( i ) ==0.5) SB_MSK ( i ) = 4* Eb * f ( i ) ; else SB_MSK ( i ) = (32* Eb /( %pi ^2) ) *( cos (2* %pi * Tb * f ( i ) ) /((4* Tb * f ( i ) ) ^2 -1) ) ^2; end SB_QPSK ( i ) = 4* Eb * sinc_new ((2* Tb * f ( i ) ) ) ^2; end a = gca () ; plot ( f * Tb , SB_MSK /(4* Eb ) ) ; plot ( f * Tb , SB_QPSK /(4* Eb ) ) ; poly1 = a . children (1) . children (1) ; poly1 . foreground = 3; xlabel ( N o r m a l i z e d F r e q u e n c y > ) ylabel ( N o r m a l i z e d Power S p e c t r a l D e n s i t y > ) title ( QPSK Vs MSK Power S p e c t r a Comparison ) legend ([ Minimum S h i f t Keying , QPSK ]) xgrid (1) // R e s u l t // E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : 2 // E n t e r t h e Energy o f b i t : 1 Scilab code CF 7.31 Power spectra of M-ary PSK signals

1 2

// C a p t i o n : Power s p e c t r a o f M r y PSK s i g n a l s a // F i g u r e 7 . 3 1 Comparison o f Power S p e c t r a l D e n s i t i e s o f M r y PSK s i g n a l s a 80

Figure 7.11: Figure7.30

81

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

rb = input ( E n t e r t h e b i t r a t e= ) ; Eb = input ( E n t e r t h e e n e r g y o f t h e b i t= ) ; f = 0:1/100: rb ; Tb = 1/ rb ; // B i t d u r a t i o n M = [2 ,4 ,8]; for j = 1: length ( M ) for i = 1: length ( f ) SB_PSK (j , i ) =2* Eb *( sinc_new ( f ( i ) * Tb * log2 ( M ( j ) ) ) ^2) * log2 ( M ( j ) ) ; end end a = gca () ; plot2d ( f * Tb , SB_PSK (1 ,:) /(2* Eb ) ) plot2d ( f * Tb , SB_PSK (2 ,:) /(2* Eb ) ,2) plot2d ( f * Tb , SB_PSK (3 ,:) /(2* Eb ) ,5) xlabel ( N o r m a l i z e d F r e q u e n c y > ) ylabel ( N o r m a l i z e d Power S p e c t r a l D e n s i t y > ) title ( Power S p e c t r a o f M r y s i g n a l s f o r M = 2 , 4 , 8 ) a legend ([ M=2 , M=4 , M=8 ]) xgrid (1) // R e s u l t // E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : 2 // E n t e r t h e Energy o f b i t : 1 Scilab code CF 7.41 Matched Filter output of rectangular pulse

1 2 3 4 5 6 7 8 9 10 11

// C a p t i o n : Matched F i l t e r o u t p u t o f r e c t a n g u l a r p u l s e // F i g u r e 7 . 4 1 // Matched F i l t e r Output clear ; clc ; T =4; a =2; t = 0: T ; g = 2* ones (1 , T +1) ; h = abs ( convol (g , g ) ) ; for i = 1: length ( h ) 82

Figure 7.12: Figure7.31

83

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

if ( h ( i ) <0.01) h ( i ) =0; end end h = h-T; t1 = 0: length ( h ) -1; figure a = gca () ; a . data_bounds = [0 ,0;6 ,4]; plot2d (t ,g ,5) xlabel ( t> ) ylabel ( g ( t )> ) title ( R e c t a n g u l a r p u l s e d u r a t i o n T = 4 , a =2 ) figure plot2d ( t1 ,h ,6) xlabel ( t> ) ylabel ( Matched F i l t e r o u t p u t ) title ( Output o f f i l t e r matched t o r e c t a n g u l a r p u l s e g( t ) )

84

Figure 7.13: Figure7.41a

85

Figure 7.14: Figure7.41b

86

Chapter 8 Error-Control Coding


Scilab code Exa 8.1 Repetition Codes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

// C a p t i o n : R e p e t i t i o n Codes // Example8 . 1 : R e p e t i t i o n Codes clear ; clc ; n =5; // b l o c k o f i d e n t i c a l n b i t s k =1; // one b i t m = 1; // b i t v a l u e = 1 I = eye (n -k ,n - k ) ; // I d e n t i t y m a t r i x P = ones (1 ,n - k ) ; // c o e f f i c i e n t m a t r i x H = [ I P ]; // p a r i t y c h e c k m a t r i x G = [ P 1]; // g e n e r a t o r m a t r i x x = m .* G ; // c o d e word disp (G , g e n e r a t o r m a t r i x ) ; disp (H , p a r i t y c h e c k m a t r i x ) ; disp (x , c o d e word f o r b i n a r y one i n p u t ) ; Scilab code Exa 8.2 Hamming Codes

1 // C a p t i o n : Hamming Codes 2 // Example8 . 2 : Hamming c o d e s 3 clear ; 4 clc ; 5 k = 4; // m e s s a g e b i t s l e n g t h

87

6 7 8 9 10 11 12 13 14 15 16 17

n = 7; // b l o c k l e n g t h m = n - k ; // Number o f p a r i t y b i t s I = eye (k , k ) ; // i d e n t i t y m a t r i x disp (I , i d e n t i t y m a t r i x I k ) P =[1 ,1 ,0;0 ,1 ,1;1 ,1 ,1;1 ,0 ,1]; // c o e f f i c i e n t m a t r i x disp (P , c o e f f i c i e n t m a t r i x P ) G = [ P I ]; // g e n e r a t o r m a t r i x disp (G , g e n e r a t o r m a t r i x G ) H = [ eye (k -1 ,k -1) P ]; // p a r i t y c h e c k m a t r i x disp (H , p a r i t y c h e c h k m a t r i x H ) // m e s s a g e b i t s m = [0 ,0 ,0 ,0;0 ,0 ,0 ,1;0 ,0 ,1 ,0;0 ,0 ,1 ,1;0 ,1 ,0 ,0;0 ,1 ,0 ,1;0 ,1 ,1 ,0;0 ,1 ,1 ,1;1

18 // 19 C = m * G ; 20 C = modulo (C ,2) ; 21 disp (C , Code words o f

( 7 , 4 ) Hamming c o d e )

Scilab code Exa 8.3 Hamming Codes Revisited


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

// C a p t i o n : Hamming Codes R e v i s i t e d // Example8 . 3 : ( 7 , 4 ) Hamming Code R e v i s i t e d // m e s s a g e s e q u e n c e = [ 1 , 0 , 0 , 1 ] //D = p o l y ( 0 ,D) ; clc ; D = poly (0 , D ) ; g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l m = ( D ^3) *(1+0+0+ D ^3) ; // m e s s a g e s e q u e n c e [r , q ] = pdiv (m , g ) ; p = coeff ( r ) ; disp (r , r e m a i n d e r i n p o l y n o m i a l form ) disp (p , P a r i t y b i t s a r e : ) G = [ g ; g * D ; g * D ^2; g * D ^3]; G = coeff ( G ) ; disp (G , G ) G (3 ,:) = G (3 ,:) + G (1 ,:) ; G (3 ,:) = modulo ( G (3 ,:) ,2) ; 88

18 19 20 21 22 23 24 25 26 27

G (4 ,:) = G (1 ,:) + G (2 ,:) + G (4 ,:) ; G (4 ,:) = modulo ( G (4 ,:) ,2) ; disp (G , G e n e r a t o r M a t r i x G = ) h = 1+ D ^ -1+ D ^ -2+ D ^ -4; H_D = [ D ^4* h ; D ^5* h ; D ^6* h ]; H_num = numer ( H_D ) ; H = coeff ( H_num ) ; H (1 ,:) = H (1 ,:) + H (3 ,:) ; H (1 ,:) = modulo ( H (1 ,:) ,2) ; disp (H , P a r t i y Check m a t r i x H = ) Scilab code Exa 8.4 Encoder for the (7,4) Cyclic Hamming Code

1 2 3 4 5 6 7 8 9 10 11 12

13

// C a p t i o n : E n c o d e r f o r t h e ( 7 , 4 ) C y c l i c Hamming Code // Example8 . 4 : E n c o d e r f o r t h e ( 7 , 4 ) C y c l i c hamming code // m e s s a g e s e q u e n c e = [ 1 , 0 , 0 , 1 ] //D = p o l y ( 0 ,D) ; D = poly (0 , D ) ; g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l m = ( D ^3) *(1+0+0+ D ^3) ; // m e s s a g e s e q u e n c e [r , q ] = pdiv (m , g ) ; p = coeff ( r ) ; disp (r , r e m a i n d e r i n p o l y n o m i a l form ) disp (p , P a r i t y b i t s a r e : ) disp ( T a b l e 8 . 3 C o n t e n t s o f t h e S h i f t R e g i s t e r i n t h e E n c o d e r o f f i g 8 . 7 f o r Me ss age S e q u e n c e ( 1 0 0 1 ) ) disp (

) 14 disp ( S h i f t Contents ) 15 disp ( ) 16 disp ( 1 17 disp ( 2

Input

Register

1 0 89

1 1 0 ) 0 1 1 )

18 19 20

disp ( 3 disp ( 4 disp ( )

0 1

1 1 1 ) 0 1 1 )

Scilab code Exa 8.5 Syndrome calculator for the(7,4) Cyclic Hamming Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

// C a p t i o n : Syndrome c a l c u l a t o r f o r t h e ( 7 , 4 ) C y c l i c Hamming Code // Example8 . 5 : Syndrome c a l c u l a t o r // m e s s a g e s e q u e n c e = [ 0 , 1 , 1 , 1 , 0 , 0 , 1 ] clc ; D = poly (0 , D ) ; g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l C1 = 0+ D + D ^2+ D ^3+0+0+ D ^6; // e r r o r f r e e c o d e w o r d C2 = 0+ D + D ^2+0+0+0+ D ^6; // m i d d l e b i t i s e r r o r [ r1 , q1 ] = pdiv ( C1 , g ) ; S1 = coeff ( r1 ) ; S1 = modulo ( S1 ,2) ; disp ( r1 , r e m a i n d e r i n p o l y n o m i a l form ) disp ( S1 , Syndrome b i t s f o r e r r o r f r e e c o d e w o r d a r e : ) [ r2 , q2 ] = pdiv ( C2 , g ) ; S2 = coeff ( r2 ) ; S2 = modulo ( S2 ,2) ; disp ( r2 , r e m a i n d e r i n p o l y n o m i a l form f o r e r r o r e d codeword ) disp ( S2 , Syndrome b i t s f o r e r r o r e d c o d e w o r d a r e : ) Scilab code Exa 8.6 Reed-Solomon Codes

1 // C a p t i o n : ReedSolomon Codes 2 // Example8 . 6 : ReedSolomon Codes 3 // S i n g l e e r r o r c o r r e c t i n g RS c o d e w i t h a 2 b i t b y t e 4 clc ; 5 m =2; //m i t symbol b

90

6 7 8 9 10 11 12 13 14

k = 1^2; // number o f m e s s a g e b i t s t =1; // s i n g l e b i t e r r o r c o r r e c t i o n n = 2^ m -1; // c o d e word l e n g t h i n 2 b i t b y t e p = n - k ; // p a r i t y b i t s l e n g t h i n 2 b i t b y t e r = k / n ; // c o d e r a t e disp (n , n ) disp (p , nk ) disp (r , Code r a t e : r = k / n = ) disp (2* t , I t can c o r r e c t any e r r o r u p t o = ) Scilab code Exa 8.7 Convolutional Encoding - Time domain approach

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

// C a p t i o n : C o n v o l u t i o n a l E n c o d i n g Time domain approach // Example8 . 7 : C o n v o l u t i o n a l Code G e n e r a t i o n // Time Domain Approach close ; clc ; g1 = input ( E n t e r t h e i n p u t Top Adder S e q u e n c e := ) g2 = input ( E n t e r t h e i n p u t Bottom Adder S e q u e n c e := ) m = input ( E n t e r t h e m e s s a g e s e q u e n c e := ) x1 = round ( convol ( g1 , m ) ) ; x2 = round ( convol ( g2 , m ) ) ; x1 = modulo ( x1 ,2) ; x2 = modulo ( x2 ,2) ; N = length ( x1 ) ; for i =1: length ( x1 ) x (i ,:) =[ x1 (N - i +1) , x2 (N - i +1) ]; end x = string ( x ) disp ( x ) // R e s u l t // E n t e r t h e i n p u t Top Adder S e q u e n c e : = [ 1 , 1 , 1 ] // E n t e r t h e i n p u t Bottom Adder S e q u e n c e : = [ 1 , 0 , 1 ] // E n t e r t h e m e s s a g e s e q u e n c e : = [ 1 , 1 , 0 , 0 , 1 ] // x = // ! 1 1 ! 91

25 26 27 28 29 30 31 32 33 34 35 36

// ! // ! 1 // ! // ! 1 // ! // ! 1 // ! // ! 0 // ! // ! 0 // ! // ! 1

0 1 1 1 1 1

! ! ! ! ! ! ! ! ! ! ! !

Scilab code Exa 8.8 Convolutional Encoding Transform domain approach


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n : C o n v o l u t i o n a l E n c o d i n g T r a n s f o r m domain approach // Example8 . 8 : C o n v o l u t i o n a l c o d e T r a n s f o r m domain approach clc ; D = poly (0 , D ) ; g1D = 1+ D + D ^2; // g e n e r a t o r p o l y n o m i a l 1 g2D = 1+ D ^2; // g e n e r a t o r p o l y n o m i a l 2 mD = 1+0+0+ D ^3+ D ^4; // m e s s a g e s e q u e n c e p o l y n o m i a l representation x1D = g1D * mD ; // t o p o u t p u t p o l y n o m i a l x2D = g2D * mD ; // bottom o u t p u t p o l y n o m i a l x1 = coeff ( x1D ) ; x2 = coeff ( x2D ) ; disp ( modulo ( x1 ,2) , t o p o u t p u t s e q u e n c e ) disp ( modulo ( x2 ,2) , bottom o u t p u t s e q u e n c e ) // R e s u l t // t o p o u t p u t s e q u e n c e // 1. 1. 1. 1. 0. 0. 1. // // bottom o u t p u t s e q u e n c e // 1. 0. 1. 1. 1. 1. 1.

92

Scilab code Exa 8.11 Fano metric for binary symmetric channel using convolutional code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// C a p t i o n : Fano m e t r i c f o r b i n a r y s y m m e t r i c c h a n n e l using c o n v o l u t i o n a l code // Example8 . 1 1 : C o n v o l u t i o n a l c o d e f o r b i n a r y symmetric channel clc ; r = 1/2; // c o d e r a t e n =2; // number o f b i t s pe = 0.04; // t r a n s i t i o n p r o b i l i t y p = 1 - pe ; // p r o b a b i l i t y o f c o r r e c t r e c e p t i o n gama_1 = 2* log2 ( p ) +2*(1 - r ) ; // b r a n c h m e t r i c f o r correct reception gamma_2 = log2 ( pe * p ) +1; // b r a n c h m e t r i c f o r any one correct recption gamma_3 = 2* log2 ( pe ) +1; // b r a n c h m e t r i c f o r no correct reception disp ( gama_1 , b r a n c h m e t r i c f o r c o r r e c t r e c e p t i o n ) disp ( gamma_2 , b r a n c h m e t r i c f o r any one c o r r e c t recption ) disp ( gamma_3 , b r a n c h m e t r i c f o r no c o r r e c t r e c e p t i o n ) // b r a n c h m e t r i c f o r c o r r e c t r e c e p t i o n // 0.8822126 // b r a n c h m e t r i c f o r any one c o r r e c t r e c p t i o n // 3.7027499 // b r a n c h m e t r i c f o r no c o r r e c t r e c e p t i o n // 8.2877124

93

Chapter 9 Spread-Spectrum Modulation


Scilab code Exa 9.1 PN sequence generation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

// C a p t i o n : PN s e q u e n c e g e n e r a t i o n // Example9 . 1 and F i g u r e 9 . 1 : Maximuml e n g t h s e q u e n c e generator // Program t o g e n e r a t e Maximum Length Pseudo N o i s e Sequence // P e r i o d o f PN S e q u e n c e N = 7 clc ; // A s s i g n I n i t i a l v a l u e f o r PN g e n e r a t o r x0 = 1; x1 = 0; x2 =0; x3 =0; N = input ( E n t e r t h e p e r i o d o f t h e s i g n a l ) for i =1: N x3 = x2 ; x2 = x1 ; x1 = x0 ; x0 = xor ( x1 , x3 ) ; disp (i , The PN s e q u e n c e a t s t e p ) x = [ x1 x2 x3 ]; disp (x , x= ) end m = [7 ,8 ,9 ,10 ,11 ,12 ,13 ,17 ,19]; 94

22 N = 2^ m -1; 23 disp ( T a b l e 9 . 1 Range o f PN S e q u e n c e l e n g t h s ) 24 disp (

25 26 27 28 29

) disp ( Length o f s h i f t r e g i s t e r (m) ) disp ( m ) disp ( PN s e q u e n c e Length (N) ) disp ( N ) disp ( ) // RESULTEnter t h e p e r i o d o f t h e s i g n a l 7 // The PN s e q u e n c e a t s t e p 1. // x= 1. 0. 0. // The PN s e q u e n c e a t s t e p 2. // x= 1. 1. 0. // The PN s e q u e n c e a t s t e p 3. // x= 1. 1. 1. // The PN s e q u e n c e a t s t e p 4. // x= 0. 1. 1. // The PN s e q u e n c e a t s t e p 5. // x= 1. 0. 1. // The PN s e q u e n c e a t s t e p 6. // x= 0. 1. 0. // The PN s e q u e n c e a t s t e p 7. // x= 0. 0. 1. Scilab code Exa 9.2 Maximum length sequence property

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

1 // C a p t i o n : Maximum l e n g t h s e q u e n c e p r o p e r t y 2 // Example9 . 2 and F i g u r e 9 . 2 : Maximuml e n g t h s e q u e n c e 3 // P e r i o d o f PN S e q u e n c e N = 7 4 // P r o p e r i t e s o f maximuml e n g t h s e q u e n c e 5 clc ; 6 // A s s i g n I n i t i a l v a l u e f o r PN g e n e r a t o r 7 x0 = 1; 8 x1 = 0;

95

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

x2 =0; x3 =0; N = input ( E n t e r t h e p e r i o d o f t h e s i g n a l ) one_count = 0; zero_count = 0; for i =1: N x3 = x2 ; x2 = x1 ; x1 = x0 ; x0 = xor ( x1 , x3 ) ; disp (i , The PN s e q u e n c e a t s t e p ) x = [ x1 x2 x3 ]; disp (x , x= ) C ( i ) = x3 ; if ( C ( i ) ==1) C_level ( i ) =1; one_count = one_count +1; elseif ( C ( i ) ==0) C_level ( i ) = -1; zero_count = zero_count +1; end end disp (C , Output S e q u e n c e ) // r e f e r e q u a t i o n 9 . 4 disp ( C_level , Output S e q u e n c e l e v e l s ) // r e f e r equation 9.5 if ( zero_count < one_count ) disp ( one_count , Number o f 1 s i n t h e g i v e n PN sequence ) disp ( zero_count , Number o f 0 s i n t h e g i v e n PN sequence ) disp ( P r o p e r t y 1 ( B a l a n c e p r o p e r t y ) i s s a t i s i f i e d ) end Rc_tuo = corr ( C_level , N ) ; t = 1:2* length ( C_level ) ; // figure a = gca () ; 96

43 a . x_location = o r i g i n ; 44 plot2d (t ,[ C_level ; C_level ]) 45 xlabel ( t ) 46 title ( Waveform o f maximuml e n g t h s e q u e n c e [ 0 0 1 1

1 0 1 0 0 1 1 1 0 1] )
47 // 48 figure 49 a = gca () ; 50 a . x_location = o r i g i n ; 51 a . y_location = o r i g i n ; 52 plot2d ([ - length ( Rc_tuo ) +1: -1 ,0: length ( Rc_tuo ) -1] ,[ 53

Rc_tuo ( $ : -1:2) , Rc_tuo ] ,5) xlabel (

tuo ) 54 ylabel ( Rc ( t u o ) ) 55 title ( A u t o c o r r e l a t i o n o f maximuml e n g t h s e q u e n c e ) Scilab code Exa 9.3 Processing gain, PN sequence length, Jamming margin in dB
1 2 3 4 5 6 7 8 9 10 11 12 13

// C a p t i o n : P r o c e s s i n g g a i n , PN s e q u e n c e l e n g t h , Jamming m a r g i n i n dB // Example9 . 3 : P r o c e s s i n g g a i n and Jamming Margin clear ; clc ; close ; Tb = 4.095*10^ -3; // I n f o r m a t i o n b i t d u r a t i o n Tc = 1*10^ -6; //PN c h i p d u r a t i o n PG = Tb / Tc ; // P r o c e s s i n g g a i n disp ( PG , The p r o c e s s i n g g a i n i s : ) N = PG ; //PN s e q u e n c e l e n g t h m = log2 ( N +1) ; // f e e d b a c k s h i f t r e g i s t e r l e n g t h disp (N , The r e q u i r e d PN s e q u e n c e i s : ) disp (m , The f e e d b a c k s h i f t r e g i s t e r l e n g t h : ) 97

Figure 9.1: Example9.2a

98

Figure 9.2: Example9.2b

99

14 Eb_No = 10; // Energy t o n o i s e d e n s i t y r a t i o 15 J_P = PG / Eb_No ; // Jamming Margin 16 disp (10* log10 ( J_P ) , Jamming Margin i n dB : ) 17 // R e s u l t 18 // The p r o c e s s i n g g a i n i s : 4095. 19 // The r e q u i r e d PN s e q u e n c e i s : 4 0 9 5 . 20 // The f e e d b a c k s h i f t r e g i s t e r l e n g t h : 1 2 . 21 // Jamming Margin i n dB : 2 6 . 1 2 2 5 3 9

Scilab code Exa 9.4Example9.5 Slow and Fast Frequency hopping: FH/MFSK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

// C a p t i o n : Slow and F a s t F r e q u e n c y h o p p i n g : FH/MFSK // Example9 . 4 and Example9 . 5 : P a r a m e t e r s o f FH/MFSK signal // Slow and F a s t F r e q u e n c y Hopping clear ; close ; clc ; K =2; // number o f b i t s p e r symbol M = 2^ K ; // Number o f MFSK t o n e s N = 2^ M -1; // P e r i o d o f t h e PN s e q u e n c e k = 3; // l e n g t h o f PN s e q u e n c e p e r hop disp (K , number o f b i t s p e r symbol K = ) disp (M , Number o f MFSK t o n e s M ) = disp (N , P e r i o d o f t h e PN s e q u e n c e N = ) disp (k , l e n g t h o f PN s e q u e n c e p e r hop k = ) disp (2^ k , T o t a l number o f f r e q u e n c y h o p s = ) // R e s u l t // number o f b i t s p e r symbol K = 2 . // Number o f MFSK t o n e s M = 4 . // P e r i o d o f t h e PN s e q u e n c e N = 1 5 . // l e n g t h o f PN s e q u e n c e p e r hop k = 3 . // T o t a l number o f f r e q u e n c y h o p s = 8 . Scilab code Fig 9.4Figure9.6 Direct Sequence Spread Coherent BPSK

// C a p t i o n : D i r e c t S e q u e n c e S p r e a d C o h e r e n t BPSK 100

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

// F i g u r e 9 . 4 : G e n e r a t i o n o f w a v e f o r m s i n DS/BPSK spread spectrum t r a n s m i t t e r clear ; close ; clc ; t = 0:13; N = 7; wt = 0:0.01:1; bt = [1* ones (1 , N ) -1* ones (1 , N ) ]; ct = [0 ,0 ,1 ,1 ,1 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,0 ,1]; ct_polar = [ -1 , -1 ,1 ,1 ,1 , -1 ,1 , -1 , -1 ,1 ,1 ,1 , -1 ,1]; mt = bt .* ct_polar ; Carrier = 2* sin ( wt *2* %pi ) ; st = []; for i = 1: length ( mt ) st = [ st mt ( i ) * Carrier ]; end // figure subplot (3 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; plot2d2 (t , bt ,5) xlabel ( t ) title ( Data b ( t ) ) subplot (3 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; plot2d2 (t , ct_polar ,5) xlabel ( t ) 101

27 28 29 30 31 32 33 34

35 36 37 38 39 40 41 42

title ( S p r e a d i n g c o d e c ( t ) ) subplot (3 ,1 ,3) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; plot2d2 (t , mt ,5) xlabel ( t ) title ( P r o d u c t S i g n a l m( t ) ) // figure subplot (3 ,1 ,1) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; plot2d2 (t , mt ,5) xlabel ( t ) title ( P r o d u c t S i g n a l m( t ) ) subplot (3 ,1 ,2) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; plot ( Carrier ) xlabel ( t ) title ( C a r r i e r S i g n a l ) subplot (3 ,1 ,3) a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; a . data_bounds = [0 , -2;20 ,2]; 102

43 44 45 46 47 48 49 50 51 52

53 54 55 56 57 58 59 60

61 62 63 64 65 66

Figure 9.3: Figure9.6a


67 68

plot ( st ) xlabel (

t ) 69 title ( DS/BPSK s i g n a l s ( t ) ) 70 // Scilab code ARC 1 Alaw


1 2 3

function [ Cx , Xmax ] = Alaw (x , A ) // Non l i n e a r Q u a n t i z a t i o n //Alaw : Alaw n o n l i n e a r q u a n t i z a t i o n 103

Figure 9.4: Figure9.6b Figure9.6b

104

Figure 9.5: Figure10.12

105

4 5 6 7 8 9 10 11 12 13 14 15 16 17

// x = i n p u t v e c t o r //Cx = Alaw c o m p r e s s o r o u t p u t //Xmax = maximum o f i n p u t v e c t o r x Xmax = max ( abs ( x ) ) ; for i = 1: length ( x ) if ( x ( i ) / Xmax < = 1/ A ) Cx ( i ) = A * abs ( x ( i ) / Xmax ) ./(1+ log ( A ) ) ; elseif ( x ( i ) / Xmax > 1/ A ) Cx ( i ) = (1+ log ( A * abs ( x ( i ) / Xmax ) ) ) ./(1+ log ( A ) ) ; end end Cx = Cx / Xmax ; // n o r m a l i z a t i o n o f o u t p u t v e c t o r Cx = Cx ; endfunction Scilab code ARC 2 auto correlation

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

function [ Rxx ] = auto_correlation ( x ) // A u t o c o r r e l a t i o n o f a g i v e n I n p u t S e q u e n c e // F i n d i n g o u t t h e p e r i o d o f t h e s i g n a l u s i n g autocorrelation technique L = length ( x ) ; h = zeros (1 , L ) ; for i = 1: L h (L - i +1) = x ( i ) ; end N = 2* L -1; Rxx = zeros (1 , N ) ; for i = L +1: N h ( i ) = 0; end for i = L +1: N x ( i ) = 0; end for n = 1: N for k = 1: N if ( n >= k ) 106

21 Rxx ( n ) = Rxx ( n ) + x (n - k +1) * h ( k ) ; 22 end 23 end 24 end 25 disp ( Auto C o r r e l a t i o n R e s u l t i s ) 26 Rxx 27 disp ( C e n t e r V a l u e i s t h e Maximum o f a u t o c o r r e l a t i o n 28 29 30 31

result ) [m , n ] = max ( Rxx ) disp ( P e r i o d o f t h e g i v e n s i g n a l u s i n g Auto C o r r e l a t i o n Sequence ) n endfunction Scilab code ARC 3 Convolutional Coding

1 // C a p t i o n : C o n v o l u t i o n a l Code G e n e r a t i o n 2 // Time Domain Approach 3 close ; 4 clc ; 5 g1 = input ( E n t e r t h e i n p u t Top Adder S e q u e n c e := ) 6 g2 = input ( E n t e r t h e i n p u t Bottom Adder S e q u e n c e := 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

) m = input ( E n t e r t h e m e s s a g e s e q u e n c e := ) x1 = round ( convol ( g1 , m ) ) ; x2 = round ( convol ( g2 , m ) ) ; x1 = modulo ( x1 ,2) ; x2 = modulo ( x2 ,2) ; N = length ( x1 ) ; for i =1: length ( x1 ) x (i ,:) =[ x1 (N - i +1) , x2 (N - i +1) ]; end x = string ( x ) // R e s u l t // E n t e r t h e i n p u t Top Adder S e q u e n c e : = [ 1 , 1 , 1 ] // E n t e r t h e i n p u t Bottom Adder S e q u e n c e : = [ 1 , 0 , 1 ] // E n t e r t h e m e s s a g e s e q u e n c e : = [ 1 , 1 , 0 , 0 , 1 ] // x = 107

22 23 24 25 26 27 28 29 30 31 32 33 34

// ! 1 // ! // ! 1 // ! // ! 1 // ! // ! 1 // ! // ! 0 // ! // ! 0 // ! // ! 1

1 0 1 1 1 1 1

! ! ! ! ! ! ! ! ! ! ! ! !

Scilab code ARC 4 Hamming Distance


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

// C a p t i o n : Hamming Weight and Hamming D i s t a n c e //H( 7 , 4 ) // Code Word Length = 7 , Me ss ag e Word l e n g t h = 4 , P a r i t y b i t s =3 // c l e a r ; close ; clc ; // G e t t i n g Code Words code1 = input ( E n t e r t h e f i r s t c o d e word ) ; code2 = input ( E n t e r t h e s e c o n d c o d e word ) ; Hamming_Distance = 0; for i = 1: length ( code1 ) Hamming_Distance = Hamming_Distance + xor ( code1 ( i ) , code2 ( i ) ) ; end disp ( Hamming_Distance , Hamming D i s t a n c e ) // R e s u l t // E n t e r t h e f i r s t c o d e word [ 0 , 1 , 1 , 1 , 0 , 0 , 1 ] // E n t e r t h e s e c o n d c o d e word [ 1 , 1 , 0 , 0 , 1 , 0 , 1 ] // Hamming D i s t a n c e 4. Scilab code ARC 5 Hamming Encode 108

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

// C a p t i o n : Hamming E n c o d i n g //H( 7 , 4 ) // Code Word Length = 7 , Me ss ag e Word l e n g t h = 4 , P a r i t y b i t s =3 // c l e a r ; close ; clc ; // G e t t i n g M es sag e Word m3 = input ( E n t e r t h e 1 b i t (MSb) o f m e s s a g e word ) ; m2 = input ( E n t e r t h e 2 b i t o f m e s s a g e word ) ; m1 = input ( E n t e r t h e 3 b i t o f m e s s a g e word ) ; m0 = input ( E n t e r t h e 4 b i t ( LSb ) o f m e s s a g e word ) ; // G e n e r a t i n g P a r i t y b i t s for i = 1:(2^4) b2 ( i ) = xor ( m0 ( i ) , xor ( m3 ( i ) , m1 ( i ) ) ) ; b1 ( i ) = xor ( m1 ( i ) , xor ( m2 ( i ) , m3 ( i ) ) ) ; b0 ( i ) = xor ( m0 ( i ) , xor ( m1 ( i ) , m2 ( i ) ) ) ; m (i ,:) = [ m3 ( i ) m2 ( i ) m1 ( i ) m0 ( i ) ]; b (i ,:) = [ b2 ( i ) b1 ( i ) b0 ( i ) ]; end C = [ b m ]; disp ( ) for i = 1:2^4 disp ( i ) disp ( m (i ,:) , Mes sa ge Word ) disp ( b (i ,:) , P a r i t y B i t s ) disp ( C (i ,:) , CodeWord ) disp ( ); disp ( ); end disp ( ) // d i s p (m b C) // R e s u l t // E n t e r t h e 1 b i t (MSb) o f m e s s a g e word 109

22 23 24 25 26 27 28 29 30

31 32 33

[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 34 // E n t e r t h e 2 b i t o f m e s s a g e word [0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 35 // E n t e r t h e 3 b i t o f m e s s a g e word [0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1 36 // E n t e r t h e 4 b i t ( LSb ) o f m e s s a g e [0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 Scilab code ARC 5 invmulaw


1 2 3 4 5

,1]; ,1]; ,1]; word ,1];

function x = invmulaw (y , mu ) // Non l i n e a r Q u a n t i z a t i o n // invmulaw : i n v e r s e mulaw n o n l i n e a r q u a n t i z a t i o n // x = o u t p u t v e c t o r // y = i n p u t v e c t o r ( u s i n g mulaw n o n l i n e a r comression ) 6 x = (((1+ mu ) .^( abs ( y ) ) -1) ./ mu ) 7 endfunction Scilab code ARC 6 PCM Encoding
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

function [ c ] = PCM_Encoding (x ,L , en_code ) // E n c o d i n g : C o n v e r t i n g Q u a n t i z e d d e c i m a l s a m p l e values in to binary // x = i n p u t s e q u e n c e //L = number o f q u n a t i z a t i o n l e v e l s // e n c o d e = n o r m a l i z e d i n p u t s e q u e n c e n = log2 ( L ) ; c = zeros ( length ( x ) ,n ) ; for i = 1: length ( x ) for j = n : -1:0 if ( fix ( en_code ( i ) /(2^ j ) ) ==1) c (i ,( n - j ) ) =1; en_code ( i ) = en_code ( i ) -2^ j ; end end end disp ( c ) 110

Scilab code ARC 7 PCM Transmission


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// C a p t i o n :PCM T r a n s m i s s i o n ( i n c l u d e s f u n c t i o n s : u n i f o r m p c m . s c e , PCM encoding . s c e ) // T h i s program i s a s a m p l e program f o r P u l s e Code Modulation t r a n s m i s s i o n // s t e p 1 : The g i v e n a n a l o g s i g n a l c o n v e r t e d i n t o quantized sample value // s t e p 2 : Then t h e q u a n t i z e d s a m p l e v a l u e c o n v e r t e d into binary value clc ; close ; t = 0:0.001:1; x = sin (2* %pi * t ) ; L = 16; // S t e p 1 [ SQNR , xq , en_code ] = uniform_pcm (x , L ) ; // S t e p 2 c = PCM_Encoding (x ,L , en_code ) ; a = gca () ; a . x_location = o r i g i n ; a . y_location = o r i g i n ; plot2d2 ( t *2* %pi , x ) ; plot2d2 ( t *2* %pi , xq ,5) ; title ( Q u a n t i z a t i o n o f Sampled a n a l o g s i g n a l ) legend ([ Analog s i g n a l , Q u a n t i z e d S i g n a l ]) Scilab code ARC 8 sinc new

1 function [ y ]= sinc_new ( x ) 2 i = find ( x ==0) ; 3 x ( i ) = 1; // From LS : don t n e e d t h i s

i s /0

warning i s o f f 4 y = sin ( %pi * x ) ./( %pi * x ) ; 5 y ( i ) = 1; 6 endfunction 111

Scilab code ARC 9 uniform pcm


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

function [ SQNR , xq , en_code ] = uniform_pcm (x , L ) // x = i n p u t s e q u e n c e //L = number o f q u n a t i z a t i o n l e v e l s xmax = max ( abs ( x ) ) ; xq = x / xmax ; en_code = xq ; d = 2/ L ; q = d *[0: L -1]; q = q -(( L -1) /2) * d ; for i = 1: L xq ( find ((( q ( i ) -d /2) <= xq ) &( xq <=( q ( i ) + d /2) ) ) ) =... q ( i ) .* ones (1 , length ( find ((( q ( i ) -d /2) <= xq ) &( xq <=( q ( i ) + d /2) ) ) ) ) ; en_code ( find ( xq == q ( i ) ) ) = (i -1) .* ones (1 , length ( find ( xq == q ( i ) ) ) ) ; end xq = xq * xmax ; SQNR = 20* log10 ( norm ( x ) / norm (x - xq ) ) ; endfunction Scilab code ARC 10 xor

1 2 3 4 5 6 7

function [ value ] = xor (A , B ) if ( A == B ) value = 0; else value = 1; end endfunction

112

You might also like