Digital Communication S. Haykin
Digital Communication S. Haykin
Digital Communication S. Haykin
Digital Communication
by S. Haykin1
Created by
Prof. R. Senthilkumar
B.Tech. + M.Tech
Electronics Engineering
Institute of Road and Transport Technology
College Teacher
Na
Cross-Checked by
Prof. Saravanan Vijayakumaran
May 24, 2016
1 Funded
Book Description
Title: Digital Communication
Author: S. Haykin
Publisher: Willey India, New Delhi
Edition: 1
Year: 2010
ISBN: 9788126508242
Scilab numbering policy used in this document and the relation to the
above book.
Exa Example (Solved example)
Eqn Equation (Particular equation of the above book)
AP Appendix to Example(Scilab Code that is an Appednix to a particular
Example of the above book)
For example, 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
14
4 Sampling Process
22
24
30
43
62
70
1.2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
3.1
3.2
3.3
3.4
3.6
3.29
4.1
4.3
5.1
5.2
5.3
5.5
05.13
5.13
06.01
06.1
6.01
6.1
6.2
5
7
8
9
10
11
11
12
14
16
17
18
19
20
22
23
24
25
26
27
28
29
30
31
32
33
34
Exa
Exa
Exa
Exa
Exa
Exa
6.3
6.4
6.6
6.7
6.9
6.15
35
36
38
39
40
41
43
45
47
48
49
51
52
53
54
55
56
57
58
59
60
62
62
63
64
65
66
66
68
68
70
71
73
74
75
Chapter 1
Introduction
// c l e a r //
// 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 (
6
22
Time )
ylabel (
23
24
25
26
27
28
29
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 )
Chapter 2
Fundamental Limit on
Performance
));
12 end
13 // p l o t
14 plot2d ( Po , H_Po )
15 xlabel ( Symbol P r o b a b i l i t y , Po )
16 ylabel ( H( Po ) )
17 title ( Entropy f u n c t i o n H( Po ) )
18 plot2d3 ( gnn ,0.5 ,1)
Scilab code Exa 2.2 Second order Extension of Discrete Memoryless Source
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// c l e a r //
// 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 (
)
21 disp (
)
22 H_Ruo_Square =0;
23 for i = 1: length ( P_sigma )
9
24
Scilab code Exa 2.3 Entropy, Average length, Variance of Huffman Encoding
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// c l e a r //
// 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
10
)
23 sigma_1 = P0 *( L0 - L ) ^2+ P1 *( L1 - L ) ^2+ P2 *( L2 - L ) ^2+ P3 *( L3
- L ) ^2+ P4 *( L4 - L ) ^2;
24 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 Huffman Encoding
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// c l e a r //
// 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
// 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;
11
22
transition probility
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= )
10 disp ( T r a n s i t i o n p r o b i l i t y )
11 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= )
9
// c l e a r //
// 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)
12
10
11
12
13
14
15
16
17
18
19
20
// c l e a r //
// 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
// 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
clear ;
clc ;
close ;
p =10^ -2;
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 c o d e r a t e
r = 1
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
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
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
r = [1 ,1/3 ,1/5 ,1/7];
13
of the
channel coding theorem )
legend ( R e p e t i t i o n c o d e s )
xgrid (1)
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 )
disp (
)
25 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 )
26 disp (
)
14
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
// c l e a r //
// 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];
15
21 t7 = 2* T /3:0.01: T ;
22 phi3t = sqrt (3/ T ) *[0 , ones (1 , length ( t7 ) -2) ,0];
23 //
24 figure
25 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
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
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)
16
57
58
59
60
61
62
63
64
65
66
67
68
69
70
xlabel ( t )
ylabel ( p h i 1 ( t ) )
subplot (3 ,1 ,2)
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 ) )
// c l e a r //
// C a p t i o n :MARY S i g n a l i n g
// Example3 . 2 : MARY 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)
17
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 )
19 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) )
20 disp (
18
21
22
23
24
25
26
)
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 (
01
01
)
27 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 (
T)<x1 <0| 0<x1<a . s q r t (T) | a . s q r t (T)<x1 )
// c l e a r //
// 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 ;
phit = sqrt (2/ T ) * cos (2* %pi * fc * t1 ) ;
hopt = phit ;
phiot = convol ( phit , hopt ) ;
18
13
14
15
16
17
18
19
20
21
t )
22 ylabel (
23
24
25
26
27
28
29
30
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 )
31 ylabel (
32
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
// c l e a r //
// 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
3 // 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
2
19
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 (
18
t )
ylabel (
19
20
21
22
23
24
25
26
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 (
27
t )
ylabel (
28
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 )
20
// c l e a r //
// 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
// c l e a r //
// 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) ;
21
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
22
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
// c l e a r //
// 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 )
23
19
20
21
22
23
24
25
26
27
28
29
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)
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 ) | )
// c l e a r //
// 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
// 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 )
24
Chapter 5
Waveform Coding Techniques
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
25
Scilab code Exa 5.2 Comparison of M-ary PCM with ideal system
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 l e a r //
// C a p t i o n : Comparison o f Ma r y PCM w i t h i d e a l s y s t e m
( Channel C a p a c i t y Theorem )
// Example5 . 2 : Comparison o f Ma r y PCM s y s t e m
// 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 Ma r y PCM s y s t e m ;
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 Ma r y PCM w i t h t h e
i d e a l ssytem )
legend ([ I d e a l System , PCM ])
26
)
B = n*W;
disp (B , Channel w i d t h i n Hz : )
SNRo = 6* n - 7.2;
disp ( SNRo , Output S i g n a l t o n o i s e r a t i o i n dB : )
// R e s u l t 1 i f n = 8 b i t s
// 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
// 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
// Channel w i d t h i n Hz :
32000.
// 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
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
// R e s u l t 2 i f n = 9 b i t s
// 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
// 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
// Channel w i d t h i n Hz : 3 6 0 0 0 .
// 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
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
// 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
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 .
27
Scilab code Exa 5.5 Delta Modulation - to avoid slope overload distortion
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 l e a r //
// 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
: );
f0 = input ( 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 : ) ;
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 : );
Ts = 1/ fs ; // S a m p l i n g i n t e r v a l
delta = 2* %pi * f0 * a0 * Ts ; // S t e p s i z e t o a v o i d 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
//
28
//////////////////////////////////////////////////////////////////
// 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
28 // 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
29 //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
30 //
//////////////////////////////////////////////////////////////////
25
26
27
// 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
32 // 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
31
// c l e a r //
// 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 )
[ Cx (i ,:) , Xmax ( i ) ] = Alaw (x , A ( 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 : ALaw companding ,
29
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 ) | )
;
16 legend ([ A =1 ] ,[ A=2 ] ,[ A= 8 7 . 5 6 ])
16
// c l e a r //
// 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 ])
30
Chapter 6
Baseband Shaping for Data
Transmission
// c l e a r //
// 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 ;
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
31
20
if ( x ( i ) ==0)
21
plot ([ i *L - L +1: i * L ] , binary_zero ) ;
22
poly1 = a . children (1) . children (1) ;
23
poly1 . thickness =3;
24
elseif (( x ( i ) ==1) &( x (i -1) ~=1) )
25
plot ([ i *L - L +1: i * L ] , binary_positive ) ;
26
poly1 = a . children (1) . children (1) ;
27
poly1 . thickness =3;
28
else
29
plot ([ i *L - L +1: i * L ] , binary_negative ) ;
30
poly1 = a . children (1) . children (1) ;
31
poly1 . thickness =3;
32
end
33 end
34 xgrid (1)
35 title ( B i P o l a r NRZ )
// c l e a r //
// 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
// 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 () ;
32
// c l e a r //
// 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
33
19
if ( x ( i ) ==0)
20
plot ([ i *L - L +1: i * L ] , binary_zero ) ;
21
poly1 = a . children (1) . children (1) ;
22
poly1 . thickness =3;
23
else
24
plot ([ i *L - L +1: i * L ] , binary_one ) ;
25
poly1 = a . children (1) . children (1) ;
26
poly1 . thickness =3;
27
end
28 end
29 xgrid (1)
30 title ( U n i p o l a r NRZ )
// c l e a r //
// 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
34
:0.64710 6
16 // 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 : 1 5 4 5 5 9 5 . 1
input
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
35
28 c = c ;
29 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 : )
30 // 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
31 for k =1: length ( c )
32
if ( abs ( c ( k ) ) >1)
33
b_r ( k ) = 0;
34
else
35
b_r ( k ) = 1;
36
end
37 end
38 b_r = b_r ;
39 disp ( b_r , R e c o v e r e d
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
o r i g i n a l sequence at 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 :
//
// 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.
1.
:
0.
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
// c l e a r //
// 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
36
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
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 ;
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 v o l t s
: )
// 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.
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.
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.
0.
1. 1.
Scilab code Exa 6.4 Power Spectra of different binary data formats
37
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
// c l e a r //
// 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
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)
38
34
35
36
37
38
39
40
41
42
43
44
45
46
// c l e a r //
// 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
// SINC p u l s e
// 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
39
// c l e a r //
// 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 ;
end
end
Alpha = Alpha +0.5;
end
a = gca () ;
plot2d (t , p (1 ,:) )
plot2d (t , p (2 ,:) )
poly1 = a . children (1) . children (1) ;
poly1 . foreground =2;
40
31
32
33
34
35
36
37
38
39
40
41
plot2d (t , p (3 ,:) )
poly2 = a . children (1) . children (1) ;
po1y2 . foreground =4;
poly2 . line_style = 3;
xlabel ( t /Tb> ) ;
ylabel ( p ( t )> ) ;
title ( RAISED COSINE SPECTRUM P r a c t i c a l S o l u t i o n
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 ])
xgrid (1)
// R e s u l t
// E n t e r t h e b i t r a t e : 1
// c l e a r //
// 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
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 ;
41
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 Exa 6.15 Frequency response of modified duobinary conversion filter
1
2
3
4
5
6
7
8
// c l e a r //
// 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
// 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
// ( 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
// p a g e 259
clear ;
close ;
42
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
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
43
Chapter 7
Digital Modulation Techniques
// c l e a r //
// 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
// F i g u r e 7 . 1
// 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
//To P l o t t h e ASK, FSK and PSk Waveforms
clear ;
clc ;
close ;
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
);
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 ];
44
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
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 ]
// c l e a r //
// 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 ) ,:) ];
46
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
S2 = [ S2 s2 ( m ( i ) ,:) ];
end
S = S1 + S2 ;
figure
subplot (3 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
plot ( S1 )
title ( B i n a r y PSK wave o f Oddnumbered b i t s o f i n p u t
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 (
47
55
56
Quadrature ) ;
// 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 Exa 7.02 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
20
// c l e a r //
// 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 (
InPhase ) ;
21 ylabel (
Quadrature );
48
22
23
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 Exa 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
20
21
22
23
24
25
26
27
28
29
// c l e a r //
// 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 ;
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 = [];
49
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
t
S
S
S
= 0:0.01:1;
= [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ];
= [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ];
= [ 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 () ;
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 )
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 l e a r //
// 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
// 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 (
)
30 disp ( bk , ( bk ) )
31 bk_not = bk_not ;
51
32 disp ( bk_not , ( b k n o t ) )
33 dk = dk ;
34 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 ) )
35 dk_radians = dk_radians ;
36 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 )
37 disp (
Scilab code Exa 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
19
// c l e a r //
// 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 ) ;
20 ylabel (
52
Quadrature );
21 title ( C o n s t e l l a t i o n f o r BFSK )
22 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)
// c l e a r //
// C a p t i o n : Comparison o f e r r o r p r o b a b i l i t y o f
d i f f e r e n t data t r a n s m i s s i o n schemes
// T a b l e 7 . 4 : F i g u r e 7 . 2 0
// Comparison o f Symbol E r r o r P r o b a b i l i t y
// o f D i f f e r e n t D i g i t a l T r a n s m i s s i o n System
clear ;
close ;
clc ;
//Eb = Energy o f t h e b i t No = N o i s e S p e c t r a l
Density
Eb_No =[18 ,0.3162278];
x = Eb_No (2) :1/100: Eb_No (1) ;
x_dB = 10* log10 ( x ) ;
for i = 1: length ( x )
// E r r o r P r o b a b i l i t y o f C o h e r e n t BPSK
Pe_BPSK ( i ) = (1/2) * erfc ( sqrt ( x ( i ) ) ) ;
// E r r o r P r o b a b i l i t y o f C o h e r e n t BFSK
Pe_BFSK ( i ) = (1/2) * erfc ( sqrt ( x ( i ) /2) ) ;
// E r r o r P r o b a b i l i t y NonC o h e r e n t PSK = DPSK
Pe_DPSK ( i ) = (1/2) * exp ( - x ( i ) ) ;
// E r r o r P r o b a b i l i t y NonC o h e r e n t FSK
Pe_NFSK ( i ) = (1/2) * exp ( -( x ( i ) /2) ) ;
// E r r o r P r o b a b i l i t y o f QPSK & MSK
Pe_QPSK_MSK ( i ) = erfc ( sqrt ( x ( i ) ) ) -((1/4) *( erfc (
sqrt ( x ( i ) ) ) ^2) ) ;
end
a = gca () ;
53
different
PSK & FSK Scheme )
43 legend ([ BPSK , BFSK , DPSK , NonC o h e r e n t FSK ,
QPSK & MSK ])
44 xgrid (1)
// c l e a r //
// C a p t i o n : Bandwidth e f f i c i e n c y o f Ma r y PSK s i g n a l s
// T a b l e 7 . 6 : Bandwidth E f f i c i e n c y o f Ma r y PSK
signals
clear ;
clc ;
close ;
M = [2 ,4 ,8 ,16 ,32 ,64]; //Ma r y
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 Ma r y PSK
54
signals )
10 disp (
11
12
)
disp (M , M )
disp (
)
13 disp ( Ruo , r i n b i t s / s /Hz )
14 disp (
)
Scilab code Exa 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
// c l e a r //
// 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)
55
19
20
21
22
Phase ) ;
23 ylabel (
24
25
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)
/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 Ma r y FSK
signals )
disp (
)
13 disp (M , M )
14 disp (
56
)
15 disp ( Ruo , r i n b i t s / s /Hz )
16 disp (
)
Scilab code Exa 7.12.7.2 Signal space diagram for MSK diagram
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
// c l e a r //
// 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 MSK d i a g r a m
// F i g u r e 7 . 1 2 S i g n a l S p a c e Diagram f o r c o h e r e n t MSK
system
// 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;
teta_0 = [0 , %pi ];
teta_tb = [ %pi /2 , - %pi /2];
for i = 1: M
s1 ( i ) = cos ( teta_0 ( i ) ) ;
s2 ( i ) = - sin ( teta_tb ( i ) ) ;
end
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 ;
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) , -2)
plot2d ( y (2 ,1) ,y (2 ,2) , -4)
plot2d ( y (3 ,1) ,y (3 ,2) , -6)
plot2d ( y (4 ,1) ,y (4 ,2) , -9)
57
26
xlabel (
InPhase ) ;
27 ylabel (
Quadrature );
28 title ( C o n s t e l l a t i o n f o r MSK )
29 legend ([ m e s s a g e p o i n t 1 ( 0 , %pi / 2 ) ; m e s s a g e p o i n t
2 ( %pi , %pi / 2 ) ; m e s s a g e p o i n t 3 ( %pi , %pi / 2 )
; m e s s a g e p o i n t 4 ( 0 , %pi / 2 ) ] ,5)
Scilab code Exa 7.29 Power Spectra of BPSK and BFSK signals
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// c l e a r //
// 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 ) )
58
21
22
23
24
25
26
27
28
29
30
Scilab code Exa 7.30 Power Spectra of QPSK and MSK signals
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// c l e a r //
// 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
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
59
19 a = gca () ;
20 plot ( f * Tb , SB_MSK /(4* Eb ) ) ;
21 plot ( f * Tb , SB_QPSK /(4* Eb ) ) ;
22 poly1 = a . children (1) . children (1) ;
23 poly1 . foreground = 3;
24 xlabel ( N o r m a l i z e d F r e q u e n c y > )
25 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 > )
26 title ( QPSK Vs MSK Power S p e c t r a Comparison )
27 legend ([ Minimum S h i f t Keying , QPSK ])
28 xgrid (1)
29 // R e s u l t
30 // 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
31 // E n t e r t h e Energy o f b i t : 1
// c l e a r //
// C a p t i o n : Power s p e c t r a o f Ma r y PSK s i g n a l s
// 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 Ma r y PSK s i g n a l s
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)
60
18
19
20
21
22
23
24
25
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 Ma r y s i g n a l s f o r M = 2 , 4 , 8 )
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
// c l e a r //
// 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 )
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 )> )
61
25
26
27
28
29
30
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 ) )
62
Chapter 8
Error Control Coding
// c l e a r //
// 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 ) ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// c l e a r //
// C a p t i o n : Hamming Codes
// Example8 . 2 : Hamming c o d e s
clear ;
clc ;
k = 4; // m e s s a g e b i t s l e n g t h
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
19 //
20 C = m * G ;
21 C = modulo (C ,2) ;
22 disp (C , Code words o f
( 7 , 4 ) Hamming c o d e )
64
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Scilab code Exa 8.4 Encoder for the (7,4) Cyclic Hamming Code
1
2
3
4
5
6
7
8
9
10
11
// c l e a r //
// 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 )
65
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 )
)
14 disp (
12
13
)
disp ( S h i f t
Contents )
16 disp (
15
17
18
19
20
21
)
disp ( 1
disp ( 2
disp ( 3
disp ( 4
disp (
Input
1
0
0
1
Register
1
0
1
0
1
1
1
1
0 )
1 )
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
// c l e a r //
// 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) ;
66
13
14
15
16
17
18
19
disp ( r1 , r e m a i n d e r i n
disp ( S1 , Syndrome b i t s
)
[ 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
codeword )
disp ( S2 , Syndrome b i t s
p o l y n o m i a l form )
f o r e r r o r f r e e codeword a r e :
p o l y n o m i a l form f o r e r r o r e d
for errored
codeword a r e : )
// c l e a r //
// C a p t i o n : ReedSolomon Codes
// Example8 . 6 : ReedSolomon Codes
// 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
clc ;
m =2; //mb i t symbol
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 = )
// c l e a r //
// 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
67
3 // 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
4 // Time Domain Approach
5 close ;
6 clc ;
7 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 := )
8 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 :=
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
)
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 !
// !
!
// ! 1 0 !
// !
!
// ! 1 1 !
// !
!
// ! 1 1 !
// !
!
// ! 0 1 !
// !
!
// ! 0 1 !
// !
!
// ! 1 1 !
68
// c l e a r //
// 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.
Scilab code Exa 8.11 ano metric for binary symmetric channel
1
2
// c l e a r //
// 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
69
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 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
70
Chapter 9
Spread Spectrum Modulation
// c l e a r //
// 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 ];
71
20
disp (x , x= )
21 end
22 m = [7 ,8 ,9 ,10 ,11 ,12 ,13 ,17 ,19];
23 N = 2^ m -1;
24 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 )
25 disp (
26
27
28
29
30
)
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 (
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
)
// 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.
// c l e a r //
// 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
72
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
54
end
Rc_tuo = corr ( C_level , N ) ;
t = 1:2* length ( C_level ) ;
//
figure
a = gca () ;
a . x_location = o r i g i n ;
plot2d (t ,[ C_level ; C_level ])
xlabel (
t )
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] )
//
figure
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d ([ - length ( Rc_tuo ) +1: -1 ,0: length ( Rc_tuo ) -1] ,[
Rc_tuo ( $ : -1:2) , Rc_tuo ] ,5)
xlabel (
55
tuo )
ylabel (
56
Rc ( t u o ) )
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 )
48
49
50
51
52
53
Scilab code Exa 9.3 Processing gain, PN sequence length, Jamming margin in dB
// c l e a r //
// 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
3 // Example9 . 3 : P r o c e s s i n g g a i n and Jamming Margin
4 clear ;
1
2
74
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 : )
Eb_No = 10; // Energy t o n o i s e d e n s i t y r a t i o
J_P = PG / Eb_No ; // Jamming Margin
disp (10* log10 ( J_P ) , Jamming Margin i n dB : )
// R e s u l t
// The p r o c e s s i n g g a i n i s :
4095.
// The r e q u i r e d PN s e q u e n c e i s : 4 0 9 5 .
// 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 .
// Jamming Margin i n dB : 2 6 . 1 2 2 5 3 9
Scilab code Exa 9.4.9.5 Slow and Fast Frequency hopping: FH/MFSK
1
2
3
4
5
6
7
8
9
10
11
12
13
// c l e a r //
// 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= )
75
14
15
16
17
18
19
20
21
22
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 .
// c l e a r //
// 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
// 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 () ;
76
23 a . x_location = o r i g i n ;
24 a . y_location = o r i g i n ;
25 a . data_bounds = [0 , -2;20 ,2];
26 plot2d2 (t , bt ,5)
27 xlabel (
28
29
30
31
32
33
34
35
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 (
36
37
38
39
40
41
42
43
t )
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 (
44
45
46
47
48
49
50
51
52
53
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 (
77
54
55
56
57
58
59
60
61
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 (
62
63
64
65
66
67
68
69
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];
plot ( st )
xlabel (
t )
70 title ( DS/BPSK s i g n a l s ( t ) )
71 //
78