Digitaalitekniikan matematiikka Luku 13 Sivu 1 (10)
Digitaalitekniikan matematiikka Luku 13 Sivu 2 (10) Johdanto Tässä luvussa esitetään virheen havaitsevien ja korjaavien koodaustapojen perusteet ja käyttösovelluksia esitetään koodaustapoja, joiden avulla voidaan havaita ja korjata siirrossa, tallennuksessa tai toistossa syntyneitä bittivirheitä pariteettibitin käyttö CRC-menetelmä Hamming-koodaus ECC-koodaus bittien lomittelu ja FEC-koodaus Luvun tavoitteena on luoda yleiskuva mahdollisuuksista havaita ja korjata digitaalisten signaalien siirrossa, tallennuksessa ja toistossa syntyneitä bittivirheitä opettaa tuntemaan eräitä keskeisiä virheen havaitsevia ja korjaavia koodaustapoja
Digitaalitekniikan matematiikka Luku 13 Sivu 3 (10) Virheen havaitsemisen ja korjauksen perusteet Virheen havaitsevia (error detecting) ja virheen korjaavia 010 (error correcting) menettelytapoja käytetään tiedon tallennuksessa ja siirrossa 110 111 virheen havaitsevat ja korjaavat koodaustavat uudelleenlähetyksen käyttö siirrossa 000 Perustuu koodauksen redundanssin lisäämiseen 100 101 vain osaa bittiyhdistelmistä käytetään koodisanoina loput bittiyhdistelmät tulkitaan virhekoodeiksi koodisanaan syntyvä virhe muuttaa sen yleensä virhekoodiksi Virhe havaitaan ja virhekoodi jätetään ottamatta huomioon tai pyydetään uudelleenlähetystä (virheen havaitsevat koodit) Virheen havaitsevaa koodausta käytetään ei-aikakriittisissä sovelluksissa, kuten tiedostojen siirrossa ja siirtoyhteyden laadun valvontaan Virhe havaitaan ja korjataan (virheen korjaavat koodit) Virheen korjaavaa koodausta käytetään aikakriittisissä sovelluksissa, kuten äänen ja videokuvan tallennuksessa ja siirrossa 011 001
Pariteettibitin käyttö Digitaalitekniikan matematiikka Luku 13 Sivu 4 (10) Jos koodisanassa on parillinen määrä ykkösiä, sen pariteetti (parity) on parillinen (even) Jos koodisanassa on pariton määrä ykkösiä, sen pariteetti on pariton (odd) EVEN ODD Kaikkien koodisanojen pariteetti saadaan samaksi lisäämällä pariteettibitti Vastaanotetun sanan pariteetti tarkastetaan oikea pariteetti: ei virhettä tai parillinen määrä virheitä väärä pariteetti: pariton määrä virheitä virhe havaitaan, mutta sitä ei voida korjata Sopi erityisen hyvin ASCII-koodin yhteyteen koodi on 7-bittinen tietokoneissa sananpituus on yleensä 8 bittiä tai sen monikerta On käytetty myös PC-tietokoneiden dynaamisen RAM-muistin sisällön tarkastamiseen (nykyään palvelimissa kehittyneempi ECC-menetelmä) Nykyään ei ole sellaisenaan käytössä, mutta on tärkeä peruste tehokkaammille koodaustavoille
Digitaalitekniikan matematiikka Luku 13 Sivu 5 (10) Pariteettityypit ASCII- Ei Parillinen Pariton 0-1- merkki pariteettia pariteetti pariteetti pariteetti pariteetti? 1 A 1000001 01000001 11000001 01000001 11000001 T 1010100 11010100 01010100 01010100 11010100 Pariteettibitti Aina 0 Aina 1 Käytännössä merkit lähetetään lsb ensin, jolloin pariteettibitti lähetetään viimeisenä 0- ja 1-pariteetti muuntavat 7-bittisen koodin 8-bittiseksi ilman pariteettitarkastusta NO EVEN ODD 0 1
Digitaalitekniikan matematiikka Luku 13 Sivu 6 (10) PARITON-funktio ja pariteettibitin muodostus PARITON-funktio saa arvon 1, kun sen muuttujista pariton määrä on ykkösiä arvon 0 muulloin Pariteettibitti muodostetaan ja tarkastetaan PARITON-funktion muodostavalla piirillä Lisä A 0 =1 A 1 =1 A 2 =1 A 3 A 4 =1 A 5 =1 A 6 =1 A 7 =1 P
Digitaalitekniikan matematiikka Luku 13 Sivu 7 (10) CRC-menetelmä CRC- (Cyclic Redundancy Check) -menetelmä on pariteettibitin käyttöä tehokkaampi virheen havaitsemismenetelmä CRC Tarkastettava koodisana tulkitaan polynomin kertoimiksi ja kyseinen polynomi jaetaan erityisellä tarkastuspolynomilla Saatu jakojäännös liitetään koodisanaan ja tallennetaan tai lähetetään vastaanottopäähän Tarkastettaessa tehdään vastaava jakolasku koodisanan ja jakojäännöksen muodostamalle kokonaisuudelle Jos jako menee tasan, koodisana on virheetön, ellei, se on virheellinen Jakolaskut tehdään EHDOTON TAI -porteilla sarjamuotoiselle koodisanalle eli menetelmä on laitteistototeutukseltaan yksinkertainen Menetelmää käytetään mm. siirtojärjestelmien bittivirhetason laskentaan eli siirron laadun valvontaan Se on myös mukana monissa virheenkorjaavissa siirtoprotokollissa, joissa virheen havaitseminen vastaanottopäässä aiheuttaa uudelleenlähetyspyynnön ja uudelleenlähetyksen
Digitaalitekniikan matematiikka Luku 13 Sivu 8 (10) Hamming-koodaus Virheen korjaava koodaustapa Havaitsee ja korjaa kaikki yhden bitin virheet, muita virheitä ei havaita Perustuu usean pariteettibitin käyttöön n:lle databitille tarvitaan k pariteettibittiä siten, että n + k + 1 2 k Databitit Pariteettibitit Yhteensä bittejä Pariteettibittien osuus 1 2 3 67 % 2-4 3 5-7 60-43 % 5-11 4 9-15 44-27 % 12-26 5 17-31 29-16 % 27-57 6 33-63 18-10 % 58-120 7 65-127 11-6 %
Digitaalitekniikan matematiikka Luku 13 Sivu 9 (10) ECC-koodaus ja kännyköissä käytettävä koodaus ECC-koodausta käytetään PC-tietokoneissa keskusmuistin lukuvirheen havaitsemiseen muistipaikassa kahdeksalla databitillä on yksi pariteettibitti kahdeksan peräkkäisen muistipaikan pariteettibitit käytetään ECC-koodaukseen (error correcting code) voidaan korjata yhden bitin virhe ja havaita jopa neljän bitin virhe 64-bittisessä sanassa käytössä lähinnä palvelimissa Kännykkäpuheluissa ilmarajapinnan häiriö kestää tyypillisesti useiden bittien ajan bitteihin syntyy virheryöppy käytetään bittien lomittelua useiden näytteiden bitit lomitellaan käytetään erilaisia FEC-koodaustapoja (forward error correction) virheet voidaan korjata ECC FEC
Digitaalitekniikan matematiikka Luku 13 Sivu 10 (10) Yhteenveto Tiedon Tiedon tallennuksessa ja ja siirrossa käytetään virheen havaitsevia ja ja korjaavia koodaustapoja Nämä Nämä tavat tavat perustuvat koodauksen redundanssin lisäämiseen Pariteettibitin käyttö käyttö on on yksinkertainen menetelmä virheen virheen havaitsemiseen; sillä sillä havaitaan pariton pariton määrä määrä virheitä virheitä Pariteetti voi voi olla olla parillinen tai tai pariton CRC-menetelmä on on yleisesti käytetty menetelmä virheen virheen havaitsemiseen ja ja korjaamiseen uudelleenlähetystä käyttäen Hamming-koodaus on on virheen virheen korjaava koodaustapa, jolla jolla voidaan havaita havaita ja ja korjata korjata yhden yhden bitin bitin virhe virhe PC-tietokoneista lähinnä lähinnä palvelimissa käytetään ECC-koodausta keskusmuistin virheiden korjaamiseen ja ja havaitsemiseen Kännyköissä käytetään lomittelua ja ja FEC-koodausta virheenkorjaukseen