Bowes-Chowdhury-Hokvingham kódok (BCH kódok) - a kódoláselméletben ez a ciklikus kódok széles osztálya, amelyet az információk hibák elleni védelmére használnak (lásd: Hibaészlelés és -javítás ). Ez abban különbözik, hogy előre meghatározott korrekciós tulajdonságokkal rendelkező kódot lehet létrehozni, nevezetesen a minimális kódtávolságot. A BCH kódok speciális esete a Reed-Solomon kód .
A BCH kód egy ciklikus kód , amelyet generátorpolinom adhat meg . BCH kód esetén annak megtalálásához előre meg kell határozni a kód hosszát (nem lehet tetszőleges) és a szükséges minimális távolságot . A generáló polinomot a következő módon találhatja meg.
Legyen a mező primitív eleme (azaz ), legyen , a , sorrendi mező eleme . Ekkor egy olyan mező feletti minimális fokú normalizált polinom , amelynek gyökei egy elem egymást követő hatványai valamilyen egész számra (beleértve a 0-t és az 1-et is), egy BCH-kód generáló polinomja egy hosszú és minimális távolságú mező felett .
Magyarázzuk meg, miért lesz az így kapott kód pontosan ilyen jellemzőkkel (kódhossz , minimális távolság ). Valójában, amint azt Sagalovich [1] mutatja , a BCH kód hossza megegyezik az elemsorrenddel , ha , és egyenlő az elemsorrenddel , ha . Mivel minket az eset nem érdekel (egy ilyen kód a hibákat nem tudja kijavítani, csak észlelni), a kód hossza megegyezik az elem sorrendjével , azaz egyenlő -val . A minimális távolság nagyobb is lehet, mint amikor az elemek minimális függvényeinek [2] gyökerei a sorozatot bővítő elemek, vagyis az elemek .
Az ellenőrző szimbólumok száma megegyezik a mértékével , az információs szimbólumok számával , az értéket a BCH kód konstruktív távolságának nevezzük . Ha , akkor a kódot primitívnek , egyébként - nem primitívnek nevezzük .
Csakúgy, mint a ciklikus kód esetében, a kódpolinomot legfeljebb a fokszámú információs polinomból kaphatjuk meg , és szorozzuk meg :
A generáló polinom megtalálásához több lépést kell végrehajtani [3] :
Legyen , a szükséges kódhossz és a minimális távolság . Vegyünk — a mező egy primitív elemét , és — az elem négy egymást követő hatványát . Két ciklotómikus osztályba tartoznak azon a területen , amelyeknek az irreducibilis polinomok és megfelelnek . Aztán a polinom
elemei gyökként vannak , és a BCH kód generáló polinomja paraméterekkel .
Legyen , és a primitív eleme . Akkor
A mező minden eleme leképezhető 4 bitesre , tehát egy kódszó 60 = 15 × 4 bitnek felel meg, tehát egy 44 bites halmaz egy 60 bites halmazra van leképezve. Azt mondhatjuk, hogy egy ilyen kód információcsomókkal működik .
A BCH kódokkal történő kódolásnál ugyanazokat a módszereket alkalmazzuk, mint a ciklikus kódokkal történő kódolásnál.
A BCH kódok ciklikus kódok, így a ciklikus kódok dekódolására használt összes módszer vonatkozik rájuk. Vannak azonban sokkal jobb , kifejezetten BCH kódokhoz kifejlesztett algoritmusok [4] .
A BCH kódok dekódolásának fő gondolata az, hogy a végső mező elemeit használjuk a kódszó pozícióinak számozására (vagy ezzel egyenértékűen a kapcsolódó polinom együtthatóinak sorrendjében). Az alábbiakban egy ilyen felsorolás látható a polinomnak megfelelő vektorhoz .
értékeket | ||||
helyzetmeghatározók |
A kapott szó legyen társítva a polinomhoz , ahol a hibapolinom a következőképpen definiálható: , ahol a kapott szóban lévő hibák száma. A és halmazokat hibaértékeknek és hibakeresőknek nevezzük , ahol , és .
A szindrómákat úgy definiáljuk, mint a kapott polinom értékeit a generáló kódpolinom nulláin:
ahol .
A hibakeresők halmazának megtalálásához bevezetjük a hibakereső polinomot
amelynek gyöke megegyezik a hibalokátorok reciprokaival. Ekkor a következő összefüggés érvényes a hibalokátor polinom és a szindrómák együtthatói között [5] :
A következő módszerek ismertek ennek az egyenletrendszernek a megoldására a hibakereső polinom ( kulcs egyenletrendszer ) együtthatói tekintetében.
Ezt az algoritmust a legjobban úgy tekinthetjük, mint egy iteratív folyamatot egy minimális visszacsatolási (eltolódási) regiszter létrehozására, amely egy ismert szindrómasorozatot generál . Valójában az a célja, hogy egy olyan legkisebb fokú polinomot hozzon létre, amely kielégíti az egyenletet
Ennek az egyenletnek a megoldása ekvivalens a feltétellel
Egy ilyen polinom létrehozásának iteratív folyamata a Berlekamp-Massey algoritmus .
Ez a módszer a jól ismert euklidészi algoritmuson alapul, amely két szám legnagyobb közös osztóját (gcd) keresi, csak ebben az esetben nem két szám, hanem két polinom gcd-jét keressük. Jelöljük a hibaértékek polinomját így , ahol a szindrómapolinom egyenlő -val . Az egyenletrendszerből az következik, hogy . A probléma lényegében annak meghatározásában rejlik, hogy melyik teljesíti az utolsó egyenletet, ugyanakkor a fok nem magasabb . Valójában egy ilyen megoldás megadja a polinomokra alkalmazott kiterjesztett Euklidész algoritmust és , ahol . Ha a th lépésben a kiterjesztett euklideszi algoritmus olyan megoldást ad , hogy , akkor , és . Ebben az esetben a talált polinom a továbbiakban nem vesz részt a dekódolásban (csak segédanyagként keresi). Ily módon a hibakereső polinom megtalálható .
Adja meg a BCH kódot a hosszmezőn és konstruktív távolsággal egy generáló polinom , amelynek a gyökei között van egy egész szám (például 0 vagy 1). Ezután minden kódszó rendelkezik azzal a tulajdonsággal, hogy . A kapott szót felírhatjuk így , ahol a hibapolinom. Hagyja , hogy hibák forduljanak elő a pozíciókban ( a javítható hibák maximális száma), tehát , és a hibák nagysága.
Az elfogadott szó th szindrómáját összeállíthatja :
A feladat az ismert szindrómáknál előforduló hibák számának , helyzetének és jelentésének megtalálása .
Kezdésként tegyük fel, hogy pontosan egyenlő . A szindrómákat explicit formában nemlineáris egyenletrendszer formájában írjuk fel:
Jelölje a -edik hiba helymeghatározójával , és - a hiba nagyságával , . Ebben az esetben mindegyik más, mivel az elem sorrendje , ezért ha ismert , akkor definiálható így .
Készítsünk egy polinomot hibakeresőkből :
Ennek a polinomnak a gyökerei a hibalokátorokkal inverz elemek. Szorozzuk meg ennek a polinomnak mindkét oldalát -vel . Az így kapott egyenlőség érvényes lesz :
Ha ezt behelyettesítjük , akkor egy mindenre érvényes egyenlőséget kapunk :
Így mindegyikhez beírhatja a saját egyenlőségét. Ha ezeket összeadjuk , akkor mindegyikre érvényes egyenlőséget kapunk :
Mivel (azaz ugyanazon határokon belül változik, mint korábban), a szindrómák egyenletrendszere lineáris egyenletrendszerré alakul :
vagy mátrix formában,
ahol
Ha a hibák száma valóban egyenlő -vel, akkor ez a rendszer megoldható, és meg lehet találni az együtthatók értékeit . Ha a szám , akkor a mátrix determinánsa egyenlő lesz . Ez annak a jele, hogy kevesebb a hibák száma . Ezért egy rendszert kell összeállítani, feltételezve, hogy a hibák száma egyenlő -el , ki kell számítani az új mátrix determinánsát stb., amíg meg nem állapítjuk a hibák valódi számát.
A kulcsegyenletrendszer megoldása után megkapjuk a hibalokátor polinom együtthatóit. Gyökerei (a hibakeresővel inverz elemek) egyszerűen megkereshetők a mező összes elemén keresztül . Számukra keressen olyan elemeket, amelyek inverzek a szorzással – ezek a hibakeresők . Ez a folyamat könnyen megvalósítható hardverben.
A helymeghatározók segítségével megtalálhatja a szindrómák rendszeréből a hibapozíciókat ( ) és a hibaértékeket, elfogadva . A dekódolás befejeződött.