Sunteți pe pagina 1din 24

ISEL-DEETC-

Comunicaes 1
III-2
Cyclic Redundancy
Check
Comunicaes
(13 Dezembro de 2010)
ISEL-DEETC-
Comunicaes
2
Sumrio
1. Cdigos cclicos
2. Polinmio gerador
3. CRC
1. Clculo dos bits de paridade
2. Verificao dos bits de paridade
4. Diviso de polinmios
1. Utilizao do MATLAB
5. Aplicaes
6. Bibliografia
7. Exerccios
Cdigos Cclicos
Os cdigos cclicos so uma sub-classe dos cdigos
lineares de bloco
Linear: o vector nulo pertence ao cdigo; a soma
modular de duas palavras do cdigo ainda uma
palavra do cdigo
Bloco: todas as palavras tm a mesma dimenso de n
bits
Nos cdigos cclicos tem-se que qualquer rotao cclica
de qualquer ordem sobre uma palavra de cdigo ainda
uma palavra de cdigo
Exemplo: cdigo de bit de paridade par (3,2)
10
11
00
01
000
011
101
110
m c
ISEL - DEETC -
Comunicaes
Cdigos Cclicos
Os cdigos lineares de bloco so estabelecidos pela matriz
geradora G
A partir de k palavras de cdigo geram-se as 2
k
palavras
que constituem o cdigo
c vector de dimenses 1x n;
m vector 1x k
G matriz k x n;
No cdigo cclico todas as palavras c(X) so geradas a
partir do polinmio gerador g(X) do cdigo
c(X) = m(X)g(X)
Todas as palavras de cdigo so obtidas atravs do
polinmio gerador
c = m G
Cdigos Cclicos
Tem-se c(X) = m(X)g(X) em que:
c(x) a palavra de cdigo polinmio de grau n-1
m(x) depende da mensagem polinmio de grau k-1
g(x) polinmio gerador de grau q
As palavras de cdigo c=[c
n-1
c
n-2
. c
1
c
o
] podem ser
analisadas como polinmios:
c(X) = c
n-1
X
n-1
+ c
n-2
X
n-2
+. +c
1
X +c
o
O nmero de bits redundantes (de paridade) corresponde
ao grau do polinmio gerador
ISEL - DEETC -
Comunicaes
Polinmio Gerador
Determinado polinmio g(X) de grau q gerador de um
cdigo (n,k), com q=n-k, caso seja factor de X
n
+1
Ser factor de X
n
+1 implica que
Assim, a factorizao do polinmio X
n
+1 importante,
neste contexto
Atravs desta factorizao, conseguimos obter polinmios
geradores para cdigos de diferentes dimenses
0
) (
1
resto =
(

+
X g
X
n
ISEL - DEETC -
Comunicaes
Factorizao de X
n
+1
X
n
+1 Factorizao
X
3
+1 =(X+1)(X
2
+X+1)
X
5
+1 =(X+1)(X
4
+X
3
+ X
2
+X+1)
X
7
+1 =(X+1)(X
3
+ X
2
+1) (X
3
+ X+1)
X
9
+1 =(X+1)(X
2
+ X+1) (X
6
+ X
3
+1)
.... .......
Exemplos:
X+1, gera cdigo (3,2)
X
2
+ X+1, gera cdigo (3,1)
X+1, gera cdigo (5,4)
(X
4
+X
3
+ X
2
+X+1), gera cdigo (5,1)
X
3
+ X
2
+1 gera cdigo (7,4)
X
3
+ X+1 gera cdigo (7,4)
ISEL - DEETC -
Comunicaes
Polinmios Geradores
Cdigo Polinmio gerador g(X)
CRC4 X
4
+X
3
+X
2
+X+1
CRC7 X
7
+X
6
+X
4
+1
CRC12 X
12
+X
11
+X
3
+X
2
+X+1
CRC16 X
16
+X
15
+X
2
+1
CRC-CCITT X
16
+X
12
+X
5
+1
CRC32 X
32
+X
26
+X
23
+X
22
+X
16
+X
12
+X
11
+X
10
+X
8
+X
7
+X
5
+X
4
+X
2
+X+1
ISEL - DEETC -
Comunicaes
Polinmios Geradores (outros exemplos)
Polinmios Geradores
ISEL - DEETC -
Comunicaes
CRC Cyclic Redundancy Check
Num cdigo cclico sistemtico, as palavras tm a seguinte
organizao
Os bits b(X), que constituem um polinmio de grau q-1
designam-se por CRC-Cyclic Redundancy Check
A palavra de cdigo dada por
(

+ = + =
) (
) (
resto ) ( ) ( ) ( ) (
X g
X X m
X X m X b X X m X c
q
q q
ISEL - DEETC -
Comunicaes
CRC Cyclic Redundancy Check
O CRC resulta do resto da diviso de polinmios entre:
A mensagem deslocada de q bits para a esquerda
O polinmio gerador do cdigo
Dado que g(X) tem grau q, resulta que b(X) ter grau q-1,
sendo constitudo por q bits
Assim, temos palavra de cdigo com n bits (k de
mensagem e q de paridade)
(

= =
) (
) (
resto ) (
X g
X X m
X b CRC
q
ISEL - DEETC -
Comunicaes
CRC Cyclic Redundancy Check
Exemplo de clculo do CRC para cdigo (7,4)
m(X)=X
3
+1=[1 0 0 1]
g(X)= X
3
+X
2
+1=[1 1 0 1]
(

+ +
+
=
(

+ +
+
=
(

= =
1
resto
1
) 1 (
resto
) (
) (
resto ) (
2 3
3 6
2 3
3 3
X X
X X
X X
X X
X g
X X m
X b CRC
q
). 1 ( ) 1 ( ) ( ) ( ) (
3 3 3
+ + + = + = X X X X b X X m X c
1 + = X
] 1 1 0 1 0 0 1 [
1
3 6
=
+ + + = X X X
CRC Cyclic Redundancy Check
Exemplo de clculo do CRC para cdigo (7,4)
m(X)=X
3
+1=[1 0 0 1]
g(X)= X
3
+X
2
+1=[1 1 0 1]
Em MATLAB: uso da funo deconv que realiza a diviso
de polinmios
1
1
resto ) (
2 3
3 6
+ =
(

+ +
+
= = X
X X
X X
X b CRC
>> mq = [1 0 0 1 0 0 0];
>> g = [1 1 0 1];
>> [q, r] = deconv( mq, g);
>> mod(q,2)
ans =
1 1 1 1
>> mod(r,2)
ans =
0 0 0 0 0 1 1
ISEL - DEETC -
Comunicaes
CRC Cyclic Redundancy Check
O descodificador, em modo de deteco calcula o
sndroma s(X)
Dado que c(X)=m(X)g(X), tem-se que qualquer palavra de
cdigo factor do polinmio gerador
Seja y(X) = c(X) + e(X) a palavra recebida, em que e(X) o
padro de erro
Caso e(X) seja nulo o sndroma nulo
Caso e(X) seja no nulo o sndroma no nulo e
depende do valor de e(X)
0
) (
) ( ) (
resto
) (
) (
resto
) (
) (
resto ) ( =
(

=
(

=
(

=
X g
X g X m
X g
X c
X g
X y
X s
(

=
(

+
=
(

=
) (
) (
resto
) (
) ( ) ( ) (
resto
) (
) (
resto ) (
X g
X e
X g
X e X g X m
X g
X y
X s
CRC Cyclic Redundancy Check
Na descodificador temos diviso de polinmios
Recorrendo ao MATLAB, podemos usar a funo deconv
Sejam
(

=
) (
) (
resto ) (
X g
X c
X s
>> c = [1 0 0 1 0 1 1];
>> g = [1 1 0 1];
>> [q, s] = deconv(c, g);
>> mod(s,2)
ans =
0 0 0 0 0 0 0
] 1 1 0 1 0 0 1 [
1 ) (
3 6
=
+ + + = X X X X c
] 1 0 1 1 [
1 ) (
2 3
=
+ + = X X X g
Sndroma nulo
Ausncia de erros
ISEL - DEETC -
Comunicaes
CRC Cyclic Redundancy Check
Introduzindo 1 erro no penltimo bit na palavra c(X) temos
>> c = [1 0 0 1 0 0 1];
>> g = [1 1 0 1];
>> [q, s] = deconv(c, g);
>> mod(s,2)
ans =
0 0 0 0 0 1 0
] 1 0 0 1 0 0 1 [
1
) ( ) 1 ( ) ( ) ( ) (
3 6
3 6
=
+ + =
+ + + + = + =
X X
X X X X X e X c X y
] 1 0 1 1 [
1 ) (
2 3
=
+ + = X X X g
Sndroma no nulo
Erros detectados
ISEL - DEETC -
Comunicaes
CRC - Cyclic Redundancy Check
Tipicamente utilizado em modo de deteco de erros
Quando a distncia mnima do cdigo for maior ou igual a
3, tambm pode ser usado em modo correco
Tipicamente temos um nmero reduzido de bits de
paridade calculado para elevado nmero de bits de
mensagem
n >> q > 1
O CRC tem elevada capacidade de deteco de erros,
especialmente de burst de erros (rajada de erros)
Um burst ou rajada de erros define-se como um bloco
contguo de bits recebidos em erro; o primeiro e ltimo bit
distam B bits entre si, sendo B o comprimento do burst
ISEL - DEETC -
Comunicaes
CRC - Cyclic Redundancy Check
Elevada capacidade de deteco de erros:
todos os burst de dimenso q ou menor
uma fraco dos burst de dimenso q+1; a fraco 1-2
-(q-1)
uma fraco dos burst de dimenso superior a q+1; a fraco 1-2
-q
todas as combinaes de d
min
ou menos erros
todos os padres com nmero mpar de erros, quando o gerador tem
nmero par de coeficientes no nulos
Por exemplo, para o cdigo CRC7 com g(X)=X
7
+X
6
+X
4
+1
temos
todos os burst de dimenso 7 ou menor
1-2
-(q-1) =
1 - 2
-(7-1)
= 98,44 % dos burst de dimenso 8
1-2
-(q) =
1 - 2
-(7)
= 99,22 % dos burst de dimenso superior a 8
todos os padres com nmero mpar de erros
ISEL - DEETC -
Comunicaes
Aplicaes
Norma Ethernet 802.3 (Rede Local - LAN)
Usa CRC32 (32 bits / 4 bytes) para verificao da integridade da trama;
g(X)=X
32
+X
26
+X
23
+X
22
+X
16
+X
12
+X
11
+X
10
+X
8
+X
7
+X
5
+X
4
+X
2
+X+1
O campo FCS-Frame Check Sequence no header da trama tem
sempre 32 bits, independentemente da dimenso da trama
A dimenso mxima da trama 1518 bytes (12144 bits)
ISEL - DEETC -
Comunicaes
Aplicaes
Norma Ethernet 802.3
g(X)=X
32
+X
26
+X
23
+X
22
+X
16
+X
12
+X
11
+X
10
+X
8
+X
7
+X
5
+X
4
+X
2
+X+1
Existem sempre 32 bits de paridade
A trama tem dimenso mnima e dimenso mxima; esta
ltima 1518 bytes (12144 bits); temos um cdigo (n, n-32)
Distncia mnima em funo da dimenso da trama n
ISEL - DEETC -
Comunicaes
n d
min
3007 12144 4
301-3006 5
204-300 6
124-203 7
90-123 8
Fonte:
J. Moreira and P. Farrell, Essentials of
Error-Control Coding, 2006, John Wiley
and sons.
[Pg. 93]
Aplicaes
Codificador de fonte WinRar
Usa CRC32 para verificao da integridade de cada ficheiro
comprimido
Antes de descomprimir o ficheiro, verifica a integridade do ficheiro
comprimido (clculo do sndroma)
CRC32
22
Bibliografia
Folhas de apoio
A. Ferreira, Cdigos detectores e correctores de
erros
C. Meneses Ribeiro, Comunicao de Dados,
disponveis na pgina da unidade curricular
http://www.deetc.isel.ipl.pt/sistemastele/cm/
Livro
J. Moreira and P. Farrell, Essentials of Error-
Control Coding, 2006, John Wiley and sons.
ISEL - DEETC -
Comunicaes
Exerccios
Considere o polinmio gerador g(X) = X
4
+ X
3
+ X
2
+ X + 1 de cdigo (10,6).
a) Apresente a palavra de cdigo c(X), quando a mensagem 1 0 0 0 0 1.
b) A palavra 1111111111 pertence ao cdigo?
Considere o polinmio gerador g(X) = X
3
+X+1 do cdigo (7,4).
a) Quais das palavras 0000000, 1011000 e 0000011 pertencem ao cdigo?
b) Apresente todas as palavras de cdigo.
ISEL-DEETC-
Comunicaes
23
Exerccios
Suponha uma transmisso digital em que so enviados os bits de
informao 1010. Considere que o controlo de erros realizado atravs
de CRC com polinmio gerador g(X) = X
3
+ X + 1.
a) Apresente a sequncia binria transmitida.
b) Provoque um erro nesta sequncia binria e ilustre o funcionamento da
deteco de erros.
Quanto tempo demora a transmisso de um ficheiro com 1 024 000
bytes, considerando a utilizao de modulao 16-QAM, com tempo de
smbolo Ts =10 s, nos cenrios:
a) ausncia de cdigos detectores e correctores de erros?
b) deteco de erros com cdigo CRC7, estabelecido por g(X) = X
7
+X
6
+X
4
+ 1, aplicado a blocos de mensagem com dimenso 1024 bits?
ISEL-DEETC-
Comunicaes
24

S-ar putea să vă placă și