Bowes-Chowdhury-Hokvingham-koodit (BCH-koodit) - koodausteoriassa tämä on laaja luokka syklisiä koodeja , joita käytetään suojaamaan tietoja virheiltä (katso Virheiden havaitseminen ja korjaaminen ). Se eroaa mahdollisuudesta rakentaa koodi, jolla on ennalta määrätyt korjaavat ominaisuudet, nimittäin minimikoodietäisyys. BCH-koodien erikoistapaus on Reed-Solomon-koodi .
BCH - koodi on syklinen koodi , joka voidaan antaa generaattoripolynomilla . Sen löytämiseksi BCH-koodin tapauksessa on tarpeen määrittää etukäteen koodin pituus (se ei voi olla mielivaltainen) ja vaadittava vähimmäisetäisyys . Voit löytää generoivan polynomin seuraavalla tavalla.
Olkoon kentän primitiivinen elementti ( eli ), olkoon , järjestyskentän elementti , . Tällöin normalisoitu polynomi , jonka vähimmäisaste on kentässä, jonka juuret ovat elementin peräkkäisiä potenssit jollekin kokonaisluvulle (mukaan lukien 0 ja 1), on generoiva BCH-koodin polynomi kentällä , jonka pituus ja minimietäisyys on .
Selvitetään, miksi tuloksena olevalla koodilla on juuri tällaiset ominaisuudet (koodin pituus , minimietäisyys ). Todellakin, kuten Sagalovich [1] osoittaa, BCH-koodin pituus on yhtä suuri kuin elementtijärjestys , jos , ja yhtä suuri kuin elementtijärjestys, jos . Koska emme ole kiinnostuneita tapauksesta (sellainen koodi ei voi korjata virheitä, vain havaita ne), koodin pituus on yhtä suuri kuin elementin järjestys, eli yhtä suuri kuin . Minimietäisyys voi olla suurempi kuin silloin , kun elementtien minimifunktioiden [2] juuret ovat sarjaa laajentavia elementtejä eli alkioita .
Tarkistussymbolien määrä on yhtä suuri kuin aste , informaatiosymbolien lukumäärä , arvoa kutsutaan BCH-koodin rakentavaksi etäisyydeksi . Jos , niin koodia kutsutaan primitiiviksi , muuten - ei- primitiiviksi .
Kuten sykliselle koodille, koodipolynomi voidaan saada korkeintaan asteisen tietopolynomista kertomalla ja :
Generoivan polynomin löytämiseksi on suoritettava useita vaiheita [3] :
Olkoon , vaadittu koodin pituus ja minimietäisyys . Otetaan — kentän primitiivinen elementti ja — elementin neljä peräkkäistä potenssia . Ne kuuluvat kahteen syklotomiseen luokkaan sen kentän yläpuolella , jota redusoitumattomat polynomit ja vastaavat . Sitten polynomi
sisältää elementtejä juurina ja se on BCH-koodin generoiva polynomi parametrien kanssa .
Antaa , ja olla primitiivinen osa . Sitten
Jokainen kentän elementti voidaan kuvata 4- bittiseksi , joten yksi koodisana vastaa 60 = 15 × 4 bittiä, joten 44 bitin joukko kartoitetaan 60 bitin joukkoon. Voimme sanoa, että tällainen koodi toimii tiedon nappuloiden kanssa.
BCH-koodeilla koodattaessa käytetään samoja menetelmiä kuin koodauksessa syklisillä koodeilla.
BCH-koodit ovat syklisiä koodeja, joten kaikki syklisten koodien dekoodaukseen käytetyt menetelmät koskevat niitä. On kuitenkin olemassa paljon parempia algoritmeja , jotka on kehitetty erityisesti BCH-koodeille [4] .
Pääideana BCH-koodien dekoodauksessa on käyttää viimeisen kentän elementtejä koodisanan paikkojen numeroimiseen (tai vastaavasti siihen liittyvän polynomin kertoimien järjestyksessä). Alla on tällainen luettelo polynomia vastaavalle vektorille .
arvot | ||||
sijainnin paikantimet |
Olkoon vastaanotettu sana yhdistetty polynomiin , jossa virhepolynomi määritellään seuraavasti: , jossa on vastaanotetun sanan virheiden määrä. Joukkoja ja kutsutaan vastaavasti virhearvoiksi ja virheen paikantimiksi , missä , ja .
Oireet määritellään vastaanotetun polynomin arvoina generoivan koodipolynomin nollapisteissä:
missä .
Virheenpaikantimien joukon löytämiseksi otamme käyttöön virheenpaikannuspolynomin
joiden juuret ovat yhtä suuret kuin virheenpaikantimien käänteiset. Tällöin virheenpaikannuspolynomin ja oireyhtymien kertoimien välillä pätee seuraava suhde [5] :
Seuraavat menetelmät tunnetaan tämän yhtälöjärjestelmän ratkaisemiseksi suhteessa virheenpaikannuspolynomin kertoimiin ( avainyhtälöjärjestelmä ).
Tämä algoritmi on parasta nähdä iteratiivisena prosessina, jossa muodostetaan minimipalauterekisteri (siirtorekisteri), joka tuottaa tunnetun oireyhtymien sarjan . Sen varsinainen tavoite on rakentaa pienimmän asteisen polynomi, joka täyttää yhtälön
Tämän yhtälön ratkaisu vastaa ehtoa
Iteratiivinen prosessi tällaisen polynomin muodostamiseksi on Berlekamp-Massey-algoritmi .
Tämä menetelmä perustuu tunnettuun Euklidesin algoritmiin kahden luvun suurimman yhteisen jakajan (gcd) löytämiseksi, vain tässä tapauksessa ei etsitä gcd:tä kahdesta luvusta, vaan kahdesta polynomista. Merkitään virhearvojen polynomi muodossa , jossa syndrominen polynomi on yhtä suuri kuin . Yhtälöjärjestelmästä seuraa, että . Ongelma tiivistyy pohjimmiltaan sen määrittämiseen, mikä täyttää viimeisen yhtälön, ja samalla aste ei ole korkeampi . Itse asiassa tällainen ratkaisu antaa laajennetun Euclid-algoritmin, jota sovelletaan polynomeihin ja , missä . Jos th vaiheessa laajennettu euklidinen algoritmi tuottaa ratkaisun siten, että , niin , ja . Tässä tapauksessa löydetty polynomi ei enää osallistu dekoodaukseen (se haetaan vain apu). Tällä tavalla virheenpaikannuspolynomi löydetään .
Olkoon BCH-koodi pituuskentän yli ja konstruktiivisella etäisyydellä generoiva polynomi , jonka juurielementtien joukossa on kokonaisluku (esim. 0 tai 1). Sitten jokaisella koodisanalla on ominaisuus, joka . Vastaanotettu sana voidaan kirjoittaa muodossa , missä on virhepolynomi. Olkoon virheitä paikoissa ( on korjattavien virheiden enimmäismäärä), joten , ja ovat virheiden suuruudet.
Voit muodostaa hyväksytyn sanan syndroman :
Tehtävänä on löytää virheiden lukumäärä , niiden sijainti ja merkitys tunnetuille oireyhtymille .
Oletetaan aluksi, että se on täsmälleen yhtä suuri . Kirjoitamme oireyhtymät epälineaaristen yhtälöiden järjestelmän muodossa eksplisiittisessä muodossa:
Merkitään -: nnen virheen paikantimella ja - virheen suuruudella , . Tässä tapauksessa kaikki ovat erilaisia, koska elementin järjestys on , ja siksi, kun se tunnetaan , se voidaan määritellä muodossa .
Muodostetaan polynomi virheenpaikantimista :
Tämän polynomin juuret ovat elementit, jotka ovat käänteisiä virheen paikantimille. Kerro tämän polynomin molemmat puolet . Tuloksena oleva tasa-arvo on voimassa :
Jos korvaamme tämän, saamme tasa-arvon, joka on voimassa jokaiselle ja kaikille :
Siten jokaiselle voit kirjoittaa oman tasa-arvosi. Jos ne lasketaan yhteen , niin saadaan tasa-arvo, joka on voimassa jokaiselle :
Koska (eli se muuttuu samoissa rajoissa kuin ennen), oireyhtymien yhtälöjärjestelmä muutetaan lineaaristen yhtälöiden järjestelmäksi :
tai matriisimuodossa
missä
Jos virheiden määrä on todellakin yhtä suuri kuin , niin tämä järjestelmä on ratkaistavissa, ja kertoimien arvot voidaan löytää . Jos luku on , niin matriisin determinantti on yhtä suuri kuin . Tämä on merkki siitä, että virheiden määrä on pienempi . Siksi on välttämätöntä muodostaa järjestelmä olettaen, että virheiden lukumäärä on yhtä suuri , laskea uuden matriisin determinantti jne. kunnes saadaan selville virheiden todellinen lukumäärä.
Kun avainyhtälöjärjestelmä on ratkaistu, saadaan virheenpaikannuspolynomin kertoimet. Sen juuret (virheen paikantimille käänteiset elementit) voidaan löytää yksinkertaisesti iteroimalla kaikki kentän elementit . Etsi heille elementtejä, jotka ovat käänteisiä kertolaskulle - nämä ovat virheen paikantajia . Tämä prosessi on helppo toteuttaa laitteistossa.
Paikantimien avulla löydät oireyhtymien järjestelmästä virhepaikat ( ) ja virhearvot hyväksymällä . Dekoodaus valmis.