Skip to content
blahlt edited this page May 4, 2013 · 9 revisions

Turinys

Apie CRC (Cyclic Redundancy Check)

CRC yra kontrolinės sumos (checksum) metodas, naudojamas aptikti duomenų (pvz. duomenų perdavimo) klaidas. Norint patikrinti ar duomenys yra perduodami neiškraipyti - kartų su duomenimis yra perduodama ir kontrolinė suma (apskaičiuojama iš normų perduoti duomenų). Perduodant duomenis su kontroline suma pilnas duomenų srautas įgauna tokia forma: < _norimi perduoti duomenys_ >< _kontrolinė suma apskaičiuota iš norimų perduoti duomenų_ >.

Kiekvienas CRC metodas turi jį atitinkantį polinomą (CRC metodo pavadinime bitų skaičius tik nurodo vienanarių kiekį, bet ne jų koeficientus, todėl prieš skaičiuojant išsiaiškinti pagal kokį polinomą reikia atlikti skaičiavimus. Pavyzdžiui CRC-3 gali naudoti bet kokį x3+a2x2+a1x1+a0x0 = x3+a2x2+a1x+1 formos polinomą, kur ai gali būti 0 arba 1 (aukčiausias koeficientas visada bus 1) t.y. teoriškai ir x3+1 ir x3+x2+x+1 gali būti naudojamas CRC-3 skaičiavime).

CRC-1

Paprasčiausias (taip pat ir mažiausiai patikimas) CRC metodas aptikti perdavimo klaidas yra CRC-1. Visa CRC-1 yra perduodamų duomenų gale pridėti bitą, kuris naudojamas kaip kontrolinė suma. CRC-1 gali būti dviejų tipų: lyginis ir nelyginis. Kai naudojamas lyginis CRC-1 skaičiavimas - kontrolinės sumos bito reikšmė yra 1 tik tuo atveju, jei vienetų (bitų reikšmę) skaičius yra nelyginis (į skaičiavimą neįtraukiamas kontrolinės sumos bitas). Jei vienetų (bitų reikšmė) skaičius yra lyginis - kontrolinės sumos bito reikšmę yra 0. Nelyginio CRC-1 atveju viskas atvirkčiai: kontrolinio bito reikšmę yra 1 kai vienetų skaičius lyginis ir 0 kai - nelyginis. Lyginis CRC-1 yra specialus CRC atvejis, kur vieno bito kontrolinė suma apskaičiuojama pagal x+1 polinomą.

9 bitai duomenų vienetų suma perduodami duomenys su kontroline suma (10 bitų)
lyginis nelyginis
000000000 0 0000000000 0000000001
1011001001 5 10110010011 10110010010
1110101100 6 11101011000 11101011001
1111111111 9 11111111111 11111111110

CRC skaičiavimas

http://www.maximintegrated.com/app-notes/index.mvp/id/3969

https://marcel.wanda.ch/Tutorial/CRC/CyclicRedundancyCheck

http://www.ross.net/crc/download/crc_v3.txt

Clone this wiki locally