The document discusses frequency modulation techniques, specifically GMSK modulation. It provides an overview of digital modulation, describes the key parameters and expression for GMSK modulation, and discusses implementing a GMSK modulator. It explains that GMSK modulation uses continuous phase modulation with a Gaussian frequency shaping filter. The document also provides the mathematical expressions for the GMSK modulated signal and describes calculating the baseband components and elementary phase pulse using Matlab.
2. Learning Objectives
• Overview of Digital Modulation
• Understanding GMSK Modulation
• Learning how to Implement a GMSK Modulator on a C54
3. Digital Modulations
•Baseband and bandpass signalling are used to
transmit data on physical channels such as
telephone cables or radiofrequency channels.
• The source of data (bits or symbol) may be a computer
file or a digitized waveform (speech, video…)
• The transmitted signal carries information about the
data and its characteristic changes at the same rate as
the data.
• When the signal carrying the data information
• Extends from 0 Hz upwards, the term baseband
signalling is used.
• Has its power centered on a central frequency fc, the
term bandpass signalling or modulation is used.
4. Digital Modulation
• Modulation is used because:
• The channel does not include the 0 Hz frequency and baseband signalling is
impossible
• The bandwidth of the channel is split between several channels for
frequency multiplexing
• For wireless radio-communications, the size of the antenna decreases when
the transmitted frequency increases.
5. Carrier Frequency
• In simple modulation schemes, a single frequency signal, the carrier,
is modified at the rate of the data.
• The carrier is commonly written as:
( )cos 2 cA f tπ + Φ
ffcc= Carrier frequency= Carrier frequency
A = Carrier AmplitudeA = Carrier Amplitude
ΦΦ = Carrier phase= Carrier phase
The 3 main parameters of the carrier:The 3 main parameters of the carrier:
amplitude, phase and frequency can beamplitude, phase and frequency can be
modified to carry the informationmodified to carry the information
leading to: amplitude, phase andleading to: amplitude, phase and
frequency modulation.frequency modulation.
7. What is the Complex Envelope z(t) of a Modulated
Signal x(t) ?
{ } ( ) ( ).2sin)(2)cos()()( 2
tftztftzetztx cQcI
tfj c
πππ
−=ℜ=
ffcc= Carrier frequency= Carrier frequency
( ) 2 ( )
( ) ( ) ( ) ( ) ( ) ( )cj f t j t
H I Qz t x t jx t e z t jz t A t eπ− Φ
= + = + =
z(t)z(t) = Complex envelope of= Complex envelope of x(t)x(t)
zzII(t), z(t), zQQ(t)(t) are the baseband componentsare the baseband components
xxHH(t)(t) = Hilbert transform of= Hilbert transform of x(t) =x(t) = x(t)x(t) with a phase shift ofwith a phase shift of ππ/2/2
[ ].)()(
2
1)( czczx ffSffSfS ++−=
SSxx(f)(f) = Power spectral density of= Power spectral density of x(t)x(t)
8. Complex Envelope z of a Modulated Signal x
Frequency Domain
0
1
2
0
1
2
0
1
2
f
f
f
X(f)
Xa(f)
Z(f)
2
1
2
9. GMSK Modulation
• Gaussian Minimum Shift Keying.
• Used in GSM and DECT standards.
• Relevant to mobile communications because of constant envelope
modulation:
• Quite insensitive to non-linearities of power amplifier
• Robust to fading effects
• But moderate spectral efficiency.
10. What is GMSK Modulation?• Continuous phase digital frequency modulation
• Modulation index h=1/2
• Gaussian Frequency Shaping Filter
• GMSK = MSK + Gaussian filter
• Characterized by the value of BT
• T = bit duration
• B = 3dB Bandwidth of the shaping filter
• BT = 0.3 for GSM
• BT = 0.5 for DECT
11. GMSK Modulation, Expression for the Modulated
Signal x(t)
( )( ) cos 2 ( ) with:
( ) 2 ( )
c
t
k
k
x t f t t
t h a s kT d
π
π τ τ
+∞
=−∞−∞
= + Φ
Φ = −∑∫
2
1
)( =∫
+∞
∞−
ττ ds
NormalizationNormalization
aakk = Binary data = +/- 1= Binary data = +/- 1
hh = Modulation index = 0.5= Modulation index = 0.5
s(t)s(t) = Gaussian frequency shaping filter= Gaussian frequency shaping filter
s(t)s(t)= Elementary frequency pulse= Elementary frequency pulse
12. GMSK Elementary Phase Pulse
Elementary phase pulse = ( )
( ) 2 ( ) 2 ( ) .
t
t
t hq t h s d
ϕ
ϕ π π τ τ
−∞
= = ∫
( ) ( ) .
t
q t s dτ τ
−∞
= ∫
[ ]
( )
For ,( 1) ( ) 2 ( ) ( )
( ) cos 2 ( ) cos 2 ( ) .
n n
k k
k k
n
c c k
k
t nT n T t h a q t kT a t kT
x t f t t f t a t kT
π ϕ
π π ϕ
=−∞ =−∞
=−∞
∈ + Φ = − = −
= + Φ = + −
∑ ∑
∑
13. Architecture of a GMSK Modulator
Coder
Bits ak
r t( ) VCO
h
x t( )h t( )
Gaussian filter
GMSK modulator using a VCO
( )k
k
a s t kT−∑( )k
k
a t kTδ −∑
( ) ( )* ( )s t r t h t=
Rectangular filter
x t( )Coder
Bits ak
s t( )
2π h
− ∞
∫
t
Φ ( )t
cos()
sin()
+
-
s t r t h t( ) ( )* ( )=
GMSK modulator without VCO
( )k
k
a t kTδ −∑
( )cos 2 cf tπ
( )sin 2 cf tπ
14. Equation for the Gaussian Filter h(t)
2 2
2
2
2
2 2
( ) exp
ln(2) ln(2)
ln(2)
( ) exp
2
B
h t B t
H f f
B
π π
= −
= −
The durationThe duration MTMTbb of the gaussian pulse isof the gaussian pulse is
truncated to a value inverselytruncated to a value inversely
proportional to B.proportional to B.
BT = 0.5,BT = 0.5, MTMTbb = 2= 2TTbb
BT = 0.3,BT = 0.3, MTMTbb = 3 or 4= 3 or 4TTbb
15. Frequency and Phase Elementary
Pulses
-2 -1 0 1 2
0
0.1
0.2
0.3
0.4
0.5 BTb
=+∞
BTb
=05,
BTb
=03,
t in number of bit periods Tb
T g tb ( ) Elementary frequency pulse
-2 -1 0 1 2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
t in number of bit period Tb
BT b
= +∞
BT
b
= 0 3.
BT
b
= 0 5.
Elementary phase pulse
ϕ ( )t
π/2
The elementary frequency pulse isThe elementary frequency pulse is
the convolution of a square pulsethe convolution of a square pulse
r(t) with a gaussian pulse h(t).r(t) with a gaussian pulse h(t).
Its duration isIts duration is (M+1)T(M+1)Tbb..
16. GMSK Signals
Binary sequence
GMSK modulated Signal
Φ( )t
( )z t tI ( ) cos ( )= Φ
( )z t tQ ( ) sin ( )= Φ
5
1
0 5 10 15 20
-1
0
1
0 5 10 15 20
-1
0
1
t
0 5 10 15 20
1
-1
0 t
0 5 10 15 20
-5
0 t
0 5 10 15 20
-1
0 t
t
in rd
17. Power Spectral Density of GMSK Signals
0 0.5 1 1.5 2 2.5 3 3.5 4
-140
-120
-100
-80
-60
-40
-20
0
20
Power spectral density of the complex envelope of GMSK, BT=0.3, fe=8, T=1.
Logarithmic scale
Frequency normalized by 1/T
18. Implementing a GMSK Modulator on a
DSP• Quadrature modulation can be used:
• The DSP calculates the phase Φ and the 2 baseband components zI and zQ
and sends them to the DAC.
• Or a modulated loop can be used.
• In this case, the DSP generates the instantaneous frequency finst signal that is
sent to the DAC.
inst ( ).k
k
f h a s kTτ
+∞
=−∞
= −∑
19. Expression for the Baseband
Components• The baseband components zI and zQ are modulated in amplitude by
the 2 quadrature carriers.
( ) ( ) ( ) ( ) ( )( ) cos 2 ( ) cos ( ) cos 2 sin ( ) sin 2c c cx t f t t t f t t f tπ π π= + Φ = Φ − Φ
( ) ( )( ) ( )cos 2 ( )sin 2I c Q cx t z t f t z t f tπ π= −
20. Baseband Components and Carriers• Baseband components
• The carriers are generally RF analog signals generated by analog
oscillators
• However, we will show how they could be generated digitally if the
value of fc were not too high.
( )
( )
( ) cos ( )
( ) sin ( )
I
Q
z t t
z t t
= Φ
= Φ
( )
( )
I
Q
Carrier cos 2
Carrier sin 2
c
c
f t
f t
π
π
=
=
21. Calculation of the Baseband
Components on a DSP
• Calculate the phase Φ at time mTS
• Ts the sampling frequency.
• Read the value of cos(Φ) and sin(Φ) from a table.
[ ]For ,( 1) ( ) ( ).
( ) ( ).
n
k
k
n
S k S
k
t nT n T t a t kT
mT a mT kT
ϕ
ϕ
=−∞
=−∞
∈ + Φ = −
Φ = −
∑
∑
22. Calculation of the Elementary Pulse Phase with
Matlab
• The elementary pulse phase ϕ(mTS) is calculated with Matlab and
stored in memory.
• The duration LT of the evolutive part of ϕ(mTS) depends on the value of BT.
• ϕ is called phi in the matlab routine.
( ) 2 ( )
( ) 0 0
( )
t
t h s d
t t
t h t LT
ϕ π τ τ
ϕ
ϕ π
−∞
=
= ∀ <
= ∀ >
∫
23. Calculation of the Elementary Pulse Phase with
Matlab 1/2
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
Nphi=ceil(T_over_Ts*L);
% calculates the number of samples in T
Nts=ceil(T_over_Ts);
phi=zeros(1,Nphi);
s=zeros(1,Nphi);
sigma=sqrt(log(2))/2/pi/(BT/T)
Open Matlab
routine
pul_phas.m
Beginning of the matlab routine
24. Calculation of the Elementary Pulse Phase with
Matlab 2/2
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);
End of the matlab routine
25. 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)
27. Results for phi• For L=4 and T_over_Ts=8, we obtain 32 samples for phi. Matlab
gives the following values for phi:
• Phi= [0.0001, 0.0002, 0.0005, 0.0012, 0.0028,
0.0062, 0.0127, 0.0246, 0.0446, 0.0763, 0.1231,
0.1884, 0.2740, 0.3798, 0.5036, 0.6409, 0.7854,
0.9299, 1.0672, 1.1910, 1.2968, 1.3824, 1.4476,
1.4945, 1.5262, 1.5462, 1.5581, 1.5646, 1.5680,
1.5696, 1.5703, 1.5706]
• After this evolutive part of phi, phi stays equal to π/2 (1.57).
• To calculate Φ, the evolutive part and the constant part of the
elementary phase pulse phi are treated separately.
28. [ ]
1
1 1
For ,( 1)
( ) ( ) ( ) ( ) with:
( ) 0 0
( )
2
( ) ( ) phimem( ) ( )
2
n n L n
k k k
k k k n L
n L n n
k k k
k k n L k n L
t nT n T
t a t kT a t kT a t kT
t t
h
t h t LT
t a a t kT n a t kT
ϕ ϕ ϕ
ϕ
ϕ π
π
ϕ ϕ
−
=−∞ =−∞ = − +
−
=−∞ = − + = − +
∈ +
Φ = − = − + −
= ∀ <
= = ∀ >
Φ = + − = + −
∑ ∑ ∑
∑ ∑ ∑
Calculation of Φ• Separation of evolutive and constant parts of phi.
29. Memory Part and Evolutive Part of Φ
[ ]For ,( 1)
phimem( ) phimem( 1) ( ) .
2
t nT n T
n n a n L
π
∈ +
= − + −
1
1
( ) phimem( ) ( )
( ) phimem( ) ( )
n
k
k n L
S
n
S k S
k n L
t n a t kT
t mT
mT n a mT kT
ϕ
ϕ
= − +
= − +
Φ = + −
=
Φ = + −
∑
∑
30. Recursive Calculation of Φ• Names of variables
• Phase = Φ
• phi = array of evolutive part of ϕ,
• Nphi samples = LT/Ts
• Ns = number of samples per bit = T/Ts
• an = binary sequence (+/- 1)
• 2 calculation steps:
• Calculate Φ
• Calculate zI=cos(Φ) and zQ=sin(Φ) by table reading
31. Calculation of Φ: Initialization• Initialization step:
• L first bit periods, phimem = 0
• At bit L+1, phimem is set to a1 π/2.
• Principle of the initialization processing:
• FOR i=1 to i=L
• for j=(i-1)Ns+1 to j=(i-1)Ns+Nphi
• phase((i-1)Ns+j)= phase((i-1)Ns+j)+phi(j)an(i)
• Endfor
• endFOR
• phimem=an(1) π/2
32. Calculation of Φ: After Initialization• FOR i=L+1 to last_bit
• For j=(i-1)Ns+1 to j=(i-1)Ns+Nphi
• phase((i-1)Ns+j)= phase((i-1)Ns+j)+phi(j)an(i)
• endFor
• For j=(i-1)Ns+1 to j=i Ns
• phase((i-1)Ns+j)= phase((i-1)Ns+j)+phimem
• xi=cos(phase(i-1)Ns+j)
• xq=sin(phase((i-1)Ns+j)
• endFor
• phimem=phimem+pi/2 an(i+1-L)
• endFOR
33. Coding and Wrapping the Phase Table• The phase value in [-π,π[ is represented by the 16-bit number Iphase
• Minimum phase = -π, Iphase = -215
.
• Maximum phase = π(1-215
), Iphase = 215
-1.
15
2 phase
Iphase
π
=
34. Index for the table in Phase Calculation
• Phase increment between 2 table values:
• 2π / Ncos and on Iphase 216
/Ncos
• For Iphase, the index of the table is:
• i= Ncos Iphase 2-16
• Here Ncos 2-16
= 2-9
,
• So the index in the table is given by shifting Iphase 9 bits to the right.
35. Coding of phi• The quantized values of phi can be obtained with Matlab:
• phi= round(phi*2^15/pi);
• phi is defined and initialized in the file phi03.asm as:
.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
36. Calculation of sin() and cos() by
Table Lookup
• We use a table of cosine values
• Length of the table Ncos=128, circular buffer
• Contents of the table: cosine of angles Ψi
uniformly distributed between -π
and π.
−−∈=Ψ 1
2
,
2
coscos NN
i
N
i
i
π
deb_cos = first address of the tabledeb_cos = first address of the table
mid_cos = address of the table middlemid_cos = address of the table middle
cos(cos(ΨΨii ) is at address mid_cos + i) is at address mid_cos + i
37. Calculation of sin() and cos() by
Table Lookup
• Conversion of the phase modulo 2π:
• Wrapping phase in [-π,π[
• Done by a macro: testa02pi
* Macro to wrap the phase between -π et π, phase is in ACCU A
testa02pi .macro
SUB #8000h,A,B ; sub -2^(15)
BC suite1?, BGEQ ; test if phase is in [0,2pi[
SUB #8000h,A ; sub -2^(15)
SUB #8000h,A ; SUB -2^(15)
B suite?
suite1? ADD #8000h,A,B ; add -2^(15)
BC suite?,BLT
ADD #8000h,A ; add -2^(15)
ADD #8000h,A ; add -2^(15)
suite? ; end of test
.endm
38. Generating the Sine Values from a Table of Cosine
Values
• To generate sin(α) from the table of cosine values, we use:
• cos(π/2 - α) or cos(-π/2 + α) or cos(3π/2+ α)
• If i is the index of the cosine, for the sine we use:
• i-Ncos/4 if i>= -Ncos/4
• i+3Ncos /4 if i < Ncos/4.
39. Implementation on a C54x, Test
Sequence• We can test the GMSK modulation on a given periodical binary
sequence an:
• an=[ 0 1 1 0 0 1 0 1 0 0]
• These bits are stored in a circular buffer:
• Size NB = 10
• Declaration of a section bits aligned on an address which is a multiple of 16 bits.
AR5 deb_bit
NB
an
40. Testing the Generation of Φ on the C54x,
Results Buffer
• We calculate Φ and store it in a buffer pointed by AR1. The size of
the result buffer is 1000 words.
AR1 resu
1000
Φ
Buffer for the last 1000 result values of Φ
41. Testing the Generation of Φ on the C54x
Buffers
AR4 phi
Nphi
phi
Circular Buffer for phi (evolutive part)
Allocated at an address multiple of 64
(Nphi = 32)
AR3 deb_phase
Nphi
phase
Circular Buffer for the variable phase
Allocated at an address multiple of 64
(Nphi = 32)
42. Listing for the Calculation of Φ
Definitions
.mmregs
.global debut,boucle
.global deb_cos, phi
.global deb_phase
.global resu
Nphi .set 32
Nphim .set -32
L .set 4
Ncos .set 128
Nsur2 .set 64
Nsur4 .set 32
NB .set 10
NS .set 8
.bss resu,1000
43. Listing for the Calculation of Φ
Macro for phase wrapping
* Definition of macro of phase wrapping testa02pi
testa02pi .macro
SUB #8000h,A,B ;sub -2^(15)
BC suite1?, BGEQ ;test if phase in [0,2pi[
SUB #8000h,A ;sub -2^(15)
SUB #8000h,A ;sub -2^(15)
B suite?
suite1? ADD #8000h,A,B ;add -2^(15)
BC suite?,BLT
ADD #8000h,A ;add -2^(15)
ADD #8000h,A ;add -2^(15)
suite? ;end test wrapping [0,2pi[
.endm
44. Listing for the Calculation of Φ
Initialization of Registers and Buffers 1/2
.text
* Initialization of BK, DP, ACCUs, and ARi
debut: LD #0, DP
LD #0, A
LD #0, B
STM #deb_bit,AR5
STM #deb_cos,AR2
STM #deb_phase ,AR3
STM #phi,AR4
STM #resu,AR1
STM +1,AR0
STM #Nphi, BK
STM #(NS-1),AR7
RSBX OVM
SSBX SXM
45. Listing for the Calculation of Φ
Initialization of Registers and Buffers 2/2
* Initialization of the phase buffer
RPT #(Nphi-1)
STL A,*AR3+%
*initialization of phimem
LD *AR5,T
MPY #04000h,A ; -2^(14) an(1)(pi/2 an(1))
STL A,*(phimem)
46. Listing for the Calculation of Φ
Calculation for the first L bits
* processing for the first L bits
STM #(L-1),AR6
Ldeb STM #Nphi-1,BRC
RPTB fin-1 ; from k=0 to k=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)
NOP
fin NOP
STM #(NS-1), AR7
Nsbouc LD *AR3,A ; output of NS values
STL A,*AR1+ ; and reset at 0 of NS words
ST #0,*AR3+%
BANZ nsbouc,*AR7-
STM #NB, BK
MAR *AR5+%
STM #Nphi,BK
BANZ Ldeb, *AR6-
47. Listing for the Calculation of Φ
Calculation of the Following Bits 1/2
* begin of 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
* adding phimem to the NS first points of the array
* then taking them out and reset to 0 in phase
STM #NS-1,AR7
nsbouc2 LD *(phimem),B
ADD *AR3,B,A ; B=phimem+phase(k)
testa02pi
STL A,*AR1+
ST #0,*AR3+% ; 0->phase(k)
BANZ nsbouc2,*AR7- ; ....
48. Listing for the Calculation of Φ
Calculation of the Following Bits 2/2
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
49. Illustration of the Phase Result Wrapped Between -π
and π
• Plot under CCS the buffer of phase results
50. Generation of the Baseband Components
zI=cos(Φ) and zQ=sin(Φ)
• We calculate zI and zQ and we do not need to save the phase any
more.
• We output ZI and Zq, in this example on DXR0 and DXR1.
• We need the table of constants for the values of cosine.
• This table is defined in the file tabcos.asm
• The cosine values are given in format Q14.
52. Listing for the Calculation of zI and zQ
• The listing for definitions and initializations is the same as before.
• Processing of the L first bits,
• Processing of the other bits
• (infinite loop)
53. Processing of the First L Bits 1/2* Processing of the L first bits
STM #(L-1),AR6
Ldeb STM #Nphi-1,BRC
RPTB fin-1 ; from 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)
fin NOP
STM #(NS-1), AR7
Nsbouc LD *AR3,A ; output of NS values
SFTA A,-9,A
ADD #mid_cos,A,B
STLM B,AR1
NOP
NOP
LD *AR1,B
STL B,DXR0
54. Processing of the First L Bits 2/2* Calculation of the sine
ADD #Nsur4,A,B
BC sui,BGT
ADD #(Nsur2),B
B sui1
sui SUB #Nsur2,B
sui1 ADD #mid_cos,B
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
55. 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
56. Processing of the Following Bits 2 of 2
* Calculation of the sine
NOP
ADD #Nsur4,A,B
NOP
NOP
BC suii,BGT
ADD #(Nsur2),B
B suii1
suii SUB #(Nsur2) ,B
suii1 ADD #mid_cos,B
STLM B,AR1
NOP
NOP
LD *AR1,A
STL A,DXR1
ST #0,*AR3+% ; 0->phase(k)
BANZ nsbouc2,*AR7-
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
58. Generation of 2 Quadrature Carriers• Generation of:
• cos(2πfct) and sin (2πfct)
• fc is the frequency of the carrier
• In this example we choose fc=1/T
• Sampling frequency = 1/Ts = fS
• In RF applications, the carriers are not generated by the DSP. It is
only possible to use the DSP for low values of fc.
• The angle α(t)= 2πfct is calculated then the value of cos() is read
from a table.
59. Calculation of the Angle of the Carriers• Recursive calculation of the angle α:
( ) ( )( ) 2 ( 1) 2 ( 1)S c S S c S snT f nT n T f T n Tα π α π α α= = − + = − + ∆
The precision of the generatedThe precision of the generated
frequency depends on the precision offrequency depends on the precision of
∆α∆α..
The phase incrementThe phase increment ∆α∆α corresponds tocorresponds to
an incrementan increment ∆∆IIαα to the integer thatto the integer that
representsrepresents αα..
∆∆IIαα=2=21616
ffccTTSS rounded to the closestrounded to the closest
integer.integer.
60. Calculation of the Angle of the Carriers• If the number of samples per period of the carrier is a power of 2,
2k:
•∆Iα=216
fcTS=2(16-k)
is exact
•Then the precision of the generated
frequency depends only on the precision
of the sampling frequency.
• Otherwise, there is an error dfc in fc:
• |dfc|<2-17
fS.
• Error in the amplitudes of the carriers due to finite precision of the
table reading. (possible interpolation).
61. Implementation on a C54x• We use: fs/fc=8=Ns.
• The cosine table has 128 Values in Q14.
AR1 deb_cos
128
Cosine
values
Circular buffer,Table of cosine
62. Implementation on a C54x
•Here k=3 (8 samples per period) and the increment
• ∆Iα=216
fcTS=2(16-k)
=213
•Simple case of fS/fc as an integer value, the table is
read with an offset from the pointer = 16 = 27
/23
to
generate a cosine with 8 samples per period.
•We can work directly on the index i and not on I.
63. Generation of the Cosine and Sine
Carriers• For the cosine:
• The circular buffer containing the cosine values (length N) is accessed with
AR1.
• Incremented by the content of AR0=16.
• AR1 initialized with deb_cos.
• For the sine:
• Same circular buffer accessed by AR2.
• AR2 initialized with deb_cos + Ncos/4.
• Decremented by AR0=16.
• Outputs (cos and sin) are sent to DXR0 and DXR1.
64. Generation of quadrature 2 Carriers• File porteuse.asm
• A file associated with DXR0 and DXR1 is used to save visual results
obtained with the CCS simulator.
• Here cosine table goes from:
• 0 to 2π
65. Listing for the Generation of 2 Carriers 1
of 2
.mmregs
.global debut,boucle
Ncos .set 128
Nsur2 .set 64
Nsur4 .set 32
Inc .set 16
* Definition and initialization of Table of cosine
.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
66. Listing for the Generation of 2 Carriers 2
of 2
.text
* Initializations of DP, and of the phase Ialpha at 0
* The phase Ialpha is in ACCU A, and the index of table in B
* attention we work in the part of ACCUs
* Initialize AR1 at mid_cos and AR0 at Nsur4
debut:
LD #0, DP
LD #0, A
STM #Ncos,BK
STM #deb_cos,AR1
STM #(deb_cos+Nsur4),AR2
STM #Inc, AR0
* 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
68. Tutorial The listing files for the precedent examplesThe listing files for the precedent examples
can be found in the directory “tutorial”:can be found in the directory “tutorial”:
Tutorial > Dsk5416 > Chapter 21 > Labs_modulationTutorial > Dsk5416 > Chapter 21 > Labs_modulation
69. Further Activities• Application 5 for the TMS320C5416 DSK and for the TMS320C5510.
• Alien Voices. A very simple application showing the effect
of modulation on audio frequencies. It shows how the
carrier causes sum and difference frequencies to be
generated. Here it is used to generate the strange voices
used for aliens in science fiction films and television.
Hinweis der Redaktion
Modulation with constant envelope are robust to the non-linearities of the emitter or of the channel in mobile communications.
They are also more robust to fading than modulation using the carrier amplitude to carry information.
PSK = Phase Shift Keying
OQPSK = Offset Phase Shift Keying
16QAM = QAM modulation with 16 different states For amplitude-phase.
Spectral efficiency can be defined as the number of bits per second that can be transmitted in 1 Hz bandwidth with a given error probability.
In multicarrier modulation, the data are sent in parallel to several carriers that are modulated and summed.
OFDM = Orthogonal Frequency Modulation
DMT = digital MultiTone
Cos(2 fct) and sin(2fct) are called quadrature carriers because they have a phase difference equal to /2.
The 2 signals zI and zQ are sometimes called quadrature components because they modulate the 2 quadrature carriers.
GSM = Global System for Mobile communications (ETSI standard for 2nd generation cellular mobile communications)
DECT = Digital European Cordless Telephone
The Gaussian filter is used to limit the bandwidth of the modulated signal.
It is a good compromise between the bandwidth of the modulated signal and the length of the impulse response of the filter.
Other shapes of spectral shaping filter could be used.
MSK = Minimum Shift Keying binary modulation uses the smallest possible frequency spacing corresponding to orthogonal frequencies.
f=1/(2T) where T is the bit duration.
The instantaneous frequency of the signal carries the information about the data ak.
Here the term VCO means voltage controlled oscillator.