Buscar

CAPÍTULO 12 - CONTROLE DE ERROS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CAPÍTULO XII - CONTROLE DE ERROS


1. INTRODUÇÃO

	Infelizmente, os ruídos e as imperfeições presentes nos canais de comunicação faz com que tenhamos a ocorrência de erros nas transmissões de dados. Para ilustrarmos estas imperfeições vamos tomar um exemplo simples: você já deve ter notado, quando está utilizando o telefone, que durante a conversação aparecem vários tipos de ruídos e interferências que causam um prejuízo na mensagem. Felizmente, o nosso célebro possui excelentes características de “processamento” e consegue, na maioria das vezes, se adaptar às mudanças nas características de transmissão, minimizando desta forma os efeitos do ruído. Por exemplo, se um “estalido” na linha destrói uma palavra, nós, usualmente, conseguimos recolocar a palavra no contexto, sem a necessidade de solicitarmos à outra pessoa que repita a palavra. Ainda, se as condições da linha se deterioram demasiadamente, podemos pedir ao nosso interlocutor para falar mais compassadamente ou mais claramente.
	Quando substituímos as pessoas por computadores, e passamos a trocar dados pelo canal de comunicação a coisa muda de figura. Os computadores não possuem a mesma adaptabilidade dos seres humanos, não sendo capazes de, sozinhos, recompor dados que tenham sido recebidos com erro. Para que esta recomposição seja possível, devemos utilizar técnicas especiais para detecção e correção de erros. A única forma de viabilizarmos a descoberta de erros por parte do computador é introduzirmos algum tipo de redundância na mensagem, de forma que o mesmo possa, a partir da análise da mensagem e dos bits de redundância recebidos, detectar a possível ocorrência de erros e, caso a mesma ocorra, implementar algum método de correção (quando isto for necessário). A introdução de redundância é feita através da utilização de códigos apropriados, os chamados códigos de detecção e/ou correção de erros.
	A opção por um código detector ou corretor de erros se dá em função das características do sistema (velocidade de transmissão, tipo de transmissão - duplex, half, simplex -, tempo de reversão do sentido de transmissão, etc). Já a escolha de um código específico (quer seja detector ou corretor) deve levar em consideração a complexidade de implementação do mesmo, a taxa de erros não detectados suportada pelo sistema e a eficiência do código.


2. TAXA DE OCORRÊNCIA DE ERROS

	A taxa de ocorrência de erros em um sistema de transmissão de dados varia com a taxa de transmissão. A figura 12.l mostra o efeito de um burst de 2 milisegundos de duração em sistemas transmitindo a diferentes taxas. Se nós transmitimos os dados a uma taxa de 50 bits por segundo, cada bit terá uma duração de 20 milisegundos. O receptor decide se o bit é 0 ou 1 através da amostragem do dado, sendo que esta deve ser feita, preferencialmente, no centro de cada bit. O receptor efetivamente toma um instantâneo do bit para determinar seu valor. Se o burst ocorre no instante em que o receptor está amostrando o bit, pode ou não ocorrer um erro, dependendo das condições instantâneas apresentadas pelo ruído. Para uma transmissão a 50 bits por segundo, é bastante improvável que um burst de 2 milisegundos acarrete em erros, uma vez que há apenas uma chance em dez do burst ocorrer no instante em o bit está sendo amostrado.
	Se nós elevamos a taxa de transmissão para 1000 bits por segundo cada bit dura cerca de 1 milisegundo, e o burst de 2 milisegundos afeta dois bits de uma só vez. Neste caso, é bastante provável que um ou ambos bits sejam alterados. Se nós incrementamos a taxa de transmissão para 10000 bps, teremos 20 bits contidos no espaço de 2 milisegundos (duração do burst). Desta forma, certamente um ou mais destes bits serão modificados.



�



Figura 12.l - Influência da velocidade de transmissão na taxa de erros.



	A moral da história é que para uma dada linha, nós temos mais propensão a erros quando utilizamos taxas maiores de transmissão dos dados. A tabela 12.l nos dá um indicativo da taxa de erros que pode ser esperada quando efetuamos transmissão de dados sob uma rede telefônica, a diferentes taxas de transmissão. A faixa de valores mostrada para a taxa de 9600 bps é decorrente do fato de termos uma grande variedade de qualidade dos circuitos telefônicos em uso. Dependendo do circuito selecionado para a sua chamada ser de alta qualidade ou de baixa qualidade, nós teremos uma menor ou maior taxa de erros. Para transmissões a baixas velocidades, o sistema é relativamente insensível a variações de qualidade no circuito.


	
TAXA DE TRANSMISSÃO�TAXA DE ERROS��1200 bps�1 em 200.000��2400 bps�1 em 100.000��9600 bps� 1 em 1.000 a
1 em 10.000��

Tabela 12.1 - Taxas de erro típicas.




	A tabela 12.1 nos mostra que, em muitos casos, temos um limite máximo de 1200 bps para transmissão de dados sob uma rede telefônica comutada. Isto ocorre pois taxas de erro superiores a um em 100.000, ou mesmo entre 1 em 100.000 a 1 em 200.000 são inaceitáveis para a maioria dos sistemas. Contudo, muitas redes conseguem “sobreviver” a linhas com altas taxas de erro. Isto ocorre dada à tendência dos erros ocorrerem em bursts (isto é, bits de erro não são randomicamente distribuídos; entretanto, bursts de erros são randomicamente distribuídos).
	Quando os dados são transmitidos em blocos, o tamanho destes influencia diretamente no número de retransmissões devidas a erro necessárias. Isto ocorre pois um bloco com um bit errado é tão inútil quanto um bloco com 10 ou 15 bits errados. Assim, se nós temos, digamos, 100 impulsos de ruído de um bit de comprimento distribuídos randomicamente sobre um dado período, podemos ter 100 blocos de dados afetados. Se o mesmo número de impulsos de ruído são agrupados em um determinado número de bursts, sobre o mesmo período de tempo, nós temos um número significativamente menor de blocos afetados.


3. CONDICIONAMENTO DA LINHA

	Os vários ruídos presentes na linha telefônica são causados por chaveamentos nas centrais telefônicas e, também, por influências externas, tais como relâmpagos, falhas de alimentação, forças elétricas e magnéticas associadas com outras linhas ou equipamentos. Ruídos impulsivos na linha telefônica geralmente ocorrem um bursts, com tendência a ocorrerem randomicamente. [Erros podem ocorrer sistematicamente (isto é, a intervalos regulares) ou de alguma outra forma previsível (tal como uma falha de hardware), sempre causando um padrão de erro particular. Por causa da sua natureza previsível, erros sistemáticos são tratados mais facilmente que erros randômicos.]
	Quando nós dedicamos uma linha e a temos permanentemente conectada entre terminal e computador, torna-se possível “by-passar” o equipamento de chaveamento da central telefônica e, desta forma, reduzir substancialmente a quantidade de ruído na linha. Ainda, como a linha estará dedicada a esta aplicação, podemos efetuar medidas de performance na mesma e adicionar componentes elétricos para alterar suas características. Este processo, conhecido como condicionamento, melhora as características da linha e, conseqüentemente, reduz a taxa de erro. Desta forma, podemos utilizar taxas de transmissão maiores (tal como 9600 bps) com taxas de erro aceitáveis.
	O processo de condicionamento somente pode ser aplicado a linhas dedicadas. Isto ocorre uma vez que o processo de seleção de linha na central telefônica é randômico e, desta forma, não podemos conhecer exatamente quais as características da linha a ser utilizada e, conseqüentemente, quais os componentes que devem ser adicionados de forma a melhorar as características da mesma.


4. EQUALIZAÇÃO

	Modems modernos são capazes de monitorar a condição da linha e do sinal recebido e automaticamente neutralizar certas variações do comportamento normal. Este processo é conhecido como equalização, sendo hoje, freqüentemente, um processo automático. Os resultados obtidos pela equalização não são tão bons quanto àqueles obtidos pelo condicionamento da linha. Entretanto, transmissões a 4.800 bps sobre uma linha telefônica comutada tem sidoconseguida.



5. EFICIÊNCIA E REDUNDÂNCIA

	Pelas razões mostradas acima podemos afirmar que “erros são inevitáveis em qualquer sistema de comunicação real”. Assim, devemos dispor de meios que permitam diminuir os efeitos destes erros no sistema. Tais meios são os códigos detectores/corretores de erros.
	Através da utilização destes códigos conseguimos taxas de erros tão baixas quanto queiramos (porém sempre um número finito), bastando para isto que tenhamos um alto grau de redundância. Note entretanto que um alto grau de redundância significa uma baixa eficiência, pois teremos uma grande parcela de bits “extras” (redundantes) transmitidos. Assim, para a definição do código a ser utilizado, devemos adotar uma solução de compromisso entre eficiência e taxa de erros, sendo que esta solução depende fortemente das características do sistema. Por exemplo, um sistema que transmite textos é menos vulnerável a erros que um sistema de transmissão de dados financeiros e, portanto, pode utilizar um código mais simples (com menor taxa de redundância).
	Falamos muito no parágrafo anterior de eficiência e redundância, vamos agora definí-las formalmente:

- EFICIÊNCIA = (Bits de informação transmitidos)/(Total de Bits transmitidos) * 100%.

- REDUNDÂNCIA = 100% - Eficiência %.

	Olhando para essas definições podemos observar que, quanto maior for a redundância menor a eficiência, mas, por outro lado, maior a confiabilidade obtida (uma vez que teremos uma menor taxa de erros não detectados). Assim, temos de adotar um compromisso entre eficiência e confiabilidade, compromisso este que se norteará pelas características do sistema.


6. DETECÇÃO DE ERRO

	A detecção de erro pode ser feita pelo próprio operador, quando utilizamos a técnica de eco (como veremos mais tarde) ou de forma automática (que é a tendência nos sistemas modernos). A detecção e/ou correção automática minimiza a intervenção do operador e resulta em uma melhoria na performance do sistema, uma vez que se elimina o tempo de reação relativamente longo que é natural às pessoas.
	A detecção automática é implementada através da utilização de códigos detectores de erro, que se baseiam, comumente, na metodologia apresentada na figura a seguir.
















�

Figura 12.2 - Metodologia de check de erros.


	Os códigos detectores de erro simplesmente determinam se ocorreu um erro na transmissão, não possibilitando a correção automática do mesmo [4]. Assim, estes códigos não previnem quanto a ocorrência de erros e sim quanto a ocorrência de erros não-detectados.
	A ação tomada quando um erro é detectado depende do sistema. Por exemplo, se as transmissões são de dados tomados por amostragem para um processo estatístico qualquer, os dados detectados como incorretos podem ser descartados sem maiores conseqüências para o resultado. O mais comum, entretanto, é a solicitação de uma retransmissão dos dados detectados como incorretos. Ainda, no sistema com retransmissão dos dados, uma importante questão a ser definida é o “protocolo” de retransmissão. Os três tipos básicos de protocolos para retransmissão são [3]: stop-and-wait, go-back-N e selective-repeat.
	No protocolo stop-and-wait o terminal aguarda uma resposta de reconhecimento da mensagem transmitida e, caso esta resposta seja negativa, retransmite a mensagem. Este protocolo apresenta uma grande simplicidade de implementação e é normalmente utilizado em sistemas onde a espera pela confirmação após cada mensagem não acarrete uma perda elevada de eficiência (sistema de TEF, por exemplo). Ainda, como teremos mensagens trafegando em apenas um sentido de cada vez, podemos utilizar uma linha half-duplex.
	No protocolo go-back-N o terminal envia mensagens consecutivamente sem aguardar mensagem de reconhecimento do receptor. Quando uma mensagem é detectada errada, o receptor informa ao terminal, através de um canal de retorno, e o mesmo retransmite todas as mensagens a partir daquela detectada como errada.
	Finalmente temos o protocolo selective-repeat, que apresenta como diferença relativamente ao protocolo go-back-N o fato do terminal repetir apenas aquela mensagem detectada incorreta. A primeira vista isto pode representar uma vantagem inquestionável com relação ao protocolo anterior. Entretanto o receptor neste caso deve ser capaz de reordenar as mensagens recebidas, uma vez que a mensagem retransmitida chegará fora de sua ordem normal, o que pode caracterizar uma desvantagem.


7. CORREÇÃO DE ERROS

	A correção de erros pode ser implementada através de códigos detectores e protocolos de retransmissão, como discutido acima, ou através de códigos corretores de erros. A correção através da retransmissão da(s) mensagens é a forma mais segura de se efetuar a correção, mas nem sempre a mais eficiente[4]. Os códigos corretores de erros são frequentemente utilizados em sistemas unidirecionais, onde o fato de não termos formas de sinalizar a ocorrência do erro impede a existência de retransmissão, como por exemplo em alguns sistemas de telemetria e telecontrole. Estes códigos também são utilizados em sistemas que operam a uma velocidade muito alta, onde o tempo de reversão da direção de transmissão (ou o tempo de propagação do sinal) são muito elevados; neste sistema, teríamos uma elevada queda de eficiência caso efetuássemos a transmissão de mensagens de reconhecimento, permitindo a implementação de um protocolo de retransmissão.


8. CÓDIGOS DETECTORES DE ERROS


8.1. TÉCNICA DE ECO

	Esta é uma das formas mais simples de detecção de erro, normalmente utilizada em sistemas com terminais simples e operador humano. Nesta técnica o terminal transmite o caracter ao host, que o armazena e retransmite de volta ao terminal (eco). Assim, o operador pode detectar a ocorrência de possíveis erros. A figura 12.3 ilustra a idéia.

�
Figura 12.3 - Técnica de eco.
	Poderíamos ainda imaginar uma variação onde o terminal comparasse automaticamente os dados transmitidos com os dados recebidos de volta (eco), e efetuasse a retransmissão automaticamente. Entretanto esta idéia não é muito viável, pois, apesar de apresentar uma baixa taxa de erros não detectados, possui uma eficiência muito baixa (50% dos dados transmitidos são redundantes). Uma aplicação pode ser feita em sistemas full-duplex onde temos um dos canais com grande ociosidade. 


8.2. DETECÇÃO DE ERRO POR PARIDADE

	Alguns sistemas de transmissão de dados utilizam uma técnica bastante simples de detecção de erros, que é a chamada Vertical Redundancy Checking (VRC). Nesta técnica cada caracter transmitido é acompanhado de um bit de paridade. O bit de paridade é escolhido de forma que tenhamos um número par (paridade par) ou ímpar (paridade ímpar) de bits 1 no caracter. Para ilustrar, veja a figura a seguir.

		Paridade Ímpar	0 l l 0 l 0 l l
		Paridade Par		0 l l 0 l 0 l 0

						Bits de dados Bit de paridade

Figura l2.4 - Bit de paridade.


	Como já era de se esperar devemos pagar um preço por esta simplicidade, e este preço é a baixíssima segurança apresentada por este código. Em transmissão de dados um pulso de ruído freqüentemente apresenta duração maior que um bit. Assim, uma vez que a ocorrência de um número par de bits errados em um caracter faz com que o erro não possa ser detectado, este código apresenta uma segurança bastante reduzida.


8.3. DETECÇÃO DE ERRO POR BLOCO DE PARIDADE

	No ítem acima vimos uma forma simples de fazermos detecção de erros. Agora, vamos utilizar o mesmo conceito de paridade e abordar uma técnica mais eficiente. Em sistemas onde os dados são transmitidos em blocos, utilizando-se terminais com buffer, podemos estender a “potência” da detecção por paridade criando um caracter de check do bloco (block check character - BCC), que é transmitido ao fim do bloco de dados (vide figura l2.5).

�


Figura 12.5 - Transmissão do caracter BCC.
	O caracter BCC é gerado da seguinte forma: o bit l do caracter BCC é um bit de check de paridade (par ou ímpar) entre todos os bits l de todos caracteres. O bit 2 é um bit de check de paridadeentre todos os bits 2 de todos os caracteres, e assim por diante. Note ainda que cada caracter possui seu bit de paridade. Desta forma temos um check de paridade horizontal (bit de paridade de cada caracter) e um check de paridade longitudinal (caracter de paridade do bloco). Para ilustrar a montagem do caracter BCC veja a figura 12.6.

BIT�CARACTER��P�7�6�5�4�3�2�1���1�1�0�0�0�0�0�1� 1��1�1�0�0�0�0�1�0� 2��0�1�0�0�0�0�1�1� 3��1�1�0�0�0�1�0�0� 4��0�1�0�0�0�1�0�1� 5��0�1�0�0�0�1�1�0� 6��1�1�0�0�0�1�1�1� 7��1�1�0�0�1�0�0�0� 8��0�1�0�0�1�0�0�1� 9��0�1�0�0�1�0�1�0�10��1�1�0�0�1�0�1�1�11��0�1�0�0�1�1�0�0�12��1�1�0�0�1�1�0�1�13��1�1�0�0�1�1�1�0�14��1�0�0�0�1�1�1�1�BCC��



















Figura 12.6 - Caracter BCC.


	Acabamos de ver qual é o procedimento para se gerar o caracter BCC. Uma vez isto entendido devemos analisar como o mesmo é utilizado para a detecção de erros.
	Como vimos existe uma regra para a geração do BCC. Assim, para verificar se houve erro na transmissão basta que o receptor calcule um BCC, baseado nos dados que recebeu e o compare com o BCC recebido. Se houver diferença entre estes caracteres temos um erro detectado. Note no entanto, que o fato dos caracteres serem iguais não significa, obrigatoriamente, que não tenha ocorrido nenhum erro uma vez que algumas combinações de erros não podem ser detectadas (como veremos a seguir). Finalmente vale lembrar que o receptor deve, além de comparar os caracteres BCC observar os bits de paridade de cada caracter.
	Dissemos acima que esta técnica não é capaz de detectar todos os padrões de erro (coisa que, aliás, nenhuma delas o é). Vamos analisar então, quais as potencialidades e limitações desta técnica. Para tal, veja a figura l2.7.

�

Figura l2.7 - Detecção de erro por bloco de paridade.


	Inicialmente podemos verificar que esta metodologia permite detectar e corrigir todos os erros de l único bit. Vamos ver como isto é possível: admita que na figura anterior o bit 5 do caracter 2 está errado (onde aparece zero deveria aparecer l). Ora, este erro causa, simultaneamente, duas violações da regra de paridade: a primeira é apresentada pelo bit de paridade do caracter (2), enquanto que a segunda é apontada pelo bit de paridade (5) do caracter BCC. Note que a violação do bit de paridade do caracter permite a identificação do caracter que apresenta erro, enquanto que a observação do caracter BCC permite a identificação de qual bit daquele caracter está errado. Uma vez determinado o bit errado, basta inverté-lo para que a correção se realize.
	Vamos continuar analisando as características desta técnica quanto à capacidade de detecção de erro. Para isso, vamos considerar agora o caso de termos dois bits errados no mesmo caracter. Neste caso, como já sabemos o erro não pode ser detectado pelo bit de paridade do caracter, restando-nos a análise do BCC. Analisando este caracter (vide figura xx) verificamos que é possível somente a detecção, e não a correção de erros. Da mesma forma se dois erros ocorrerem em bits de mesma posição, em caracteres diferentes, o erro poderá ser detectado (e não corrigido), através da análise do bit de paridade de cada caracter, uma vez que neste caso o caracter BCC não se altera. Pelo que acabamos de expor podemos ver que a paridade horizontal e vertical se complementam na detecção de erro, permitindo que obtenhamos uma pequena taxa de erros não-detectados.
	Podemos agora fazer a seguinte pergunta: quando não é possível detectar erros com esta técnica? A resposta é a seguinte: sempre que tivermos uma quantidade par de bits errados em um número par de caracteres e, ainda, que os bits errados em caracteres diferentes ocupem a mesma posição. Para ilustrar olhe novamente para figura xx. Nela mostramos dois caracteres (6 e 7) que apresentam dois bits errados de mesma posição (bits 2 e 3). A detecção do erro pelo bit de paridade de cada caracter não é possível, uma vez que temos um número par de bits errados em cada caracter. Da mesma forma o erro não pode ser detectado pelo caracter BCC, já que temos um número par de erros em bits de mesma posição (bits 2 e 3 dos caracteres 6 e 7). Assim, este erro não será detectado. Entretanto, você há de convir que este tipo de erro não é muito comum.


8.4. CYCLIC REDUNDANCY CHECKING

	A detecção de erro através da utilização de CRC é hoje bastante difundida, uma vez que esta técnica apresenta um desempenho bastante bom e uma grande facilidade de implementação.
	Para entendermos melhor este código vamos nos valer de algumas propriedades da divisão de polinômios.
	Inicialmente vamos supor que o bloco de dados a ser transmitido é composto de k bits. Podemos representar esses dados por um polinômio de variável x, tendo k termos - polinômio de ordem (k - l). Se nós representarmos os bits do bloco de dados pelos termos ak-l + ak-2 + ... + a2 + a + a0, o polinômio é escrito:

M(x) = ak-1xk-l + ak-2xk-2 + ... + a2x2 + ax + a0

	Para exemplificar, seja a mensagem 1010001101, que pode ser representada pelo polinômio:

M(x) = 1.x9 + 0.x8 + l.x7 + 0.x6 + 0.x5 + 0.x4 + l.x3 + l.x2 + 0.x1 + l.x0 = x9 + x7 + x3 + x2 + l

	A idéia do método é pegar o polinômio representativo da mensagem [M(x)] e dividir por um polinômio gerador P(x). Desta divisão resultará um quociente e um resto, é desprezado e o resto é transmitido junto com a mensagem, seguindo os passos mostrados no exemplo abaixo. O polinômio P(x) é um polinômio de grau r, onde r é menor que o grau do polinômio representativo da mensagem, e deve ser maior que zero (ou seja, deve ser terminado por l).

EXEMPLO: Seja transmitir a mensagem representada pelo polinômio M(x) = x9 + x7 + x3 + x2 + l utilizando como método de detecção de erro a técnica de CRC, com um polinômio gerador P(x) = x5 + x4 + x2 + 1.

	Para gerarmos o padrão a ser transmitido devemos seguir os seguintes passos:

1) A mensagem M(x) é multiplicada por xr, o que equivale a acrescentar r zeros nas posições menos significativas. No exemplo teríamos:

xrM(x) = x5.M(x) = x14 + x12 + x8 + x7 + x5 ou x5M(x) = 1000100110100000

2) O resultado da multiplicação é dividido por P(x) [operação em módulo 2], resultando em um quociente e um resto.

[xr.M(x)/P(x)] = Q(x) <+> R(x)/P(x)

onde <+> representa adição em módulo 2.
	No exemplo teríamos:

Q(x) = x9 + x8 + x6 + x4 + x2 + x

R(x) = x3 + x2 + x

3) O resto é adicionado na mensagem para a transmissão, resultando no seguinte padrão transmitido.

T(x) = xrM(x) <+> R(x)

que no exemplo seria

T(x) = x14 + x12 + x8 + x7 + x5 <+> x3 + x2 + x = x14 + x12 + x8 + x7 + x5 + x3 + x2 + x

ou T(x) = 101000110101110

	Note que toda esta operação equivaleu a acrescentarmos os 5 bits (ordem do polinômio gerador é 5) 01110 ao fim da mensagem original. Estes 5 bits são redundantes e permitem a detecção dos erros.
	Acabamos de ver como a mensagem é montada para a transmissão. Agora, vamos tentar entender como o receptor consegue determinar se houve erro na transmissão.
	Vimos no processo de geração do pacote de transmissão que a divisão inicial é representada pela equação

[xr.M(x)/P(x)] = Q(x) <+> R(x)/P(x)

rearranjando temos

xr.M(x) = Q(x).P(x) <+> R(x)

	Em módulo 2 tanto faz somar ou subtrair (pois não há transporte). Assim, podemos escrever:

xr.M(x) <+> R(x) = Q(x).P(x)

	Lembrando que a mensagem transmitida é representada por T(x) = xr.M(x) <+> R(x), podemos escrecer

T(x) = Q(x).P(x)

	Esta expressão nos mostra uma importante propriedade desta técnica. Como podemos ver, a mensagem transmitida é divisível, exatamente, pelo polinômio gerador P(x). Esta propriedade permite a verificação da ocorrência de erro com uma grande facilidade. Para tal basta que o receptor divida a mensagem recebida T(x) pelo polinômio gerador P(x) e analise o resultado. Como T(x) é divisível (exatamente) por P(x), o resto deve ser zero. Se houver algum resto desta divisão temos a caracterização de um erro.
	Para exemplificar seja a mensagem 101000110101110 que é representada pelo polinômio T(x) = x14 + x12 + x8 + x7 + x5 + x3 + x2 + x e o polinômio geradorP(x) = x5 + x4 + x2 + 1. Se não há erros o receptor receberá o próprio T(x). O receptor efetuará, então, a divisão de T(x) por P(x), que resultará em um quociente Q(x) = x9 + x8 + x6 + x4 + x2 + x, não tendo resto.
	Como podemos ver esta divisão não apresentou resto, o que caracteriza que não houve detecção de erro.
	Se ocorrer um erro o padrão transmitido será alterado, e o resto da divisão acima não será zero (se o erro for detectado). O padrão de erro pode ser representado por um polinômio E(x). Assim, a mensagem recebida será T(x) + E(x). Se T(x) + E(x) for exatamente divisível por P(x), o erro não poderá ser detectado, uma vez que o resto da divisão efetuada pelo receptor será zero.
	Como já vimos, T(x) é sempre divisível por P(x). Logo, para que T(x) + E(x) seja divisível por P(x), E(x) também deverá sê-lo. Logo, podemos afirmar: se E(x) é divisível (exatamente) por P(x) o erro não poderá ser detectado, em caso contrário o erro será detectado. Devido a esta propriedade, e conhecendo as características do meio de transmissão, podemos escolher o polinômio P(x) de forma a termos uma taxa de erros não-detectados bastante pequena. Assim, devemos escolher o polinômio gerador baseado no padrão de erro mais provável de ocorrer no canal em questão.
	Como acabamos de ver, nem todos os erros serão detectados. A tabela a seguir nos mostra um sumário da proteção obtida quando escolhemos um polinômio tendo (x+1) como fator, e um fator com 3 ou mais termos.
TIPO DE ERRO�PROTEÇÃO��1 bit�100%��2 bits (separados ou não)�100%��No ímpar de erros�100%��Burts de erros com menos de (r + 1) bits�100%��Burts de erros de exatamente (r + 1) bits�Pd = [1 - (1/2)r-1]��Burts de erros com mais de (r + 1) bits�Pd = [1 - (1/2)r ]��


	As probabilidades indicadas pelos dois últimos termos acima assumem uma probabilidade de ocorrência igual para qualquer padrão de erros.
	Como vimos, a escolha do polinômio gerador é importante para o desempenho do sistema. Apresentamos abaixo três tipos de polinômios geradores padrão que tem sido bastante utilizados. Estes polinômios são [3]:

	
	CRC-12		P(x) = 1 + x + x2 + x3 + x11 + x12
	CRC-16		P(x) = 1 + x2 + x15 + x16
	CRC-CCITT		P(x) = 1 + x5 + x12 + x16


	Em alguns casos, onde necessitamos de uma grande capacidade de detecção de erros, o polinômio P(x) = 1 + x + x2 + x4 + x5 + x7 + x8 + x10 + x11 + x12 + x16 + x22 + x23 + x26 + x32 tem sido utilizado.
�9. BIBLIOGRAFIA:

1) Housley, Trevor. Data Communications and Teleprocessing Systems. Prentice-Hall, Inc. New 	Jersey.

2) BREWSTER, R.L. Communications Systems and Computer Networks. Ellis Horwood Limited. 	Chichester, 1989.

3) BARTEE, Thomas C. Data Communications, Networks and Systems. Howard W. Sams & Co, 	Inc. Indianápolis, 1985.

4) TOMASI, Wayne. Advanced Electronic Communications Systems. Prentice-Hall, Inc. New 	Jersey, 1987.

5) MARTIM, James. Teleprocessing Network Organization. Prentice-Hall, Inc. New Jersey, 1970.

CEDETEC												� PÁGINA �1�

Outros materiais