Burst felkorrigerande kod

I kodningsteorin använder skurfelkorrigerande koder metoder för att korrigera skurfel , vilket är fel som uppstår i många på varandra följande bitar snarare än att förekomma i bitar oberoende av varandra .

Många koder har utformats för att korrigera slumpmässiga fel . Ibland kan dock kanaler introducera fel som lokaliseras i ett kort intervall. Sådana fel uppstår i en skur (kallade skurfel ) eftersom de inträffar i många på varandra följande bitar. Exempel på burst-fel kan hittas i stor utsträckning i lagringsmedier. Dessa fel kan bero på fysisk skada som repor på en skiva eller ett blixtnedslag i händelse av trådlösa kanaler. De är inte oberoende; de tenderar att vara rumsligt koncentrerade. Om en bit har ett fel är det troligt att de intilliggande bitarna också kan vara skadade. Metoderna som används för att korrigera slumpmässiga fel är ineffektiva för att korrigera skurfel.

Definitioner

En skur av längd 5

En skur av längd

Säg att ett kodord sänds och det tas emot som kallas felvektorn om komponenterna som inte är noll i är begränsade till på varandra följande komponenter. Till exempel är en skur med längden

Även om denna definition är tillräcklig för att beskriva vad ett skurfel är, förlitar sig majoriteten av de verktyg som utvecklats för skurfelskorrigering på cykliska koder. Detta motiverar vår nästa definition.

En cyklisk skur med längden

En felvektor kallas ett cykliskt skurfel med längden om dess komponenter som inte är noll är begränsade till cykliskt på varandra följande komponenter. Till exempel är den tidigare betraktade felvektorn en cyklisk skur med längden , eftersom vi betraktar felet som börjar vid position och slutar på position . Lägg märke till att indexen är -baserade, det vill säga det första elementet är på position .

I resten av den här artikeln kommer vi att använda termen burst för att referera till en cyklisk burst, om inte annat anges.

Burst beskrivning

Det är ofta användbart att ha en kompakt definition av ett skurfel, som omfattar inte bara dess längd utan också mönstret och platsen för ett sådant fel. Vi definierar en skurbeskrivning som en tupel där är mönstret för felet (det vill säga strängen av symboler som börjar med den första posten som inte är noll i felmönstret och slutar med den sista symbolen som inte är noll), och är platsen, på kodordet, där skuren kan hittas.

är skurbeskrivningen felmönstret . Observera att en sådan beskrivning inte är unik, eftersom beskriver samma skurfel. I allmänhet, om antalet komponenter som inte är noll i är , så kommer att ha olika skurbeskrivningar som var och en börjar med en annan post som inte är noll. . För att åtgärda de problem som uppstår av tvetydigheten i skurbeskrivningar med satsen nedan, men innan vi gör det behöver vi en definition först.

Definition. Antalet symboler i ett givet felmönster betecknas med

Sats (Uniqueness of burst descriptions) Antag att är en felvektor med längden med två skurbeskrivningar och . Om då är de två beskrivningarna identiska, det vill säga deras komponenter är ekvivalenta.

Bevis

Låt vara hammingvikten (eller antalet poster som inte är noll) för . Då exakt felbeskrivningar. För finns det inget att bevisa. Så vi antar att och att beskrivningarna inte är identiska. Vi märker att varje post som inte är noll i kommer att visas i mönstret, och så kommer komponenterna i som inte ingår i mönstret att bilda en cyklisk serie nollor, som börjar efter den sista posten som inte är noll , och fortsätter precis innan mönstrets första post som inte är noll. Vi kallar den uppsättning index som motsvarar denna körning som nollkörningen. Vi observerar omedelbart att varje skurbeskrivning har en nollkörning associerad med sig och att varje nollkörning är osammanhängande. Eftersom vi har noll körningar, och var och en är disjunkt, har vi totalt distinkta element i alla nollkörningar. Å andra sidan har vi:

Detta motsäger Således är skurfelsbeskrivningarna identiska.

En följd av ovanstående sats är att vi inte kan ha två distinkta skurbeskrivningar för skurar med längden

Cykliska koder för korrigering av skurfel

Cykliska koder definieras enligt följande: tänk på -symbolerna som element i . Nu kan vi tänka på ord som polynom över där de individuella symbolerna i ett ord motsvarar polynomets olika koefficienter. För att definiera en cyklisk kod väljer vi ett fast polynom, kallat generatorpolynom . Kodorden för denna cykliska kod är alla polynom som är delbara med detta generatorpolynom.

Kodord är polynom med graden . Antag att generatorpolynomet har graden . Polynom med graden som är delbara med blir resultatet av att multiplicera med polynom av grad . Vi har sådana polynom. Var och en av dem motsvarar ett kodord. Därför är för cykliska koder.

Cykliska koder kan detektera alla skurar med längd upp till . Vi kommer att se senare att skurfelsdetekteringsförmågan för vilken som helst kod är avgränsad från ovan av . Cykliska koder anses vara optimala för skurfelsdetektering eftersom de uppfyller denna övre gräns:

Teorem (Cyklisk skurkorrigeringsförmåga) Varje cyklisk kod med generatorpolynom av grad kan detektera alla skurar med längden

Bevis

Vi måste bevisa att om du lägger till en skur med längden till ett kodord (dvs. till ett polynom som är delbart med ), så blir resultatet kommer inte att vara ett kodord (dvs. motsvarande polynom är inte delbart med ). Det räcker för att visa att ingen skur av längden är delbar med . En sådan skur har formen , där Därför är inte delbart med (eftersom den senare har grad ). är inte delbart med (Annars skulle alla kodord börja med ). Därför heller delbart med

Ovanstående bevis föreslår en enkel algoritm för skurfelsdetektering/-korrigering i cykliska koder: givet ett sänt ord (dvs ett polynom med graden beräkna resten av detta ord när det delas av . Om resten är noll (dvs om ordet är delbart med ), så är det ett giltigt kodord. Rapportera annars ett fel. För att rätta till detta fel, subtrahera denna återstod från det överförda ordet. Subtraktionsresultatet kommer att vara delbart med (dvs det kommer att vara ett giltigt kodord).

Genom den övre gränsen för skurfelsdetektering ( ), vet vi att en cyklisk kod inte kan detektera alla skurar med längd . Men cykliska koder kan verkligen detektera de flesta skurar av längd . Anledningen är att detektionen misslyckas endast när skuren är delbar med . Över binära alfabet finns det skurar med längd . Av dessa är endast delbara med . Därför är sannolikheten för detektionsfel mycket liten ( ) om man antar en enhetlig fördelning över alla skurar av längd .

Vi överväger nu ett grundläggande teorem om cykliska koder som kommer att hjälpa till att designa effektiva skurfelskorrigerande koder, genom att kategorisera skurar i olika coset.

Teorem (Distinct Cosets ) En linjär kod är en -burst-felkorrigerande kod om alla burst-fel av längd ligger i distinkta coset av .

Bevis

Låt vara distinkta burst-fel av längd som ligger i samma coset av kod . Då ett kodord. Därför, om vi tar emot kan vi avkoda det antingen till eller . Däremot, om alla skurfel och inte ligger i samma coset, då är varje skurfel bestäms av dess syndrom. Felet kan sedan korrigeras genom dess syndrom. Således är en linjär kod en -burst-felkorrigerande kod om och endast om alla skurfel av längd ligger i distinkta cosets av .

Teorem (kodordsklassificering av skurfel) Låt vara en linjär -burst-felkorrigerande kod. Då kan ingen burst av längden vara ett kodord.

Bevis

Låt vara ett kodord med en skur av längden . Den har alltså mönstret , där och är ord av längd Därför är orden och är två skurar med längd . För binära linjära koder tillhör de samma coset. Detta motsäger Distinct Cosets Theorem, därför kan ingen burst av längd vara ett kodord.

Gränser för korrigering av skurfel

Övre gränser för detektering och korrigering av skurfel

Med övre gräns menar vi en gräns för vår feldetekteringsförmåga som vi aldrig kan gå längre än. Antag att vi vill designa en kod som kan detektera alla skurfel med längden En naturlig fråga att ställa är: givet och , vad är det maximala som vi aldrig kan uppnå utöver? Med andra ord, vad är den övre gränsen för längden av skurar som vi kan detektera med vilken som helst kod? Följande teorem ger ett svar på denna fråga.

Teorem (förmåga att upptäcka skurfel) Förmågan att detektera skurfel för vilken som helst kod är

Bevis

Först observerar vi att en kod kan detektera alla skurar av längd om och endast om inga två kodord skiljer sig åt med en skur av längd . Antag att vi har två kodord och som skiljer sig åt med en burst av längd . När vi tar emot kan vi inte avgöra om det överförda ordet verkligen är utan överföringsfel, eller om det är med ett skurfel som inträffade under sändningen. Antag nu att vartannat kodord skiljer sig med mer än en skur av längd Även om det överförda kodordet träffas av en skur med längd , kommer det inte att ändras till ett annat giltigt kodord. När vi tar emot det kan vi säga att detta är med en burst Genom ovanstående observation vet vi att inga två kodord kan dela de första symbolerna. Anledningen är att även om de skiljer sig åt i alla andra -symboler, kommer de fortfarande att skilja sig åt med en längd uppfyller antalet kodord att applicera på båda sidor och omarrangera, kan vi se att .

Nu upprepar vi samma fråga men för felkorrigering: givet och , vad är den övre gränsen för längden av skurar som vi kan korrigera med hjälp av någon kod? Följande teorem ger ett preliminärt svar på denna fråga:

Teorem (Förmåga att korrigera skurfel) Förmågan att korrigera skurfel för vilken som helst kod uppfyller

Bevis

Först observerar vi att en kod kan korrigera alla skurar av längd om och bara om inga två kodord skiljer sig åt med summan av två skurar av längd Antag att två kodord och skiljer sig åt med skurar och av längden vardera. När vi fick träffad av en burst , kunde vi tolka det som om det var träffad av en skur . Vi kan inte avgöra om det överförda ordet är eller . Anta nu att vartannat kodord skiljer sig med mer än två skurar av längd . Även om det överförda kodordet träffas av en skur med längd , kommer det inte att se ut som ett annat kodord som har träffats av ett annat brista. För varje kodord låt beteckna mängden av alla ord som skiljer sig från med en skur av längd Lägg märke till att inkluderar själva Genom ovanstående observation vet vi att för två olika kodord och och är disjunkta. Vi har kodord. Därför kan vi säga att . Dessutom har vi . Genom att plugga in den senare olikheten i den förra, sedan ta basen -logaritmen och omordna, får vi ovanstående sats.

Ett starkare resultat ges av Rieger bound:

Sats (Rieger bunden) Om är felkorrigeringsförmågan för en linjär blockkod, då .

Bevis

Vilken linjär kod som helst som kan korrigera alla skurmönster av längd kan inte ha en skur med längden som kodord. Om den hade en skur med längden som ett kodord, så skulle en skur med längden kunna ändra kodordet till ett skurmönster med längden , som också kan erhållas genom att göra ett skurfel med längden i alla nollkodord. Om vektorer inte är noll i de första symbolerna, bör vektorerna vara från olika delmängder av en array så att deras skillnad inte är ett kodord av skurar med längden . För att säkerställa detta villkor är antalet sådana delmängder åtminstone lika med antalet vektorer. Således skulle antalet delmängder vara minst . Därför har vi minst distinkta symboler, annars skulle skillnaden mellan två sådana polynom vara ett kodord som är summan av två skurar med längden Detta bevisar alltså Rieger Bound.

Definition. En linjär skurfelskorrigerande kod som uppnår ovanstående Rieger-gräns kallas en optimal skurfelskorrigerande kod.

Ytterligare gränser för korrigering av skurfel

Det finns mer än en övre gräns för den uppnåbara kodhastigheten för linjära blockkoder för multiple phased-burst correction (MPBC). En sådan gräns är begränsad till en maximal korrigerbar cyklisk skurlängd inom varje delblock, eller ekvivalent en begränsning på den minsta felfria längden eller gapet inom varje fasad skur. Denna gräns, när den reduceras till det speciella fallet av en gräns för enkelskurkorrigering, är Abramson-gränsen (en följd av Hamming-gränsen för skurfelskorrigering) när den cykliska skurlängden är mindre än halva blocklängden.

Sats (antal skurar) För över en binär alfabetet, det finns vektorer med längden som är skurar med längden .

Bevis

Eftersom skurlängden är finns det en unik skurbeskrivning associerad med skuren. Burst kan börja vid vilken som helst av de -positionerna i mönstret. Varje mönster börjar med och innehåller en längd på . Vi kan tänka oss det som mängden av alla strängar som börjar med och har längden . Det finns alltså totalt möjliga sådana mönster, och totalt skurar av längd Om vi ​​inkluderar skuren helt noll, har vi vektorer som representerar skurar med längden

Sats (bunden till antalet kodord) Om en binär -burst felkorrigerande kod har som mest kodord.

Bevis

Eftersom vet vi att det finns skurar av längd . Säg att koden har kodord, då finns det kodord som skiljer sig från ett kodord med en skur av längd . Vart och ett av -orden måste vara distinkta, annars skulle koden ha avstånd . Därför innebär

Sats (Abramsons gränser) Om är en binär linjär -burst felkorrigerande kod, dess blocklängd måste uppfylla:

Bevis

För en linjär kod finns det kodord. Genom vårt tidigare resultat vet vi det

Om vi ​​isolerar får vi . Eftersom och måste vara ett heltal, har vi .

Anmärkning. kallas redundansen för koden och i en alternativ formulering för Abramsons gränser är

Brandkoder

Medan cykliska koder i allmänhet är kraftfulla verktyg för att upptäcka skurfel, överväger vi nu en familj av binära cykliska koder som kallas brandkoder, som har goda möjligheter att korrigera fel i en skur. Med enkel skur, säg av längden , menar vi att alla fel som ett mottaget kodord har ligger inom ett fast intervall av siffror.

Låt vara ett irreducerbart polynom med graden över , och låt vara perioden av . Perioden för och faktiskt för vilket polynom som helst, definieras som det minsta positiva heltal så att Låt vara ett positivt heltal som uppfyller och inte delbart med , där är perioden för . Definiera brandkoden med följande generatorpolynom :

Vi kommer att visa att är en -burst-error correcting code.

Lemma 1

Bevis

Låt vara den största gemensamma divisorn av de två polynomen. Eftersom är irreducerbar, eller . Antag sedan för någon konstant . Men är en divisor av eftersom är en divisor av . Men detta motsäger vårt antagande att inte delar Således som bevisar lemma.

Lemma 2 Om är ett polynom av period , då om och endast om

Bevis

Om , sedan . Således,

Antag nu att . Sedan, . Vi visar att är delbart med genom induktion på . Basfallet följer. Antag därför . Vi vet att delar båda (eftersom den har period )

Men är irreducerbar, därför måste den dela båda och ; sålunda delar den också skillnaden mellan de två sista polynomen, . Sedan följer att delar . Slutligen delar den också: . Genom induktionshypotesen, , sedan .

En följd av Lemma 2 är att eftersom har period så har delar om och endast om .

Teorem Brandkoden är -burst felkorrigering

Om vi ​​kan visa att alla skurar av längd eller mindre förekommer i olika cosets kan vi använda dem som coset-ledare som bildar korrigerbara felmönster. Anledningen är enkel: vi vet att varje coset har en unik syndromavkodning associerad med sig, och om alla skurar av olika längd förekommer i olika cosets, har alla unika syndrom, vilket underlättar felkorrigering.

Bevis för teorem

Låt och vara polynom med grader och , representerar skurar med längd och med Heltalen representerar startpositionerna för skurarna och är mindre än blocklängden för koden. För motsägelse skull, antag att och är i samma coset . Då en giltigt kodord (eftersom båda termerna är i samma coset). Utan förlust av allmänhet, välj . Med divisionssatsen kan vi skriva: för heltal och . Vi skriver om polynomet enligt följande:

Lägg märke till att vid den andra manipulationen introducerade vi termen . Vi får göra det, eftersom brandkoder fungerar på . Enligt vårt antagande ett giltigt kodord och måste därför vara en multipel av . Som nämnts tidigare, eftersom faktorerna för är relativt primtal måste vara delbara med . Om vi ​​tittar noga på det sista uttrycket som härleds för lägger vi märke till att är delbart med (av följden av Lemma 2). Därför antingen delbart med eller är . Om vi ​​tillämpar divisionssatsen igen ser vi att det finns ett polynom med graden så att:

Då kan vi skriva:

Genom att likställa graden av båda sidorna får vi Eftersom vi kan dra slutsatsen vilket innebär och . Lägg märke till att i expansionen:

Termen visas, men eftersom , blir det resulterande uttrycket innehåller inte , därför och därefter Detta kräver att och . Vi kan ytterligare revidera vår division av med för att återspegla dvs. . Att ersätta tillbaka till ger oss,

Eftersom , har . Men är irreducerbar, därför måste och vara relativt primtal. Eftersom ett kodord vara delbart med , eftersom det inte kan vara delbart med . Därför vara en multipel av . Men det måste också vara en multipel av , vilket innebär att det måste vara en multipel av men det är precis kodens blocklängd. Därför inte vara en multipel av eftersom de båda är mindre än . Således är vårt antagande om att är ett kodord felaktigt, och därför är och finns i olika cosets, med unika syndrom, och därför korrigerbara.

Exempel: 5-skurfel vid korrigering av brandkod

Med teorin som presenteras i avsnittet ovan, överväg konstruktionen av en -burst felkorrigerande brandkod. Kom ihåg att för att konstruera en brandkod behöver vi ett irreducerbart polynom ett heltal , som representerar skurfelskorrigeringsförmågan för vår kod, och vi måste tillfredsställ egenskapen att inte är delbart med perioden för . Med dessa krav i åtanke, överväg det irreducerbara polynomet och låt . Eftersom är ett primitivt polynom är dess period . Vi bekräftar att inte är delbart med . Således,

är en brandkodsgenerator. Vi kan beräkna kodens blocklängd genom att utvärdera den minsta gemensamma multipeln av och . Med andra ord, . Sålunda är brandkoden ovan en cyklisk kod som kan korrigera alla skurar med längden eller mindre.

Binära Reed-Solomon-koder

Vissa kodfamiljer, som Reed–Solomon , fungerar på alfabetstorlekar som är större än binära. Den här egenskapen ger sådana koder kraftfulla funktioner för korrigering av skurfel. Betrakta en kod som fungerar på . Varje symbol i alfabetet kan representeras av bitar. Om är en Reed–Solomon-kod över , vi kan tänka på som en kod över .

Anledningen till att sådana koder är kraftfulla för skurfelskorrigering är att varje symbol representeras av -bitar, och i allmänhet är det irrelevant hur många av dessa -bitar som är felaktiga; oavsett om en enstaka bit, eller alla de -bitarna innehåller fel, är det ur ett avkodningsperspektiv fortfarande ett enda symbolfel. Med andra ord, eftersom skurfel tenderar att uppstå i kluster, finns det en stor möjlighet att flera binära fel bidrar till ett enda symbolfel.

Observera att en skur av fel kan påverka högst -symboler, och en skur på kan påverka vid de flesta symboler. Sedan kan en skur av påverka högst symboler; detta innebär att en -symbols-error correcting code kan korrigera en skur av längd som mest .

I allmänhet kan ett -fel som korrigerar Reed–Solomon-kod över korrigera vilken kombination av

eller färre skurar med längden , utöver att kunna korrigera -slumpmässiga värsta fel.

Ett exempel på en binär RS-kod

Låt vara en RS-kod över . Denna kod användes av NASA i deras Cassini-Huygens rymdfarkost. Den kan korrigera symbolfel. Vi konstruerar nu en binär RS-kod från . Varje symbol kommer att skrivas med bitar. Därför kommer den binära RS-koden att ha som parametrar. Den kan korrigera vilken enskild skur med längden .

Interfolierade koder

Interleaving används för att konvertera faltningskoder från slumpmässiga felkorrigerare till burst-felkorrigerare. Grundtanken bakom användningen av interfolierade koder är att blanda ihop symboler vid sändaren. Detta leder till randomisering av skurar av mottagna fel som är nära placerade och vi kan sedan tillämpa analysen för slumpmässig kanal. Sålunda är huvudfunktionen som utförs av interfolieraren vid sändaren att ändra ingångssymbolsekvensen. Vid mottagaren kommer deinterleavern att ändra den mottagna sekvensen för att få tillbaka den ursprungliga oförändrade sekvensen vid sändaren.

Burst felkorrigerande kapacitet för interleaver

Illustration av rad- och kolumnstor ordning

Teorem Om skurfelskorrigeringsförmågan hos någon kod är så är skurfelskorrigeringsförmågan hos dess -vägsinterfoliering

Bevis

Antag att vi har en kod som kan korrigera alla skurar med längden Interleaving kan ge oss en kod som kan korrigera alla skurar av längd för en given . Om vi ​​vill koda ett meddelande med en godtycklig längd med interfoliering, delar vi först upp det i block med längden . Vi skriver -posterna för varje block i en -matris med rad-major-ordning. Sedan kodar vi varje rad med koden Det vi får är en matris. Nu läses denna matris upp och sänds i kolumn-stor ordning. Tricket är att om det uppstår en skur med längden i det överförda ordet, så kommer varje rad att innehålla ungefär på varandra följande fel (mer specifikt , kommer varje rad att innehålla en skur med längden minst och högst ). Om och kod kan korrigera varje rad. Därför kan den interfolierade koden korrigera skuren med längden . Omvänt, om så kommer minst en rad att innehålla fler än på varandra följande fel, och koden kanske misslyckas med att korrigera dem. Därför är felkorrigeringsförmågan hos den interfolierade koden exakt BEC-effektiviteten för den interfolierade koden förblir densamma som den ursprungliga koden. Detta är sant eftersom:

Blockera interleaver

Bilden nedan visar en 4 x 3 interleaver.

Ett exempel på en blockinterleaver

Ovanstående interfolierare kallas en blockinterleaver . Här skrivs ingångssymbolerna sekventiellt i raderna och utgångssymbolerna erhålls genom att läsa kolumnerna sekventiellt. Detta är alltså i form av array. I allmänhet längden på kodordet.

Blockinterfolierarens kapacitet : För en blockinterleaver och burst av längd är den övre gränsen för antalet fel Detta är uppenbart från det faktum att vi läser utdatakolumnen och antalet rader är . Enligt satsen ovan för felkorrigeringskapacitet upp till är den maximala tillåtna skurlängden För skurlängd på kan avkodaren misslyckas.

Effektiviteten hos blockinterfolierare ( ): Den hittas genom att ta förhållandet mellan skurlängden där avkodaren kan misslyckas med interfolierarens minne. Således kan vi formulera som

Nackdelar med blockinterleaver: Som det framgår av figuren läses kolumnerna sekventiellt, mottagaren kan tolka en rad endast efter att den tagit emot ett fullständigt meddelande och inte före det. Dessutom kräver mottagaren en avsevärd mängd minne för att lagra de mottagna symbolerna och måste lagra hela meddelandet. Dessa faktorer ger alltså upphov till två nackdelar, den ena är latensen och den andra är lagringen (ganska stor mängd minne). Dessa nackdelar kan undvikas genom att använda den faltningsinterfolierare som beskrivs nedan.

Konvolutionell interfolierare

Cross interleaver är ett slags multiplexer-demultiplexersystem. I detta system används fördröjningslinjer för att gradvis öka längden. Fördröjningslinje är i grunden en elektronisk krets som används för att fördröja signalen med en viss tidslängd. Låt vara antalet fördröjningslinjer och vara antalet symboler som introduceras av varje fördröjningsrad. Således är separationen mellan konsekutiva ingångar = symboler. Låt längden på kodordet Således kommer varje symbol i inmatningskodordet att vara på en distinkt fördröjningslinje. Låt ett skurfel med längden inträffa. Eftersom separationen mellan på varandra följande symboler är antalet fel som den deinterfolierade utdatan kan innehålla Enligt satsen ovan, för felkorrigeringskapacitet upp till , är den maximala tillåtna skurlängden För skurlängd på avkodaren kan misslyckas.

Ett exempel på en faltningsinterfolierare
Ett exempel på en deinterleaver

Effektiviteten för korsinterfolierare ( ): Den hittas genom att ta förhållandet mellan skurlängden där avkodaren kan misslyckas med interfolierarens minne. I det här fallet kan interfolierarens minne beräknas som

Således kan vi formulera enligt följande:

Prestanda för korsinterfolierare: Såsom visas i ovanstående interfolierarfigur, är utmatningen ingenting annat än de diagonala symbolerna som genereras i slutet av varje fördröjningslinje. I det här fallet, när ingångsmultiplexomkopplaren slutför omkring halva omkopplingen, kan vi läsa första raden vid mottagaren. Således måste vi lagra maximalt cirka halva meddelandet vid mottagaren för att kunna läsa första raden. Detta minskar lagringsbehovet drastiskt med hälften. Eftersom bara ett halvt meddelande nu krävs för att läsa första raden, reduceras även latensen med hälften, vilket är en bra förbättring jämfört med blockinterfolieraren. Således delas det totala interfolierarminnet mellan sändare och mottagare.

Ansökningar

Kompakt disk

Utan felkorrigeringskoder skulle digitalt ljud inte vara tekniskt möjligt. Reed –Solomon-koderna kan korrigera en skadad symbol med ett enda bitfel lika enkelt som det kan korrigera en symbol med alla bitar fel. Detta gör RS-koderna särskilt lämpade för att korrigera skurfel. Den överlägset vanligaste tillämpningen av RS-koder är i cd-skivor. Förutom grundläggande felkorrigering som tillhandahålls av RS-koder, tillhandahålls skydd mot burst-fel på grund av repor på skivan av en korsinterleaver.

Det nuvarande digitala ljudsystemet för cd-skivor utvecklades av NV Philips i Nederländerna och Sony Corporation i Japan (avtal undertecknat 1979).

En kompaktskiva består av en 120 mm aluminiserad skiva belagd med en klar plastbeläggning, med spiralspår, cirka 5 km lång, som avsöks optiskt av en laser med våglängd ~0,8 μm, med en konstant hastighet av ~1,25 m/s. För att uppnå denna konstanta hastighet, varieras skivans rotation från ~8 varv/s under avsökning vid den inre delen av spåret till ~3,5 varv/s vid den yttre delen. Gropar och landområden är fördjupningarna (0,12 μm djupa) och platta segment som utgör binära data längs spåret (0,6 μm bredd).

CD-processen kan abstraheras som en sekvens av följande underprocesser:

  • Kanalkodning av signalkällan
  • Mekaniska delprocesser för att förbereda en masterskiva, producera användarskivor och känna av signalerna inbäddade på användarskivor under uppspelning – kanalen
  • Avkodning av signalerna som avkänns från användarskivor

Processen är föremål för både burst-fel och slumpmässiga fel. Burst-fel inkluderar de som beror på skivmaterial (defekter i aluminiumreflekterande film, dåligt reflektionsindex för transparent skivmaterial), skivproduktion (fel under skivformning och skivskärning etc.), skivhantering (repor - i allmänhet tunna, radiella och ortogonala till inspelningsriktning) och variationer i uppspelningsmekanismen. Slumpmässiga fel inkluderar de som beror på jitter av rekonstruerad signalvåg och interferens i signal. CIRC ( Cross-Interleaved Reed–Solomon code ) är grunden för feldetektering och korrigering i CD-processen. Den korrigerar felskurar upp till 3 500 bitar i sekvens (2,4 mm långa som ses på CD-ytan) och kompenserar för felskurar upp till 12 000 bitar (8,5 mm) som kan orsakas av mindre repor.

Kodning: Ljudvågor samplas och omvandlas till digital form av en A/D-omvandlare. Ljudvågen samplas för amplitud (vid 44,1 kHz eller 44 100 par, ett vardera för vänster och höger kanal i stereoljudet). Amplituden vid en instans tilldelas en binär sträng med längden 16. Således producerar varje sampel två binära vektorer från eller 4 byte data. Varje sekund av ljud som spelas in resulterar i 44 100 × 32 = 1 411 200 bitar (176 400 byte) data. Den samplade dataströmmen på 1,41 Mbit/s passerar genom felkorrigeringssystemet och omvandlas så småningom till en ström på 1,88 Mbit/s.

Ingången för kodaren består av ingångsramar var och en med 24 8-bitars symboler (12 16-bitars sampel från A/D-omvandlaren, 6 vardera från vänster och höger data (ljud) källor). En ram kan representeras av där och är bytes från vänster och höger kanal från det exemplet av ramen.

Inledningsvis permuteras byten för att bilda nya ramar representerade av där representerar -th vänster och höger sampel från ramen efter 2 mellanliggande ramar.

Därefter kodas dessa 24 meddelandesymboler med C2 (28,24,5) Reed–Solomon-kod som är en förkortad RS-kod över . Detta är tvåfelskorrigerande och har minsta avstånd 5. Detta lägger till 4 byte redundans, bildar en ny ram: . Det resulterande kodordet med 28 symboler skickas genom en (28.4) korsinterfolierare som leder till 28 interfolierade symboler. Dessa skickas sedan genom C1 (32,28,5) RS-kod, vilket resulterar i kodord med 32 kodade utsignaler. Ytterligare omgruppering av udda numrerade symboler i ett kodord med jämna numrerade symboler för nästa kodord görs för att bryta upp eventuella korta skurar som fortfarande kan finnas efter ovanstående 4-ramsfördröjningsinterfoliering. För varje 24 ingångssymbol kommer det alltså att finnas 32 utgående symboler som ger . Slutligen läggs en byte av kontroll- och displayinformation till. Var och en av de 33 byten konverteras sedan till 17 bitar genom EFM (åtta till fjorton modulering) och tillägg av 3 sammanslagna bitar. Därför resulterar ramen med sex sampel i 33 byte × 17 bitar (561 bitar) till vilka adderas 24 synkroniseringsbitar och 3 sammanslagna bitar, vilket ger totalt 588 bitar.

Avkodning: CD-spelaren (CIRC-avkodare) tar emot dataströmmen med 32 utdatasymboler. Denna ström passerar först genom avkodaren Dl. Det är upp till individuella designers av CD-system att besluta om avkodningsmetoder och optimera deras produktprestanda. Med minsta avstånd 5 D1, D2-avkodarna kan var och en korrigera en kombination av -fel och -raderingar så att . I de flesta avkodningslösningar är D1 utformad för att korrigera ett enda fel. Och vid mer än 1 fel, matar denna avkodare ut 28 raderingar. Avinterfolieraren i det efterföljande skedet fördelar dessa raderingar över 28 D2-kodord. Återigen i de flesta lösningar är D2 inställd på att endast hantera raderingar (en enklare och billigare lösning). Om fler än 4 raderingar skulle påträffas, matas 24 raderingar ut av D2. Därefter försöker ett feldöljande system att interpolera (från angränsande symboler) i händelse av okorrigerbara symboler, om inte ljud som motsvarar sådana felaktiga symboler dämpas.

Prestanda för CIRC: CIRC döljer långa bystfel genom enkel linjär interpolation. 2,5 mm spårlängd (4000 bitar) är den maximala fullständigt korrigerbara skurlängden. 7,7 mm spårlängd (12 300 bitar) är den maximala skurlängden som kan interpoleras. Samplingsinterpolationshastigheten är en var tionde timme vid Bit Error Rate (BER) och 1000 sampel per minut vid BER = Oupptäckbara felexempel (klick): mindre än ett var 750:e timme vid BER = och försumbar vid BER = .

Se även