Bowes-Chowdhury-Hokvingham kódy (BCH kódy) - v teorii kódování se jedná o širokou třídu cyklických kódů používaných k ochraně informací před chybami (viz Detekce a oprava chyb ). Liší se možností sestavení kódu s předem určenými korekčními vlastnostmi, konkrétně minimální kódovou vzdáleností. Speciálním případem BCH kódů je Reed-Solomonův kód .
BCH kód je cyklický kód , který může být dán polynomem generátoru . Pro jeho nalezení v případě BCH kódu je nutné předem určit délku kódu (nemůže být libovolná) a požadovanou minimální vzdálenost . Generující polynom můžete najít následujícím způsobem.
Nechť je primitivní prvek pole (tj. ), nechť , je prvek pole objednávky , . Pak normalizovaný polynom minimálního stupně nad polem, jehož kořeny jsou po sobě jdoucí mocniny prvku pro nějaké celé číslo (včetně 0 a 1), je generujícím polynomem BCH kódu nad polem o délce a minimální vzdálenosti .
Pojďme si vysvětlit, proč bude mít výsledný kód právě takové vlastnosti (délka kódu , minimální vzdálenost ). Jak ukazuje Sagalovich [1] , délka BCH kódu je skutečně rovna pořadí prvků if a rovna pořadí prvků if . Jelikož nás případ nezajímá (takový kód neumí chyby opravovat, pouze je detekovat), bude délka kódu rovna pořadí prvku , tedy rovna . Minimální vzdálenost může být větší, než když kořeny minimálních funkcí [2] prvků jsou prvky, které rozšiřují posloupnost, tedy prvky .
Počet kontrolních symbolů je roven stupni , počtu informačních symbolů , hodnota se nazývá konstruktivní vzdálenost BCH kódu. Jestliže , pak se kód nazývá primitivní , jinak - neprimitivní .
Stejně jako u cyklického kódu lze polynom kódu získat z informačního polynomu stupně nejvýše , vynásobením a :
Pro nalezení generujícího polynomu je nutné provést několik kroků [3] :
Let , požadovaná délka kódu a minimální vzdálenost . Vezměte — primitivní prvek pole a — čtyři po sobě jdoucí mocniny prvku . Patří do dvou cyklotomických tříd na poli , kterému odpovídají ireducibilní polynomy . Pak polynom
má prvky jako kořeny a je generujícím polynomem BCH kódu s parametry .
Dovolit , a být primitivní prvek . Pak
Každý prvek pole lze mapovat na 4 bity , takže jedno kódové slovo je ekvivalentní 60 = 15 × 4 bitům, takže sada 44 bitů je mapována na sadu 60 bitů. Dá se říci, že takový kód pracuje s útržky informací.
Pro kódování pomocí BCH kódů se používají stejné metody jako pro kódování s cyklickými kódy.
BCH kódy jsou cyklické kódy, takže se na ně vztahují všechny metody používané k dekódování cyklických kódů. Existují však mnohem lepší algoritmy vyvinuté speciálně pro BCH kódy [4] .
Hlavní myšlenkou při dekódování BCH kódů je použití prvků konečného pole k očíslování pozic kódového slova (nebo ekvivalentně v pořadí koeficientů přidruženého polynomu). Níže je takový výčet pro vektor odpovídající polynomu .
hodnoty | ||||
lokátory polohy |
Nechť je přijaté slovo spojeno s polynomem , kde chybový polynom je definován jako: , kde je počet chyb v přijatém slově. Sady a se nazývají chybové hodnoty a lokátory chyb , kde , a .
Syndromy jsou definovány jako hodnoty přijatého polynomu na nulách polynomu generujícího kódu:
kde .
Abychom našli sadu lokátorů chyb, zavedeme polynom lokátoru chyb
jejichž kořeny se rovnají převráceným hodnotám lokátorů chyb. Pak platí následující vztah mezi koeficienty polynomu lokátoru chyb a syndromy [5] :
Pro řešení této soustavy rovnic s ohledem na koeficienty polynomu lokátoru chyb ( klíčová soustava rovnic ) jsou známy následující metody.
Tento algoritmus je nejlépe vidět jako iterativní proces konstrukce minimálního zpětnovazebního (posunového) registru generujícího známou sekvenci syndromů . Jeho skutečným cílem je sestrojit polynom nejmenšího stupně, který splňuje rovnici
Řešení této rovnice je ekvivalentní podmínce
Iterační proces konstrukce takového polynomu je Berlekamp-Massey Algorithm .
Tato metoda je založena na známém Euklidově algoritmu pro nalezení největšího společného dělitele dvou čísel (gcd), pouze v tomto případě nehledáme gcd dvou čísel, ale dvou polynomů. Označme polynom chybových hodnot jako , kde syndromický polynom je roven . Ze soustavy rovnic vyplývá, že . Problém se v podstatě scvrkává na určení , který splňuje poslední rovnici a zároveň stupeň není vyšší . Ve skutečnosti takové řešení poskytne rozšířený Euklidův algoritmus aplikovaný na polynomy a , kde . Jestliže v th kroku rozšířený euklidovský algoritmus vytvoří řešení takové, že , pak , a . V tomto případě se nalezený polynom dále nepodílí na dekódování (hledá se pouze jako pomocný). Tímto způsobem bude nalezen polynom lokátoru chyb .
Nechť BCH kód přes pole délky a s konstruktivní vzdáleností je dán generujícím polynomem , který má mezi kořeny prvky - celé číslo (například 0 nebo 1). Pak má každé kódové slovo vlastnost, že . Přijaté slovo lze zapsat jako , kde je chybový polynom. Nechat chyby se vyskytují na pozicích ( je maximální počet opravitelných chyb), takže , a jsou velikosti chyb.
Syndrom přijatého slova můžete sestavit :
Úkolem je zjistit počet chyb , jejich polohu a význam pro známé syndromy .
Pro začátek předpokládejme, že se přesně rovná . Syndromy zapisujeme ve formě soustavy nelineárních rovnic v explicitní podobě:
Označte lokátorem -té chyby a — velikostí chyby, . V tomto případě jsou všechny různé, protože pořadí prvku je , a proto, když je známo , může být definováno jako .
Pojďme sestavit polynom lokátorů chyb :
Kořeny tohoto polynomu jsou prvky inverzní k lokátorům chyb. Vynásobte obě strany tohoto polynomu číslem . Výsledná rovnost bude platná pro :
Pokud zde dosadíme , dostaneme rovnost , která platí pro každého a pro všechny :
Pro každý tedy můžete napsat svou vlastní rovnost. Pokud se sečtou , dostaneme rovnost, která platí pro každý z nich :
Protože (to znamená, že se mění ve stejných mezích jako dříve), je soustava rovnic pro syndromy transformována na soustavu lineárních rovnic :
nebo ve formě matrice,
kde
Pokud je počet chyb skutečně roven , pak je tento systém řešitelný a lze najít hodnoty koeficientů . Pokud je číslo , pak se determinant matice bude rovnat . To je známka toho, že počet chyb je menší . Proto je nutné sestavit systém za předpokladu, že počet chyb se rovná , vypočítat determinant nové matice atd., dokud nezjistíme skutečný počet chyb.
Po vyřešení klíčové soustavy rovnic jsou získány koeficienty polynomu lokátoru chyb. Jeho kořeny (prvky inverzní k lokátorům chyb) lze najít jednoduchým opakováním všech prvků pole . K nim najděte prvky, které jsou inverzní k násobení - to jsou lokátory chyb . Tento proces lze snadno implementovat do hardwaru.
Pomocí lokátorů můžete najít chybové pozice ( ) a chybové hodnoty ze systému pro syndromy přijetím . Dekódování dokončeno.