**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 <--- input right padded by 3 bits
1011               <--- zatitzailea(4 bits) = x³+x+1
------------------
01100011101100 000 <--- emaitza

```

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 <--- bidaltzera goazen trama eskubitik 3 bit gehitu ondoren
1011               <--- zatitzailea
01100011101100 000 <--- emaitza
 1011              <--- zatitzailea...
00111011101100 000
  1011
00010111101100 000
   1011
00000001101100 000 <--- "tokatzen diren" ezkerraldeko bitak 0 izatera, zuzenean mugitu dugu polinomio izendatzailea
       1011
00000000110100 000
        1011
00000000011000 000
         1011
00000000001110 000
          1011
00000000000101 000 
           101 1
-----------------
00000000000000 100 <--- hondarra (3 bit)

```

  

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 <--- hartzaileak jasotakoa CRC kodea barne duelarik
1011               <--- izendatzailea
01100011101100 100 <--- emaitza
 1011              <--- izendatzailea...
00111011101100 100

......
  
00000000001110 100
          1011
00000000000101 100 
           101 1
------------------
                 0 <--- hondarra

```

Ikus, gainera
-------------

* CRC-ren azalpena ingelesez

Kanpo estekak
-------------

|  |  |
| --- | --- |
| Autoritate kontrola | 
* **Wikimedia proiektuak**
* Wd Datuak: Q245471

 |

* Wd Datuak: Q245471