









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento explica o funcionamento do crc (cyclic redundancy check), uma técnica usada para detecção de erros na transmissão de dados digitais. O crc é baseado em aritmética polinomial e envolve a adição de check bits aos dados transmitidos para garantir a verificação de erros. O documento aborda a codificação de dados, as incapacidades do meio de comunicação, a importância de algoritmos de verificação de erros, e o funcionamento prático do crc.
O que você vai aprender
Tipologia: Slides
1 / 15
Esta página não é visível na pré-visualização
Não perca as partes importantes!
O objectivo da codificação de dados é a eficiência do transporte dos mesmos através de um meio específico. Esse meio pode ser um cabo de cobre de par entrelaçado, cabo coaxial de cobre, cabo óptico ou ar. Cada tipo de meio de comunicação tem uma série de incapacidades que se traduzem em erros na transmissão de dados. Estes erros podem incluir a reflexão do sinal, a atenuação do sinal, distorção harmónica, distorção de fase, eco, interferência, ruído gaussiano e de mudança de frequência. Todas estas deficiências afectam a capacidade de transporte de dados. Em alguns casos, esses factores podem causar um número excessivo de erros. Assim sendo é necessário implementar algoritmos de verificação de erros nos dados transmitidos. É possível a utilização de métodos ad-hoc para gerar checksums de verificação de dados, mas usa-se, normalmente, sistemas padrão com propriedades bem compreendidas como é o caso do CRC. Este documento tem como finalidade explicar e descrever o funcionamento do CRC.
O CRC (Cyclic Redundancy Check) é uma técnica usada para detecção de erros na transmissão de dados digitais No método CRC são adicionados check bits normalmente chamados de checksum. Estes são anexados à mensagem que irá ser transmitida. O receptor pode assim determinar se os check bits estão de acordo com os dados transmitidos e determinar com um certo grau de certezas se ocorreram erros na transmissão ou não. Se ocorrer um erro o receptor envia um “negative acknowledgement” (NAK) de volta ao emissor, pedindo para que a mensagem seja retransmitida.
O CRC é baseado em aritmética polinomial, em particular, sobre a computação do resto da divisão de um polinómio em GF(2) - Galois field with two elements - por outro. Um polinómio em GF (2) é um polinómio com uma única variável x cujos coeficientes são 0 ou 1. A adição e subtracção são feitas em módulo para 2. A aritmética módulo 2 pode ser facilmente calculada através de uma operação de ou-exclusivo realizada bit a bit entre os coeficientes do polinómio, ou seja, dos dígitos binários. Podemos notar que as duas operações tem sempre o mesmo resultado equivalente ao da operação lógica de ou exclusivo (ou XOR, da sigla em inglês exclusive OR). Como exemplo podemos somar o polinómio e. O primeiro passo é a transformação do polinómio em um número binário: e Procedemos então ao ou-exclusivo bit-a-bit (designada também por "soma polinomial em módulo 2"):
Resto: , em binário 1001 Quociente: , em binário: 110001
No CRC o são adicionados à trama bits checksum para que garantir que a trama final é divisível por um polinómio g(x) denominado por polinómio gerador. Assim sendo, podemos transformar uma trama F(x) numa trama T(x) que é divisível por g(x). Se houver erros em T(x), estes assumem a forma de uma string diferente E(x) e, no final, os bits recebidos são T(x)+E(x).
Quando o receptor recebe uma trama correcta, ela é dividida pelo polinómio g(x) e o resto da divisão obtida é nula. A questão que se coloca é quando é que a trama recebida T(x)+E(x) quando dividida pelo g(x) retorna um resto de divisão nulo? Erro num único bit? Um erro num único bit significa que E(x) vai apenas ter um único termo. Se g(x) for de grau n a divisão nunca vai ser nula; Erro em múltiplos bits? Diferentes polinómios geradores são usados com propriedades diferentes. Deve haver um factor no polinómio que assegura a detecção de erros em todos os bits impares (1,3,5,…) Alguns polinómios geradores comummente utilizados são:
CRC 12 bits: CRC 16 bits: CRC 32 bits:
CRC CCITT:
Pegando no Exemplo 1, anteriormente descrito, onde o nosso (11001) e considerando o nosso. Assim, se dividirmos o F(x) por g(x) e o resto for anexado ao F(x) obtém-se o T(x). Segundo os cálculos anteriores, T(x)= 1010111001. Quando estes dados forem recebidos são divididos e, se a recepção dos dados for correcta, o resto da divisão será nula.
A Tabela 1 mostra os polinómios gerados mais usados para alguns CRC standards.
TABELA 1 - POLINÓMIOS GERADORES DE ALGUNS CRC STANDARD
O CRC-12 é usado para transmissões de conjuntos de caracteres de 6bits, é usado ainda em conjuntos de caracteres de 8 bits ou ainda em dados arbitrários de 8 bits.
O diagrama de blocos é apresentado de seguida. Os dados são deslocados para a linha de entrada de dados. Após todos os dados serem deslocados, o resto será guardado nos registos de 0 a 11.
FIGURA 1- DIAGRAM A DE BLOCOS DO CRC-
CRC – 32 é também conhecido como AUTODIN-II e ITU-TSS (ITU-TSS definiu tanto polinómios de 16 e 32 bits). É usado em PKZip, Ethernet, AAL5, (ATM Adaptation Layer 5), FDDI (Fiber Distributed Data Interface), o protocol IEEE-802 LAN/MAN e em algumas aplicações DOD.
O diagrama de blocos é apresentado de seguida. Os dados são deslocados para a linha de entrada de dados. Após todos os dados serem deslocados, o resto será guardado nos registos de 0 a 31.
FIGURA 4 - DIAGRAM A DE BLOCOS DO CRC-
Como foi possível verificar anteriormente, a divisão de polinómios seria mais fácil se todos os coeficientes forem 1. Isto porque existe um circuito que pode realizar os cálculos de uma trama de forma continua. O circuito é construído através de portas lógicas XOR (ou-exlusivo) e shift registers.
FIGURA 5 - PORTAS LÓGICA XOR (À ESQUERDA) E SHIFT REGISTER (À DIREITA)
A tabela seguinte mostra as funções lógicas destas duas portas lógicas.
TABELA 2 - FUNÇÕES LÓGICAS DO XOR E DO SHIFT REGISTER
A saída do XOR dá a função de ou-exclusivo de dois sinais de entrada enquanto que a saída do shift register Q muda o valor de entrada quando se dá um rising do clock. Circuitos simples podem ser contruidos através desta lógica para realizar a divisão de polinómios. O circuito mostrado em baixo tem 5 shift registers o que corresponde a uma sequência de 5 bits de checksum (grau 5 do polinómio gerador) e um polinómio gerador de comprimento de 6 bits. Neste exemplo, o polinómio gerador é 100101 (o shift register mais à esquerda corresponde ao bit menos significativo do polinómio gerador).
Se houver apenas 0s no sistema e colocarmos à entrada os dados 101101011, obtém-se os seguintes estados:
Este documento analisou e explicou o funcionamento do código de verificação de erros CRC. Quando a linha de transmissão é longa e é afectada por ruídos, técnicas mais avançadas de verificação de erros são implementadas. A redundância pode ser acrescentada ao código para garantir um melhor desempenho do sistema. Quando os sistemas são mais avançados devem ser usados códigos de controlo de erros mais complexos como é o caso de verificação de paridade, checksums, CRCs. Em todos os casos, a redundância resultante da utilização destes códigos permite ao sistema tolerar uma relação sinal/ruído menos para uma taxa de transmissão de dados fixa e, consequentemente, permite reduzir o número de erros na transmissão de dados.