Obr. 2.9 – Výchozí hodnoty metriky pro jednotlivé stavy

2.6.6 Dekódování konvolučních kódů (2/2)

Na počátku dekódování jsou registry dekodéru vynulovány a počáteční - výchozí stav je S0 (hodnota dílčí metriky = 0). Ostatní stavy jsou nastaveny na „nekonečno“ (hodnota dílčí metriky = 100), jak je zřejmé z obr. 2.9.

V prvém kroku určíme metriku (vi - ri)2 pro první přijatou dvojici bitů [-0,8; -0,5], jako rozdíl oproti ideálním hodnotám -1 či +1 pro jednotlivé větve:

Větev 00: (–1 + 0,8)2 + (–1 + 0,5)2 = 0,29
Větev 01: (–1 + 0,8)2 + (+1 + 0,5)2 = 2,29
Větev 10: (+1 + 0,8)2 + (–1 + 0,5)2 = 3,49
Větev 11: (+1 + 0,8)2 + (+1 + 0,5)2 = 5,49

Poznámka: Větev 00 znamená, že výstupy odpovídající této větvi jsou v souladu s mřížkovým diagramem podle obr. 2.7 na binárních hodnotách 00 (nebo -1, -1 Voltů pro napěťové úrovně).

Při vyhodnocování vždy sčítáme metriku cesty (vi - ri)2 s dílčí metrikou z předchozího kroku a hledáme minimum ∑ (vi - ri)2. V souladu s obr. 2.10 je pro stav S0 a větev 00 dílčí metrika cesty 0 + 0,29, pro stav S1 a větev 11 je metrika větve 5,49, dílčí metrika je 100 + 5,49 = 105,49 atd. Vybereme cestu k příslušnému stavu s nejmenší dílčí metrikou. Eliminované cesty jsou označeny fialově.

Obr. 2.10 – Dekódování Viterbiho algoritmem

Ve druhém kroku vyhodnocujeme druhou dvojici přijatých symbolů [1,2; -0,5]

Větev 00: (–1 – 1,2)2 + (–1 + 0,5)2 = 5,09
Větev 01: (–1 – 1,2)2 + (+1 + 0,5)2 = 7,09
Větev 10: (+1 – 1,2)2 + (–1 + 0,5)2 = 0,29
Větev 11: (+1 – 1,2)2 + (+1 + 0,5)2 = 2,29

Vyhodnocení příjmu ve druhém kroku je uvedeno v animaci v krocích 6 až 11.

Následuje třetí krok pro přijaté symboly [-0,9; 0,7] znázorněný v krocích 12 až 17.

Větev 00: (–1 + 0,9)2 + (–1 – 0,7)2 = 2,9
Větev 01: (–1 + 0,9)2 + (+1 – 0,7)2 = 0,1
Větev 10: (+1 + 0,9)2 + (–1 – 0,7)2 = 6,5
Větev 11: (+1 + 0,9)2 + (+1 – 0,7)2 = 3,7

Čtvrtý krok pro přijaté symboly [-0,8; 1,1] je znázorněn v kroku XXX.

Větev 00: (–1 + 0,8)2 + (–1 – 1,1)2 = 4,45
Větev 01: (–1 + 0,8)2 + (+1 – 1,1)2 = 0,05
Větev 10: (+1 + 0,8)2 + (–1 – 1,1)2 = 7,65
Větev 11: (+1 + 0,8)2 + (+1 – 1,1)2 = 3,25

Poslední, pátý krok dekódování pro přijaté symboly [1,1; 0,9] ukazuje krok XXX.

Větev 00: (–1 – 1,1)2 + (–1 – 1,1)2 = 4,45
Větev 01: (–1 – 1,1)2 + (+1 – 1,1)2 = 0,05
Větev 10: (+1 – 1,1)2 + (–1 – 1,1)2 = 7,65
Větev 11: (+1 – 1,1)2 + (+1 – 1,1)2 = 3,25

Z možných cest vybereme cestu s nejmenší celkovou metrikou, která je znázorněna tučně (krok XXX). Zpětně určíme např. z obr. 2.7, které informační bity byly nejpravděpodobněji vyslány. Je to posloupnost u = [0;1;1;0;0]. Dále můžeme určit, jaká posloupnost byla nejpravděpodobněji vyslána: v´ = [0;0;1;1;0;1;0;1;1;1].

Shoduje se s vysílanou posloupností, takže uvedený algoritmus ji dokázal správně detekovat i na značně kresleném časovém průběhu signálu na vstupu přijímače. Z porovnání je zřejmá detekční schopnost Viterbi dekodéru pro konvolučně kódované posloupnosti, která zvyšuje pravděpodobnost správného vyhodnocení přijímaných symbolů i při zvýšených hladinách rušení.