TRANSMISSÃO DE DADOS PROTEGIDOS POR CÓDIGOS CORRETORES DE ERRO Aluno: Débora Almeida Oliveira Orientador: Weiler Alves Finamore 1.Introdução Este trabalho tem como objetivo demonstrar a utilização de códigos durante a transmissão de bytes através de um canal e auxiliar o estudo de suas vantagens e desvantagens. O MATLAB foi usado como ferramenta para realizar a simulação das curvas das estratégias do módulo decisor(smart). Figura 1: Esquema de transmissão de imagem 2.Transmissão pelo Canal BEC O canal de comunicação modela o meio físico através do qual é transportada a informação desde o transmissor até o receptor. Tomaremos como exemplo o Canal BEC ( Binary erasure channel). Neste modelo, um transmissor envia um bit(um zero ou um), e o receptor recebe o bit ou ele recebe uma mensagem de que o bit não foi recebido( apagado ). Este canal foi introduzido em 1954 por P Elias e é muito utilizado na teoria da Informação porque é um dos mais simples canais para analisar. Um canal de apagamento binário com probabilidade apagamento p é um canal com entrada binária e de saída ternária. Com uma probabilidade de apagamento p e a capacidade do canal 1 p.
Figura 2: Probabilidade de transição 3.Codificação Pode-se afirmar que hoje praticamente todo sistema de envio de informações possui algum tipo de código corretor de erros. Como exemplos típicos, temos a telefonia digital, a transmissão de dados via satélite e a comunicação interna em computadores. A utilização de códigos permite que erros de transmissão sejam corrigidos ou evitados. Codificação de Bloco de Hamming O código de Hamming é um código para a detecção de erros em transmissões de dados binários. É geralmente usado para comunicações em que o grau de correcção de erros seja importante de ser efectuado. Este código de transmissão foi implementado por Richard Hamming. Estes códigos, que podem ser utilizados na detecção e correcção de erros, caracterizam-se geralmente na forma (n,k). Neste tipo de técnica de codificação, a informação original é fragmentada em segmentos com k bits. O codificador transforma k bits de informação num bloco codificado mais longo com n bits, em que os bits codificados são apenas função dos bits de informação colocados à entrada do codificador. Adicionam-se portanto n-k bits redundantes a cada bloco de k bits de informação com o propósito de detectar e corrigir erros. A capacidade correctora do código depende da utilização de apenas uma fração das 2^n palavras de código disponíveis. A razão r = k/n é
chamada de taxa do código, e pode ser interpretada como o número de bits de informação que entra no codificador por bit transmitido. A codificação é feita através de uma matriz geradora G. A matriz geradora tem o seguinte formato: G [P I ] k x n Processo de Codificação v = m G m = palavra código v = palavra de informação Capacidade de Detecção de Erros número de erros detetáveis <= ( dmin - 1) Capacidade de Correção de Erros t [ (dmin 1) / 2] O código corrige todos os padrões de erros com t ou menos erros
4.Decisor Decisor Naif Na saída do canal Bec saem dois vetores V1 e V2 e o decisor naif decidirá somente um deles, a partir da comparação do vetor de entrada com o V1 e depois o mesmo procedimento com o V2 e qual apresentar o menor número de bits errados será entregue para o próximo bloco(decodificador). Decisor Smart Consideramos agora como se preencher simultaneamente os apagamentos e erros e corrigir em um código binário com um algoritmo de decodificação de dados. Determinará para cada um apagamento se o valor apagado deve ser um ou zero. O algoritmo de decodificação para este caso pode ser descrito da seguinte forma: 1. Substituir zeros no lugar de todos os bits apagados e decodificar usando o decodificador usual para o código. 2. Substituir um no lugar de todos os bits apagados e decodificar usando o decodificador usual para o código. 3. Encontrar qual dos co e c1 é o mais próximo a r. Este será o código de saída. Estratégias: 1) Compara cada palavra-código ĉ(i,:) com o vetor que entra no decodificador, ou seja o c0 e depois compara com o vetor c1. Onde d1 é a diferença de bits errados entre o vetor ĉ(i,:) e o vetor c1. Onde d2 é a diferença de bits errados entre o vetor ĉ(i,:) e o vetor c0.
A menor distância(d1 ou d2) entre esses 2 vetores, será a a palavra código escolhida e formará uma nova palavra código que será entregua ao decodificador. 2)Compara o vetor c0 com o vetor que sai do canal e depois repete o mesmo procedimento com o vetor c1 e o elemento o que possuir o menor número de bits errados será entregue ao destinatário. 5.Decodificação Cálculo da síndrome Para a decodificação, utiliza-se uma matriz de verificação de paridade H. A matriz de verificação de paridade tem o seguinte formato: Para obter a síndrome S, multiplica-se a palavra de código recebida r pela matriz H transposta: S = r H t = mg H t O valor de s não depende da palavra-código, é em função apenas do padrão de erro e. s = (r + e).h t = r.h t + e.h t = [00...0] + e.h t = e.h t Cada padrão de 1 bit de erro, tem uma única síndrome associada. Para localizar o erro é necessário consultar uma tabela, chamada Tabela de Sindrome: Exemplo de tabela de Síndromes utilizada na pesquisa:
Resultados Tabela 1: Tabela convencional - Código 2x5 Estratégia por bloco versus Estratégia por sequência Figura 1.a Figura 1.b Figura 1.c Figura 1.a (`à esquerda) -> Estratégia por bloco Figura 1.b (ao meio) -> Figura original Figura 1.c (à direita) -> Estratégia por sequência Gráfico
Gráfico da Probabilidade de Erro (eixo vertical) versus Probabilidade de Apagamento (estratégia por bloco, estratégia melhor, é ilustrada pela curva vermelha; a curva preta é o desempenho de sistema sem código). Conclusão Os códigos corretores de erros constituem hoje uma área de pesquisa ativa, tanto pelos aspectos matemáticos como pelos aspectos computacionais. Muitas questões ainda se encontram em aberto, como por exemplo, encontrar o melhor código dado uma taxa de informação. Nesse estudo foi observado a importância dos códigos corretores de erros, e a sua utilidade na proteção da informação transmitida pelo canal. O estudo terá prosseguimento e os códigos modernos (conhecidos por códigos fontanais) serão investigados.