Controllo degli errori di trasmissione

Il controllo degli errori Enciclopedia

La controllo degli errori

La codifica binaria è molto conveniente per l’uso in dispositivi elettronici come un computer, in cui l’informazione può essere codificata dalla presenza o assenza di un segnale elettrico.

Tuttavia, il segnale elettrico può essere soggetto a disturbi (distorsione, presenza di rumore), soprattutto quando i dati sono trasportati su un lungo percorso. Così, il controllo della validità dei dati è necessario per certe applicazioni (professionali, bancarie, industriali, confidenziali, di sicurezza, …).

Ecco perché esistono dei meccanismi che garantiscono un certo livello di integrità dei dati, cioè, per dare al destinatario la garanzia che i dati ricevuti siano effettivamente simili a quelli trasmessi. La protezione dagli errori può essere ottenuta in due modi:

  • o rendendo affidabile il mezzo di trasmissione, cioè affidandosi alla protezione fisica. Un collegamento convenzionale ha generalmente un tasso di errore tra 10-5 e 10-7.
  • o implementando meccanismi logici di rilevamento e correzione degli errori.

La maggior parte dei sistemi di controllo degli errori a livello logico sono basati sull’aggiunta di informazioni (questo è noto come “ridondanza”) per verificare la validità dei dati. Queste informazioni aggiuntive sono chiamate checksum.

Correzione degli errori

Quindi, sono stati sviluppati sistemi di rilevamento degli errori più sofisticati, questi codici sono chiamati :

  • Codici autocorrettivi
  • Codici autocontrollati

Controllo della parità

Il controllo della parità (talvolta chiamato VRC, per Vertical Redundancy Check o Vertical Redundancy Checking) è uno dei sistemi di controllo più semplici.Consiste nell’aggiungere un bit supplementare (chiamato bit di parità) a un numero di bit di dati chiamato codeword (di solito 7 bit, per formare un byte con il bit di parità) il cui valore (0 o 1) è tale che il numero totale di bit a 1 sia pari. Per essere più espliciti, consiste nell’aggiungere un 1 se il numero di bit nella codifica è dispari, 0 altrimenti.

Prendiamo il seguente esempio:

In questo esempio, il numero di bit di dati a 1 bit è pari, quindi il bit di parità è impostato su 0. Nell’esempio seguente, invece, i bit di dati sono un numero dispari, quindi il bit di parità è impostato su 1:

Ora immaginate che dopo la trasmissione il bit meno significativo (il bit sulla destra) del byte precedente subisca un’interferenza:

Il bit di parità non corrisponde più alla parità del byte: viene rilevato un errore.

Tuttavia, se due bit (o un numero pari di bit) dovessero cambiare simultaneamente durante il trasporto dei dati, allora nessun errore sarebbe rilevato…

Il sistema di controllo della parità rileva solo gli errori dispari, quindi rileva solo il 50% degli errori.Questo sistema di rilevamento degli errori ha anche il grande svantaggio di non permettere di correggere gli errori rilevati (l’unico modo è richiedere la ritrasmissione del byte errato…).

Controllo della parità incrociata

Il controllo della parità incrociata (noto anche come controllo di ridondanza longitudinale o LRC) consiste nel controllare non l’integrità dei dati di un carattere, ma l’integrità dei bit di parità di un blocco di caratteri.

Quindi “CIAO” il messaggio da trasmettere, utilizzando il codice ASCII standard. Ecco i dati come saranno trasmessi con i codici di controllo a parità incrociata:

Letter Codice ASCII
(su 7 bit)
Parity bit
(LRC)
H 1001000 0
E 1000101 1
L 1001100 1
L 1001100 1
0 1001111 1
VRC 1000010 0

Controllo ciclico di ridondanza

Controllo ciclico di ridondanza (noto CRC, o Cyclic Redundancy Check) è un mezzo potente e facile da implementare per il controllo dell’integrità dei dati.Rappresenta il principale metodo di rilevamento degli errori utilizzato nelle telecomunicazioni.

Principio

Il controllo di ridondanza ciclico consiste nel proteggere blocchi di dati, chiamati frame. Ad ogni frame è associato un blocco di dati, chiamato codice di controllo (talvolta CRC per abuso di linguaggio o FCS per Frame Check Sequence nel caso di un codice a 32 bit). Il codice CRC contiene elementi ridondanti rispetto al frame, permettendo di rilevare gli errori, ma anche di ripararli.

Cyclic Redundancy Check (CRC)

Il principio del CRC consiste nel trattare sequenze binarie come polinomi binari, cioè polinomi i cui coefficienti corrispondono alla sequenza binaria. Così la sequenza binaria 0110101001 può essere rappresentata nella seguente forma polinomiale:

0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 + 1*X0soitX8 + X7 + X5 + X3 + X0ou encoreX8 + X7 + X5 + X3 + 1

In questo modo, il bit meno significativo della sequenza (il bit più a destra) rappresenta il grado 0 del polinomio (X0 = 1), il 4° bit da destra rappresenta il grado3 del polinomio (X3)… Una sequenza di n bit costituisce un polinomio di grado massimo n-1. Tutte le espressioni polinomiali sono successivamente gestite con l’aritmetica modulo 2.

In questo meccanismo di rilevamento degli errori, un polinomio predefinito (chiamato polinomio generatore e denotato G(X)) è noto sia al mittente che al ricevitore. Il rilevamento degli errori consiste nel trasmettitore che esegue un algoritmo sui bit del frame per generare un CRC, e nel trasmettere questi due elementi al ricevitore. Il ricevitore deve poi solo eseguire lo stesso calcolo per verificare che il CRC sia valido.

Applicazione pratica

Lasciamo che M sia il messaggio corrispondente ai bit del frame da inviare e M(X) il polinomio associato.Chiamiamo M’ il messaggio trasmesso, cioè il messaggio iniziale al quale sarà stato concatenato il CRC di n bit. Il CRC è tale che M'(X)/G(X)=0.Il codice CRC è quindi uguale al resto della divisione polinomiale di M(X) (a cui abbiamo precedentemente concatenato n bit nulli corrispondenti alla lunghezza del CRC) per G(X).

È ancora più facile fare un esempio: prendiamo il seguente messaggio a 16 bit M: 1011 0001 0010 1010 (indicato B1 in esadecimale). PrendiamoG(X) = X3 + 1 (rappresentato in binario come 1001).Poiché G(X) è di grado 3, si tratta di aggiungere 4 bit nulli a M: 10110001001010100000.Il CRC è uguale al resto della divisione di M per G:

101100010010101000001001...,..,.,.,.....----...,..,.,.,..... 0100..,..,.,.,..... 0000..,..,.,.,..... ----..,..,.,.,..... 1000.,..,.,.,..... 0000.,..,.,.,..... ----.,..,.,.,..... 1000.,..,.,.,..... 1001,..,.,.,..... ----,..,.,.,.....1111..,.,.,.....1001..,.,.,.....----..,.,.,..... 1100.,.,.,..... 1001.,.,.,..... ----.,.,.,..... 1101,.,.,..... 1001,.,.,..... ----,.,.,..... 1000.,.,..... 0000.,.,..... ----.,.,..... 10001,.....1001,.,.....----,.,.....10000.,..... 1001.,..... ---- 1111,..... 1001,..... ----,..... 1100..... 1001..... ----.....1100....1001....----.... 1010... 1001... ----... 0110.. 0000.. ----.. 1100. 1001. ----.10101001----0011

Per creare M’ è sufficiente concatenare il CRC così ottenuto ai bit del frame da trasmettere:

M' = 1011000100101010 + 0011M' = 10110001001010100011

Quindi, se il ricevitore del messaggio esegue la divisione di M’ per G, otterrà un resto nullo se la trasmission’è effettuata senza errori:

101100010010101000111001...,..,.,.,...,,----...,..,.,.,...,, 0100..,..,.,.,...,, 0000..,..,.,.,...,, ----..,..,.,.,...,, 1000.,..,.,.,..... 1001.,..,.,.,..... ----.,..,.,.,..... 0010,..,.,.,..... 0000,..,.,.,..... ----,..,.,.,.....0101..,.,.,.....0000..,.,.,.....----..,.,.,..... 1010.,.,.,..... 1001.,.,.,..... ----.,.,.,..... 0110,.,.,..... 0000,.,.,..... ----,.,.,..... 1101.,.,..... 1001.,.,..... ----.,.,.....1010,.,.....1001,.,.....----,.,..... 0111.,..... 0000.,..... ---- 1110,..... 1001,..... ----,..... 1111..... 1001..... ----.....1100....1001....----.... 1010... 1001... ----... 0110.. 0000.. ----,, 1101, 1001, ----,10011001---- 0

Polinomi generatori

I polinomi generatori più comunemente usati sono:

  • CRC-12 : X12 + X11 + X3 + X2 + X + 1
  • CRC-16: X16 + X15 + X2 + 1
  • CRC CCITT V41: X16 + X12 + X5 + 1
    (Questo codice è utilizzato in particolare nella procedura HDLC.)
  • CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 +X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
  • CRC ARPA: X24 + X23+ X17 + X16 + X15 +X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1

Discussioni rilevanti trovate nel forum

23/08 5:31pm xp crc tutti exe rar ect Problema CRC su tutti gli exe..rar ect… 🙁 Windows 12/28/0208->Prendi27 17
28/04 15:40 crc errore crc Hardware 20/02 3:59pm-.>Sheep 9
02/11 10:35am rallentamento della connessione crc errori crc + rallentamento della connessione Reti 02/11 9:10pm-.>Sheraf 8
27/01 3:39pm crc Errore CRC! Software/Drivers 3/14 3:28 PM->Toon51 7
23/04 1:39 PM crc .rar caricato Errore CRC con un *.rar caricato Windows 24/04 09:55 AM->sam 7
06/04 14:05 win rar crc corrotto win Rar — CRC corrotto Software/Drivers 01/23 10:23 PM->Ghaylen 7
11/04 4:39 PM installazione crc nero 7.0.8.2 it pb errore di installazione crc nero 7.0.8.2 it Burn 12/04 2:29 pm->Pyton 7
30/05 8:55pm peobleme crc hard drive peobleme crc su un disco rigido Hardware (hardware) 01/06 02:27-.>sergio 5
03/08 16:10 crc file 10go Problema CRC su un file di 10GB Windows 03/08 17:09-.>Cbu 5
22/03 1:01 PM crcmare Stanco degli errori CRC!!! Internet 3/22 3:30 PM->redbull 4
Discussione chiusa Problema risolto CRC Altre discussioni su “CRC”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *