Vés al contingut

Descodificador de Viterbi

De la Viquipèdia, l'enciclopèdia lliure

Un descodificador de Viterbi utilitza l'algorisme de Viterbi per descodificar un flux de bits que s'ha codificat mitjançant un codi convolucional o un codi enreixat.[1]

Hi ha altres algorismes per descodificar un flux codificat de forma convolucional (per exemple, l'algoritme de Fano). L'algoritme de Viterbi és el que consumeix més recursos, però fa la descodificació amb la màxima probabilitat. S'utilitza més sovint per descodificar codis convolucionals amb longituds de restricció k≤3, però a la pràctica s'utilitzen valors fins a k=15.[2]

La descodificació de Viterbi va ser desenvolupada per Andrew J. Viterbi i publicada al documentViterbi, A. IEEE Transactions on Information Theory, 13, 2, April 1967, pàg. 260–269. DOI: 10.1109/tit.1967.1054010. "Límits d'error per a codis convolucionals i un algorisme de descodificació asimptòticament òptim". Transaccions IEEE sobre teoria de la informació . 13 (2): 260–269. doi : 10.1109/tit.1967.1054010 . [3]

Hi ha implementacions de maquinari (en mòdems) i programari d'un descodificador de Viterbi.

La descodificació de Viterbi s'utilitza en l'algorisme de descodificació iteratiu de Viterbi.[4]

Implementació de maquinari[modifica]

Una forma habitual d'implementar un descodificador de maquinari Viterbi

Un descodificador de maquinari de Viterbi per a codi bàsic (no perforat) normalment consta dels següents blocs principals:

  • Unitat mètrica de branca (BMU)
  • Unitat mètrica del camí (PMU)
  • Unitat de seguiment (TBU)

Unitat mètrica de branca (BMU)[modifica]

Una implementació de mostra d'una unitat mètrica de branca

La funció d'una unitat mètrica de branca és calcular les mètriques de branca, que són distàncies normades entre tots els símbols possibles de l'alfabet de codi i el símbol rebut.

Hi ha descodificadors Viterbi de decisió dura i de decisió suau. Un descodificador de Viterbi per decisió difícil rep un flux de bits simple a la seva entrada i s'utilitza una distància de Hamming com a mètrica. Un descodificador de Viterbi de decisió suau rep un flux de bits que conté informació sobre la fiabilitat de cada símbol rebut. Per exemple, en una codificació de 3 bits, aquesta informació de fiabilitat es pot codificar de la següent manera:

valor significat
000 més fort 0
001 relativament fort 0
010 relativament feble 0
011 més feble 0
100 més feble 1
101 relativament feble 1
110 relativament fort 1
111 més fort 1

Per descomptat, no és l'única manera de codificar dades de fiabilitat.

La distància euclidiana quadrada s'utilitza com a mètrica per als descodificadors de decisions suaus.

Unitat mètrica del camí (PMU)[modifica]

Una implementació de mostra d'una unitat mètrica de camí per a un descodificador K=4 específic

Una unitat de mètriques de camí resumeix les mètriques de branca per obtenir mètriques camins, on K és la longitud de la restricció del codi, un dels quals finalment es pot escollir com a òptim. Cada rellotge que fa decisions, deixant fora camins no òptims. Els resultats d'aquestes decisions s'escriuen a la memòria d'una unitat de seguiment.

Una implementació de mostra d'una unitat ACS

Unitat de seguiment (TBU)[modifica]

Una implementació de mostra d'una unitat de traçabilitat

La unitat de traça enrere restaura un camí (gairebé) de màxima probabilitat a partir de les decisions preses per PMU. Com que ho fa en sentit invers, un descodificador Viterbi consta d'un buffer FILO (primer en entrar-últim-sort) per reconstruir un ordre correcte.

Implementació de programari[modifica]

Una de les operacions que consumeixen més temps és una papallona ACS, que normalment s'implementa utilitzant un llenguatge ensamblador i extensions de conjunt d'instruccions adequades (com ara SSE2) per accelerar el temps de descodificació.

Aplicacions[modifica]

L'algorisme de descodificació de Viterbi s'utilitza àmpliament en les àrees següents:

Referències[modifica]

  1. «6.02 Lecture 7: Viterbi decoding | Introduction to EECS II: Digital Communication Systems | Electrical Engineering and Computer Science» (en anglès). [Consulta: 24 febrer 2024].
  2. «[https://www.ece.ucdavis.edu/~bbaas/281/notes/Handout.viterbi.pdf VITERBI DECODER PROCESSING]» (en anglès). [Consulta: 24 febrer 2024].
  3. «[https://web.mit.edu/6.02/www/s2012/handouts/8.pdf Viterbi Decoding of Convolutional Codes]» (en anglès). [Consulta: 24 febrer 2024].
  4. «[https://web.mit.edu/6.02/www/f2010/handouts/lectures/L9.pdf Viterbi Decoding of Convolutional Codes]» (en anglès). [Consulta: 24 febrer 2024].