TELECOMUNICAÇÕES
185 pág.

TELECOMUNICAÇÕES


DisciplinaPropagação e Antenas115 materiais1.603 seguidores
Pré-visualização28 páginas
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 \u201cpotência\u201d 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 paridade entre 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