Sunteți pe pagina 1din 6

1

DECODAREA CODURILOR CONVOLUTIONALE PRIN ALGORITMUL


VITERBI

1. Introducere
Cele mai cunoscute metode de decodare a codurilor convoluionale sunt:
decodarea cu prag, decodarea secvenial i decodarea cu algoritmul Viterbi. n aceast
lucrare prezentm algoritmul de decodare Viterbi, deoarece este un algoritm optimal,
complexitatea sa este redus i este foarte utilizat n practic.
Secvenele codate se transmit pe canalul de comunicaie dup folosirea unei
tehnici de modulaie digital. n prezenta lucrare presupunem c modulaia folosit este
modulaia binar de faz (BPSK Binary Phase Shift Keying). Cu acest tip de modulaie
biii 0, sunt translai n valorile -1, iar biii 1 n valorile +1, prin relaia 2 1
k k
x c = , unde
k este momentul de timp al translaiei. Dac pe canal exist un zgomot aditiv alb gaussian
(AWGN), atunci la fiecare valoare
k
x , se adun un eantion de zgomot
k
n , rezultnd
valoarea recepionat:
k k k
r x n = + . (1)

2. Algoritmul de decodare Viterbi
Prin algoritmul de decodare Viterbi se alege calea
( ) i
x din trellis de maxim
plauzibilitate, astfel nct se maximizeaz probabilitatea
( )
( )
i
P r x , unde r este secvena
recepionat, iar
( ) i
x secvena de bii corespunztoare cii din trellis care se consider
secvena decodat. Dac secvena r se transleaz n domeniul valorilor 0, 1, prin
compararea cu pragul 0, adic unei valori negative i corespunde 0, iar unei valori
pozitive i corespunde 1, atunci rezult o decodare hard. Cnd valorile din secvena r
sunt lsate nemodificate sau cuantizate pe un numr de nivele mai mare ca 2 avem o
decodare cu decizie soft necuantizat, respectiv cuantizat.
n cazul unui zgomot aditiv alb gaussian i folosind o decodare cu decizie soft,
valorile recepionate pentru setul de ieiri ale demodulatorului la momentul l sunt, n
cazul canalului AWGN:

( )
( ) 0
2 1 , 1,
r
jl jl j
r c n j n = + = , (2)
unde
( ) r
jl
c este un simbol binar codat (0 sau 1), iar
j
n este un eantion din zgomotul
gaussian de medie zero i varian 2
0
N . Zgomotul fiind alb, rezult c eantioanele de
zgomot sunt independente i atunci, probabilitatea de a recepiona secvena
l
r , dac s-a
transmis secvena codat
( ) r
l
c este:
2
( )
( )
( )
( )
( )
( )
2
0 0
0
2 1
1 1
0
1
r
jl jl
r c
n n
r r N
l l jl jl
j j
P r c P r c e
N



= =
= =

. (3)
Logaritmnd relaia (3) se obine:
( )
( )
( )
( ) ( )
( )
2
0 0
0
2
2 1
0
1 1
0 0
2 1
1
ln ln ln
r
jl jl
r c r
n n
jl jl
r N
l l
j j
r c
P r c e N
N N

= =

]
]


]
]
= = =
`
]

]
]
)


( )
( )
( )
0
2
0
1
0 0 0
2 2 1
1
ln
r
n
jl jl
jl
j
r c
r
N
N N N


= +

. (4)
Atunci, eliminnd constantele i innd cont ( )
2
jl
r este aceeai pentru toate
ramurile din trellis, metrica corespunztoare ramurii, la momentul l , este:
( )
( )
( )
( )
0
1
1
, 2 1
n
i i
l l jl jl l
j
V r c
+
=
=

, (5)
metric numit de corelaie.
Calea aleas este calea r , corespunztoare la:
( )
( )
( )
1
1 1
0
max ,
L
i
L l l l
r
l
U V

+
=

=

. (6)
unde L este lungimea secvenei (primul moment este 0),
l
este starea n trellis la
momentul l , iar
( )
( )
1
,
i
l l l
V
+
este metrica ramurii dintre strile
l
i
1 l

+
.
n relaia (5) indicile j semnific poziia din secvena de valori recepionate sau
din secvena codat corespunztoare ramurii din trellis, din cele
0
n valori cte sunt n
total la momentul l .
Prin algoritmul Viterbi se rein doar
S
N ci la fiecare moment de timp, cte una
corespunztoare fiecrei stri.
n general algoritmul Viterbi trebuie s conin urmtorii pai:
Pas 1: Se iniializeaz codorul cu starea nul. Se iniializeaz starea nul a decodorului la
momentul 0 l = cu metrica ( )
0 0
0 U S = . Celelalte stri nu intereseaz deoarece codorul s-
a iniializat cu starea nul.
Pas 2: Se incrementeaz variabila moment de timp 1 l l = + .
Pas 3: Se calculeaz metrica fiecrei ci ce intr n nodurile de pe nivelul l cu ajutorul
relaiei (5).
3
Pas 4: Se calculeaz metricile cilor corespunztoare fiecrei stri la momentul de timp l ,
cu relaia ( ) ( ) ( )
1 1 1 1
,
l l l l l l l
U U V

= + , presupunnd c avem o tranziie ntre
strile
1 l


i
l
.
Pas 5: Se reine numai calea de intrare n fiecare stare care are metrica maxim numit
cale supravieuitoare.
Pas 6: Dac 1 l L < , se revine la pasul 2.
Pas 7: Se decide c s-a recepionat secvena corespunztoare cii ce intr n starea cu
metric maxim.
Complexitatea algoritmului Viterbi este una liniar n raport cu numrul de ramuri
dintr-o seciune de trellis. Peformana codurilor convoluinale este mai bun cnd
memoria acestora crete, dar cu preul unei complexiti de decodare crescute.
Exemplu:
n continuare se d un exemplu de folosire a algoritmului Viterbi pentru codul din
exemplul cu generatorii n octal
1
6 g = ,
2
3 g = . Pentru a calcula mai uor metricile se
presupune c secvena recepionat este format din numere ntregi. Acest caz poate fi
considerat un caz special de decodare cu decizie soft cuantizat. n tabelul 1 sunt date
secvena de bii codat (considerat aceeai din calea ngroat n trellis-ul din figura 4,
lucrarea anterioar), secvena recepionat, metricile ramurilor pentru fiecare moment de
timp i combinaie de bii codai.

Tabel nr. 1
Moment de timp 1 2 3 4 5
Secvena codat 10 11 11 01 10
Secvena recepionat 2,-1 2,3 1,2 -3,0 2,-2
Metricile
ramurilor
00
01
10
11
-1
-3
3
1
-5
1
-1
5
-3
1
-1
3
3
3
-3
-3
0
-4
4
0

n cazul codului menionat anterior avem
0
2 n = . La momentul 1 l = , secvena de
bii codat transmis este
11
1 c = ,
21
0 c = , iar secvena recepionat se presupune
11
2 r = ,
21
1 r = . Atunci metricile corespunztoare fiecrei din cele 4 ramuri posibile, pentru
secventele codate 00, 01, 10 i 11, sunt calculate cu ajutorul relaiei (5), dup cum
urmeaz:
- pentru ramura cu secvena codat 00:
( )
( )
( )
( ) 11 11 21 21
2 1 2 1
r r
r c r c + =
( ) ( ) ( ) 2 2 0 1 1 2 0 1 1 = + =
4
- pentru ramura cu secvena codat 01: ( ) ( ) ( ) 2 2 0 1 1 2 1 1 3 + =
- pentru ramura cu secvena codat 10: ( ) ( ) ( ) 2 2 1 1 1 2 0 1 3 + =
- pentru ramura cu secvena codat 11: ( ) ( ) ( ) 2 2 1 1 1 2 1 1 1 + =
Metricile ramurilor la momentele 2, 5 l = sunt calculate n mod similar.
n figura 1 este dat trellis-ul corespunztor codorului din exemplu, cu secvenele
de ieire din codor corespunztoare fiecrei ramuri.














n continuare dm aplicare algoritmului Viterbi pas cu pas pentru secvena
recepionat dat n tabelul 1.
Pas 1: Se iniializeaz starea nul a decodorului la momentul 0 l = cu metrica
( )
0 0
0 U S = . Celelalte stri nu intereseaz deoarece codorul s-a iniializat cu starea nul.
Pas 2: Se trece momentul de timp urmtor 0 1 1 l = + = .
Pas 3: Metricile corespunztoare ramurilor cu secvenele de ieire 00 i 10 sunt
( )
0 0 0
, 1 V S S = , respectiv ( )
0 0 2
, 3 V S S = , conform tabelului 1.
Pas 4: Avem metricile la momentul de timp 1 l = :
( ) ( ) ( )
1 0 0 0 0 0 0
, 0 1 1 U S U S V S S = + = = i ( ) ( ) ( )
1 2 0 0 0 0 2
, 0 3 3 U S U S V S S = + = + = .
Acestea sunt trecute ncadrate n trellis-ul din figura 2. ncadrate cu linie continu sunt
metricele cele mai mari la fiecare moment de timp, iar cu linie ntrerupt metricile
celorlalte ci supravieuitoare.
Pas 5: La acest moment de timp se rein cele dou ci care pleac din starea
0
S i ajung
n strile
0
S , respectiv
2
S .
Pas 6: 1 l L < (1 5 < ), deci se trece la pasul 2.
Pas 2: Se trece momentul de timp urmtor: 1 1 2 l = + = .
Fig. 1. Trellis-ul pentru codorul din exemplu
0
S
2
S
1
S
3
S
0 l = 1 l =
2 l =
3 l =
00 00 00
10 10
10
01
11
11
11
01 01
00
10
4 l =
00
10
01
11
11
01
00
10
5 l =
00
10
01
11
11
01
00
10
5
Pas 3: Metricile corespunztoare ramurilor sunt, conform tabelului 1, ( )
1 0 0
, 5 V S S = ,
( )
1 0 2
, 1 V S S = , ( )
1 2 1
, 5 V S S = i ( )
1 2 3
, 1 V S S = .
Pas 4: Metricile la momentul de timp 2 l = sunt urmtoarele:
( ) ( ) ( )
1 0 1 0 1 0 0
, 1 5 6 U S U S V S S = + = = , ( ) ( ) ( )
2 2 1 0 1 0 2
, 1 1 2 U S U S V S S = + = = ,
( ) ( ) ( )
2 1 1 2 1 2 1
, 3 5 8 U S U S V S S = + = + = , ( ) ( ) ( )
2 3 1 2 1 2 3
, 3 1 4 U S U S V S S = + = + = .
Pas 5: La momentul de timp 2 l = se rein cele patru ci care pleac din starea
0
S i ajung
n strile
0
S ,
2
S ,
1
S , respectiv
3
S .
Pas 6: 1 l L < ( 2 5 < ), se trece la pasul 2.
Pas 2: Se trece momentul de timp urmtor: 2 1 3 l = + = .
Pas 3: Pentru tranziia ntre momentele de timp 2 l = i 3 l = (i la fel mai departe) avem
cte dou ramuri care pleac din fiecare stare. Astfel metricile corespunztoare ramurilor
sunt, conform tabelului 1, ( )
2 0 0
, 3 V S S = , ( )
2 1 0
, 1 V S S = , ( )
2 0 2
, 1 V S S = , ( )
2 1 2
, 3 V S S = ,
( )
2 2 1
, 3 V S S = , ( )
2 3 1
, 1 V S S = i ( )
2 2 3
, 1 V S S = , ( )
2 3 3
, 3 V S S = .
Pas 4: Avem cte dou metrici pentru fiecare stare la momentul de timp 3 l = :
( ) ( ) ( )
3 0 2 0 2 0 0
, 6 3 9 U S U S V S S = + = = sau ( ) ( ) ( )
3 0 2 2 2 2 0
, 8 1 9 U S U S V S S = + = + = ,
( ) ( ) ( )
3 2 2 0 2 0 2
, 6 1 7 U S U S V S S = + = = sau ( ) ( ) ( )
3 2 2 1 2 1 2
, 8 3 11 U S U S V S S = + = + = ,
( ) ( ) ( )
3 1 2 2 2 2 1
, 2 3 1 U S U S V S S = + = + = sau ( ) ( ) ( )
3 1 2 3 2 3 1
, 4 1 3 U S U S V S S = + = = ,
( ) ( ) ( )
3 3 2 2 2 2 3
, 2 1 1 U S U S V S S = + = + = sau ( ) ( ) ( )
3 3 2 3 2 3 3
, 4 3 1 U S U S V S S = + = = .
Pas 5: La acest pas se rein numai cile care conduc la metric maxim pentru fiecare
stare, adic cele trecnd prin succesiunile de stri:
0 2 1 0
S S S S ,
0 2 1 2
S S S S ,
0 2 3 1
S S S S ,
0 2 3 3
S S S S , fiind eliminate ramurile desenate cu linie-punct.
Algoritmul continu n mod similar pn la momentul de timp 5 l = . Trellis-ul
corespunztor codorului din exemplu cu metricile cilor supravieuitoare la fiecare
moment de timp, respectiv ale cilor eliminate este dat n figura 2. ngroat este calea cu
metrica maxim la fiecare moment de timp. Calea rezultat n decodare este cea
corespunztoare succesiunii de stri
0 2 1 2 3 1
S S S S S S , adic secvenei de bii de informaie
10110.
Algoritmul Viterbi descris mai sus realizeaz estimarea de maxim plauzibilitate
(ML maximum likelihood) a secvenei recepionate (minimiznd probabilitatea de
eroare a acesteia) i are astfel nevoie de ntreaga secven pentru decodare optim,
ducnd la ntrziere de decodare pentru L mare. Cnd aceast ntrziere este prea mare
se folosete algoritmul Viterbi trunchiat, n care la momentul k se alege calea pn la
momentul D k ( D fiind adncimea de trunchiere), reinndu-se metricile, respectiv
cile, numai pentru ultimele D momente de timp. Experimental s-a gsit c o adncime
6
de trunchiere N D 5 ( N fiind lungimea de constrngere a codului) conduce la o
degradare neglijabil a performanei algoritmului.















5. Desfurarea lucrrii
1. Se consider secvena recepionat r={2,1,3,-2,-2,-3,-1,2,-2,1}. Pentru codul
(2,1,2) cu polinoamele generatoare n octal
1
2 g = ,
2
3 g = i pentru codul (2,1,3) cu
polinoamele generatoare n octal
1
5 g = ,
2
7 g = , s se decid ce secven decodat
rezult aplicnd algoritmul Viterbi cu decizie soft.
2. Pentru aplicaia Matlab se deschide modelul lucrrii de laborator. Se urmrete
funcionarea sistemului de transmisie folosind coduri convoluionale astfel:
- Se identific i se studiaz blocurile de pe schem (generatorul de secvene
binare, codorul convoluional, modulatorul BPSK, canalul de transmisie, decodorul
Viterbi i blocul de calcul a probabilitii de eroare de bit)
- Prin acionarea butonului Start se pornete simularea, la terminarea ei
obinndu-se probabilitatea de eroare de bit n blocul Display n urma decodrii Viterbi
- Se schimb valoarea raportului semnal-zgomot (SNR) din blocul corespunztor
canalului AWGN i se noteaz diferenele n probabilitatea de eroare de bit rezultat
- Se schimb polinoamele generatoare n blocul corespunztor codorului i
decodorului Viterbi. Se modific corespunztor adncimea de trunchiere i se observ
rezultatele n urma simulrii.
Fig. 2. Decodarea Viterbi cu metricile asociate
0
S
2
S
1
S
3
S
0 l = 1 l =
2 l =
3 l =
1 5 3
3 1
1
1
5
3
3
1 1
3
1
4 l =
3
3
3
3
3
3
3
3
5 l =
0
4
4
0
0
4
0
4
1
3

6
2

8
4
11
9
3
1
14
8
12
6
12
18
16
14

S-ar putea să vă placă și