Hamming CodeVirheiden havaitseminen ja korjaaminen esimerkkien avulla

Mikรค on virhe?

TransmitSyรถtetty data voi vioittua tiedonsiirron aikana. Ulkoinen kohina tai muut fyysiset viat voivat vaikuttaa siihen. Tรคllaisessa tilanteessa syรถttรถdata ei voi olla sama kuin lรคhtรถdata. Tรคtรค epรคsuhtaa kutsutaan virheeksi.

Tietovirheet voivat johtaa tรคrkeiden tai suojattujen tietojen menetykseen. Suurin osa tiedonsiirrosta digitaalisissa jรคrjestelmissรค tapahtuu "bittisiirron" muodossa. Pienikin muutos voi vaikuttaa koko jรคrjestelmรคn suorituskykyyn. Jos datasekvenssissรค 1 muutetaan 0:ksi tai 0 muutetaan 1:ksi, sitรค kutsutaan "bittivirheeksi".

Virhetyypit

Tiedonsiirrossa lรคhettรคjรคltรค vastaanottajalle esiintyy pรครคasiassa kolmenlaisia โ€‹โ€‹bittivirheitรค.

  • Yhden bitin virheitรค
  • Useita bittivirheitรค
  • Pursotusvirheet

Virhetyypit

Yhden bitin virheet

Yhden bitin muutos koko datasekvenssissรค tunnetaan nimellรค "Yksi bittivirhe". Yksibittisten virheiden esiintyminen ei kuitenkaan ole niin yleistรค. Lisรคksi tรคmรค virhe ilmenee vain rinnakkaisviestintรคjรคrjestelmรคssรค, koska dataa siirretรครคn bittikohtaisesti yhdellรค rivillรค. Siksi on enemmรคn mahdollisuuksia, ettรค yksittรคinen rivi voi olla meluisa.

Useita bittivirheitรค

Jos datasekvenssissรค tapahtuu muutos kahdessa tai useammassa bitissรค datasekvenssissรค transmitvastaanottimelle, sitรค kutsutaan "monibittiseksi virheeksi".

Tรคmรคn tyyppisiรค virheitรค esiintyy useimmiten sekรค sarja- ettรค rinnakkaistyyppisissรค tietoliikenneverkoissa.

Pursotusvirheet

Bittijoukon muutosta datasekvenssissรค kutsutaan "purskevirheeksi". Tรคmรคn tyyppinen datavirhe lasketaan ensimmรคisen bitin muutoksesta viimeiseen bitin muutokseen.

Mitรค on virheiden havaitseminen ja korjaaminen?

Digitaalisessa viestintรคjรคrjestelmรคssรค virhe siirtyy viestintรคjรคrjestelmรคstรค toiseen. Jos nรคitรค virheitรค ei havaita ja korjata, tiedot menetetรครคn. Tehokas viestintรค edellyttรครค jรคrjestelmรคtietojen siirtoa suurella tarkkuudella. Tรคmรค tehdรครคn tunnistamalla ensin virheet ja korjaamalla ne.

Virheiden havaitseminen on menetelmรค, jolla havaitaan datassa olevia virheitรค transmitted jostakin transmitvastaanottajalle tietoliikennejรคrjestelmรคssรค.

Tรคssรค voit kรคyttรครค redundanssikoodeja nรคiden virheiden lรถytรคmiseen lisรครคmรคllรค tietoja, kun ne ovat transmitlรคhdekoodista. Nรคitรค koodeja kutsutaan virheenilmaisukoodeiksi.

Kolmen tyyppisiรค virheentunnistuskoodeja ovat:

  • Pariteetin tarkistus
  • Cyclic Redundancy Check (CRC)
  • Pituussuuntainen redundanssitarkistus (LRC)

Pariteetin tarkistus

  • Se tunnetaan myรถs pariteettitarkistuksena.
  • Siinรค on kustannustehokas mekanismi virheiden havaitsemiseen.
  • Tรคssรค tekniikassa redundanttibitti tunnetaan pariteettibittinรค. Se on liitetty jokaiselle tietoyksikรถlle. Yksikรถn ykkรถsten kokonaismรครคrรคn tulee olla parillinen, mikรค tunnetaan pariteettibittinรค.

Pituussuuntainen redundanssin tarkistus

Tรคssรค virheentunnistustekniikassa bittilohko jรคrjestetรครคn taulukkomuotoon. LRC-menetelmรค auttaa sinua laskemaan pariteettibitin jokaiselle sarakkeelle. Tรคmรคn pariteetin joukko lรคhetetรครคn myรถs alkuperรคisten tietojen mukana. Pariteettilohko auttaa sinua tarkistamaan redundanssin.

Syklinen redundanssitarkistus

Cyclic Redundancy Check on redundanttien sarja, joka on liitettรคvรค yksikรถn pรครคhรคn. Tรคstรค syystรค tuloksena olevasta datayksikรถstรค tulee tulla jaollinen toisella, ennalta mรครคrรคtyllรค binรครคriluvulla.

Kohteessa saapuvat tiedot on jaettava samalla luvulla. Jos jรครคnnรถstรค ei ole, tietoyksikรถn oletetaan olevan oikea ja se hyvรคksytรครคn. Muussa tapauksessa se osoittaa, ettรค tietoyksikkรถ on vaurioitunut lรคhetyksessรค, ja siksi se on hylรคttรคvรค.

Mikรค on Hamming-koodi?

Hamming-koodi on liner-koodi, joka on hyรถdyllinen virheiden havaitsemiseen jopa kahteen vรคlittรถmรครคn bittivirheeseen. Se kykenee yksibittisiin virheisiin.

Hamming-koodissa lรคhde koodaa viestin lisรครคmรคllรค viestiin redundantteja bittejรค. Nรคmรค redundantit bitit lisรคtรครคn ja generoidaan enimmรคkseen viestin tiettyihin kohtiin virheiden havaitsemis- ja korjausprosessin suorittamiseksi.

Hamming-koodin historia

  • Hamming-koodi on RWHammingin rakentama tekniikka virheiden havaitsemiseksi.
  • Hamming-koodia tulisi soveltaa minkรค tahansa pituisiin tietoyksikรถihin, ja se kรคyttรครค datan ja redundanssibittien vรคlistรค suhdetta.
  • Hรคn tyรถskenteli virheenkorjausmenetelmรคn ongelman parissa ja kehitti yhรค tehokkaamman joukon algoritmeja nimeltรค Hamming-koodi.
  • Vuonna 1950 hรคn julkaisi Hammingin Code, jota kรคytetรครคn nykyรครคn laajalti sovelluksissa, kuten ECC-muistissa.

Hamming-koodin soveltaminen

Tรคssรค on joitain yleisiรค Hamming-koodin kรคytรถn sovelluksia:

  • satelliitit
  • Tietokoneen muisti
  • modeemit
  • PlasmaCAM
  • Avaa liittimet
  • Suojavaijeri
  • Sulautettu prosessori

Hamming-koodin edut

  • Hamming-koodimenetelmรค on tehokas verkoissa, joissa datavirrat annetaan yksibittisille virheille.
  • Hamming-koodi ei ainoastaan โ€‹โ€‹tunnista bittivirhettรค, vaan myรถs auttaa sinua sisentรคmรครคn bitin sisรคltรคvรคn virheen, jotta se voidaan korjata.
  • Hamming-koodien helppokรคyttรถisyys tekee niistรค parhaiten soveltuvia kรคytettรคvรคksi tietokoneen muistissa ja yhden virheen korjauksessa.

Hamming-koodin haitat

  • Yksibittinen virheentunnistus- ja korjauskoodi. Kuitenkin, jos useat bitit ovat perusteltuja virheitรค, tuloksena voi olla toinen bitti, joka pitรคisi olla oikein muutettava. Tรคmรค voi aiheuttaa lisรคvirheitรค tiedoissa.
  • Hamming-koodialgoritmi voi ratkaista vain yksittรคisiรค bittejรค koskevat ongelmat.

Kuinka koodata viesti Hammingissa Code

Prosessi, jota lรคhettรคjรค kรคyttรครค viestin koodaamiseen, sisรคltรครค seuraavat kolme vaihetta:

  • Redundanttien bittien kokonaismรครคrรคn laskeminen.
  • Redundanttien bittien paikan tarkistaminen.
  • Lopuksi lasketaan nรคiden redundanttien bittien arvot.

Kun yllรค olevat redundantit bitit on upotettu viestiin, se lรคhetetรครคn kรคyttรคjรคlle.

Vaihe 1) Redundanttien bittien kokonaismรครคrรคn laskeminen.

Oletetaan, ettรค viesti sisรคltรครค:

  • nโ€“ databittien mรครคrรค
  • p โ€“ redundanttien bittien mรครคrรค, jotka siihen lisรคtรครคn niin, ettรค np voi osoittaa vรคhintรครคn (n + p + 1) eri tiloja.

Tรคssรค (n + p) kuvaa virheen sijaintia kussakin (n + p) bittipaikassa ja yksi ylimรครคrรคinen tila ilmaisee, ettei virhettรค ole. Kuten p-bitit voivat osoittaa 2p osavaltiot, 2p on oltava vรคhintรครคn yhtรค suuri kuin (n + p + 1).

Vaihe 2) Redundanttien bittien asettaminen oikeaan paikkaan.

P redundantit bitit tulisi sijoittaa bittipaikkoihin, joiden potenssit ovat 2. Esimerkiksi 1, 2, 4, 8, 16 jne. Niitรค kutsutaan p:ksi1 (paikassa 1), s2 (paikassa 2), s3 (asemassa 4) jne.

Vaihe 3) Redundantin bitin arvojen laskenta.

Redundanttien bittien tulee olla pariteettibittejรค, mikรค tekee ykkรถsten lukumรครคrรคstรค parillisen tai parittoman.

Kaksi pariteettityyppiรค ovat ?

  • Parillisen viestin bittien kokonaismรครคrรครค kutsutaan parillisiksi pariteetiksi.
  • Viestin parittoman bittien kokonaismรครคrรครค kutsutaan parittomaksi pariteetiksi.

Tรคssรค kaikki redundanttibitti, p1, on laskettava pariteettina. Sen tulisi kattaa kaikki bittipaikat, joiden binรครคriesityksen tulisi sisรคltรครค 1 ensimmรคisessรค paikassa, lukuun ottamatta p1:n sijaintia.

P1 on pariteettibitti jokaiselle databitille paikoissa, joiden binรครคriesitys sisรคltรครค 1:n vรคhemmรคn tรคrkeรคssรค paikassa ilman 1 Like:ta (3, 5, 7, 9, .... )

P2 on pariteettibitti jokaiselle databitille paikoissa, joiden binรครคriesitys sisรคltรครค 1 kohdassa 2 oikealta, ei sisรคllรค 2 Like (3, 6, 7, 10, 11,โ€ฆ)

P3 on pariteettibitti jokaiselle bitille paikoissa, joiden binรครคriesitys sisรคltรครค 1:n kohdassa 3 oikealta, ei sisรคllรค 4 Like (5-7, 12-15,โ€ฆ )

Viestin salauksen purku Hamming-koodissa

Vastaanotin saa saapuvia viestejรค, jotka vaativat uudelleenlaskutoimituksia virheiden lรถytรคmiseksi ja korjaamiseksi.

Uudelleenlaskentaprosessi suoritetaan seuraavissa vaiheissa:

  • Redundanttien bittien lukumรครคrรคn laskeminen.
  • Kaikkien redundanttien bittien oikea sijoitus.
  • Pariteettitarkistus

Vaihe 1) Redundanttien bittien lukumรครคrรคn laskeminen

Voit kรคyttรครค samaa kaavaa koodaukseen, redundanttien bittien lukumรครคrรครคn

2p ? n + p + 1

Tรคssรค databittien lukumรครคrรค ja p on redundanttien bittien mรครคrรค.

Vaihe 2) Sijoita kaikki redundantit bitit oikein

Tรคssรค p on redundantti bitti, joka sijaitsee potenssien 2 bittipaikoissa, esimerkiksi 1, 2, 4, 8 jne.

Vaihe 3) Pariteettitarkistus

Pariteettibitit on laskettava databittien ja redundanttien bittien perusteella.

p1 = pariteetti(1, 3, 5, 7, 9, 11โ€ฆ)

p2 = pariteetti(2, 3, 6, 7, 10, 11โ€ฆ)

p3 = pariteetti(4-7, 12-15, 20-23โ€ฆ)

Yhteenveto

  • TransmitTed-tiedot voivat vioittua tiedonsiirron aikana
  • Kolme bittivirhetyyppiรค ovat 1) yhden bitin virheet 2) usean bitin virheet 3) purskebittivirheet
  • Yhdessรค bitissรค koko datasekvenssissรค tehty muutos tunnetaan nimellรค "Yksi bittivirhe".
  • Jos datasekvenssissรค tapahtuu muutos kahdessa tai useammassa bitissรค datasekvenssissรค transmitvastaanottimelle, sitรค kutsutaan "monibittiseksi virheeksi".
  • Bittijoukon muutosta datasekvenssissรค kutsutaan "purskevirheeksi".
  • Virheiden havaitseminen on menetelmรค, jolla havaitaan datassa olevia virheitรค transmitted jostakin transmitvastaanottajalle tietoliikennejรคrjestelmรคssรค
  • Kolmen tyyppisiรค virheiden havaitsemiskoodeja ovat 1) Pariteetin tarkistus 2) Cyclic Redundancy Check (CRC) 3) Longitudinal Redundancy Check (LRC)
  • Hamming-koodi on liner-koodi, joka on hyรถdyllinen virheiden havaitsemiseen jopa kahteen vรคlittรถmรครคn bittivirheeseen. Se kykenee yksibittisiin virheisiin.
  • Hamming-koodi on RWHammingin rakentama tekniikka virheiden havaitsemiseksi.
  • Yleisiรค Hamming-koodin kรคyttรถsovelluksia ovat satelliittitietokonemuisti, modeemit, sulautettu prosessori jne.
  • Hamming-koodimenetelmรคn suurin hyรถty on tehokas verkoissa, joissa datavirrat annetaan yksibittisille virheille.
  • Hamming-koodimenetelmรคn suurin haittapuoli on, ettรค se voi ratkaista vain yksittรคisiรค bittejรค.
  • Voimme suorittaa viestin salauksen ja dekoodauksen hamming-koodin avulla.

Tiivistรค tรคmรค viesti seuraavasti: