Код за исправљање грешака

У рачунарству, телекомуникацијама, теорији информација и теорији кодирања, код за исправљање грешака, или код кориговања грешака (енгл. error correcting code - ECC) користи се за контролу грешака у подацима преко непоузданих или бучних комуникационих канала.[1][2] Централна идеја је да пошиљалац кодира поруку излишним информацијама у облику ЕЦЦ-а. Прекомерност омогућава примаоцу да открије ограничени број грешака које се могу појавити било где у поруци и често да их исправи без поновног преноса. Амерички математичар Ричард Хаминг је био пионир овог поља током 1940-их и изумео је први код за исправљање грешака 1950: Хемингов (7,4) код.[2]

ЕЦЦ се разликује од откривања грешака јер се грешке које се нађу могу исправити, а не једноставно открити. Предност је у томе што систем који користи ЕЦЦ не захтева реверзни канал да захтева поновни пренос података када дође до грешке. Лоша страна је што се фиксни траснмисиони трошкови додају у поруку, што захтева већу пропусну ширину канала унапред. ЕЦЦ се стога примењује у ситуацијама када су поновни преноси скупи или немогући, као што су једносмерне комуникационе везе и приликом преноса на више пријемника у мултикасту. Од оваквог приступа такође имају користи и везе са дугим кашњењем; у случају да сателит кружи око Урана, поновни пренос због грешака може створити кашњење од пет сати.

Корекција грешака унапред уреди

У телекомуникацијама, теорији информација и теорији кодирања, исправљање грешака унапред (енгл. forward error correction - FEC) или кодирање канала[3][4] је техника која се користи за контролу грешака у преносу података преко непоузданих или бучних комуникационих канала. Централна идеја је да пошиљалац кодира поруку на редундантан начин, најчешће користећи ЕЦЦ.

Излишност омогућава примаоцу да открије ограничени број грешака које се могу појавити било где у поруци и често да их исправи без поновног преноса. ФЕЦ даје примаоцу могућност исправљања грешака без потребе за реверзним каналом да би се захтевао поновни пренос података, али по цени фиксног, већег пропусног опсега унапред. ФЕЦ се стога примењује у ситуацијама када су поновни преноси скупи или немогући, као што су једносмерне комуникационе везе и приликом преноса на више пријемника у мултикасту. ФЕЦ информације се обично додају у уређаје за масовно складиштење (магнетни, оптички и ССД/флеш) како би се омогућио опоравак оштећених података, широко се користи у модемима, користи се у системима у којима је примарна меморија ЕЦЦ меморија и у ситуацијама емитовања где пријемник нема могућност да захтева поновни пренос или где би то изазвало значајно кашњење. На пример, у случају да сателит кружи око Урана, поновни пренос због грешака у декодирању може створити кашњење од најмање 5 сати.

ФЕЦ обрада у пријемнику може се применити на дигитални ток бита или у демодулацији дигитално модулисаног носача. За ово друго, ФЕЦ је саставни део почетне аналогно-дигиталне конверзије у пријемнику. Витерби декодер примењује алгоритам меке одлуке за демодулацију дигиталних података из аналогног сигнала оштећеног буком. Многи ФЕЦ кодери такође могу да генеришу сигнал стопе грешке у битовима (енгл. bit-error rate - BER) који се може користити као повратна информација за фино подешавање аналогне пријемне електронике.

Максимални удео грешака или недостајућих битова који се могу исправити одређен је дизајном ЕЦЦ-а, тако да су различити кодови за исправљање грешака унапред погодни за различите услове. Генерално, јачи код индукује већу сувишност коју треба пренети користећи расположиву пропусну ширину, што смањује ефективну брзину протока, истовремено побољшавајући примљени ефективни однос сигнала и шума. Теорема кодирања бучног канала Клода Шенона одговара на питање колико је пропусног опсега преостало за комуникацију података, при чему се користи најефикаснији код који вероватноћу грешке у декодирању своди на нулу. Ово успоставља границе теоретске максималне брзине преноса информација канала са одређеним основним нивоом шума. Његов доказ није конструктиван, и стога не даје увид у то како да се изгради код за постизање капацитета. Међутим, након више година истраживања, неки напредни ФЕЦ системи попут поларног кода[4] постижу капацитет Шеноновог канала под хипотезом о бесконачној дужини оквира.

Начин рада уреди

ЕЦЦ се остварује додавањем излишности у трансмитоване информације користећи алгоритам. Излишни бит може бити сложена функција многих оригиналних информационих битова. Оригиналне информације могу се или не морају појавити дословно у кодираном излазу; кодови који укључују немодификовани улаз у излаз су систематски, док су они који то нису несистематски.

Поједностављени пример ЕЦЦ-а је пренос сваког бита података 3 пута, што је познато као (3,1) код понављања. Кроз бучни канал, пријемник може видети 8 верзија излаза, погледајте доњу табелу.

Триплет примљен Протумачен као
000 0 (без грешке)
001 0
010 0
100 0
111 1 (без грешке)
110 1
101 1
011 1

Ово омогућава исправљање грешке у било ком од три узорка „већинским гласањем” или „демократским гласањем”. Способност исправљања овог ЕЦЦ је:

  • До 1 бита триплета при грешки, или
  • До 2 бита из триплета изостављена (случајеви нису приказани у табели).

Иако је једноставан за примену и широко се користи, ова трострука модуларна излишност је релативно неефикасан ЕЦЦ. Бољи ЕЦЦ кодови обично испитују последњих неколико десетина или чак последњих неколико стотина претходно примљених битова како би се утврдило како да се декодира тренутни мали сет битова (обично у групама од 2 до 8 битова).

Референце уреди

  1. ^ Гловер, Неал; Дудлеy, Трент (1990). Працтицал Еррор Цоррецтион Десигн Фор Енгинеерс (Ревисион 1.1, 2нд изд.). ЦО, УСА: Циррус Логиц. ИСБН 0-927239-00-0. ISBN 978-0-927239-00-4. 
  2. ^ а б Hamming, R. W. (април 1950). „Error Detecting and Error Correcting Codes”. Bell System Technical Journal. USA: AT&T. 29 (2): 147—160. doi:10.1002/j.1538-7305.1950.tb00463.x. 
  3. ^ Charles Wang; Dean Sklar; Diana Johnson (2001). „Forward Error-Correction Coding”. Crosslink. The Aerospace Corporation. 3 (1). Архивирано из оригинала 25. 2. 2012. г. Приступљено 5. 3. 2006. „How Forward Error-Correcting Codes Work 
  4. ^ а б Maunder, Robert (2016). „Overview of Channel Coding”. 

Literatura уреди

Спољашње везе уреди