Chapter 21
Frequency Modulation
GMSK Modulation
Sx (f) 1 Sz (f fc )Sz (f fc ).
2
Sx(f) = Power spectral density of x(t)
X(f) 1
1
f
0
2
2
1
Xa(f)
0
f
2
2
Z(f) 1
f
0
t
q(t ) s( )d .
n n
For t nT , (n 1)T (t ) 2 h ak q(t kT ) a (t kT )
k
k k
n
x(t ) cos 2 f c t (t ) cos 2 f c t ak (t kT ) .
k
a t kT
k
k a s t kT
k
k
s (t ) r (t ) * h(t ) h
Rectangular filter Gaussian filter
cos()
a t kT
k 2h
k
t
(t )
Bits ak
Coder s(t )
sin 2 f ct
+ x (t )
-
s(t ) r (t ) * h(t ) sin()
2 2 2 B 2 2
h(t ) B exp t
ln(2) ln(2)
ln(2) 2
H ( f ) exp f
2B
2
BTb 05 0 .5
1.2
, BT
b
0.4
BTb 03
1
, BT
b
0 .3
0.3 0.8
0.6
0.2
0.4
0.1
0.2
0 0
-2 -1 0 1 2 -2 -1 0 1 2
1
Binary sequence 0 t
-1
0 5 10 15 20
1
GMSK modulated Signal 0 t
-1
0 5 10 15 20
5
(t ) 0 t
in rd -5
0 5 10 15 20
1
z I ( t ) cos ( t ) 0 t
-1
0 5 10 15 20
1
z Q ( t ) sin ( t ) 0 t
-1
0 5 10 15 20
Power spectral density of the complex envelope of GMSK, BT=0.3, fe=8, T=1.
Logarithmic scale
20
-20
-40
-60
-80
-100
-120
-140
0 0.5 1 1.5 2 2.5 3 3.5 4
Frequency normalized by 1/T
n
For t nT , (n 1)T (t ) a (t kT ).
k
k
n
(mTS ) a (mT
k
k S kT ).
(t ) 0 t 0
(t ) h t LT
ESIEE, Slide 23 Copyright 2003 Texas Instruments. All rights reserved.
Calculation of the Elementary Pulse Phase
with Matlab 1/2
Beginning of the matlab routine
function [phi,s]=pul_phas(T_over_Ts,L,BT,T)
Ts=T/ T_over_Ts ;
% calculates the number of samples in phi in the interval 0 - LT
Open Matlab
Nphi=ceil(T_over_Ts*L); routine
% calculates the number of samples in T pul_phas.m
Nts=ceil(T_over_Ts);
phi=zeros(1,Nphi);
s=zeros(1,Nphi);
sigma=sqrt(log(2))/2/pi/(BT/T)
t=[-L*T/2:Ts:L*T/2];
t=t(1:Nphi);
ta=t+T/2;
tb=t-T/2;
Qta=0.5*(ones(1,Nphi)+erf(ta/sigma/sqrt(2)));
Qtb=0.5*(ones(1,Nphi)+erf(tb/sigma/sqrt(2)));
expta=exp(-0.5*((ta/sigma).^2))/sqrt(2*pi)*sigma;
exptb=exp(-0.5*((tb/sigma).^2))/sqrt(2*pi)*sigma;
phi=pi/T/2*(ta.*Qta+expta-tb.*Qtb-exptb);
s=1/2/T*(Qta-Qtb);
ESIEE, Slide 25 Copyright 2003 Texas Instruments. All rights reserved.
Using the Matlab Routine
Start Matlab
Use:
T_over_Ts=8
L=4
T=1
BT=0.3
call the routine using to calculate the
phase pulse phi ( ) and the pulse s:
[phi,s]=pul_phas(T_over_Ts,L,BT,T)
Plot the phase phi and the shaping pulse s
plot(phi)
plot(s)
ESIEE, Slide 26 Copyright 2003 Texas Instruments. All rights reserved.
Results of Matlab Routine
(t ) 0 t 0
h
(t ) h t LT
2
n L n n
(t )
2
a
k
k
k n L 1
ak (t kT ) phimem(n)
k n L 1
ak (t kT )
n
(t ) phimem(n)
k n L 1
ak (t kT )
t mTS
n
(mTS ) phimem(n)
k n L 1
ak (mTS kT )
15
2 phase
Iphase
.ref phi
.sect "phi"
phi .word 1,2,5,13,29,65,133,256
.word 465,795,1284,1965,2858,3961,5252,6685
.word 8192,9699,11132,12423,13526,14419,15100,15589
.word 15919,16128,16251,16319,16355,16371,16379,16382
AR5 deb_bit
NB
an
AR1 resu
1000
Nphi Nphi
phi phase
Circular Buffer for phi (evolutive part) Circular Buffer for the variable phase
Allocated at an address multiple of 64 Allocated at an address multiple of 64
(Nphi = 32) (Nphi = 32)
STM #NB, BK
MAR *AR5+%
STM #Nphi,BK
BANZ Ldeb, *AR6-
fin3
* actualization of phimem
LD *(phimem),A
STM #NB, BK
MAR *+AR5(#unmL)%
LD *AR5,T
MAC #04000h,A ; -2^(14) an(1)(pi/2 an(1))
testa02pi
STL A,*(phimem)
MAR *+AR5(#L)%
STM #Nphi,BK
B boucle
.end
.def deb_cos,mid_cos
.sect "tab_cos"
deb_cos .word -16384,-16364,-16305,-16207,-16069,-15893,-15679,-15426
.word -15137,-14811,-14449,-14053,-13623,-13160,-12665,-12140
.word -11585,-11003,-10394,-9760,-9102,-8423,-7723,-7005
.word -6270,-5520,-4756,-3981,-3196,-2404,-1606,-804
.word 0,804,1606,2404,3196,3981,4756,5520
.word 6270,7005,7723,8423,9102,9760,10394,11003
.word 11585,12140,12665,13160,13623,14053,14449,14811
.word 15137,15426,15679,15893,16069,16207,16305,16364
.word 16384,16364,16305,16207,16069,15893,15679,15426
.word 15137,14811,14449,14053,13623,13160,12665,12140
.word 11585,11003,10394,9760,9102,8423,7723,7005
.word 6270,5520,4756,3981,3196,2404,1606,804
.word 0,-804,-1606,-2404,-3196,-3981,-4756,-5520
.word -6270,-7005,-7723,-8423,-9102,-9760,-10394,-11003
.word -11585,-12140,-12665,-13160,-13623,-14053,-14449,-14811
.word -15137,-15426,-15679,-15893,-16069,-16207,-16305,-16364
mid_cos .set deb_cos+64
STLM B,AR1
NOP
NOP
LD *AR1,A
STL A,DXR1
ST #0,*AR3+%
BANZ nsbouc,*AR7-
STM #NB, BK
MAR *AR5+%
STM #Nphi,BK
ESIEE, Slide 55 Copyright 2003 Texas Instruments. All rights reserved.
Processing of the Following bits 1 of 2
* begin the infinite loop
boucle STM #Nphi-1,BRC
RPTB fin2-1 ; for k=0 to Nphi
LD *AR3,A ; accu=phase(k)
MAC *AR4+0%,*AR5,A ; A=phase(k)+an(i) phi(k)
testa02pi
STL A,*AR3+% ; A->phase(k)
fin2
*phimem is added to the NS first points of the array
* then they are output and words are reset to 0 in buffer phase
STM #NS-1,AR7
nsbouc2 LD *(phimem),B
ADD *AR3,B,A ; A=phimem+phase(k)
testa02pi
SFTA A,-9,A
ADD #mid_cos,A,B
STLM B,AR1
NOP
NOP
LD *AR1,B
STL B,DXR0
AR1 deb_cos
128
Cosine
values
* endless loop
boucle:
LD *AR1+0%,A
STL A, DXR0
LD *AR2-0%,B
STL B,DXR0
* Return to the beginning of the endless loop
B boucle