CRC

**Kode ziklikoek**, **CRC** kode (**Cyclic Redundancy Check**) izena hartzen dute, baita polinomio kode izena ere. Hauen erabilera oso hedaturik dago, hardwarean modu erraz batean implementa daitezkeelako eta oso ahaltsuak direlako.

Kode hauek oinarri bezala **G(X)** polinomio eraikitzaile bat dute, **r** gradukoa eta printzipio hau ere oinarritzat daukate: **n** bit datu bitar baldin badauzkagu, hauek **n-1** mailako polinomio baten koefiziente izan daitezke.

Adibidez, 10111 zenbaki bitarra x4 + x2 + x1 + x0 polinomiotzat tratatu dezakegu.

Datuak adierazten dituzten bit hauei, erredundantziako **r** bit gehitzen zaizkie horrela sortzen den polinomioa hasierako polinomioarekin zatigarria izan dadin. Hartzaileak jasotako polinomioa **G(X)**-ekin zatigarria den edo ez egiaztatuko du. Hau horrela ez bada, [transmisio errore] bat egongo da.

Datu-bitak blokeetan zatitzen dira (ingelesez **frame** deiturikoak) eta bloke bakoitzari r gradua kalkulatzen zaio, zeinak blokearen egiaztapen sekuentzia (Frame Check Sequence, FCS, ingelesez) izena ere hartzen duen.

Hauek dira gehien erabiltzen diren polinomio eraikitzaileak:

CRC-12: x12+ x11 + x3 + x2 + x1 + 1. 6 biteko fluxuak transmititzeko erabiltzen da, erredundantziako 12 bitekin batera. Beste era batera esanda, 6 biteko blokeak erabiltzen ditu eta 12 bitetik sortzen duen FCS bat gehitzen die.

CRC-16: x16 + x15 + x2 + 1. 8 biteko fluxuetarako erabiltzen da, erredundantziarentzat 16 erabiliz. AEB-tan erabiltzen da nagusiki.

CRC-CCITT: x16 + x12 + x5 + 1. 8 biteko fluxuetarako, erredundantziarentzat 16 erabiliz. Europan erabiltzen da nagusiki.

CRC-32: x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1. 16 biteko CRC kodeek baino segurtasun handiagoa eskaintzen du, azken hauek nahikoa eskaintzen duten arren. Sare lokalen estandarren batzordean erabiltzen du (IEEE 802), hala nola AEB-en Defentsako departamentuak.

G(x)=x2+1 motako polinomio eraikitzaile bat baldin badugu, CRC-k errore bakoiti guztiak antzeman ditzake, 2 biteko erredundantzia sortuko du eta ez da errore bikoitz guztiak antzemateko gai izango, adibidez, errore-balioko sekuentzia bat beti oharkabea litzateke.

## CRCaren erabilera 
Adibide honetan, 14 biteko mezuari dagokion CRC kodea lortuko dugu. Erabiliko dugun CRC polinomioa x³+x+1 izango. 3.mailako polinomio honek 4 koefiziente ditu: 1.x³+0.x2+1.x+1.x0, beraz polinomioa bitar bezala idatziz 1,0,1,1. Eta emaitza 3 zenbakikoa izango da.

Erabiliko den mezua:

```
11010011101100
```

Lehenik 0ak sartuko ditugu eskuinetik. Polinomio zatitzailea izango denaren n luzera - 1 eginaz. Gure polinomio zatitzailea 1,0,1,1 da beraz 4-1=3 zero sartuko ditugu eskuinetik. 3-biteko CRCa lortzeko lehe zatiketa.

11010011101100 000 

Zatiketa XOR eragiketa erabiliz egiten da. (XOR taula laburtua: 1-1=0; 0-0=0; 1-0=1; 0-1=1). Ezkerraldeko bit zenbakitzailea 0 denean ez da ezer egiten:

11010011101100 000 

Mezua ongi bidalia izan dela egiaztatzeko, hartzaileak, bidalitako trama osoaren -datu bitak + CRC kodea- zatiketa berriro egitea besterik ez du. Oraingoan, errorerik ez baldin badago emaitza 0 izango da.

11010011101100 100 

## Ikus, gainera 
* CRC-ren azalpena ingelesez

## Kanpo estekak