Sveriges Radiofrekvensallokering
Modulation och signaler

Felrättande kodning

Hur radiolänkar rättar bitfel: paritet och CRC, Hamming-kod, Reed–Solomon, faltningskoder med Viterbi, interleaving, turbokoder, LDPC och polära koder (5G), kodningsvinst, Shannons gräns och HARQ.

Avancerad24 min läsningGranskad 25 oktober 2026
Innehåll
  1. Varför kodning behövs
  2. Upptäcka fel: paritet och CRC
  3. Blockkoder och Hamming-avstånd
    1. Hamming(7,4)
  4. Reed–Solomon: koder för skurar
  5. Faltningskoder och Viterbi-avkodning
    1. Viterbi-algoritmen
    2. Mjuka beslut
  6. Interleaving: sprid ut skurarna
  7. Kodningsvinst och Shannons gräns
  8. Turbokoder och LDPC
    1. LDPC i 5G NR
  9. Polära koder
  10. ARQ och HARQ
  11. Kontrollfrågor

Radiokanalen är full av brus, fädning och störningar, så en del av de bitar som sänds kommer fram vända. Felrättande kodning (eng. channel coding, forward error correction, FEC) löser det genom att sändaren medvetet lägger till extra bitar, redundans, enligt en regel som mottagaren känner till. Med regeln kan mottagaren upptäcka och ofta rätta fel utan att be om omsändning. Det är därför en mobil kan hålla en länk fast en märkbar andel av de mottagna bitarna är fel före avkodningen, och därför en amatör kan avkoda en FT8-signal som ligger under bruset. Artikeln går från de enklaste metoderna till de koder som används i 5G, och räknar på exempel.

Varför kodning behövs#

Shannon visade 1948 att det för varje datatakt under kanalens kapacitet C (se kanalkapacitet) finns koder som ger så små fel man vill, om blocken görs tillräckligt långa. Satsen säger inte hur koderna ser ut, och jakten på praktiska koder har pågått i över sjuttio år.

Utan kodning kan felfrekvensen bara sänkas med högre effekt. Okodad BPSK behöver Eb/N0≈9,6 dB för bitfelsfrekvensen 10−5 (se digital modulation och brus och signal–brusförhållande). Med en bra kod nås samma kvalitet vid ca 1–4 dB, vilket sparar mer än en faktor tre i effekt. Priset är att varje databit följs av extra bitar: med kodtakten R=k/n går 1/R gånger fler bitar över kanalen, vilket kräver mer bandbredd eller en modulation med fler bitar per symbol.

Två strategier kombineras. FEC (forward error correction) rättar felen i mottagaren utan återkoppling, och är det enda som går vid envägssändning (DAB, tv, GPS) eller lång fördröjning (rymdsonder). ARQ (automatic repeat request) upptäcker fel och ber om omsändning, vilket kräver en returkanal. Mobilnäten och Wi-Fi använder båda. Figur 1 visar var kodningen sitter i kedjan.

Kedjan för felrättande kodning Blockschema i två rader. Sändaren: data in, CRC läggs till, felrättande kodare, interleaver och modulator. Därefter kanalen med brus, fädning och störningar. Mottagaren: demodulator med mjuka beslut, de-interleaver, felrättande avkodare, CRC-kontroll och data ut. En streckad pil från CRC-kontrollen tillbaka till sändaren visar begäran om omsändning (ARQ/HARQ). Sändare Mottagare Data in Demodulator (mjuka beslut) CRC läggs till De-interleaver Felrättande kodare (FEC) FEC-avkodare Interleaver (omflätning) CRC-kontroll (ok eller fel) Modulator Data ut Kanal: brus, fädning, störningar. Några av bitarna kommer fram vända. ARQ/HARQ: begäran om ny sändning vid fel
Figur 1. Kodning i kedjan. Orange: felupptäckt (CRC). Violett: felrättning och omflätning. Visar CRC-kontrollen fel kan mottagaren begära ny sändning (ARQ/HARQ).

Upptäcka fel: paritet och CRC#

Det enklaste skyddet är en paritetsbit: en extra bit som väljs så att antalet ettor i ordet blir jämnt. Ordet 1011 får paritetsbiten 1 och sänds som 10111. Om en enda bit vänds blir antalet ettor udda och mottagaren ser att något är fel, men inte vilken bit. Två fel upphäver varandra och passerar obemärkta, så en paritetsbit upptäcker bara ett udda antal fel.

En CRC (cyclic redundancy check, cyklisk redundanskontroll) är ett kraftfullare sätt att göra detsamma. Meddelandet tolkas som ett polynom över talen 0 och 1, förskjuts r steg och divideras med ett generatorpolynom av grad r, där all aritmetik görs modulo 2 (addition är XOR). Resten, r bitar, läggs till efter meddelandet. Mottagaren dividerar hela ordet och får resten noll om inget är fel.

Divisionen i exemplet, rad för rad. Varje steg XOR:ar 1011 mot de fyra bitar som står rakt under, och det upprepas tills alla bitar utom de tre sista är nollor:

11010011101100000   meddelande + 000
1011
01100011101100000
 1011
00111011101100000
  1011
00010111101100000
   1011
00000001101100000
       1011
00000000110100000
        1011
00000000011000000
         1011
00000000001110000
          1011
00000000000101000
           1011
00000000000000100   rest: 100

En CRC med r bitar upptäcker alla felskurar (flera fel i följd) upp till längden r, och för slumpmässiga fel är sannolikheten att ett fel slinker igenom ungefär 2−r. Med r=3 är det 1 på 8, vilket är för dåligt i praktiken, men med r=16 blir det ca 1 på 65 000 och med r=32 ungefär 1 på fyra miljarder. Därför används CRC med 16, 24 eller 32 bitar i Ethernet, Wi-Fi, Bluetooth och mobilnät. I 5G NR ligger CRC på både transportblock och kodblock, och kontrollkanalerna har 24 bitar (nedlänk) eller 11 respektive 6 bitar (upplänk).2 En CRC rättar inget, men talar om att avkodaren misslyckades och att ARQ behövs.

Blockkoder och Hamming-avstånd#

En blockkod (n,k) gör k databitar till ett kodord på n bitar. Av de 2n möjliga orden är bara 2k giltiga kodord. Hamming-avståndet mellan två ord är antalet positioner där de skiljer sig, och koden har minsta avstånd dmin om alla par av kodord skiljer sig i minst så många positioner. Tänk på kodorden som punkter i ett rum. Varje bitfel flyttar det mottagna ordet ett steg bort från det sända kodordet. Så länge ordet fortfarande ligger närmare det sända kodordet än något annat kodord, och det gäller om högst t=⌊(dmin−1)/2⌋ fel inträffat, blir rätt kodord det närmaste, och avkodning är att välja det. I stället för att rätta kan koden upptäcka upp till dmin−1 fel.

Hamming(7,4)#

Richard Hamming konstruerade 1950 en kod som rättar ett fel: Hamming-koden. Varianten (7,4) lägger tre paritetsbitar till fyra databitar. Bitarna numreras 1–7, och de tre paritetsbitarna placeras på platserna 1, 2 och 4, de som är potenser av två. Varje paritetsbit kontrollerar de platser vars nummer, skrivet binärt, har motsvarande bit satt: p1 (plats 1) platserna 1, 3, 5, 7, p2 (plats 2) platserna 2, 3, 6, 7 och p3 (plats 4) platserna 4, 5, 6, 7. Varje kontroll väljs så att antalet ettor bland dess platser blir jämnt. Figur 2 visar samma sak som ett Venn-diagram: tre cirklar, en per kontroll, där databitarna ligger i överlappen och paritetsbitarna i de delar som bara tillhör en cirkel.

Hamming(7,4) som Venn-diagram Två Venn-diagram med tre överlappande cirklar K1, K2 och K3. Vänster: kodordet 0110011 där alla tre kontroller har jämn summa. Höger: mottaget ord 0110111 där bit 5 har vänts. Cirklarna K1 och K3 har udda summa och är markerade, K2 är jämn. Syndromet är 101, alltså 5, och pekar ut bit 5. Sänt kodord 0110011 1 0 5 0 4 0 3 1 7 1 2 1 6 1 K1 K2 K3 Mottaget 0110111 1 0 5 1 4 0 3 1 7 1 2 1 6 1 K1 K2 K3 K1: 0+1+0+1 = 2, jämn K2: 1+1+1+1 = 4, jämn K3: 0+0+1+1 = 2, jämn K1: 0+1+1+1 = 3, udda K2: 1+1+1+1 = 4, jämn K3: 0+1+1+1 = 3, udda Syndrom K3 K2 K1 = 000: inga fel Syndrom K3 K2 K1 = 101 = 5: vänd bit 5
Figur 2. Hamming(7,4) som Venn-diagram. I varje område står bitens plats (liten) och värde (stor). Vid felet i bit 5 blir K1 och K3 udda, och bit 5 är den enda som ligger i just de två cirklarna.

Matematiskt är kontrollerna en matris. Kolumn j i 𝐇 är talet j skrivet binärt, och ett mottaget ord 𝐫 ger syndromet 𝐬=𝐇𝐫T (modulo 2):

𝐇=(101010101100110001111).

Syndromet är noll för alla giltiga kodord, och för ett ord med ett fel i plats j blir det kolumn j. Därför pekar syndromet direkt på felet. Det finns 16 kodord av 128 möjliga ord, och varje ord som inte är ett kodord ligger exakt ett steg från ett kodord. Koden kallas perfekt: 24(1+7)=27, så inga ord är över. Lägger man till en extra paritetsbit över hela ordet får man den utökade Hamming-koden (8,4) med dmin=4, som rättar ett fel och upptäcker två. Varianter av den, till exempel (72,64), används i datorminnen med felrättning (ECC-minne).

Hamming publicerade koden 1950, två år efter Shannons artikel. Därefter följde Reed–Solomon (1960), LDPC (1962), Viterbi (1967), turbokoder (1993) och polära koder (2009).

Reed–Solomon: koder för skurar#

En Reed–Solomon-kod (RS) räknar inte med bitar utan med symboler på m bitar, till exempel byte, och bygger på polynom över en ändlig kropp GF(2m). En kod RS(n,k) har n≤2m−1 symboler, k av dem data, och n−k=2t paritetssymboler. Den rättar upp till t felaktiga symboler, och ett fel i en symbol räknas lika oavsett om en eller alla åtta bitar i symbolen är fel. Det gör den utmärkt mot felskurar. Dess minsta avstånd dmin=n−k+1 är det största möjliga för sin längd (en så kallad MDS-kod).

Exempel: RS(255,223) över GF(256) har 32 paritetssymboler och rättar upp till t=16 felaktiga byte. Kodtakten är 223/255=0,875. Samma familj finns i CD-skivan (två Reed–Solomon-koder med interleaving, CIRC, som rättar repor), i QR-koder, i första generationens digital-tv DVB-T (RS(204,188), t=8), i DAB+ (se DAB+ och digital-tv) och i trafiksättet JT65 för jord–måne–jord-förbindelser (RS(63,12)).3

Reed–Solomon ensam klarar inte lika låga signal–brusförhållanden som de koder som följer. Därför används den ofta som yttre kod i en sammansatt kod: en faltningskod eller LDPC-kod tar hand om det mesta, och Reed–Solomon städar upp felskurar som blir kvar. Så är DVB-T och många rymdlänkar byggda.

Faltningskoder och Viterbi-avkodning#

Blockkoder tar ett block i taget. En faltningskod (eng. convolutional code) är i stället en ström: varje ny databit skiftas in i ett litet register, och flera utbitar räknas ut från registrets innehåll. Koden i figur 3 har takt 1/2, tre bitars register (tvångslängd K=3) och två utbitar v1 och v2. De ges av generatorerna 111 och 101, vilket oktalt skrivs (7,5). Varje databit ger alltså två kodbitar, och de två senaste databitarna bestämmer kodarens tillstånd: fyra möjliga.

Faltningskod med takt 1/2 och tre bitars minne Överst kodaren: tre rutor u(n), u(n-1) och u(n-2) i ett skiftregister, med två modulo-2-summor. Första summan v1 tar alla tre bitarna (generator 111, oktalt 7). Andra summan v2 tar första och tredje (generator 101, oktalt 5). Nederst fyra tillstånd före och efter ett steg med heldragna linjer för indata 0 och streckade för indata 1, samt en tabell med alla åtta övergångar. Kodare un un−1 un−2 ny bit Skift: varje ny bit flyttar de gamla ett steg åt höger. v1 v2 111 = 7 101 = 5 v1 = un ⊕ un−1 ⊕ un−2 v2 = un ⊕ un−2 Exempel: un = 1, un−1 = 0, un−2 = 1 ger v1 = 1 ⊕ 0 ⊕ 1 = 0 och v2 = 1 ⊕ 1 = 0. Tillstånd = (un−1 un−2). Ett steg i trelliset nu nästa 00 00 10 10 01 01 11 11 indata 0 indata 1 tillstånd u v1 v2 nästa 00 0 00 00 00 1 11 10 10 0 10 01 10 1 01 11 01 0 11 00 01 1 00 10 11 0 01 01 11 1 10 11
Figur 3. Faltningskod (7,5) med tvångslängd 3. Överst kodaren, nederst ett steg i tillståndsdiagrammet (trelliset) och alla åtta övergångar.

Kodning är att följa en väg genom tillstånden. Matar man in 1 0 1 1 följt av två avslutande nollor (en svans, som tömmer registret) får man paren 11 10 00 01 01 11. Svansen kostar några bitar, men gör att kodordet slutar i nolltillståndet, vilket mottagaren utnyttjar. Det fria avståndet dfree är det minsta antalet skillnader mellan två olika vägar som startar och slutar i samma tillstånd. För koden (7,5) är dfree=5, så den rättar två fel som ligger nära varandra.

Viterbi-algoritmen#

Mottagaren ska hitta den väg genom tillstånden vars kodbitar ligger närmast det mottagna. Antalet vägar fördubblas för varje ny bit. Viterbi-algoritmen (1967) undviker explosionen: leder två vägar till samma tillstånd vid samma tid kan den sämre aldrig bli en del av den bästa vägen, så den kastas direkt. I varje tillstånd behövs bara en överlevare och en metrik, summan av alla avvikelser längs vägen.

Viterbi-avkodning av en faltningskod Trellis med fyra tillstånd och sex tidssteg. Över trelliset står de sända och de mottagna bitparen, med två bitfel markerade. I varje nod står det minsta antalet avvikande bitar fram till noden. Den valda banan, som spåras tillbaka från slutet, är markerad och ger de rätta databitarna 1 0 1 1 följt av två nollor som avslutar. sänt mottaget 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 t = 0 t = 1 t = 2 t = 3 t = 4 t = 5 t = 6 tillstånd 00 10 01 11 0 2 0 2 4 1 1 2 1 2 2 3 3 2 1 3 2 2 avkodat 1 0 1 1 0 0 svans: 0 0 vald bana överlevare i en nod förkastad gren
Figur 4. Viterbi-avkodning av kodordet från figur 3 med två bitfel. Siffran i cirkeln är minsta antalet avvikande bitar fram till noden, och den fetmarkerade banan spåras tillbaka från slutet. Streckade grenar är förkastade.

Antalet tillstånd är 2K−1 och arbetet per bit växer i samma takt. En kod med K=7 har 64 tillstånd, och är en av de mest använda faltningskoderna: generatorerna (133,171) oktalt, takt 1/2, finns i Wi-Fi (IEEE 802.11a/g/n), DVB och många satellitlänkar. Dess fria avstånd är 10, så den rättar upp till fyra tätt liggande fel. För mycket långa koder är Viterbi omöjlig. Trafiksättet WSPR använder en faltningskod med tvångslängd 32, vilket skulle ge över två miljarder tillstånd, och avkodas därför med en annan metod (sekventiell avkodning, Fanos algoritm) som bara följer de mest lovande vägarna.3

Högre takt än 1/2 fås genom punktering: en del av kodbitarna stryks efter ett fast mönster, och mottagaren sätter in platshållare. Då fås takter som 2/3 och 3/4 från samma 1/2-kod med samma avkodare, vilket Wi-Fi och DVB gör.

Mjuka beslut#

Hittills har demodulatorn gjort ett hårt beslut för varje bit: 0 eller 1. Men en mottagen spänning nära gränsen mellan symbolerna är mycket osäkrare än en som ligger långt in i ett beslutsområde. Ett mjukt beslut behåller den informationen, normalt som ett log-likelihood-förhållande (LLR). För BPSK med brusvarians σ2 och mottagen spänning y är

L=lnP(b=0∣y)P(b=1∣y)=2yσ2.

Tecknet säger vilken bit som är mest sannolik, och beloppet hur säker den är. Viterbi-avkodaren använder då avstånd i spänning i stället för antal skilda bitar. Det ger ungefär 2 dB bättre än hårda beslut för den här typen av kod (2,4 dB i figur 6), och mjuka värden är utgångspunkten för alla moderna iterativa avkodare. Därför behöver demodulatorn ha en mjuk utgång och inte bara en bitström.

Interleaving: sprid ut skurarna#

De flesta koder är byggda för spridda fel, men radiokanalen ger fel i skurar: ett fädningsdjup, en störpuls eller ett kort avbrott slår ut flera bitar i följd. En interleaver (omflätare) blandar bitordningen före sändning, så att kodbitar som hör ihop hamnar långt från varandra i tid, och mottagaren ordnar om dem igen. En skur i kanalen blir då spridda fel som koden klarar.

Den enklaste varianten är ett blockinterleaver: bitarna skrivs in i en matris rad för rad och läses ut kolumn för kolumn. Figur 5 visar fyra kodord av Hamming(7,4), som var och en rättar ett fel. En skur på fyra bitar i följd förstör två av orden (vart och ett får två fel) om bitarna sänds ord för ord. Med interleaving ger samma skur ett fel i varje ord, och alla fyra rättas.

Interleaving sprider en störskur Två rutnät med fyra kodord med sju bitar var. Överst utan interleaving: bitarna sänds rad för rad, och en störskur på fyra bitar i följd (nummer 13 till 16) träffar två kodord med två fel var, vilket Hamming(7,4) inte kan rätta. Nederst med interleaving: bitarna sänds kolumn för kolumn, och samma störskur ger ett fel i varje kodord, vilket alla rättas. A. Utan interleaving: sändordning rad för rad kodord 1 1 2 3 4 5 6 7 inga fel kodord 2 8 9 10 11 12 13 14 2 fel: kan inte rättas kodord 3 15 16 17 18 19 20 21 2 fel: kan inte rättas kodord 4 22 23 24 25 26 27 28 inga fel B. Med interleaving: sändordning kolumn för kolumn kodord 1 1 5 9 13 17 21 25 1 fel: rättas kodord 2 2 6 10 14 18 22 26 1 fel: rättas kodord 3 3 7 11 15 19 23 27 1 fel: rättas kodord 4 4 8 12 16 20 24 28 1 fel: rättas Siffran i varje ruta är bitens plats i den utsända strömmen. Samma störskur, bit 13 till 16, men spridd över fyra kodord. bitar som träffas av störskuren (4 i följd)
Figur 5. Interleaving med djup 4. Siffran är bitens plats i den utsända strömmen. Skuren (röda rutor) förstör två kodord utan interleaving men är ofarlig med.

Priset är fördröjning: mottagaren måste vänta in hela blocket. En interleaver som ska klara en skur på B bitar med en kod som rättar t fel per kodord behöver ett djup på minst B/t kodord. I rundradio går det bra med lång fördröjning och djup interleaving, men i telefoni och i datalänkar med krav på låg fördröjning måste den hållas kort.

Kodningsvinst och Shannons gräns#

Kodningsvinsten är skillnaden i Eb/N0 (se brus och signal–brusförhållande) som krävs för samma bitfelsfrekvens utan och med kod. Figur 6 jämför fyra system med BPSK i en brusig kanal (AWGN), alla beräknade för den här artikeln: okodad BPSK, Hamming(7,4) med hårda beslut och faltningskoden K=7 med hårda respektive mjuka beslut. Hamming-kurvan är exakt: felen i de avkodade databitarna är summerade över alla 128 möjliga felmönster. Kurvorna för faltningskoden är unionsgränser, övre gränser byggda på kodens avståndsspektrum, som blir mycket noggranna vid låga felfrekvenser.

Bitfelsfrekvens för okodad och kodad överföring Diagram med Eb/N0 i dB på x-axeln och bitfelsfrekvens på logaritmisk y-axel. Fyra kurvor: okodad BPSK, Hamming(7,4) med hårda beslut, faltningskod med K=7 och takt 1/2 med hårda beslut, och samma faltningskod med mjuka beslut. Vid felfrekvensen 10 upphöjt till minus 5 krävs 9,6, 9,2, 6,5 respektive 4,2 dB. En lodrät linje visar Shannongränsen för takt 1/2 (0,19 dB) och en punkt visar turbokoden från 1993 vid 0,7 dB. 0 2 4 6 8 10 12 10−6 10−5 10−4 10−3 10−2 10−1 Eb/N0 (dB) bitfelsfrekvens (BER) Shannongräns, takt 1/2: 0,19 dB 4,2 6,5 9,2 9,6 turbokod 1993: 0,7 okodad BPSK Hamming(7,4), hårda beslut faltningskod K = 7, hårda beslut faltningskod K = 7, mjuka beslut Prickad linje: BER 10−5. Siffror vid linjen: Eb/N0 i dB som krävs.
Figur 6. BER mot E_b/N_0 för BPSK på AWGN-kanal. Hamming(7,4) är exakt beräknad. Faltningskoden K = 7 (133, 171) är en unionsgräns som bara gäller vid låga felfrekvenser, därför börjar kurvorna där. Den streckade linjen är gränsen för takt 1/2, punkten är den första turbokodens rapporterade resultat.

Siffrorna vid BER 10−5 finns i tabell 1.

Tabell 1. Eb/N0 för bitfelsfrekvensen 10−5, BPSK på AWGN-kanal. Alla värden utom turbokoden är beräknade för den här artikeln.

System Kodtakt Eb/N0 (dB) Vinst mot okodad (dB)
Okodad BPSK 1 9,6 0
Hamming(7,4), hårda beslut 4/7 9,2 0,4
Faltningskod K=7, hårda beslut 1/2 6,5 3,1
Faltningskod K=7, mjuka beslut 1/2 4,2 5,4
Turbokod 1993 (rapporterat) 1/2 0,7 8,9
Gräns för takt 1/2 med BPSK-ingång 1/2 0,19 9,4

Tre saker syns. Hamming(7,4) ger knappt något vid hård avkodning: redundansen betyder att varje kodbit får mindre energi, och det äter nästan upp vinsten. Under ca 6 dB är den sämre än okodat. Mjuka beslut ger 2,4 dB extra i faltningsexemplet. Och det är ett stort glapp mellan faltningskoden och gränsen, 4,2 dB mot 0,19 dB, som de bästa moderna koderna stänger till ca en halv dB.

Turbokoder och LDPC#

Faltningskoden K=7 ligger ca 4 dB från gränsen. År 1993 presenterade Berrou, Glavieux och Thitimajshima turbokoder som rapporterades nå Eb/N0=0,7 dB vid BER 10−5 med takt 1/2, ca 0,5 dB från gränsen.1 En turbokod består av två enkla faltningskodare som kodar samma data, där den ena får bitarna i en blandad ordning (en lång interleaver). Mottagarens två avkodare skickar mjuk information fram och tillbaka och förfinar gissningen för varje iteration, som en turbomotor som återanvänder sin utgång. Turbokoder användes för data i 3G (UMTS/HSPA) och 4G (LTE).

LDPC-koder (low-density parity-check) uppfanns av Robert Gallager i början av 1960-talet och glömdes bort, eftersom datorerna då var för små. De återupptäcktes på 1990-talet. En LDPC-kod definieras av en paritetsmatris 𝐇 med mycket få ettor, så varje kontroll gäller bara några få bitar. Ett ord 𝐜 är ett kodord om 𝐇𝐜T=0. Matrisen ritas som en Tannergraf med en nod per bit och en per kontroll, och en kant där matrisen har en etta (figur 7). Hamming-koden är en liten sådan graf. En LDPC-kod har i stället tusentals noder med bara några kanter vardera, och avkodas iterativt: bit- och kontrollnoderna skickar sannolikheter till varandra över kanterna (meddelandeöverföring, belief propagation, ofta i den förenklade formen min-sum) tills alla kontroller stämmer. Arbetet växer linjärt med blocklängden och kan göras parallellt, vilket passar moderna kretsar.

Tannergraf för Hamming(7,4) Bipartit graf med sju bitnoder längst ned och tre kontrollnoder högst upp. Varje kontrollnod är ansluten till de fyra bitar den summerar. Det mottagna ordet är 0110111, där bit 5 är vänd. K1 och K3 har udda summa och är röda, K2 är jämn. Bit 5 är den enda bit som är ansluten till exakt K1 och K3. K1 udda K2 jämn K3 udda 0 bit 1 1 bit 2 1 bit 3 0 bit 4 1 bit 5 1 bit 6 1 bit 7 Kontrollnoder (paritetskontroller) Bitnoder (mottagna bitar) Bit 5 är den enda bit som ligger i K1 och K3 men inte i K2. Det är därför syndromet pekar ut den.
Figur 7. Tannergraf för Hamming(7,4). Varje kontroll (överst) är ansluten till de fyra bitar den summerar. Vid felet i bit 5 är K1 och K3 udda (röda).

LDPC-koder används i DVB-S2 och DVB-T2 (tillsammans med en BCH-kod), i Wi-Fi (sedan IEEE 802.11n), i 10 Gbit/s-Ethernet över tvinnat par, i FT8 och i 5G NR. FT8 använder (174,91): 77 meddelandebitar och 14 bitar CRC blir 91 bitar som kodas till 174 (se Digitala trafiksätt).

LDPC i 5G NR#

För att samma hårdvara ska klara många blockstorlekar är 5G:s LDPC-kod kvasicyklisk. Den definieras av en liten basgraf, en matris med ettor och nollor, där varje etta ersätts av en cyklisk förskjutning av enhetsmatrisen i storleken Z×Z och varje nolla av en nollmatris. Talet Z kallas lyftstorlek och kan väljas bland 51 värden mellan 2 och 384.2 Det finns två basgrafer:

Tabell 2. LDPC-koden i 5G NR (3GPP TS 38.212). Värden från en översiktsartikel, kontrollerade bara mot den.

Basgraf 1 (BG1) Basgraf 2 (BG2)
Storlek (kontroller × kolumner) 46 × 68 42 × 52
Största informationsblock 8 448 bitar 3 840 bitar
Kodtakt 1/3 till 8/9 1/5 till 2/3
Används för stora block, hög takt små block, låg takt

Med Z=384 har BG1 46·384=17664 rader och 68·384=26112 kolumner, och 22·384=8448 kolumner är informationsbitar. De två första kolumnerna sänds inte, så kodordet är 66·384=25344 bitar långt och takten 8448/25344=1/3. Basgraf väljs efter transportblockets storlek A och kodtakten R: BG2 används om A≤292, eller om A≤3824 och R≤0,67, eller om R≤0,25. Annars används BG1. Större block delas upp i flera kodblock, och sedan anpassas kodordet till radioresursen (rate matching).

Polära koder#

De polära koderna presenterades av Erdal Arıkan 2009 och var de första explicita koder som bevisligen når kanalens kapacitet med en avkodningskomplexitet som bara växer ungefär som NlogN för blocklängden N. Idén är kanalpolarisering. Tar man två oberoende kopior av en brusig kanal och kombinerar deras ingångar med en XOR, blir den ena av de två nya, syntetiska kanalerna sämre än originalet och den andra bättre. Upprepar man det n gånger för N=2n kanaler, blir nästan alla kanaler antingen mycket bra eller mycket dåliga, medan summan av kapaciteterna är oförändrad.

Det är enklast att se i en raderingskanal, där en bit antingen kommer fram eller går förlorad med sannolikheten ε. De två nya kanalerna har då raderingssannolikheterna

ε−=2ε−ε2(sämre),ε+=ε2(bättre).

För ε=0,5 ger ett steg 0,75 och 0,25, och tre steg (N=8) ger de åtta värdena i figur 9. Summan av kapaciteterna 1−ε är hela tiden 4 bitar. Längre koder polariserar tydligare (figur 8): för N=1024 har 37 % av delkanalerna kapacitet över 0,99, 37 % under 0,01, och bara en fjärdedel ligger däremellan.

Kanalpolarisering Diagram med delkanalernas rangordning (andel av kanalerna, sorterade) på x-axeln och kapacitet på y-axeln. En kanal som raderar hälften av bitarna har kapacitet 0,5. Efter polarisering får delkanalerna kapaciteter som sprids mot 0 och 1. Kurvorna för N=8, 64 och 1024 blir allt brantare i mitten. 0 0,25 0,50 0,75 1 0 0,25 0,50 0,75 1 delkanalernas rang (sorterade från sämst till bäst, som andel av N) kapacitet (bit per användning) utan polarisering: alla delkanaler 0,5 N = 8 N = 64 N = 1 024
Figur 8. Polarisering för en raderingskanal med ε=0,5, beräknad rekursivt. Ju längre koden är, desto fler delkanaler är nästan perfekta eller nästan oanvändbara.

Koden är sedan enkel att bygga: data skickas på de K bästa delkanalerna och en fast, känd nolla (fryst bit) på de övriga, så takten är K/N. Kodaren är ett nätverk av XOR-grindar, en butterfly (figur 9): 𝐱=𝐮𝐆N med 𝐆N=𝐅⊗n och 𝐅=(1011).

Polär kodare med åtta bitar Kodarnätverk med åtta rader och tre steg av modulo-2-summor. Ingångarna u0 till u7 till vänster, där fyra är fasta nollor (frysta) och fyra bär data, nämligen u3, u5, u6 och u7, som har lägst raderingssannolikhet när kanalen raderar hälften av bitarna. Utgångarna x0 till x7 till höger. Exemplet u = 00010011 ger x = 10100101. u värde roll ε u0 0 fryst 0,996 x0 = 1 u1 0 fryst 0,879 x1 = 0 u2 0 fryst 0,809 x2 = 1 u3 1 data 0,316 x3 = 0 u4 0 fryst 0,684 x4 = 0 u5 0 data 0,191 x5 = 1 u6 1 data 0,121 x6 = 0 u7 1 data 0,004 x7 = 1 steg 1 steg 2 steg 3 ε = raderingssannolikhet för delkanalen när kanalen raderar hälften av bitarna.
Figur 9. Polär kodare med N = 8. Raderna u3, u5, u6 och u7 (violett) bär data. De övriga är frysta nollor. Varje steg lägger raden med högre index till raden med lägre index (cirkel med plustecken). Utgången är beräknad ur indata 1 0 1 1.

Avkodning sker med successiv cancellering (SC): avkodaren bestämmer u0,u1,… i tur och ordning och använder tidigare beslut för att avgöra nästa. Frysta bitar är kända. SC är enkel men sårbar, eftersom ett tidigt fel sprider sig, så man använder listavkodning (SCL) som behåller flera kandidater, och en CRC som talar om vilken kandidat som är rätt (CA-SCL). Därför finns CRC-bitar även i korta kontrollmeddelanden.

I 5G NR används polära koder för kontrollkanalerna: nedlänkens kontrollinformation (DCI), upplänkens (UCI, när meddelandet är tillräckligt långt) och sändningskanalen BCH.2 Kodlängden är N=2n med n från 5 till 9 i nedlänk (N upp till 512) och upp till 10 i upplänk (N upp till 1 024), och lägsta kodtakt är 1/8. Mycket små meddelanden skyddas i stället av enkla blockkoder, och vilka delkanaler som är bäst anges av en fast tabell i specifikationen. Polära koder passar korta block med höga krav på tillförlitlighet, LDPC långa block med hög datatakt. Se vidare 5G NR och Så fungerar ett mobilnät.

ARQ och HARQ#

Om CRC:n visar fel kan mottagaren be om en ny sändning, ARQ. Det ger säker leverans, men fördröjningen växer med antalet omsändningar. HARQ (hybrid ARQ) kombinerar FEC och ARQ: mottagaren kastar inte det felaktiga blocket utan sparar de mjuka värdena. Vid omsändning skickas samma kodbitar (Chase-kombination) eller andra, tidigare osända bitar av samma kodord (inkrementell redundans), och mottagaren lägger ihop allt. Det fungerar som en kod med lägre takt som byggs upp bara när det behövs. Mobilnäten använder HARQ med flera parallella processer, så att sändaren kan skicka nya block medan den väntar på svar. Tillsammans med snabb länkanpassning (val av modulation och kodtakt efter kanalens kvalitet, se kanalkapacitet) kan länken arbeta nära sin kapacitet med få omsändningar.

Kontrollfrågor#

Koda databitarna 1100 med Hamming(7,4) enligt artikelns numrering.

Bitarna hamnar på platserna 3, 5, 6, 7: 1, 1, 0, 0. p1=1⊕1⊕0=0 (platserna 3, 5, 7), p2=1⊕0⊕0=1 (platserna 3, 6, 7), p3=1⊕0⊕0=1 (platserna 5, 6, 7). Kodordet, plats 1 till 7, är 0111100.

Du tar emot 0111110 och vet att koden är Hamming(7,4). Vad skickades?

Platserna 1, 3, 5, 7 (0, 1, 1, 0) är jämna, s1=0. Platserna 2, 3, 6, 7 (1, 1, 1, 0) är udda, s2=1. Platserna 4, 5, 6, 7 (1, 1, 1, 0) är udda, s3=1. Syndromet 110 är 6, så bit 6 vänds och kodordet var 0111100, med databitarna 1100.

En faltningskod behöver 4,2 dB i stället för 9,6 dB för samma bitfelsfrekvens. Vad innebär kodningsvinsten på 5,4 dB för sändareffekten?

5,4 dB är en faktor 100,54≈3,5. Samma kvalitet kan nås med ca 3,5 gånger lägre effekt, eller i fritt utrymme (1/r2) med ca 1,9 gånger så långt avstånd vid samma effekt.

En störskur slår ut 12 bitar i följd. Koden rättar ett fel per kodord. Hur djupt måste en blockinterleaver vara?

Minst 12 kodord, så att de 12 skadade bitarna hamnar i 12 olika kodord med högst ett fel vardera: djupet B/t=12/1=12. Fördröjningen är då 12 kodord extra.

5G:s LDPC-kod BG1 med lyftstorleken 384 har 22 informationskolumner. Hur många informationsbitar blir det, och vilken kodtakt har kodordet om de två första kolumnerna inte sänds?

22·384=8448 bitar. Kodordet är (68−2)·384=25344 bitar, så takten är 8448/25344=1/3.


  1. Resultatet gäller den ursprungliga artikeln (1993): takt 1/2, mycket lång interleaver och många iterationer, och mätt vid BER 10−5. Värdet 0,7 dB bygger på uppgifter i litteraturen och har inte kontrollerats mot originalartikeln för den här artikeln. Senare koder och kortare block ger andra siffror. ↩

  2. Parametrarna för 5G NR (basgrafer, lyftstorlekar, kodlängder, CRC, polära koders längder och lägsta takt) kommer från översiktsartikeln arXiv:2502.11053, som själv anger att de bör kontrolleras mot 3GPP TS 38.212. Specifikationen ändras mellan releaser; verifiera mot den aktuella versionen. ↩↩↩

  3. JT65 med RS(63,12) och WSPR med faltningskod av tvångslängd 32 och sekventiell avkodning är lärobokskunskap från de program som beskrivs i WSJT-X-dokumentationen, och har inte kontrollerats mot den för den här artikeln. FT8:s kod (174,91) med CRC-14 beskrivs i Franke, Somerville och Taylor, QEX (2020). ↩↩

Källor och vidare läsning

  1. Bell System Technical Journal (1948). C. E. Shannon: A Mathematical Theory of Communication. Kanalkodningssatsen: med kodtakt under kanalkapaciteten finns koder med godtyckligt litet fel.
  2. Bell System Technical Journal (1950). R. W. Hamming: Error Detecting and Error Correcting Codes. Hamming-koden och begreppet avstånd mellan kodord.
  3. Journal of the Society for Industrial and Applied Mathematics (1960). I. S. Reed & G. Solomon: Polynomial Codes over Certain Finite Fields. Reed–Solomon-koderna.
  4. IRE Transactions on Information Theory (1962). R. G. Gallager: Low-Density Parity-Check Codes. LDPC-koderna.
  5. IEEE Transactions on Information Theory (1967). A. J. Viterbi: Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm. Viterbi-algoritmen.
  6. IEEE International Conference on Communications (ICC) (1993). C. Berrou, A. Glavieux & P. Thitimajshima: Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes. Turbokoderna och det rapporterade resultatet vid 0,7 dB.
  7. IEEE Transactions on Information Theory (2009). E. Arıkan: Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels. Polära koder.
  8. Pearson (Prentice Hall) (2004). S. Lin & D. J. Costello: Error Control Coding (2:a upplagan). Lärobok: blockkoder, faltningskoder, Reed–Solomon, viktspektrum och unionsgränser.
  9. 3GPP. TS 38.212: NR; Multiplexing and channel coding. Kanalkodning i 5G NR: LDPC för data, polära koder för kontrollkanaler, CRC. Parametrarna i artikeln är hämtade ur översiktsartikeln nedan och inte direkt ur specifikationen.
  10. arXiv (2025). Demystifying 5G Polar and LDPC Codes: A Comprehensive Review and Foundations (arXiv:2502.11053). Sekundär översikt av 5G:s LDPC- och polära koder: basgrafer, lyftstorlekar, kodlängder och CRC. Hämtad 25 oktober 2026.

Läs vidare

Citera den här sidan

Använd gärna kunskapsbanken som källa i rapporter och uppsatser. Ange alltid datum, eftersom regler och tilldelningar ändras.

APA 7
SRFA Kunskapsbank. (2026). Felrättande kodning. Sveriges Radiofrekvensallokering. https://srfa.se/kunskap/modulation/kanalkodning/
Harvard
Sveriges Radiofrekvensallokering (2026). Felrättande kodning. SRFA Kunskapsbank. Tillgänglig: https://srfa.se/kunskap/modulation/kanalkodning/ (hämtad 24 oktober 2026).

Kunskapsbanken är en sammanställning för utbildning och referens. Den ersätter inte gällande föreskrifter och ger ingen rätt att sända. Kontrollera alltid aktuella villkor hos PTS.