• Nenhum resultado encontrado

III-2 Cyclic Redundancy Check

N/A
N/A
Protected

Academic year: 2021

Share "III-2 Cyclic Redundancy Check"

Copied!
24
0
0

Texto

(1)

III-2

Cyclic Redundancy

Check

Comunicações

(2)

Sumário

1.

Códigos cíclicos

2.

Polinómio gerador

3.

CRC

1. Cálculo dos bits de paridade

2. Verificação dos bits de paridade

4.

Divisão de polinómios

1. Utilização do MATLAB

5.

Aplicações

6.

Bibliografia

7.

Exercícios

(3)

Códigos Cíclicos

 Os códigos cíclicos são uma sub-classe dos códigos

lineares de bloco

Linear: o vector nulo pertence ao código; a soma

modular de duas palavras do código é ainda uma palavra do código

Bloco: todas as palavras têm a mesma dimensão de n

bits

 Nos códigos cíclicos tem-se que qualquer rotação cíclica

de qualquer ordem sobre uma palavra de código é ainda uma palavra de código

 Exemplo: código de bit de paridade par (3,2)

10 00

01 000011 101

(4)

Códigos Cíclicos

 Os códigos lineares de bloco são estabelecidos pela matriz

geradora G

 A partir de k palavras de código geram-se as 2k palavras

que constituem o código

c é vector de dimensões 1x n;

m é vector 1x k

G é matriz k x n;

No código cíclico todas as palavras c(X) são geradas a

partir do polinómio gerador g(X) do código

c(X) = m(X)g(X)

(5)

Códigos Cíclicos

Tem-se c(X) = m(X)g(X) em que:

• c(x) é a palavra de código – polinómio de grau n-1 • m(x) depende da mensagem – polinómio de grau k-1 • g(x) – polinómio gerador de grau q

 As palavras de código c=[cn-1 cn-2 …. c1 co] podem ser

analisadas como polinómios:

c(X) = cn-1 Xn-1+ cn-2 Xn-2 +…. +c1X +co

 O número de bits redundantes (de paridade) corresponde

(6)

Polinómio Gerador

 Determinado polinómio g(X) de grau q é gerador de um

código (n,k), com q=n-k, caso seja factor de Xn+1

 Ser factor de Xn+1 implica que

 Assim, a factorização do polinómio Xn+1 é importante,

neste contexto

 Através desta factorização, conseguimos obter polinómios

geradores para códigos de diferentes dimensões

0 ) ( 1 resto        X g X n

(7)

Factorização de X

n

+1

Xn+1 Factorização X3+1 =(X+1)(X2+X+1) X5+1 =(X+1)(X4 +X3 + X2+X+1) X7+1 =(X+1)(X3 + X2+1) (X3 + X+1) X9+1 =(X+1)(X2 + X+1) (X6 + X3 +1) .... ... Exemplos: X+1, gera código (3,2) X2 + X+1, gera código (3,1) X+1, gera código (5,4) (X4 +X3 + X2+X+1), gera código (5,1) X3 + X2+1 gera código (7,4) X3 + X+1 gera código (7,4)

(8)

Polinómios Geradores

Código Polinómio gerador g(X)

CRC4 X4+X3+X2+X+1 CRC7 X7+X6+X4+1 CRC12 X12+X11+X3+X2+X+1 CRC16 X16+X15+X2+1 CRC-CCITT X16+X12+X5+1 CRC32 X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1

(9)

Polinómios Geradores

(outros exemplos)

(10)

CRC – Cyclic Redundancy Check

 Num código cíclico sistemático, as palavras têm a seguinte

organização

 Os bits b(X), que constituem um polinómio de grau q-1

designam-se por CRC-Cyclic Redundancy Check

 A palavra de código é dada por

          ) ( ) ( resto ) ( ) ( ) ( ) ( X g X X m X X m X b X X m X c q q q

(11)

CRC – Cyclic Redundancy Check

 O CRC resulta do resto da divisão de polinómios entre:  A mensagem deslocada de q bits para a esquerda  O polinómio gerador do código

 Dado que g(X) tem grau q, resulta que b(X) terá grau q-1,

sendo constituído por q bits

 Assim, temos palavra de código com n bits (k de

mensagem e q de paridade)         ) ( ) ( resto ) ( X g X X m X b CRC q

(12)

CRC – Cyclic Redundancy Check

 Exemplo de cálculo do CRC para código (7,4)  m(X)=X3+1=[1 0 0 1]  g(X)= X3+X2+1=[1 1 0 1]                             1 resto 1 ) 1 ( resto ) ( ) ( resto ) ( 3 2 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 ( ) ( ) ( ) (X m X X3 b X X3 X3 X c 1   X 1 3 6 X X X

(13)

CRC – Cyclic Redundancy Check

 Exemplo de cálculo do CRC para código (7,4)  m(X)=X3+1=[1 0 0 1]

 g(X)= X3+X2+1=[1 1 0 1]

Em MATLAB: uso da função deconv que realiza a divisão

de polinómios 1 1 resto ) ( 3 2 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

(14)

CRC – Cyclic Redundancy Check

 O descodificador, em modo de detecção calcula o

síndroma s(X)

 Dado que c(X)=m(X)g(X), tem-se que qualquer palavra de

código é factor do polinómio gerador

 Seja y(X) = c(X) + e(X) a palavra recebida, em que e(X) é o

padrão de erro

 Caso e(X) seja nulo o síndroma é nulo

 Caso e(X) seja não nulo o síndroma é não 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       

(15)

CRC – Cyclic Redundancy Check

 Na descodificador temos divisão de polinómios

Recorrendo ao MATLAB, podemos usar a função 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 ) ( 6 3      X X X X c ] 1 0 1 1 [ 1 ) ( 3 2     X X X g Síndroma nulo Ausência de erros

(16)

CRC – Cyclic Redundancy Check

 Introduzindo 1 erro no penúltimo 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 ) ( 3 2     X X X g

Síndroma não nulo Erros detectados

(17)

CRC -

Cyclic Redundancy Check

Tipicamente é utilizado em modo de detecção de erros  Quando a distância mínima do código for maior ou igual a

3, também pode ser usado em modo correcção

 Tipicamente temos um número reduzido de bits de

paridade calculado para elevado número de bits de mensagem

 n >> q > 1

 O CRC tem elevada capacidade de detecção de erros,

especialmente de burst de erros (rajada de erros)

Um burst ou rajada de erros define-se como um bloco

contíguo de bits recebidos em erro; o primeiro e último bit distam B bits entre si, sendo B o comprimento do burst

(18)

CRC -

Cyclic Redundancy Check

 Elevada capacidade de detecção de erros:

todos os burst de dimensão q ou menor

uma fracção dos burst de dimensão q+1; a fracção é 1-2-(q-1)

uma fracção dos burst de dimensão superior a q+1; a fracção é 1-2-q  todas as combinações de dmin ou menos erros

 todos os padrões com número ímpar de erros, quando o gerador tem

número par de coeficientes não nulos

 Por exemplo, para o código CRC7 com g(X)=X7+X6+X4+1

temos

todos os burst de dimensão 7 ou menor

 1-2-(q-1) = 1 - 2-(7-1) = 98,44 % dos burst de dimensão 8

(19)

Aplicações

 Norma Ethernet 802.3 (Rede Local - LAN)

 Usa CRC32 (32 bits / 4 bytes) para verificação da integridade da trama;

g(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1

O campo FCS-Frame Check Sequence no header da trama tem

sempre 32 bits, independentemente da dimensão da trama

(20)

Aplicações

 Norma Ethernet 802.3

g(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1

 Existem sempre 32 bits de paridade

 A trama tem dimensão mínima e dimensão máxima; esta

última é 1518 bytes (12144 bits); temos um código (n, n-32) Distância mínima em função da dimensão da trama n

n dmin 3007 – 12144 4 301-3006 5 204-300 6 124-203 7 Fonte:

J. Moreira and P. Farrell, Essentials of

(21)

Aplicações

 Codificador de fonte WinRar

 Usa CRC32 para verificação da integridade de cada ficheiro

comprimido

 Antes de descomprimir o ficheiro, verifica a integridade do ficheiro

comprimido (cálculo do síndroma)

(22)

Bibliografia

Folhas de apoio

 A. Ferreira, “Códigos detectores e correctores de

erros”

 C. Meneses Ribeiro, “Comunicação de Dados”,

disponíveis na página 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.

(23)

Exercícios

Considere o polinómio gerador g(X) = X4 + X3 + X2 + X + 1 de código (10,6).

a) Apresente a palavra de código c(X), quando a mensagem é 1 0 0 0 0 1. b) A palavra 1111111111 pertence ao código?

Considere o polinómio gerador g(X) = X3+X+1 do código (7,4).

a) Quais das palavras 0000000, 1011000 e 0000011 pertencem ao código? b) Apresente todas as palavras de código.

(24)

Exercícios

Suponha uma transmissão digital em que são enviados os bits de informação 1010. Considere que o controlo de erros é realizado através de CRC com polinómio gerador g(X) = X3 + X + 1.

a) Apresente a sequência binária transmitida.

b) Provoque um erro nesta sequência binária e ilustre o funcionamento da

detecção de erros.

Quanto tempo demora a transmissão de um ficheiro com 1 024 000 bytes, considerando a utilização de modulação 16-QAM, com tempo de símbolo Ts =10 μs, nos cenários:

a) ausência de códigos detectores e correctores de erros?

b) detecção de erros com código CRC7, estabelecido por g(X) = X7 +X6

Referências

Documentos relacionados

A aplicação do programa em 2002 e 2003 caracterizou-se pela prossecução do processo de reforma da execução do programa, pelo êxito do lançamento e da consolidação do programa

#Êesti n des entrepôts et plates-f rmes : assureú la perf rmance de v tre suppl chain par la maitrise des ú nes de st ckageÊ$ÊÊ6Ê7... #Êesti n industrielle $B

Nesse sentido, o presente trabalho avaliará o potencial do uso dois substratos orgânicos para utilização em jardins flutuantes como ferramenta na revitalização de

Baseados no resultado dos procedimentos de auditoria efetuados sobre a mensuração do valor justo dos instrumentos financeiros e derivativos complexos e ilíquidos, que está

Realice el proceso Calc-Clean para activar de nuevo la función de vapor (consulte el capítulo “IMPORTANTE: Limpieza y mantenimiento”).. El piloto Calc- Clean parpadea y el

Sendo assim, o presente estudo pretendeu avaliar as características acústicas das salas de aula e o ruído presente nas mesmas, assim como sua relação com o desempenho dos

Desenvolvimento de um sistema integrado para modelagem de fluxo e transporte em meios porosos e fraturados / Isabelle de Araujo Telles ; orientador: Eurípedes do Amral Vargas

ENTRADA - TÉCNICO EM MEIO AMBIENTE - MANHÃ TIPO DE VAGA: COTISTA NÃO.. ENTRADA - TÉCNICO EM MEIO AMBIENTE