Estudo da Constelação 16-QAM



Documentos relacionados
Codificação de Canal

PROJETO DE REDES

Apostila Básica sobre transmissão de TV Digital Padrão Brasileiro

Como em AM e FM, a portadora é um sinal senoidal com frequência relativamente alta;

Transmissão e comunicação de dados. Renato Machado

1 Modulação digital para comunicações móveis

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

1 Moldando Pulso para reduzir a largura de banda

1 Problemas de transmissão

1 Transmissão digital em banda base

EE210 Sistemas de Comunicação II 2ª Avaliação (PV2) 22/04/ h30min Profs. Dayan A. Guimarães e Rausley A. A. de Souza. Aluno(a): Matrícula.

1 Modulação digital Noções básicas

UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO

16.36: Engenharia de Sistemas de Comunicação Aula 14: Códigos cíclicos e detecção de erros

2- Conceitos Básicos de Telecomunicações

Estabilidade. Carlos Alexandre Mello. Carlos Alexandre Mello 1

Exercícios Teóricos Resolvidos

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

DO ANALÓGICO AO DIGITAL: CONCEITOS E

Sinal analógico x sinal digital. Sinal analógico. Exemplos de variações nas grandezas básicas. Grandezas básicas em sinais periódicos

Redes de computadores N Laboratório 01. Luiza Eitelvein

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Comunicação de Dados. Aula 5 Transmissão Analógica

Tecnologia Mundial em Transporte e Distribuição de sinais de TV.

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

Errata. Livro: Transmissão Digital - Princípios e Aplicações Edição:1ª Código: 4391 Autores: Dayan Adionel Guimarães & Rausley Adriano Amaral de Souza

Só Matemática O seu portal matemático FUNÇÕES

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Organização e Arquitetura de Computadores I

Utilização do SOLVER do EXCEL

4.2 Produto Vetorial. Orientação sobre uma reta r

2. Representação Numérica

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

MODULAÇÃO AM E DEMODULADOR DE ENVELOPE

Sistemas Computacionais II Professor Frederico Sauer

RESUMO 2 - FÍSICA III

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Memória Cache. Prof. Leonardo Barreto Campos 1

Universidade Federal de Viçosa Centro de Ciências Exatas Departamento de Matemática 3 a Lista - MAT Introdução à Álgebra Linear 2013/I

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

4 Arquitetura básica de um analisador de elementos de redes

Capítulo 7 Medidas de dispersão

Quadro de consulta (solicitação do mestre)

Aritmética Binária e. Bernardo Nunes Gonçalves

Em um sistema de numeração de base b qualquer, um número positivo é representado pelo polinômio:

Ivan Guilhon Mitoso Rocha. As grandezas fundamentais que serão adotadas por nós daqui em frente:

RECEPTOR AM DSB. Transmissor. Circuito Receptor AM DSB - Profº Vitorino 1

Aula 8 Circuitos Integrados

CDI Comunicação Digital

4 Segmentação Algoritmo proposto

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = =

Faculdade Sagrada Família

Redes de Computadores (RCOMP 2014/2015)

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

IW10. Rev.: 02. Especificações Técnicas

Espectro da Voz e Conversão A/D

Comunicações Digitais Manual do Aluno Capítulo 7 Workboard PCM e Análise de Link

Admistração de Redes de Computadores (ARC)

Objetivos. Apresentar as superfícies regradas e superfícies de revolução. Analisar as propriedades que caracterizam as superfícies regradas e

Arquitetura de Rede de Computadores

CONTROLE DIGITAL DE VOLUME

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

1 Problemas de transmissão

Organização e Arquitetura de Computadores I

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Ex 4.3 O anel é construído pelos polinômios S 1 1 S 2. x S 3. x 1 S 4. x 2 S 5. x 2 1 S 6. x 2 x S 7. x 2 x 1 S 8. x 3 S 9

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

Tópicos Especiais em Informática

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Modelagem no Domínio do Tempo. Carlos Alexandre Mello. Carlos Alexandre Mello 1

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

NASCE A ERA DA COMUNICAÇÃO ELÉCTROMAGNÉTICA

APLICAÇÕES DA DERIVADA

Projeto de Máquinas de Estado

3 Sistemas de Numeração:

MÉTODOS DISCRETOS EM TELEMÁTICA

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

ULA Sinais de Controle enviados pela UC

3 Classificação Resumo do algoritmo proposto

6. Geometria, Primitivas e Transformações 3D

Entrada e Saída. Prof. Leonardo Barreto Campos 1

TRABALHO COM GRANDES MONTAGENS

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Copyright 2013 VW Soluções

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Unidade 5: Sistemas de Representação

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

4. Tarefa 16 Introdução ao Ruído. Objetivo: Método: Capacitações: Módulo Necessário: Análise de PCM e de links

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

ESTRUTURAS DE DADOS II

Análise de Dados do Financeiro

Transcrição:

Estudo da Constelação 6-QAM Luciano Leonel Mendes Aluno do INATEL Santa Rita do Sapucaí - MG Prof. Geraldo Gil Ramundo Gomes Professor do INATEL Santa Rita do Sapucaí - MG Resumo O tutorial aqui apresentado tem como objetivo principal demonstrar as técnicas utilizadas para a formação de uma constelação 6-QAM, além de apresentar um estudo sobre as influências do ruído branco aditivo de natureza gaussiana nesta constelação []. Também demonstra-se o princípio de funcionamento dos códigos corretores cíclicos []. Para melhor estudarmos os temas citados, foram desenvolvidas uma série de programas com fins didáticos que são de grande ajuda tanto na observação quanto na conclusão de diversos fenômenos simulados por esses programas. Todas as ferramentas computacionais apresentadas neste tutorial foram desenvolvidas sobre o MATLAB 5.3, que é um programa matemático muito eficiente e que traz uma apresentação gráfica muito amigável para o usuário, tornando essas ferramentas ainda mais didáticas.. Introdução Atualmente a comunidade global tem uma grande necessidade de se comunicar e com isso o volume de informação que trafega nos canais de comunicações crescem a cada dia. Com o advento da telefonia móvel celular, com o crescimento e popularização dos computadores portáteis e com o aparecimento da televisão digital de alta definição (HDTV), há uma grande necessidade de se transmitir informações a uma elevada taxa de bits por um meio limitado e extremamente concorrido, que é o ar. Isso nos obriga a desenvolver métodos de modulação eficazes para que possamos aproveitar ao máximo esse recurso natural limitado, que é o espectro de freqüências. A busca por novos métodos de modulação nos leva cada vez mais próximo do limite teórico de eficiência de largura de faixa imposto por Shannon [] na década de 4 e uma das modulações de maior eficiência é a modulação QAM ( Quadrature Amplitude Modulation Modulação em Amplitude e Quadratura) e por isso este tipo de modulação vem sendo cada vez mais explorado. A modulação QAM é mais complexa que a PSK [] ( Phase Shifting Keying ) e ASK [] ( Amplitude Shifting Keying ), mas a eficácia do QAM se torna muito superior a medida em que o número de símbolos da constelação aumenta. A complexidade do sistema QAM tem sido contornada com o uso de DSP s ( Digital Signal Processors ) [3], que estão cada vez menores, mais rápidos e mais baratos, diminuindo assim o custo do modulador e demodulador QAM. Este tutorial irá demonstrar os princípios da formação da constelação 6-QAM, através dos aplicativos desenvolvidos para fins didáticos.. Modulação QAM A modulação QAM combina a modulação PSK, onde a informação digital é transmitida através da variação de fase da portadora analógica e da modulação ASK, onde a informação digital é transmitida através da variação de amplitude da portadora analógica. Desta forma, na modulação QAM, tanto a fase como a amplitude da portadora variam de acordo com a informação digital a ser transmitida.

Para se obter uma modulação eficiente, é importante distribuir os pontos da constelação de uma maneira adequada. As constelações mais utilizadas são as constelações retangulares [], pois este tipo de constelação apresenta uma boa relação entre energia média de símbolo e a complexidade de formação da constelação. É importante citar que há estudos e propostas de constelações que possuem geometrias não retangulares que otimizam a energia média de símbolo [], porém a complexidade destas constelações não justificam os ganhos obtidos com relação as constelações retangulares. Genericamente, a lei de formação dos símbolos de uma constelação QAM quadrada é dada por: si ( t) Ai ( t) *cos[ ϖ ot φi ( t)] () i,,3... M t T onde M é o número total de símbolos da constelação e T é o tempo de duração de cada símbolo. Também podemos representar a constelação QAM utilizando um plano cartesiano baseado em dois sinais ortogonais. Normalmente, as bases deste plano ortogonal são cos(ωt) e sen(ωt) [], onde ω é a velocidade angular da portadora analógica. Assim, podemos representar a constelação QAM retangular conforme a figura. A sen(ωt) A -A -A -A A A cos(ωt) Figura Exemplo de uma constelação QAM retangular Agora podemos utilizar o plano descrito acima para representar qualquer símbolo no domínio temporal, de forma que passamos a ter a lei de formação da constelação QAM retangular descrita abaixo: s ( t) A *cos( ϖ t) A * sin( ϖt) () i i,,3,..., Ax j,,3,..., Ay i max max j -A t T onde Ax max é a maior amplitude permitida no eixo X e Ay max é a maior amplitude permitida no eixo y.

Para o caso do símbolo demarcado na figura, teremos: s( t) cos( ϖt) sin( ϖt) ; para t T. (3) Esta representação cartesiana facilita muito a visualização da constelação QAM e também simplifica sua formação. A largura de faixa mínima [] utilizada por um sistema QAM pode ser expressa por: R BW min (4) log ( M ) onde R é a taxa de transmissão de bits e M é o número de símbolos da constelação QAM. Podemos expressar a eficiência de largura de faixa [] para um sistema QAM por: R β log ( M ) (5) BW min 3. A Constelação 6-QAM Em um sistema 6-QAM cada símbolo da constelação é formado a partir de 4 bits de informação []. Assumindo que a distância entre dois símbolos adjacentes seja, a constelação fica: 3 sen(ωt) -3-3 cos(ωt) - -3 Figura Constelação 6-QAM Uma vez atribuida a posição dos pontos na constelação, devemos mapear estes símboos, de modo que a combinação de 4 bits represente um e somente um símbolo. O código mais utilizado neste tipo de mapeamento é o código Gray [], pois neste código apenas um bit muda entre os símbolos adjacentes. Isto minimiza a probabilidade de erros do sistema. O programa qam_clean_gui.m foi criado para demostrar este tipo de mapeamento. A figura 3 mostra o resultado de uma simulação onde a seqüência de bits ( ) foi transmitida e o símbolo s ( t) 3* cos( ϖt) 3* sin( ϖ ) foi gerado. t

Figura 3 Símbolo gerado a partir do program qam_clean_gui.m O objetivo deste programa é fazer com que o usuário entre com as 6 combinações possíveis e observe a posição de cada símbolo, anotando quais foram as seqüências de bits utilizadas na formação de cada símbolo. A constelação 6_QAM já mapeada fica conforme mostrado na figura 4. sen(ωt) 3-3 - 3 cos(ωt) - -3 Figura 4 Constelação 6-QAM mapeada com código Gray. Conforme já mencionado, com a utilização do código Gray na formação da constelação QAM, há a mudança de apenas um bit entre símbolos adjacentes. Podemos observar também que os dois bits mais significativos definem a amplitude no eixo y (sen(ωt)), enquanto que os bits menos significativos definem a amplitude no eixo x (cos(ωt)). Com isso podemos afirmar que a modulação 6-QAM é formada por dois sinais 4-ASK ortogonais []. 4. Influência do AWGN na constelação 6-QAM. Uma vez determinado como se obtem os símbolos de uma constelação 6-QAM, é necessário estudar os efeitos que o ruído branco aditivo de natureza gaussiana causa a esta constelação. O programa qam_gui foi desenvolvido com o objetivo de demostrar a influência do AWGN [] na constelação QAM de uma maneira clara e simples. A figura 5 mostra o resultado de uma simulação onde o símbolo formado pelos bits ( ) foi transmitido mil vezes consecutivas com uma relação Eb/No de 6dB.

Figura 5 Influência do Ruído Branco na Constelação 6-QAM Observando a constelação 6 QAM apresentada na figura 4, podemos concluir que as coordenadas para o símbolo formado pelos bits ( ) são X e Y. Na figura 5 vemos uma nuvem de pontos em torno dessas coordenadas, que são os símbolos transmitidos em um meio perturbado pelo ruído branco. Analisando a figura podemos observar que os pontos estão distribuídos em torno de uma média, que é a coordenada do símbolo formado pelos bits ( ). Uma vez que o ruído possui uma distribuição gaussiana [], a função densidade de probabilidade que descreve a probabilidade de ocorrência de um evento pode ser descrita por: ( ) x µ p x exp (6) π σ σ onde p(x) é a função que demonstra como a probabilidade do ruído assumir valores x está distribuída em torno da média. µ é a média. σ é o desvio padrão. O valor de σ está relacionado com a potência do ruído presente no canal, de forma que aumentando o valor de σ, a probabilidade do ruído assumir amplitudes maiores aumenta e assim a potência do ruído é maior. No caso da simulação apresentada, o valor de σ é fornecido indiretamente através do campo Eb/No. A relação Eb/No denota a relação entre a energia de bit pela densidade espectral de ruído. Se a relação Eb/No for conhecida e adotarmos a energia de bit (Eb) como sendo constante, podemos determinar a densidade espectral de potência (No). Sabemos que σ No /, portanto podemos determinar o valor de σ e utilizá-lo para determinar como o ruído irá influenciar os símbolos transmitidos. O símbolo recebido será a soma vetorial do símbolo transmitido com o ruído de média nula e σno/. Observe que o valor absoluto do ruído é aleatório e é por isso que ao transmitirmos N vezes, os símbolos recebidos formam uma nuvem em torno do símbolo originalmente transmitido. Quanto maior a relação Eb/No, menor é o valor de σ e portanto a probabilidade do ruído assumir grandes amplitudes diminui de forma que a nuvem de pontos se concentre mais em torno do símbolo transmitido. A figura abaixo demonstra o resultado de uma simulação com Eb/No5db.

Figura 6 Influência do Ruído Branco na Constelação 6-QAM Uma vez determinado qual é a influência do ruído em um símbolo da constelação é necessário analisarmos se esse ruído introduzido causa erro de símbolo na recepção. Voltando a observar a figura 4, vemos que todos os símbolos estão igualmente espaçados entre si de uma distância igual a. Com isso as coordenadas que os símbolos podem assumir em ambos os eixos são: -3, -, e 3. Isso implica que os limiares de decisão [], que são as linhas que separam dois símbolos adjacentes, assumam as coordenadas, e para ambos os eixos. Por exemplo, se o símbolo em questão for o símbolo de coordenadas X, Y, os limiares de decisão serão: Eixo X: Esquerda e Direita Eixo Y: Inferior e Superior Esses limiares definem uma área e se a coordenada do símbolo recebido estiver dentro dessa área, o mesmo será interpretado como sendo o símbolo formado pelos bits ( ). Ainda observando a figura 4, podemos verificar que nem todos os símbolos possuem a mesma probabilidade de erro, pois o número de vizinhos que os símbolos possuem variam de acordo com a sua posição no constelação. Segundo a figura 4 fica claro que os quatro símbolos internos (observe também a figura 7 abaixo) possuem uma maior probabilidade de erro do que os símbolos externos da constelação. Figura 7 Símbolos com maior probabilidade de erro.

5. Códigos Corretores de Erro. Agora que já compreendemos qual é a influência do ruído branco de distribuição gaussiana em uma constelação 6-QAM, e como esta influência pode gerar erros na recepção, iremos estudar uma medida preventiva que nos permita detectar e/ou corrigir um possível erro. A medida utilizada na apresentação deste trabalho é chamada de códigos corretores de erro cíclicos []. Os códigos cíclicos são códigos de blocos que podem ser conseguidos a partir de uma máquina de estado, mas respeitam todas as leis de formação de um código de blocos. O princípio da codificação de canal é adicionar bits de paridade (redundância) a informação afim de permitir definir através da análise desta paridade se a informação recebida está certa ou não e em alguns casos, informar aonde ocorreu o erro. Ao adicionarmos os bits de paridade estamos aumentando o número de bits que deve trafegar pelo canal. Isso irá provocar um aumento na taxa de sinalização ou um aumento na banda ocupada, assumindo que a taxa de bits de informação foi mantida. Obviamente isso consiste em uma desvantagem que devemos pagar para proporcionar uma maior confiabilidade na transmissão da informação. Em um código de bloco onde a informação é segmentada em k bits de informação e são adicionados (n-k) bits de paridade de tal forma que o bloco resultante possui n bits é denominado de Código (n, k) []. A partir dessa explanação podemos definir alguns parâmetros utilizados para caracterizar um código de bloco. O primeiro deles é redundância do código dada por: ( n k) redundância (7) k Outro parâmetro importante é a taxa de código, dada pela seguinte relação: k taxa (8) n Neste estudo, iremos apresentar o Código C(7,4), ou seja, um código que a partir de 4 bits de informação gera um vetor válido de 7 bits. Assim temos 3 bits de paridade para cada bloco de 4 bits de informação. Observe que com 4 bits de informação é possível obtermos 6 combinações diferentes, mas o espaço vetorial disponível possui 7 8 combinações, pois transmitimos blocos com 7 bits (4 de informação e 3 de paridade). Assim, de 8 combinações possíveis somente 6 serão utilizadas. As combinações não utilizadas são denominadas de vetores códigos não válidos, enquanto que as 6 combinações possíveis são denominadas de vetores códigos válidos []. O conjunto de vetores válidos deve ser um subconjunto do espaço vetorial, ou seja, o vetor todo nulo deve ser um vetor código válido e a soma (módulo dois) de quaisquer dois vetores códigos válidos deve gerar um vetor código válido. Portanto, a idéia da codificação é a partir de um bloco de k bits deve-se gerar um bloco de n bits que seja um vetor código válido. Esse vetor é transmitido e pode ou não ser alterado no canal devido ao ruído presente no mesmo. Ao decodificador cabe verificar se o vetor recebido é ou não um vetor código válido. Se for um vetor código válido, então o decodificador retira os bits de paridade e entrega os bits de informação na saída. Se o vetor recebido não for um vetor código válido o decodificador aproxima o vetor recebido para o vetor código válido mais próximo e então retira a paridade e entrega os bits informação na saída. Vale a pena frisar que o decodificador sempre retira a informação de um vetor código válido.

Ao escolhermos um código de bloco, devemos ter dois pontos chaves em vista. O primeiro é escolher um código que possua vetores códigos mais distantes possíveis, pois assim o código irá apresentar uma menor probabilidade de ocorrer um erro não detectável e aumentará a capacidade de correção do código []. O segundo é fazer com que o número de vetores válidos seja próximo do número total de vetores possíveis. Assim a redundância é menor e gastase menos banda na transmissão da informação. Há duas maneiras de implementar um código de bloco. A primeira é definindo os vetores códigos e armazená-los em um tabela que é consultada a cada bloco de k bits de informação. O grande problema dessa técnica é que para extensos blocos de bits de informação o número de vetores códigos válidos se torna muito extenso, inviabilizando o armazenamento destes vetores em uma memória. Imagine um código C(9,97). Teríamos que armazenar 97 vetores em uma memória, o que é extremamente inviável. A outra maneira de realizarmos a codificação é lançando mão de uma Matriz Geradora []. Neste conceito, utilizamos um conjunto de k vetores códigos linearmente independentes para formar uma matriz de k linhas e n colunas. Esses vetores formam o conjunto base do código, de modo que qualquer vetor código pode ser gerado a partir da combinação linear dos vetores que compõe esta base. No caso em estudo, temos um código C(7,4), de forma que sua matriz geradora possui o seguinte formato: a a a3 a4 a5 a6 a7 a a a3 a4 a5 a6 a7 G (9) a 3 a3 a33 a34 a35 a36 a37 a4 a4 a43 a44 a45 a46 a47 Os vetores códigos válidos são obtidos multiplicando os bits de informação pela Matriz Geradora, da seguinte forma: U U [ m m m m ] G 3 4 () m G () A Matriz Geradora define complemente o código corretor, de forma que o codificador precisa armazenar somente os k vetores códigos válidos que formam a base do espaço vetorial válido. É comum encontrarmos as matrizes geradoras em sua forma sistemática [], ou seja, em uma forma em os bits de informação estão explícitos no vetor código válido. Essas matrizes possuem o seguinte aspecto: [ P ] G : () I k P é a matriz paridade com k linhas e (n-k) colunas e I k é a matriz identidade de dimensão k. O decodificador utiliza a matriz H, obtida a partir da Matriz Geradora (G), para decodificar o vetor recebido. A matriz H é ortogonal a matriz G, de forma que: H T G (3)

Para que o requisito acima seja cumprindo é necessário que a matriz H tenha a seguinte disposição. T [ I n P ] H : (4) k H T I n P k (5) O decodificador realiza o produto entre o vetor recebido e a matriz H T obtendo como resultado um vetor de dimensão (n-k) que é chamado de síndrome []. Caso a síndrome seja um vetor todo nulo significa que o vetor recebido é um vetor código válido. Caso a síndrome não seja um vetor nulo, isso significa que o vetor recebido não é um vetor código válido e portanto deve ser corrigido. Para cada síndrome possível (existem (n-k) síndromes possíveis) existe associado a ela um vetor erro padrão que somado ao vetor recebido irá gerar um vetor código válido. Nenhum código é perfeito, ou seja, nem sempre o código é capaz de corrigir ou detectar um erro introduzido pelo canal. Para podermos quantificar a capacidade de correção e detecção de um código devemos antes definir distância mínima de um código (dmin) []. A distância mínima de um código de blocos é a menor quantidade de bits que devem ser mudados afim de obtermos um outro vetor código válido. Uma vez conhecido o dmin do código, podemos determinar sua capacidade de correção como sendo: d min t bits (5) Já a capacidade de detecção é dada por: cd d min (6) Como já podíamos esperar, a capacidade de correção de um código é menor do que sua capacidade de detecção. Assim, um código pode operar como corretor de erro em condições em que a média do número de bits errados por bloco de n bits seja menor do que sua capacidade de correção. Se por algum motivo, a média do número de bits errados aumenta e passa a ser maior do que a capacidade de correção do código, o mesmo código ainda pode ser utilizado para a detecção de erro. Os códigos cíclicos formam uma subclasse dos códigos de bloco que podem ser implementado por registradores de deslocamento. A principal caraterística de um código cíclico é que se temos um vetor código válido U pertencente ao subespaço vetorial do código cíclico, então todos os demais códigos podem ser obtidos pelo deslocamento sucessivo de U. O vetor U pode ser descrito como: U µ µ µ L µ (7) ( ) n Assim podemos expressar qualquer vetor código como sendo: ( µ µ µ ) U µ L µ (8) ( i) n i n i n n i

Para uma representação algébrica, podemos considerar os elementos do vetor U como sendo coeficientes de um polinômio U(x), conforme demonstrado abaixo: ) ( n n X X X x U µ µ µ µ L (9) A presença ou ausência de um termo do polinômio indica que o índice que multiplica esse termo é ou respectivamente. Da mesma forma, podemos representar o vetor mensagem como um polinômio: ) ( k m k X X m m X m x m L () O polinômio U(x) pode ser chamado de polinômio gerador [] uma vez que todos os vetores códigos válidos podem ser obtidos através dele utilizando registradores de deslocamento. A obtenção da síndrome também é realizada através de registradores de deslocamento cujo os braços de realimentação seguem o polinômio gerador do código. O programa apresentado a seguir utiliza essa técnica para codificar a seqüência de bits fornecida pelo o usuário. Fazendo um estudo específico para o caso apresentado, temos um código cíclico C(7,4) formado pelo seguinte polinômio gerador: 3 ) ( X X x g () Assim podemos determinar um vetor código válido dado pelo polinômio gerador descrito acima: ( ) U () Utilizando a propriedade dos códigos cíclicos podemos definir a matriz geradora G. G (3) Sabemos que os vetores códigos que compõe a matriz geradora são componentes de um subespaço vetorial e portanto a soma desses vetores irá gerar outro componente desse mesmo subespaço vetorial. Podemos utilizar essa afirmação para obtermos a matriz geradora na forma sistemática apresentada a seguir: G (4) Uma vez conhecida a matriz geradora podemos determinar a matriz decodificadora H, da seguinte forma:

T [ I n P ] H : (5) k H (6) Uma vez conhecidas, a matriz geradora e a matriz decodificadora podem ser usadas para codificação e decodificação de uma mensagem, mas é mais prático realizarmos essa tarefa utilizando máquinas de estado, uma vez que estamos utilizando um código cíclico. Para a codificação, utilizamos o circuito a seguir: Chave R R R m(x) a b Chave Saída U(x) Figura 7 Codificador C(7,4) Inicialmente, a chave se encontra fechada e a chave na posição a. Nesta condição, a medida em que o vetor m(x) é carregado na máquina de estado, o mesmo é entregue na saída do codificador. Assim que todos os bits que compõe o vetor m(x) são carregados na máquina de estado, a paridade já está calculada e armazenada nos registros R, R e R. Basta agora descarregar o valor de cada registro na saída. Para isso abrimos a chave (para que o valor da paridade não se altere mais) e passamos a chave para a posição b. Uma vez que todos os bits de paridade foram descarregados, a máquina de estado volta para o estado inicial e está pronta para receber mais um bloco de k bits para a codificação. Para a decodificação, utilizamos a máquina de estado a seguir: Chave R R R U(x) Chave S(x) Síndrome Figura 8 Decodificador C(7,4)

O funcionamento do decodificar é muito semelhante ao funcionamento do codificador. A princípio, a chave é fechada e a chave é aberta. Carregamos a máquina de estado com os n bits que compõe o vetor código U(x). Depois que todos os n bits são carregados, o conteúdo dos registradores corresponde a síndrome do vetor U(x), que deve ser descarregada na saída. Para isso abrimos a chave e fechamos a chave. Depois que os (n-k) bits da síndrome são descarregados, a máquina de estado está pronta para receber o próximo vetor código. A seguir apresentamos alguns resultados obtidos pelo programa code74_gui.m, gerado para simular esse tipo de codificador. Figura 9 Resultado da Simulação Nesta simulação, os bits a serem transmitidos são ( ). O codificador entregou o vetor código: U(x) ( ) (7) vetor: Esse vetor foi transmitido por um canal AWGN, e o vetor na entrada do receptor é o Un(x) (..7.8.3.4.5.5) (8) O limiar de decisão neste caso é.5, ou seja, o receptor entende como sendo todo e qualquer valor maior ou igual a.5 e entende como sendo todo e qualquer valor menor do que.5. Assim o vetor Urx(x) é igual a U(x). A síndrome gerada pelo decodificador a partir desse vetor é S ( ), o que indica que o vetor recebido é um vetor código válido. O receptor então considera o vetor recebido como sendo o vetor transmitido e o entrega em sua saída. Note que nesse caso, o erro padrão somado ao vetor recebido para gerar o vetor corrigido é o vetor todo nulo, uma vez que o vetor recebido é um vetor código válido. No próximo exemplo apresentamos o resultado de uma simulação onde ocorre um erro na transmissão.

Figura Resultado da Simulação Neste caso observamos que quando ocorre um erro na transmissão a síndrome não é mais m vetor todo nulo, o que significa que o vetor recebido não é um vetor código válido. Associado a essa síndrome existe um vetor erro padrão que aproxima o vetor recebido para o vetor código válido mais próximo. Como houve erro de apenas um bit, o vetor código mais próximo é o próprio vetor transmitido. Então o decodificador soma o erro padrão ao vetor recebido e entrega o vetor corrigido na sua saída. Agora iremos demonstrar o que ocorre quando dois erros são introduzido pelo canal em um vetor código transmitido. Figura Resultado da Simulação Agora, o vetor recebido também não é um vetor código válido, mas o vetor código válido mais próximo deste vetor recebido não é o vetor transmitido. Perceba que a síndrome é diferente de zero e o erro padrão ao ser somado ao vetor recebido gera um vetor código válido mas que não foi o vetor código transmitido. Assim o codificador ao tentar corrigir o erro introduzido no canal, aumentou o número de bits errados. Observando o código em questão podemos determinar que o dmin deste código é 3 e sua capacidade de correção e detecção de erro podem ser obtidas, como já demonstrado anteriormente: min 3 t d bit (9) min 3 cc d bits (3)

Isso significa que este código é capaz de corrigir todo e qualquer erro de bit e é capaz de detectar todo e qualquer erro de bits. Erros de 3 ou mais bits pode ou não vir a ser detectado. A opção Code74B nos permite perceber melhor a atuação desse código quando erros ocorrem na transmissão. Observe a figura abaixo: Figura Erros corrigidos e erros detectados. O gráfico acima mostra o número de bits errados em cada símbolo (foram transmitidos símbolos) antes da atuação do código e após a atuação do código. Observe que todos os símbolos que apresentavam um erro de bit foram detectados e corrigidos e passaram a não mais apresentar erros. Todos os símbolos que apresentavam erros de dois bits foram detectados, mas ao serem corrigidos passaram a apresentar três erros de bit. Desta forma, o decodificador nunca entregará na recepção vetores que apresentem um ou dois erros de bit, uma vez que o vetor entregue pelo decodificador é um vetor código válido e o número mínimo de bits diferentes entre dois vetores códigos válidos é 3 (dmin3). 6. Conclusões A interatividade que os programas aqui demonstrados apresentam faz com que essas ferramentas sejam e grande ajuda na formação do aluno, de forma que o mesmo possa interpretar e fixar melhor os resultados obtidos pelo estudo teórico e simulados aqui por estes programas. Todo o desenvolvimento dessas ferramentas visa a fácil compreensão de como os fenômenos ocorrem e quais as causas e variáveis que influenciam esse fenômeno de modo com que os alunos possam concluir quais são as leis que regem os princípios básicos de um sistema de comunicação digital que utiliza modulação 6 QAM e códigos cíclicos para correção e/ou detecção de erros. 7. Referências Bibliográficas [] Simon Haykin, Communication System 3 rd edition, Prentice Hall. [] Bernad Sklar, Digital Communications Fundamentals and Applications, John Wiley and Sons INC. [3] Sophocles J. Orfanidis, Introduction to Signal Processing, Prentice Hall.