Ricardo Sugayama Desenvolvimento de uma ferramenta para … · 2010. 10. 15. · tribos utilizavam...
Transcript of Ricardo Sugayama Desenvolvimento de uma ferramenta para … · 2010. 10. 15. · tribos utilizavam...
Ricardo Sugayama
Desenvolvimento de uma ferramenta para análise de desempenho do padrão de transmissão de TV Digital ISDB-T.
Projeto Final de Graduação do curso de Engenharia Elétrica do setor de Tecnologia da Universidade Federal do Paraná, necessário para a obtenção do grau de engenheiro eletricista. Orientador: Evelio M. G. Fernández
Curitiba
2009
2
DEDICATÓRIA
Minha avó com muita paciência e dedicação me ensinou a andar com 8 meses de idade. Em um dado momento, diante de uma grande oportunidade, tive que viajar para longe, e ela não
muito conformada questionou se isso que eu iria fazer seria bom para mim. Minha mãe respondeu que sim. Minha avó então disse “se isso é bom para ele, então eu fico feliz”.
Existem pessoas que nos ensinam a andar sem interesse no lugar onde vamos chegar,
desejando apenas que cheguemos longe.
A essas pessoas, meus pais, meus irmãos, meus avós, minha família, não posso agradecer. O máximo que posso fazer é isto, dedicar-lhes este trabalho, que
representa uma das conquistas mais importantes da minha vida.
3
AGRADECIMENTOS
Agradeço à Universidade Federal do Paraná, em especial aos professores do Departamento de Engenharia Elétrica.
4
DEDICATÓRIA....................................................................................................................2 AGRADECIMENTOS ......................................................................................................... 3 LISTA DE FIGURAS ...........................................................................................................6 RESUMO............................................................................................................................... 7 1. INTRODUÇÃO ................................................................................................................ 8 1.1. MOTIVAÇÃO ................................................................................................................. 8 1.2. A COMUNICAÇÃO (EM ALGUMAS PALAVRAS) .................................................. 9 1.2.1. RESUMO DA HISTÓRIA ........................................................................................... 9 1.2.2. IMPORTÂNCIA ........................................................................................................ 12 1.3. TV DIGITAL ................................................................................................................. 13 1.3.1. A REVOLUÇÃO ........................................................................................................ 13 2. ESTUDO DA NORMA BRASILEIRA ........................................................................ 15 2.1. INTRODUÇÃO AO ISDB-T ........................................................................................ 15 2.2. O SISTEMA DE COMUNICAÇÃO ............................................................................. 16 2.2.1. CODIFICADOR REED SOLOMON (RS) ................................................................. 17 2.2.2. DIVISOR POR CAMADAS ...................................................................................... 19 2.2.3. DISPERSÃO DE ENERGIA ..................................................................................... 19 2.2.4. AJUSTE DO ATRASO .............................................................................................. 19 3. A FERRAMENTA.......................................................................................................... 21 3.1. O COMPROMISSO ...................................................................................................... 21 3.2. A ESTRATÉGIA DE IMPLEMENTAÇÃO ................................................................. 21 3.2.1. SIMULADOR ............................................................................................................ 21 3.2.2. PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES22 3.3. IMPLEMENTAÇÃO MATLAB ................................................................................... 22 3.3.1. ESTRUTURA ............................................................................................................. 23 3.3.2. GERAÇÃO DA INFORMAÇÃO .............................................................................. 25 3.3.3. ESTUDO E DEFINIÇÃO DO BLOCO CODIFICADOR ......................................... 26 3.3.3.2. CODIFICADOR REED SOLOMON (RS) .............................................................. 27 3.3.3.3. ENTRELAÇADOR DE BYTES ............................................................................. 27 3.3.3.4. CODIFICADOR CONVOLUCIONAL .................................................................. 27 3.3.4 MAPEAMENTO DA CONSTELAÇÃO .................................................................... 28 3.3.5. CANAL DE TRANSMISSÃO ................................................................................... 30 3.3.6. BLOCO DECODIFICADOR ..................................................................................... 32 3.3.6.1. DETECÇÃO POR MÁXIMO DE VEROSSIMILHANÇA ................................... 32 3.3.6.2. DECODIFICAÇÃO CONVOLUCIONAL ............................................................. 33 3.3.6.3. DESENTRELAÇAMENTO .................................................................................... 33 3.3.6.4. DECODIFICAÇÃO REED SOLOMON ................................................................ 34 3.3.7. CADEIA DE TRANSMISSÃO ................................................................................. 34 3.3.8. TRANSMISSÃO ........................................................................................................ 34 3.3.8.1. MENSAGEM ALEATÓRIA .................................................................................. 34 3.3.8.2. TRANSMISSÃO DE IMAGEM ............................................................................. 34
5
3.4. ESTRUTURA DO PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES ..................................................................................................................... 34 4. RESULTADOS ............................................................................................................... 35 4.1. IMPLEMENTAÇÃO MATLAB ................................................................................... 35 4.2. PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES .. 43 5. CONCLUSÃO ................................................................................................................. 46 6. SUGESTÃO DE SEQUÊNCIA DO PROJETO .......................................................... 49 6.1. CANAL COM MÚLTIPLO PERCURSO .................................................................... 49 6.2. IMPLEMENTAÇÃO C ................................................................................................. 49 6.3. VALIDAÇÃO EMPÍRICA DOS RESULTADOS ....................................................... 49 6.4. INTEROPERANILIDADE COM OUTROS APLICATIVOS ..................................... 49 6.5. PESQUISA COM USUÁRIOS ..................................................................................... 50 REFERÊNCIAS ................................................................................................................. 51 DOCUMENTOS CONSULTADOS..................................................................................54 ANEXO 1.............................................................................................................................56
6
LISTA DE FIGURAS FIGURA 1– DIVISÃO DO ESPECTRO EM 13 SEGMENTOS.........................................15 FIGURA 2 – O SISTEMA DE COMUNICAÇÃO ISDB-T................................................16 FIGURA 3 – ESTRUTURA GLOBAL DE CODIFICAÇÃO ISDBT.................................17 FIGURA 4 – ESTRUTURA GLOBAL DE MODULAÇÃO DO ISDB-T..........................17 FIGURA 5 – POLINÔMIO GERADOR G1 = 171 OCT E G2 = 133 OCT........................19 FIGURA 6 – PADRÃO DE SUPRESSÃO PARA DIFRENTES TAXAS DE CÓDIGO CONVOLUCIONAL............................................................................................................20 FIGURA 7 – ESTRUTURA GLOBAL DE TRANSMISSÃO.............................................23 FIGURA 8 – ESTRUTURA GLOBAL DE RECEPÇÃO....................................................23 FIGURA 9 – ESTRUTURA DE TRANSMISSÃO DETALHADA....................................25 FIGURA 10 – LENA............................................................................................................26 FIGURA 11 – BLOCO CODIFICADOR.............................................................................26 FIGURA 12 – QAM64..........................................................................................................28 FIGURA 13 – QAM16..........................................................................................................29 FIGURA 14 – QPSK.............................................................................................................30 FIGURA 15 – DQPSK..........................................................................................................30 FIGURA 16 – QAM16 + RUÍDO.........................................................................................31 FIGURA 17 – QPSK + RUÍDO............................................................................................31 FIGURA 18 – ALGORITMO DO MÁXIMO DE VEROSSIMILHANÇA........................33 FIGURA 19 – ÍNDICE DO MODULO ISDB_CodificadorTPS.m.....................................36 FIGURA 20 – EXEMPLO DE IDENTIFICAÇÃO DE INTERFACE E ORIENTAÇÃO PARA SUBSTITUIÇÃO DO BLOCO................................................................................37 FIGURA 21 – TRANSMISSÕES SUCESSIVAS DA IMAGEM LENA PARA NÍVEIS DE SINALXRUÍDO DECRESCENTES...................................................................................39 FIGURA 22 – PERFORMANCE DE TRANSMISSÃO QPSK PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE..........................................................41 FIGURA 23 – PERFORMANCE DE TRANSMISSÃO QAM16 PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE..........................................................42 FIGURA 24 – PERFORMANCE DE TRANSMISSÃO QAM64 PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE..........................................................43 FIGURA 25 – INTERFACE GRÁFICA DO PROGRAMA................................................44 FIGURA 26 – TELA DE ENTRADA..................................................................................45 FIGURA 27 – PROPOSTA DE INTEROPERABILIDADE PARA O SIMULADOR.......50
7
RESUMO
Este trabalho versa sobre o desenvolvimento de uma ferramenta de simulação
do sistema de TV DIGITAL ISDB-T. A motivação deste desenvolvimento é devido à
implantação deste padrão de TV digital no Brasil. Para isso, diversos estudos e adaptações
devem ser efetuados para adequar este sistema de transmissão a cada região brasileira,
segundo cada tipo de aplicação que esta tecnologia pode permitir. A eficiência do sistema é
baseada sobre uma combinação de varias etapas de tratamento da informação que por sua
vez possui diversas variáveis com impacto direto na qualidade final da comunicação. Esse
conjunto torna a cadeia de transmissão extremamente complexa, dificultando a visualização
final do impacto de cada variável sobre a eficiência do sistema, sabendo que este pode
sofrer ainda diversas influências do meio onde será implementado e da aplicação, ou modo
de utilização, do mesmo. Dentro deste contexto uma ferramenta capaz de simular o sistema
de transmissão, de maneira modular e com fácil acesso às diversas variáveis do sistema, se
torna de vital importância para a realização dos estudos, ajustes e desenvolvimento de
soluções para a boa adaptação da tecnologia no território brasileiro. Este trabalho mostra o
desenvolvimento desta ferramenta, que é capaz de reproduzir cada etapa importante do
sistema, de maneira a permitir aos estudiosos da comunicação digital focar esforços em
pontos específicos e verificar o resultado de pequenas ou grandes modificações dentro do
sistema como um todo.
8
1. INTRODUÇÃO
1.1. MOTIVAÇÃO
A importância da comunicação dentro da sociedade é incontestável, não sendo
necessários adjetivos para descrever seu impacto na vida das pessoas. A TV dentro deste
contexto tem uma posição de destaque, seu alcance e influencia a torna no Brasil um dos
meios de comunicação mais importante para as pessoas. Esses fatores fazem com que todo
investimento no sentido de melhorar a prestação deste serviço tenha um impacto direto na
sociedade, tanto na geração de novas oportunidades, quanto na melhoria da qualidade de
vida da população. A TV Digital vem, dentro deste contexto, criar uma ruptura tecnológica
importante que adequa o serviço da televisão às expectativas e necessidades criadas nas
pessoas pelos equipamentos e tecnologias de mídia disponíveis atualmente.
Sempre que uma nova tecnologia é implantada existe uma fase determinante
para o sucesso desta aplicação, que é o período de adaptação dos operadores e usuários a
esta nova ferramenta. Para que este processo aconteça de uma forma ótima é essencial que
a tecnologia seja completamente dominada por seus implantadores, o que justifica qualquer
esforço feito no sentido de entender e dominar esta tecnologia, possibilitando assim sua
adaptação às necessidades locais.
Baseado na importância da TV e nos conceitos acima citados, este trabalho vem
tentar contribuir com o entendimento do sistema de comunicação ISDB-T (Integrated
Services Digital Broadcasting - Terrestrial), que foi escolhido como o padrão de TV Digital
Brasileiro, com o intuito de promover de maneira simples a percepção e o estudo dos
possíveis impactos que a parametrização do sistema de codificação do ISDB-T causa na
performance final deste novo sistema de comunicação.
9
1.2. A COMUNICAÇÃO (EM ALGUMAS PALAVRAS)
Esta pequena introdução para falar sobre a comunicação é necessária para
mostrar que o intuito deste trabalho é baseado em uma necessidade real e importante, e que
este esforço de engenharia não nasceu do acaso, mas sim da necessidade. Este capítulo
serve também para colocar em termos técnicos conceitos importantes que serão utilizados
neste relatório.
Neste trabalho usaremos a seguinte definição para as palavras abaixo:
Informação: “expressão de uma necessidade”.
Mensagem: “entidade que transporta a informação”.
Comunicação: “processo que envolve a troca de mensagens”
De maneira geral podemos dividir um processo de comunicação da seguinte
maneira: (Necessidade) – geração da informação – processamento da informação –
transmissão – recepção – interpretação – (ação decorrente da recepção da informação).
1.2.1. RESUMO DA HISTÓRIA
Presume-se que desde o início da existência humana a comunicação entre os
homens foi um fator fundamental para sua sobrevivência e evolução.
Voltando no tempo, cerca de 400 mil anos atrás, sabemos que o Homo Erectus
não havia o centro da fala bem desenvolvido e presume-se que a primeira forma de
comunicação deveria ser uma pseudo-linguagem corporal conjuntamente com sons
próximos de “grunhidos”. A produção de uma linguagem propriamente dita provavelmente
teve inicio no período de Neandertal que, em teoria, apresenta uma evolução no hemisfério
esquerdo do cérebro, que se crê, é o responsável pela habilidade da comunicação humana.
10
Porém, sabemos que apenas o Homo Sapiens veio equipado fisicamente com instrumentos
realmente adaptados para a comunicação, o que promoveu a primeira grande evolução da
linguagem e da fala. Estes “homens primitivos”, como são conhecidos nossos ancestrais,
desenvolveram uma outra grande ferramenta, uma forma de comunicação indireta, que são
as pinturas rupestres.
Acredita-se que por volta de 3000 anos A.C. a escrita foi desenvolvida na
Mesopotâmia, 2000 anos A.C surgiram as linguagens logo-silábicas na Índia e China e
finalmente, por volta de 800 anos A.C., os gregos desenvolveram a técnica de separar as
consoantes das vogais e chegaram a um alfabeto completo capaz de contemplar todos os
sons da fala humana.
Em 105 D.C. o papel foi desenvolvida na China, esta tecnologia de
comunicação foi sendo largamente utilizada e desenvolvida, vindo a ser definitivamente
difundida no mundo no século XIX, com a revolução do processo produtivo do papel, que é
a mesma utilizada nos dias de hoje.
As técnicas de transmissão da informação foram igualmente sendo
desenvolvidas e evoluídas. Na América do Sul os índios imitavam o canto dos pássaros
para enviar mensagens aos seus companheiros ocultos dentro da floresta, já na América do
Norte eles utilizavam sinais de fumaça para comunicação a longa distância e na África,
tribos utilizavam tambores para enviar mensagens. Na região européia e asiática o advento
do papel foi mais utilizado, na idade média os arautos dos reis liam mensagens em praça
publica, foi criado o correio, os livros e no século XV a impressão em série, que
possibilitou a difusão em massa da informação.
Em 1837 uma grande revolução nas comunicações foi causada pela invenção do
telegrafo, equipamento muito sofisticado que utilizava a eletricidade para enviar um sinal,
inicialmente utilizando uma linguagem de comunicação conhecido como código Morse. A
revolução posterior foi a invenção do rádio, que passou a utilizar as ondas eletromagnéticas
11
como modo de transmissão, passando também a enviar mensagens sonoras. O radio
também permitiu a distribuição em massa da informação com grande impacto na sociedade.
A sequência foi marcada por uma evolução contínua e rápida dos meios de comunicação,
foi inventado o cinema, que transmitia a uma platéia uma informação de vídeo pré-gravada,
posteriormente a televisão, outra grande revolução, que possibilitou a transmissão de
imagens e sons por ondas eletromagnéticas, ao mesmo tempo foi inventado outro grande e
sofisticado equipamento de comunicação, o telefone, que finalmente permitiu a
comunicação sonora em tempo real e a longa distância, sendo necessária a criação de redes
de telefonias e diversas tecnologias de telecomunicações e eletrônica.
Os meios de comunicação acima descritos continuaram a serem evoluídos, mas
só sofreriam outra grande revolução no ano de 1992, com a introdução comercial da
internet, que passou a utilizar as tecnologias digitais para a transmissão de informação
escrita, sonora e visual (no formato de dados), comercialmente e em larga escala. A
tecnologia digital veio sendo desenvolvida e causou uma ruptura tecnológica passando os
equipamentos previamente desenvolvidos com uma tecnologia analógica, para a tecnologia
digital. Esta ruptura permitiu agregar funcionalidades aos equipamentos, tais como
portabilidade (telefones celulares), gravação de informações com maior definição de
imagens e sons e com menores dimensões físicas das memórias em relação à quantidade de
informação nelas armazenada.
Hoje, com o desenvolvimento da tecnologia digital discutimos a introdução
comercial de uma solução que começou a ser desenvolvida nos anos de 1970, a TV Digital,
que promete imagens e sons de alta qualidade e adicionar a interatividade à televisão
convencional, que possibilitará a utilização de novos serviços. Esta nova tecnologia de
comunicação é o objeto de estudo deste trabalho e por isso será apresentada com mais
detalhes no item 1.3.
12
E o trabalho não terminou, as formas de comunicação continuam sendo
desenvolvidas e aprimoradas, podemos prever em um futuro próximo o abandono dos
cabos de comunicação, a interligação de equipamentos anteriormente não inclusos nas
redes (como muitos eletrodomésticos, soluções médicas, industriais, etc). Assim como
novos protocolos, maior taxa, qualidade e alcance de transmissão, entre outras prestações e
tecnologias já previstas e as que ainda estão por serem inventadas. Para a evolução dos
sistemas de comunicação não se pode e nem se deve colocar limites.
1.2.2. IMPORTÂNCIA
“90% de todos os problemas do mundo são causados pela comunicação”. Esta
frase foi pronunciada na abertura de um curso de Modelagem de Sistemas Elétricos da
Universidade Federal do Paraná e causou um impacto interessante em todos na sala de aula,
alguns a julgaram correta, outros um pouco exagerada, porém todos a compreenderam. É
inegável a consequência que uma má comunicação pode ocasionar.
Usando o conceito de comunicação um pouco além da subjetividade das
relações humanas, podemos considerar-la como uma ferramenta que faz a interface entre a
maioria dos processos, e a interface é inegavelmente uma das partes mais delicadas de
qualquer sistema.
Podemos dizer que usamos uma grande parte do esforço aplicado ao
desenvolvimento de um projeto de engenharia tentando garantir que a comunicação dentro
do sistema seja adequada, ou seja, que o tratamento e a transferência da informação dentro
das diversas interfaces do sistema sejam corretos. E usando o conceito de comunicação
desta maneira podemos identificar sua aplicação em diversas áreas e em diversas formas
diferentes, o que nos permite entender um pouco mais a fundo a frase que abre o capitulo
1.2.1, e utilizar este conceito na modelagem e resolução de diversos problemas dentro de
qualquer tipo de processo.
13
1.3. TV DIGITAL
A TV Digital foi desenvolvida para tornar possível a transmissão de imagens e
sons de alta definição, e promover também uma maior interatividade entre os
telespectadores e a televisão.
Esta tecnologia vem sendo estudada desde os anos 70, tendo sua aplicação
comercial apenas em meados dos anos 2000, em Tókio, Japão.
Devido ao seu alto potencial comercial as potencias tecnológicas do mundo
trabalharam muito para o desenvolvimento desta aplicação, garantindo assim um alto nível
de investimentos e dando uma notória importância para esta tecnologia.
1.3.1. A REVOLUÇÃO
A TV digital permite a transmissão de imagens com maior numero de detalhes,
maior largura de quadros (16:9) e com uma alta qualidade de sons que podem ter até 6
canais (Dolby AC3). Qualidade bem superior ao da TV analógica atual, e semelhante à
encontrada em filmes comerciais atuais gravados em DVD.
Outra grande promessa é a interatividade entre a TV e o telespectador que a
transmissão de dados pode proporcionar. Algumas já conhecidas como o “pay per view”
(pagamento e escolha do programa de maneira individual), escolha da câmera que
proporciona o melhor ângulo da imagem, compras em lojas “virtuais”, enquetes, pesquisas,
navegação na internet. Mas estes são apenas alguns exemplos dentre muitos outros serviços
que ainda serão desenvolvidos, pois a transmissão de dados abre as portas para diversas
aplicações que certamente serão cada vez mais comuns no cotidiano das pessoas.
Outra revolução interessante é o impacto nos meios de transmissão e recepção
de TV, que devem ser preparados para possibilitar a implantação de redes de TV Digital,
14
passando o antigo tratamento “analógico” da comunicação para sistemas de processamento
de dados altamente sofisticados.
15
2. ESTUDO DA NORMA BRASILEIRA
Neste capitulo abordaremos alguns aspectos da norma ABNT NBR 15601:2007
(Televisão digital terrestre — Sistema de transmissão) que baseia todo o desenvolvimento
deste trabalho.
2.1. INTRODUÇÃO AO ISDB-T
A tecnologia ISDB-T (Integrated Services Digital Broadcasting, Terrestrial) é o
padrão japonês de transmissão de TV digital. O ISDB é derivado do padrão europeu DVB-
T (Digital Video Broadcasting Terrestrial), que se baseia na divisão do espectro em
pequenas portadoras (subportadoras), conhecida como modulação COFDM (Coded
Orthogonal Frequency Division Multiplex)A grande diferença com relação à tecnologia
européia é o fato de que no ISDB as subportadoras são agrupadas em 13 grupos, chamados
de segmentos, que são os responsáveis por transportar toda a informação necessária para a
HDTV (TV de alta definição), como mostra a FIGURA 1:
FIGURA 1 – DIVISÃO DO ESPECTRO EM 13 SEGMENTOS
A vantagem desta segmentação é o fato de tornar possível o tratamento da
informação contida em cada segmento de maneira independente, por exemplo um segmento
pode ter uma modulação QAM16 e no segmento adjacente a modulação poderia ser QPSK,
flexibilizando assim a parametrização de transmissão dos dados contidos em cada segmento
para otimizar a comunicação, fato que pode ser interessante uma vez que o conjunto de
dados transmitidos na TV digital possuem naturezas e fins diferentes (vídeo, áudio, dados e
imagens).
16
O ISDB-T foi concebido para possibilitar não apenas a transmissão de TV
digital para receptores fixos, mas também para móveis (com menor resolução), através de
sua estrutura em camadas. O ISDB-T possui 3 camadas, que contem informações diferentes
porém complementares, podendo assim fazer o uso de uma proteção mais robusta para a
informação mais importante a ser transmitida e de uma proteção que permita um fluxo
maior para informações complementares, que são usadas para aumentar a qualidade de som
e vídeo.
Dentre outras aplicações, uma interessante possibilidade que esse sistema pode
oferecer é a interoperabilidade entre os sistemas de radio digital e HDTV. Resumidamente:
se a informação de áudio for transmitida em um segmento específico dos 13 disponíveis na
modulação COFDM, equipamentos de radio, operando em banda estreita, poderiam captar
o áudio dos canais de TV, e a televisão, por ser um receptor de toda a banda, poderia captar
os canais de radio digital. A estrutura do ISDB permite esta interoperabilidade, que pode
ser considerada um serviço a mais para os usuários e também uma importante abertura para
a abrangência e implantação da radio digital.
2.2. O SISTEMA DE COMUNICAÇÃO
Um esquema do sistema de comunicação ISDB-T se encontra na FIGURA 2:
FIGURA 2 – O SISTEMA DE COMUNICAÇÃO ISDB-T
17
Detalhando um pouco mais o sistema de codificação temos a FIGURA 3:
FIGURA 3 – ESTRUTURA GLOBAL DE CODIFICAÇÃO ISDBT
Detalhando agora o sistema de modulação temos a FIGURA 4:
FIGURA 4 – ESTRUTURA GLOBAL DE MODULAÇÃO DO ISDB-T
A TV digital utiliza o padrão MPEG, na entrada do sistema de transmissão as
informações são multiplexadas em pacotes de 188 bytes chamados de TSP (Transport
Stream Packet) para que possam ser processadas pelo sistema. Nos itens abaixo serão
descritos o funcionamento de cada bloco representado nas figuras acima.
2.2.1. CODIFICADOR REED SOLOMON (RS)
O primeiro estágio de codificação é feito pelo codificador RS. O algoritmo RS
oferece uma proteção para o sinal através de bits de paridade, e ele é um dos códigos que
oferecem a maior capacidade de correção de erros.
18
Infelizmente não entraremos aqui em detalhes sobre este código, porém
algumas informações são necessárias para compreender sua função dentro do sistema.
Poder de correção:
Sabendo que o comprimento máximo do código: n=k+2t. Sendo: n: numero de símbolos de transmissão k: números de símbolos de informação 2t: numero de símbolos de controle O número de possíveis correções é igual à (n-k)/2 erros Aplicado ao ISDB-T, para 1 TSP temos: k=188 bytes 2t=16 bytes n=204 bytes Logo: (204-188)/2 = 8 possíveis correções/TPS
O algoritmo de codificação/decodificação utiliza técnicas de elementos finitos,
matrizes de Galois, que são técnicas matemáticas bastante complexas, porém, o principio
intuitivo do código é simples e mostra o poder de sua lógica:
Principio intuitivo de codificação RS, exemplo codigo RS(5,3): Consideremos que temos o bloco de informação: 01 10 11 1° soma simples : 01 + 10 + 11 = 22 2° soma ponderada : 01 ×1 + 10 ×2 + 11 ×3 = 54 Obtemos então a informação de paridade 22 e 54. Completando o bloco de informações a ser transmitido temos: 01 10 11 22 54 Consideremos agora que a informação sofreu a seguinte interferência: 07 10 11 22 54 Quando chegar ao receptor, este efetuara a decodificação: 1° passo soma simples : 07+10+11=28 2° passo soma ponderada : 07×1 + 10 ×2 + 11 ×3 = 60 3° passo, verifica-se a diferença:
19
4 (28- 22 = 6) 4° Local do erro : 2 ((60- 54) / 6 = 1) Seguindo o algoritmo devemos retirar 6 da palavra de posição 1. Então a informação corrigida fica: (7-6= 01 ) 10 11 22 54 Para o sistema ISDB, utilizamos a notação RS(204,188) indicando que usamos uma
codificação RS com 188 bytes de informação e 204 bytes de transmissão.
2.2.2. DIVISOR POR CAMADAS
Organiza o fluxo hierárquico distribuindo a informação entre as 3 camadas
disponíveis.
2.2.3. DISPERSÃO DE ENERGIA
Utilizado para evitar que uma sequência de “zeros” ou “uns” seja enviada
fazendo com que o receptor “perca” o sincronismo. Este processo é executado a partir de
uma operação binária XOR, entre os dados da camada em referência e uma sequência
pseudo aleatória.
2.2.4. AJUSTE DO ATRASO
A transmissão hierárquica possibilita que diferentes codificações sejam
aplicadas nos dados de cada camada, isso implica que as informações de cada camada
possam ter tamanhos diferentes e para evitar atraso entre essas informações é efetuado um
ajuste de atraso para compensar a diferença entre os dados das diferentes camadas.
2.2.5. ENTRELAÇADOR DE BYTES
O entrelaçador de bytes serve para embaralhar os bytes formadores dos TSP,
para que os dados não sejam ciclicamente enviados no mesmo local dentro da portadora
evitando problemas com canais não gaussianos, que podem implicar em erros cíclicos na
informação transmitida.
20
2.2.6. CODIFICADOR CONVOLUCIONAL
O codificador convolucional ou codificador de Viterbi utiliza um sistema de
treliças para inserir bits de redundância no código, a partir de um polinômio gerador.
Aplicado ao ISDB-T, os polinômios geradores utilizados são: G1 = 171 oct e
G2 = 133 oct, FIGURA 5 e taxa de codificação = ½
FIGURA 5 – POLINÔMIO GERADOR G1 = 171 OCT E G2 = 133 OCT
A taxa de geração é de ½ ,porém, este esquema de geração possibilita a geração
de códigos com diferentes taxas como 2/3, 3/4, 5/6 e 7/8 a partir de uma amostragem, como
mostra a FIGURA 6.
FIGURA 6 – PADRÃO DE SUPRESSÃO PARA DIFRENTES TAXAS DE CÓDIGO CONVOLUCIONAL
21
3. A FERRAMENTA 3.1. O COMPROMISSO
Este trabalho tem por objetivo a criação de um instrumento capaz de reproduzir
com fidelidade o sistema de comunicação digital ISDB-T, visando:
a) Simulação da codificação, transmissão e recepção do sinal dentro da norma ISDB-T. b) Fácil acesso e modificação das diversas variáveis do sistema, permitindo aos futuros
usuários adaptações e análises da informação em qualquer ponto da cadeia de transmissão.
c) Manipulação amigável, para promover sua utilização futura, pois a facilidade de operação é um fator determinante para o sucesso de um software.
d) O código deverá ser implementado de maneira modular, para que cada bloco importante do sistema possa ser modificado ou substituído individualmente, ou ainda novos blocos possam ser introduzidos facilmente dentro da cadeia de comunicação.
e) Interoperabilidade com outros aplicativos permitindo que desenvolvedores que utilizam outros ambientes de programação possam adaptar seus blocos de tratamento da informação dentro da cadeia de transmissão.
3.2. A ESTRATÉGIA DE IMPLEMENTAÇÃO 3.2.1. SIMULADOR
O software MATLAB foi escolhido para a implementação do sistema.
Um estudo preliminar foi feito para verificar quais blocos do sistema ISDB-T
são fundamentais na proteção da informação e apenas estes foram implementados,
deixando o processamento mais leve e o sistema final menos complexo. Este estudo será
apresentado no item 3.4.2.
Cada bloco de processamento da informação foi desenvolvido e validado
separadamente, para assegurar seu bom funcionamento e minimizar a dificuldade de
encontrar defeitos no código, visto a grande quantidade de variáveis presentes no sistema
completo.
22
As interfaces entre os blocos foram bem definidas dentro do corpo do código,
sendo indicadas suas entradas e saídas, bem como o formato e natureza delas, para
possibilitar intervenções, como por exemplo: substituição de um determinado bloco por
outro (para ser testado dentro da cadeia de comunicação), ou inclusão de novos blocos
dentro do sistema completo.
3.2.2. PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES
A idéia deste programa é agrupar o resultado das diversas simulações,
proporcionando com uma interface gráfica, uma rápida consulta destes resultados. A
motivação principal deste aplicativo é o fato de que o tempo para efetuar uma simulação
para traçar uma curva de “Erro de Bits x Sinal/Ruído”, por exemplo, com um nível de erros
de ordem representativa, é muito grande. Este fato inviabiliza a utilização do simulador
descrito em 3.3 para uma consulta “em tempo real” de um resultado específico deste
sistema.
O objetivo principal deste programa é mostrar, a partir de uma configuração
especifica de parametrização, a performance de transmissão do sistema através de uma
curva de “Erro de Bits x Sinal/Ruído e o espalhamento da constelação para um dado nível
de ruído.
O aplicativo foi desenvolvido em Visual Basic, e deve permitir uma consulta
rápida e de maneira intuitiva.
3.3. IMPLEMENTAÇÃO MATLAB
O MATLAB foi escolhido pois permite um estudo prático do sistema e uma
fácil implementação dos algoritmos visto que possui a maioria das funções matemáticas
necessárias no sistema e alguns blocos de processamento, que se fosse implementados
isoladamente inviabilizariam a implementação do sistema completo dentro do prazo
necessário para a finalização do projeto. Também é uma ferramenta importante para testar a
23
viabilidade de codificação do sistema e realizar simulação e análise dos resultados e
robustez do código.
O inconveniente causado pelo MATLAB é o tempo de processamento elevado,
visto que o sistema trabalha com o tratamento de uma grande quantidade de informação.
3.3.1. ESTRUTURA
A partir do esquema representado pela FIGURA 2 (O SISTEMA DE
COMUNICAÇÃO ISDB-T) desenvolveu-se uma estrutura global, como representado em
formato de blocos nas FIGURA 7 e FIGURA 8, para o inicio da estruturação do programa
de simulação. Foram então definidos os principais blocos do sistema: bloco de geração da
informação, de codificação do sinal e mapeamento, o canal de transmissão, a detecção do
sinal, o decodificador e, no final da cadeia, o bloco de verificação do sinal, responsável por
medir a eficiência da transmissão.
FIGURA 7 – ESTRUTURA GLOBAL DE TRANSMISSÃO
FIGURA 8 – ESTRUTURA GLOBAL DE RECEPÇÃO
Tendo esta estrutura global como base, partiu-se para o detalhamento do
sistema levando-se em consideração algumas particularidades. O primeiro ponto à ser
definido é a natureza do sinal, os pacotes de informações e a questão das camadas de
hierarquia. O sinal de entrada proveniente do codificador MPEG e da rede de dados possui
24
três naturezas diferentes, vídeo, som e dados, porém são representados da mesma maneira:
um trem de bits, que devem ser multiplexados em pacotes de 188 bytes.
Analisando a estrutura de camadas, podemos perceber que ela implica
simplesmente em uma organização dos dados, segundo mencionado no item 2.1, e essa
organização tem sua função dentro da estratégia do ISDB-T, porém, cada camada recebe
um tratamento específico e não influencia diretamente no tratamento dado ao sinal da outra
camada, ou seja, podemos considerar que temos 3 fluxos de codificação, um para cada
camada. O codificador para cada camada é o mesmo, mudando-se apenas a configuração de
seus parâmetros, seguindo as especificações da norma. Levando este raciocínio em
consideração percebe-se que a inclusão do sistema de camadas neste simulador atribui
apenas uma complicação de programação desnecessária, pois ela implica somente em uma
logística dos dados e não da sua efetiva proteção por codificação. Optou-se então em
implementar uma estrutura de fluxo único de dados, dimensionada para pacotes de 188
bytes de informação. E considera-se que a simulação da degradação dos sinais das
respectivas camadas é feita de maneira individual, configurando-se o codificador com os
parâmetros de transmissão de cada camada especificados na norma. Um esquema mais
detalhado da estrutura global de transmissão é representada na FIGURA 9.
25
FIGURA 9 – ESTRUTURA DE TRANSMISSÃO DETALHADA
A função de cada bloco será descrita com mais detalhes nos itens abaixo.
3.3.2. GERAÇÃO DA INFORMAÇÃO
Bloco responsável por gerar a entrada do sistema, o sinal a ser transmitido.
Considerando que a entrada é um sinal MPEG, multiplexado em um pacote de 188 bytes,
foram implementadas dois tipos de entradas distintas: a primeira, uma geração aleatória
gaussiana de bits em pacotes de 188 bytes, para simular uma transmissão de um sinal
MPEG. O fato de a informação ser aleatória é importante para não causar víeis nos
resultados. O código gerador de bits é encontrado no ANEXO 1. A segunda geração de
sinal de entrada implementada é feita utilizando uma amostragem da imagem Lena
(FIGURA 10) de 512x512 pixels, que foi utilizada para criar o efeito visual da degradação
da imagem causada pelo aumento do nível de ruído em relação ao sinal. O código que faz a
importação, amostragem da imagem e a formação do pacote de 188 bytes é encontrado no
ANEXO 1.
26
FIGURA 10 – LENA
3.3.3. ESTUDO E DEFINIÇÃO DO BLOCO CODIFICADOR
Partindo do esquema da FIGURA 9 percebemos que dentro do codificador
existem três estágios de proteção do sinal: a codificação Reed Solomon, o entrelaçador de
bytes e o codificador convolucional. Detalhamos então o bloco codificador no FIGURA 11:
FIGURA 11 – BLOCO CODIFICADOR
27
3.3.3.1.CODIFICADOR REED SOLOMON (RS)
Informações sobre o codificador RS podem ser encontradas no item 2.2.1.
Como mencionado, este trabalho não entra no mérito de um estudo detalhado das
codificações, o objetivo maior é de implementação do sistema ISDB-T. No caso do
codificador RS, apesar de ter um funcionamento completamente intuitivo, a implementação
de um algoritmo robusto é complicada, por esse motivo optou-se por utilizar a função de
codificação RS já existente no TOOL BOX de comunicação do MATLAB. O código que
explica o uso do codificador RS do MATLAB e uma rotina para testar o seu funcionamento
é encontrado no ANEXO 1.
3.3.3.2. ENTRELAÇADOR DE BYTES
O entrelaçador de bytes foi implementado de acordo com o protocolo
estabelecido pela norma. Inicialmente identificado como importante para a proteção do
sinal, em uma análise mais cuidadosa percebemos que o entrelaçador é fundamental quando
temos um canal não Gaussiano ver item 2.4.2, pois este embaralha a informação fazendo
com que a posição de determinado dado não seja sempre o mesmo dentro da portadora,
forçando assim a interferência do canal a se aproximar de um canal Gaussiano. Como o
canal usado neste sistema é Gaussiano podemos considerar desnecessário o uso do
entrelaçador neste sistema. Porém já está implementado, validado e disponível para
utilização.
3.3.3.3. CODIFICADOR CONVOLUCIONAL
Este codificador é talvez o mais importante do sistema ver item 2.2.2, e possui
também um algoritmo de complicada implementação. A exemplo do codificador RS, existe
uma função no MATLAB deste codificador, e foi usada no sistema.
28
3.3.4. MAPEAMENTO DA CONSTELAÇÃO
O algoritmo de mapeamento (etiquetagem) da constelação foi implementado.
Temos 4 tipos de modulações possíveis no ISDB-T: QAM64, QAM16, QPSK e DQPSK.
Foram implementadas as modulações QAM64, QAM16, QPSK, a modulação DQPSK foi
aproximada para QPSK, o que é justo uma vez que as duas possuem comportamentos bem
semelhantes e o uso do DQPSK implica em uma complicação desnecessária do algoritmo
de detecção do sinal. As constelações geradas pelo simulador podem ser vistas nas
FIGURAS 12 à 15.
FIGURA 12 – QAM64
Im(s)
Re(s)
29
FIGURA 13 – QAM16
FIGURA 14 – QPSK
Im(s)
Im(s)
Re(s)
Re(s)
30
FIGURA 15 – DQPSK
3.3.5. CANAL DE TRANSMISSÃO
O canal de transmissão implementado deste sistema é um canal de ruído
complexo unitário branco gaussiano centrado, que é bastante representativo para este tipo
de simulação sem necessidade de implementar a modulação. Porém após a implementação
verificou-se que utilizando-se a função de ruído branco disponível no MATLAB poder-se-
ia ter um controle simplificado do nível de sinal\ruído, então optou-se por utilizar esta
função, que é mostrada no ANEXO 1. Nas FIGURA 16 e FIGURA 17 pode-se ver um
exemplo de como fica a constelação após passar pelo canal Gaussiano.
Para o sistema ISDB-T seria interessante a implementação de um canal com
interferência do tipo múltiplo percurso, para simular o comportamento mais real do
ambiente onde o ISDB-T irá operar. Neste trabalho foi decidida a utilização do canal
Im(s)
Re(s)
31
gaussiano, porém, como o sistema é estruturado por blocos a inserção de um bloco com
múltiplo percurso é possível e simples.
FIGURA 16 – QAM16 + RUÍDO
FIGURA 17 – QPSK + RUÍDO
Re(s)
Re(s)
Im(s)
Im(s)
32
3.3.6. BLOCO DECODIFICADOR
O bloco decodificador funciona de maneira inversa e análoga ao codificador. A
FIGURA 8 representa de maneira global o decodificador.
3.3.6.1. DETECÇÃO POR MÁXIMO DE VEROSSIMILHANÇA
Dentro do algoritmo de Viterbi existe um primeiro estágio que é a estimação do
trem de bits a partir do símbolo detectado pelo receptor. Em geral esta estimação é feita por
um algoritmo de máximo de verossimilhança. No caso onde este algoritmo é ligado
internamente com o de Viterbi é conhecida como detecção de viterbi “soft” e quando não
temos este estágio chamamos de detecção “hard”.
Na utilização do decodificador de Viterbi do MATLAB não se obteve bons
resultados na utilização do decodificador “soft” então foi construído um decodificador
hibrido, implementando a função de detecção por máximo de verossimilhança e em seguida
uma decodificação “hard”.
O algoritmo de máximo de verossimilhança é mostrado na FIGURA 18. Sua
interpretação é simples, ele recebe um símbolo, e calcula a máxima probabilidade para cada
bit, neste caso, seguindo uma distribuição normal (canal gaussiano), buscando saber se este
bit é 1 ou 0.
33
FIGURA 18 – ALGORITMO DO MÁXIMO DE VEROSSIMILHANÇA
É importante notar que a implementação deste algoritmo foi feita para uma
distribuição de probabilidade normal, devido ao canal ser gaussiano. E existe um algoritmo
específico para cada tipo de modulação (QPSK, QAM16 e QAM64), pois estas implicam
em símbolos diferentes a serem detectados.
3.3.6.2. DECODIFICAÇÃO CONVOLUCIONAL
Para a decodificação de viterbi do tipo “hard” é usada uma função do
MATLAB, ver ANEXO 1.
3.3.6.3. DESENTRELAÇAMENTO
O desentrelaçamento foi implementado de acordo com o protocolo estabelecido
pela norma.
34
3.3.6.4. DECODIFICAÇÃO REED SOLOMON
A decodificação RS também faz uso de uma função disponível no MATLAB,
ver ANEXO 1.
3.3.7. CADEIA DE TRANSMISSÃO
A estrutura do código para simular a cadeia de transmissão é bem definida em
blocos dentro do código, contendo a informação do sinal de entrada e saída de cada estágio
do codificador.
De maneira ilustrativa, exemplos podem ser visto nos ANEXO 1.
3.3.8. TRANSMISSÃO 3.3.8.1. MENSAGEM ALEATÓRIA
A geração aleatória de mensagens binárias foi implementada e é encontrada no
ANEXO 1.
3.3.8.2. TRANSMISSÃO DE IMAGEM
A transmissão de imagem também foi implementada e seu código pode ser
visto no ANEXO 1, neste exemplo foi usada a imagem Lena FIGURA 10
3.4. ESTRUTURA DO PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES
A estrutura deste aplicativo é simples, contendo apenas uma interface gráfica
que permite ao usuário escolher uma parametrização de transmissão e visualizar os
resultados, e um banco de dados onde estas informações são armazenadas.
35
4. RESULTADOS
O produto deste trabalho é a implementação da cadeia de transmissão ISDB-T,
lembrando que este projeto deve atender os seguintes preceitos:
a) Simulação da codificação, transmissão e recepção do sinal dentro da norma ISDB-T.
b) Fácil acesso e modificação das diversas variáveis do sistema, permitindo aos futuros usuários adaptações e análises da informação em qualquer ponto da cadeia de transmissão.
c) Manipulação amigável, para promover sua utilização futura, pois a facilidade de operação é um fator determinante para o sucesso de um software.
d) O código deverá ser implementado de maneira modular, para que cada bloco importante do sistema possa ser modificado ou substituído individualmente, ou ainda novos blocos possam ser introduzidos facilmente dentro da cadeia de comunicação.
e) Interoperabilidade com outros aplicativos permitindo que desenvolvedores que utilizam outros ambientes de programação possam adaptar seus blocos de tratamento da informação dentro da cadeia de transmissão.
4.1. IMPLEMENTAÇÃO MATLAB
Seguindo a estrutura do programa que foi descrita no item 3, a implementação
final em MATLAB é composta de 12 arquivos de código para a cadeia de transmissão.
O corpo do sistema de comunicação foi implementado no arquivo
“ISDB_CodificadorTPS.m” ver ANEXO 1. Neste arquivo é feita a integração de todos os
blocos do sistema, efetuando-se assim a síntese da cadeia de comunicação.
Para garantir a manipulação amigável, compromisso do projeto, foi criada uma
estrutura de índices, comentários e padrão de codificação para orientar os futuros usuários
quanto ao funcionamento do programa e significado de cada variável, com o objetivo de
simplificar a maneira de proceder no caso de modificação do código. Este módulo foi
concebido com o conceito de definição de saídas e entradas, indicando as variáveis que
funcionam como interfaces do sistema, sendo estas definidas como variáveis de entrada, os
“inputs” dos blocos do sistema, e variáveis de saída, as saídas dos blocos. O objetivo de
36
padronizar desta maneira o código é facilitar a substituição dos blocos ou inclusão de novas
etapas de tratamento dentro da cadeia de transmissão. Ou seja, basta identificar a entrada do
bloco e respeitar a nomenclatura da saída do mesmo para que seja efetuada a sua
substituição no sistema.
A FIGURA 19 mostra o índice deste módulo: FIGURA 19 – ÍNDICE DO MODULO ISDB_CodificadorTPS.m
A FIGURA 20 a seguir exemplifica a identificação das interfaces do sistema:
37
FIGURA 20 – EXEMPLO DE IDENTIFICAÇÃO DE INTERFACE E ORIENTAÇÃO PARA SUBSTITUIÇÃO DO BLOCO
Dentre as informações que fazem parte do programa estão a identificação de
variáveis, explicações sobre seu funcionamento, indicação de particularidades ou pontos de
risco e dificuldades encontradas durante o desenvolvimento e que podem causar problemas
para o usuário. O objetivo dos comentários exaustivos no código é de facilitar sua
utilização, evitando assim a geração de documentos suplementares para orientar a
manipulação deste programa uma vez que a facilidade de utilização é um fator
determinante para garantir o sucesso deste tipo de aplicação.
O restante dos módulos que compõem a cadeia de transmissão são os blocos do
sistema ou funções de suporte. Abaixo será feita uma breve descrição desses módulos, sem
entrar no detalhe da técnica utilizada na sua implementação ou em seus algoritmos de
funcionamento.
• binarToDec.m: converte um valor binário em decimal. • binarycode.m: converte um valor décima em binário.
38
• vetor_binarios_para_decimal.m: efetua a converção de um TSP binário em decimal.
• vetor_decimal_para_binario.m: efetua a converção de um TSP decimal em binairio.
• calculoVerossimilhanca: organiza a informação para o calculo de verossimilhança.
• calcVrais.m: efetua o cálculo de probabilidade bit a bit de cada símbolo recebido, seguindo uma lei normal (canal gaussiano).
• Bancos.m: Contem os valores de comparação para o calculo de verossimilhança, ou seja, os grupos de símbolos separados em grupos para o bit k=0 ou k=1, sendo k o índice dos bits de um símbolo. O arquivo contem esses grupos para cada tipo de modulação.
• entrelacamentoBytes.m: efetua o entrelaçamento de um TSP seguindo o protocolo estabelecido pela norma.
• desentrelacador.m: efetua o desentrelaçamento seguindo o protocolo estabelecido pela norma.
• ISDB_Mapeador: mapeia a informação, em função da parametrização de modulação escolhida para a transmissão.
• messageAleaDec.m: Gera um TSP de mensagem aleatória, com dimbolos em decimal, formato necessário para o inicio do tratamento da informação.
É importante lembrar que a cadeia de transmissão foi dimensionada para a
codificação de um TSP de informação, sendo necessário relança-la a cada novo TSP a ser
“transmitido”.
Para efetuar a transmissão de uma sequencia de TSPs é necessária a criação de
outro modulo de programa para funcionar como “main”. Ou seja, um código que irá
relançar o sistema, efetuando iterações de transmissões. O ANEXO 1 apresentam alguns
exemplos de como criar um programa no MATLAB para lançar uma transmissão iterativa
de TSPs.
Cada etapa do sistema foi validada individualmente antes de ser aplicada dentro
da cadeia de transmissão. A validação global do sistema pode ser exemplificada pela
FIGURA 21 a seguir, que mostra o resultado de uma transmissão sucessiva da imagem
39
Lena, utilizando o código transm_Image_iterativo.m (ANEXO 1), que comprova
qualitativamente que o sistema é capaz de transmitir uma informação mantendo sua
integridade e que essa informação é degradada devido ao aumento do nível de ruído do
canal, como esperado. Cada imagem foi transmitida com um nível de variância de ruído
diferente e de maneira crescente.
FIGURA 21 – TRANSMISSÕES SUCESSIVAS DA IMAGEM LENA PARA NÍVEIS DE SINALXRUÍDO DECRESCENTES
Após comprovar o bom funcionamento do sistema, foram desenvolvidos
programas para traçar a curva de “Erro de Bits x Sinal/Ruído” visando verificar a
performance do sistema e comparar estes com os resultados esperados para este tipo de
comunicação. O arquivo SNR_Por_TSP_8.m (ANEXO 1) foi utilizado para lançar a
iteração do sistema e traçar as curvas. Cada resultado abaixo demorou cerca de 3 dias de
simulação para atingir os níveis mínimos de erros indicados. O ideal seria chegar a valores
menores, na ordem de 10e-12, porém o tempo de processamento do equipamento
disponível para a simulação da transmissão inviabiliza tal resultado. Estas curvas, porém,
indicam bem a convergência da transmissão, representando globalmente o comportamento
de cada parametrização sistema.
Foram implementadas no simulador todas as modulações, porém, por
simplicidade optou-se por não utilizar a modulação DQPSK pois o comportamento desta é
40
muito semelhante ao QPSK, podendo ser aproximada sem perder a representatividade do
resultado. A utilização da modulação DQPSK implicaria complicações no restante da
cadeia de transmissão que seriam desnecessárias do ponto de vista do resultado da
simulação.
Outro ponto importante é o fato de a taxa de codificação convolucional 7/8
aparentemente não funcionar no toolbox do MATLAB utilizado no simulador. Para
entender o problema, a modificação da taxa de codificação se passa através de um
puncionamento ou amostragem do sinal codificado por uma taxa 1/2, seguindo o protocolo
estabelecido na FIGURA 6. Esta amostragem diminui a quantidade de bits de paridade
otimizando o fluxo de dados, porém ela retira efetivamente parte da informação original.
Durante a decodificação, existe um algoritmo que tenta fazer a restituição desta informação,
alguns simplesmente restituem os bits amostrados com valores de “0” (zero) ou “1” (um),
outros algoritmos fazem uma espécie de escolha aleatória, porém, todos inserem erros na
informação transmitida com a esperança desta ser corrigida pelo decodificador, implicando
nestes casos a diminuição da eficiência de transmissão, como fica evidente nas figuras 22 à
24. Não foi encontrada a informação sobre a estratégia usada pelo MATLAB para efetuar a
re-amostragem do sinal, mas em um teste amostrando com taxa 7/8 e restituindo o sinal,
chegou-se à mesma incompatibilidade de decodificação. A quantidade de erros inserida no
processo é tamanha que faz o decodificador “se perder”, mesmo com ausência de ruído na
transmissão, impossibilitando a decodificação do sinal. Este fato se mostrou um ponto
difícil de ser resolvido, pois a não possibilidade de decodificação parece ser correta, porém,
esta taxa é especificada na norma, ou seja, está disponível como parâmetro de escolha para
a transmissão ISDB-T. Este é um ponto que demanda um aprofundamento no método de
puncionamento do sinal.
As FIGURAS 22 à 24, mostram as curvas para as respectivas configurações de
transmissão indicadas nas figuras.
41
FIGURA 22 – PERFORMANCE DE TRANSMISSÃO QPSK PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE
Erb
Erb
Erb
Erb Eb/No Eb/No
Eb/No Eb/No
42
FIGURA 23 – PERFORMANCE DE TRANSMISSÃO QAM16 PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE
Erb
Erb
Erb
Erb Eb/No Eb/No
Eb/No Eb/No
43
FIGURA 24 – PERFORMANCE DE TRANSMISSÃO QAM64 PARA TAXAS DE CÓDIGO 1/2, 2/3, 3/4 E 5/6 RESPECTIVAMENTE
Não existe, entretanto, um padrão teórico para comparação destas curvas e
comprovação de performance do sistema. Podemos considerar, entretanto, que elas
apresentam um comportamento compatível com o tipo de transmissão modelada.
4.2. PROGRAMA DE APRESENTAÇÃO DOS RESULTADOS DAS SIMULAÇÕES
A FIGURA 25 mostra a interface do programa, que foi batizado com o nome de
ISDB-T Performance de Transmissão.
As opções de configuração disponíveis são: i. Modo de transmissão: indica o numero de portadoras do sistema.
ii. Intervalo de guarda: indica o espaçamento entre as portadoras. iii. Modulação: QPSK, QAM16, QAM64. iv. Taxa de codificação: a taxa do código convolucional. v. Nível da relação Sinal x Ruído: para visualização da constelação.
Erb
Erb
Erb
Erb
Eb/No Eb/No
Eb/No Eb/No
44
Os resultados disponibilizados são: i. Numero de portadoras.
ii. Numero de TSP por segmento. iii. Numero de TSP para os 13 segmentos. iv. Taxa de dados por segmento. v. Taxa de dados para os 13 segmentos. vi. Figura com a curva “Erro de Bits x Sinal/Ruído”. vii. Figura com a constelação para um dado nível de Sinal x Ruído.
FIGURA 25 – INTERFACE GRÁFICA DO PROGRAMA
O banco de dados foi desenvolvido dentro do aplicativo para evitar a existência
de um arquivo externo contendo este banco.
Uma tela de abertura foi criada para que seja possível carregar o programa, e
estabelecer um contato amigável com o usuário, FIGURA 26.
45
FIGURA 26 – TELA DE ENTRADA
Uma tela contendo os créditos do aplicativo também foi criada para registrar os
créditos do desenvolvimento.
46
5. CONCLUSÃO
O resultado deste projeto mostra que foi implementado um simulador do
sistema ISDB-T que funciona e também atende os compromissos definidos para este
projeto.
Para o desenvolvimento do simulador optou-se pela utilização do software
MATLAB pois ele contem algumas funções, simples e complexas, que caso fossem
implementadas inviabilizariam o desenvolvimento do projeto no prazo estipulado. Apesar
de o MATLAB ser muito difundido dentro da engenharia, este fato limita um pouco a
utilização do simulador, afinal o usuário deverá conhecer o MATLAB, entender bem o seu
funcionamento e possuir este aplicativo em versões superiores ao 7.0 para poder utilizar o
simulador. Fora este inconveniente o MATLAB proporciona qualidades importantes para o
simulador. Com ele, foi possível a implementação de maneira modular e para um usuário
experiente em MATLAB a manipulação do simulador mostra-se bastante simples,
principalmente uma vez que todas as variáveis do sistema estão disponíveis e as
funcionalidades do software permite manipula-las, construir facilmente gráficos, efetuar
análises, etc.
Para os compromissos do projeto, o único que não foi atingido completamente,
é a questão de interoperabilidade do sistema com outros aplicativos e ambientes de
programação. Foi decidido durante o desenvolvimento do simulador que todo o esforço
seria focado na estruturação do sistema, restando à questão de interoperabilidade o status de
oportunidade futura. No item 6.4 é proposta uma solução para esta questão como sugestão
de sequência do projeto.
Entrando um pouco em detalhe sobre o simulador, percebe-se que a
identificação dos blocos importantes do sistema foi adequada, uma vez que todos os outros
não atuam diretamente na proteção da informação, pois fazem parte da organização da
informação para transmissão ou preparação e proteção ligadas à transformação D/A e
47
modulação analógica do sinal. Na questão modulação de sinal, foi utilizada a representação
desta simplesmente como símbolos complexos, o que permite uma representatividade
matemática adequada para este tipo de aplicação, e simplifica bastante, tanto a sua
implementação, quanto a modelação do canal.
No item 4.1 foi explicado o porquê da escolha de não utilização da modulação
DQPSK, e a problemática envolvendo a taxa de codificação 7/8. Este ultimo ponto não
pode ser resolvido. Por motivos de simplificação foi utilizado o codificador convolucional
disponível pelo MATLAB, e este não é capaz de usar esta taxa de codificação. Apesar da
tentativa de implementar esta taxa de amostragem, não foi obtido sucesso, e por ser uma
tecnologia recente não existe muita documentação disponível sobre o assunto, exigindo um
estudo mais aprofundado sobre esta técnica de amostragem, o que não foi possível até o
presente momento. Dessa maneira, o simulador aqui apresentado não é capaz de transmitir
as informações com uma taxa de codificação igual à 7/8. Este fato não está
comprovadamente aceito como um problema específico desta aplicação, porém, inspira a
dúvida do porquê desta taxa ser especificada na norma.
Levando em consideração os fatos acima citados, o simulador pode ser
considerado como um bom modelo para o sistema ISDB-T, e certamente será de utilidade
aos estudiosos da comunicação digital, como suporte à suas pesquisas. Permitindo que os
esforços sejam focados nos pontos de interesse no sistema e que não seja perdida energia
desnecessária como todo o restante.
O programa desenvolvido para a apresentação dos resultados também se
mostrou bastante interessante. Rapidamente é possível fazer sua parametrização e analisá-la.
A escolha de apresentar a constelação foi tomada pois esta traz uma informação qualitativa
complementar e importante, pois é possível identificar a dispersão dos símbolos durante a
transmissão e sua relação com a curva de “Erros de bits x Sinal/Ruído”. Inicialmente
cogitou-se a hipótese de apresentar o resultado da transmissão da imagem da Lena como
48
uma informação qualitativa da degradação do sinal, porém esta informação perde um pouco
o sentido uma vez que a informação é digital e não sofrerá interferências do tipo “chuvisco”
como na TV analógica. Quem determina se a degradação do sinal é suficiente para
impossibilitar sua decodificação em imagem é o decodificador MPEG que faz efetivamente
a conversão do sinal recebido em uma imagem na tela da televisão.
Globalmente o projeto alcançou seus objetivos, e seus produtos são de interesse,
neste momento, dentro da área da TV Digital. Em uma interpretação pessoal, acredito que
este trabalho é importante pelo seu conceito, pois busca a compreensão desta nova
tecnologia, já que ela está sendo importada e certamente com grandes valores associados
que são custeados pela sociedade brasileira. Do meu ponto de vista, o mínimo que se deve
fazer é compreendê-la da maneira mais completa possível, e adapta-la para as
especificidades de cada região brasileira garantindo o bom uso desta tecnologia. Pois se as
riquezas geradas neste pais devem ser exportadas por não sermos capazes de desenvolver
nossas próprias soluções, ao menos temos o dever de aproveitar ao máximo possível o
investimento, para sermos exigentes com relação a qualidade e também onerar o mínimo
possível o nosso país.
49
6. SUGESTÃO DE SEQUÊNCIA DO PROJETO
6.1. CANAL COM MÚLTIPLO PERCURSO
Um canal gaussiano com múltiplo percurso seria mais representativo para a
comunicação ISDB-T, o que tornaria o simulador mais próximo do modo de funcionamento
real deste sistema de comunicação. Uma vez implementado, uma nova variável será
necessária dentro do simulador, o intervalo de guarda.
6.2. IMPLEMENTAÇÃO C
A implementação em C tornaria mais viável o tempo de execução do programa,
pois otimizaria o processamento do mesmo, uma vez que não é dependente de toda
estrutura imposta pelo software MATLAB. A complexidade de programação, entretanto é
mais elevada e demorada, sendo necessários muitos testes para certificar a robustez do
sistema.
6.3. VALIDAÇÃO EMPÍRICA DOS RESULTADOS
O fato que da utilidade a um simulador é a representatividade de seus resultados
em relação ao sistema real que ele representa. Seria interessante comparar os resultados
encontrados nas simulações com os existentes no sistema real de transmissão. Podendo
identificar possíveis divergências, possibilitando entendê-las e corrigi-las.
6.4. INTEROPERANILIDADE COM OUTROS APLICATIVOS
O item de objetivo que não foi atendido neste projeto é a questão de
interoperabilidade com outros aplicativos ou ambientes de programação.
Uma proposta para essa interoperabilidade é utilizar o conceito de interface.
Esta solução consiste em escrever as variáveis importantes do sistema em arquivos de texto
do tipo “.txt”, possibilitando aos outros aplicativos “lerem” estas variáveis e “escreverem”
50
seus resultados para que o simulador possa receber essa informação processada pelo outro
aplicativo.
O esquema da FIGURA 27 ilustra esta solução dando o exemplo da
substituição do bloco RS do sistema por um bloco RS-2 externo ao simulador.
FIGURA 27 – PROPOSTA DE INTEROPERABILIDADE PARA O
SIMULADOR
6.5. PESQUISA COM USUÁRIOS
Seria interessante efetuar uma pesquisa para sabe a avaliação dos futuros
usuários quanto ao programa, podendo assim evoluir-lho e adapta-lo para facilitar sua
performance e utilização.
51
REFERÊNCIAS ASSOCIAÇÃO BRASILEIRA DE NORMA TÉCNICAS. NBR 15601:2007.
52
DOCUMENTOS CONSULTADOS ROSS, J. Televisão Analógica e Digital. 1. ed. Rio de Janeiro: Antenna Edições Técnicas Ltda., 2007 RESENDE, L. E. A. Desenvolvimento de uma ferramenta de análise de desempenho para o padrão de TV Digital ISDB-T. Rio de Janeiro: Dissertação de Mestrado PUC, 2004. WU Y.; PLISZKA E.; CARON B.; BOUCHARD P.; CHOUINARD G. Comparison of Terrestrial DTV Transmission Systems: The ATSC 8-VSB, the DVB-T COFDM, and the ISDB-T BST-OFDM. IEEE TRANSACTIONS ON BROADCASTING, VOL. 46, NO. 2, JUNE 2000 NOBUO I.; KENICHI T. HDTV Mobile Reception in Automobiles. PROCEEDINGS OF THE IEEE, VOL. 94, NO. 1, JANUARY 2006 TAMOTSU I. Transmission System for ISDB-TSB (Digital Terrestrial Sound Broadcasting) IEEE, VOL. 94, NO. 1, JANUARY 2006 G. BEDICKS G.; YAMADA F.; SUKYSF.; DANTASC. E. S.; RAUNHEITTEL. T. M.; AKAMINE C. Results of the ISDB-T System Tests, as Part of Digital TV Study Carried Out in Brazil. IEEE TRANSACTIONS ON BROADCASTING, VOL. 52, NO. 1, MARCH 2006 M. TAKADA; MASAFUMI S. Transmission System for ISDB-T. IEEE, VOL. 94, NO. 1, JANUARY 2006 CODIGOS CONVOLUCIONAIS - http://cict.inatel.br/nova2/docentes/dayan/TP504/ClassNotes/C%C3%B3digos/na-tp102-2.pdf - visitado dia: 11/07/2008, 11h51m. TRANSFORMADAS EM CORPOS FINITOS PARA CODIFICAÇÃO DE CANAL - iecom.dee.ufcg.edu.br/~jcis/junho1990/volume%205/JCIS_1990_5_03.pdf - visitado dia: 20/07/2008. 23h12m. CORPO DE GALOIS - http://www.impa.br/opencms/pt/eventos/downloads/jornadas_2006/trabalhos/jornadas_valdenilson_garcia.pdf - djhj visitado dia: 11/07/2008, 12h20m. NOVAS APLICAÇÕES DO ISDB-T - www.dibeg.org/techp/Documents/Brazil010618/ANEXO5-p.PDF - dia: 30/07/2008, 10h07m.
53
ISDB-Tsb: O PADRÃO JAPONÊS DE RÁDIO DIGITAL http://www.freelists.org/archives/radiolivre/12-2005/msg00136.html - dia: 30/07/2008, 14h33m.
54
ANEXO 1 Rotinas do simulador implementadas em MATLAB
55
ISDB_CodificadorTPS.m % % Projeto final de graduacao da Universidade Federa l do Parana % % Simulador do Sistema de Comunicacao ISDB-T % % Autor: Ricardo Sugayama, [email protected] r % Professor Orientador: Evelio M. G. Fernández % % Este programa tem por objetivo modelar o bloco ba sico de codificcao de um TSP de comunicacao. % % - Um TSP eh uma menssagem de 204 bytes, sendo 188 bytes de informacao util e 16 bytes de paridade Reed Solomon % % Compoem o corpo do programa: % % 1)SISTEMA DE TRANSMISSAO % ---------------------------------------------- % 1.1) Parametros do Sistema % 1.2) Gerador aleatorio de sequencia binaria % 1.3) Reed Solomon % 1.4) Entrelacador de bytes % 1.5) Codificador convolucional % 1.6) Bloco mapeador % % 2)CANAL % ---------------------------------------------- % 2.1) Canal com Ruido Branco Gaussiano Centrado % ---------------------------------------------- % % 3) SISTEMA DE RECEPCAO % ---------------------------------------------- % 3.1) Deteccao por maximo de verossimilhanca % 3.2) Decodificacao de Viterbi % 3.3) Desentrelacamento % 3.4) Decodificador Reed-Solomon % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% Inicio do programa %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% 1)SISTEMA DE TRANSMISSAO %%
56
%% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.1) PARAMETROS DO SISTEMA % % 1.1.1) Tipo de mapeamento(tipoMap) % 1.1.2) Ruido branco unitario centrado do canal % 1.1.3) Taxa de codigo convolucional %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.1.1) Tipo de mapeamento(tipoMap): % ---------------------------------------------- % (1) DQPSK % (2) QPSK % (3) QAM-16 % (4) QAM-64 tipoMap =2; % tipo de modulacao % ---------------------------------------------- % 1.1.2) Ruido branco unitario centrado do canal % ---------------------------------------------- snr =100; %relacao sinal/ruido em dBW % ---------------------------------------------- % 1.1.3) Taxa de codigo convolucional % ---------------------------------------------- %taxaCod Taxa % (1) 1/2 % (2) 2/3 % (3) 3/4 % (4) 5/6 % (5) 7/8 taxaCod = 1; %TAXA DO CODIGO CONVOLUCIONAL % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.2)Geracao de mensagem aleatoria % %1.2.1) Geracao de um TSP aleatorio %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.2.1) Geracao de um TSP aleatorio
57
% ---------------------------------------------- % Criacao da mensagem aleatoria com simbolos em dec imal S = messageAleaDec(8,188); % Obs.: A geracao da mensagem aleatoriamente eh int eressante para nao % tendenciar o resultado. % MODIFICACAO: % Para introduzir outra mensagem de entrada no sist ema faca S = (sua mensagem) % % ENTRADA: sua mensagem % SAIDA: variavel "S" % % Lembre-se que a variavel S deve ter 188 bytes. % Veja o exemplo dectransmissao da imagem da Lena, arquivo: transm_Image_iterativo_bin.m % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.3) Reed Solomon % % 1.3.1) Parametrizacao % 1.3.2) Geracao da Matriz de Galois % 1.3.2) Codificacao Reed-Solomon % 1.3.4) Adequacao do vetor de informacao %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Este bloco tem a funcao de criar os bytes de % paridade Reed-Solomon % 1.3.1) Parametrizacao % ---------------------------------------------- m = 8; % Number of bits per symbol n = 204; % Word lengths for code k = 188; % Number of information symbols % ---------------------------------------------- % 1.3.2) Geracao da Matriz de Galois % ---------------------------------------------- msgf = gf(S,m); % Two rows of m-bit symbols % ---------------------------------------------- % 1.3.3) Codificacao Reed-Solomon % ---------------------------------------------- codeRs = rsenc(msgf,n,k); % Obs.: sabendo que o codigo contem 188 palavras de 8 bits % e que o codificador adiciona 16 palavras de parid ade o % numero de correcoes possiveis eh = (n-k)/2= (204- 188)/2= 8
58
% ou seja, eh possivel corrigir ate 8 erros em um T SP de informacao % ---------------------------------------------- % 1.3.4) Adequacao do vetor de informacao % ---------------------------------------------- % A variavel "codeRs" eh do tipo GF do matlab (matr iz de Galois) % Para acessar somente a matriz com os valores, sem as informacoes % do polinomio gerador, etc, utiliza-se codeRs.x: Srs = double(codeRs.x); % vetor com 204 simbolos (188 de informacao, 16 de paridade RS) % deve-se converter os valores para o tipo "double" % para possibilitar trabalhar aritimeticamente com as % informacos do vetor % Obs.: para voltar a construir a matriz de Galois com o vetor acima deve-se usar a seguinte sintaxe: gf(Srs,8) % MODIFICACAO: % Para usar outro codficador reed-solom basta fazer Srs= seu codificador RS % ENTRADA: variavl "S" % SAIDA: variavel "Srs" % % Lembre-se a variavel "S" tem 188 bytes e a "Srs" deve ter 204 bytes % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.4) Entrelacador de bytes % 1.4.1) Entrelacamento %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % O objetivo desse bloco eh de entrelacar os bytes para tentar impedir a % perturbacao ciclica do mesmo bloco de informacoes , impedindo uma perda % viciosa da mesma parte do sinal, por influencia d o meio, durante a transimssao %1.4.1) Entrelacamento % ---------------------------------------------- SrsEntr = entrelacamentoBytes(Srs); % MODIFICACAO: % Para usar outro entrelacador SrsEntr= seu entrela cador % ENTRADA: variavl "Srs" % SAIDA: variavel "SrsEntr" % % Lembre-se a variavel "SrsEntr" deve ter 204 bytes % ----------------------------------------------
59
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.5) Codificador convolucional % 1.5.1) Transformacao do vetor SrsEntr para binari o % 1.5.2) Geracao da trelica % 1.5.3) Codificacao convolucional global taxa=1/2 % 1.5.4) Puncionamento %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.5.1) Transformacao do vetor SrsEntr para binari o % ---------------------------------------------- % A codificacao convolucional trabalha com bits log o o vetor de informacao % deve ser transformado para a base binaria. % o vetor de informacao na base binaria eh chamado de SrsEntrBin SrsEntrBin =vetor_decimal_para_binario(SrsEntr); %retira o "0" que foi usado para iniciar o vetor % MODIFICACAO: % Para usar outra transformacao binaria faca SrsEnt rBin= seu transformador % ENTRADA: variavl "SrsEntr" % SAIDA: variavel "SrsEntrBin" % ---------------------------------------------- % 1.5.2) Geracao da trelica % ---------------------------------------------- % Contrucao da trelica "trellis" sendo o polinomio gerador: trellis = poly2trellis(7,[171 133]); % Constraint length k= 7 (6 bits de memoria (regist ro de deslocamento) + bit de entrada) % Somatoria dos estágios definidos por G1=171(oct) e G3=133(oct) % O valor de k, G1 e G2 sao obtidos da seguinte man eira: A partir do diagrama % do codificador inicialmente conta-se o numero de registradores somando-se % o bit do estágio de entrada e tem-s o valor de k (Constraint length). Observando-se os % estágios que contribuem para o somatorio final (b racos que saem do % estágio ateh o somador) afeta-se "1" para os está gios que contribuem para % o somatorio e "0" para os estágios que nao contri buem, finalmente tem-se % um numero binario com k bits, no nosso exemplo 11 11011 para G1 e 1011011 % para G2, transformando-os para octetos temos G1=1 71(oct) e G3=133(oct) e % assim tem-se a definicao necessaria para a trelic a. trellis = poly2trellis(7,[171 133]); %trelica
60
% MODIFICACAO: % Para usar outra trelica faca trellis = sua trelic a % ENTRADA: - % SAIDA: variavel "trellis" % ---------------------------------------------- % 1.5.3) Codificacao convolucional % ---------------------------------------------- % Codificacao convolucional k=7, duas saidas: G1=17 1(oct) e G3=133(oct) e taxa 1/2 %Para obter taxas de codificacao 2/3, 3/4, 5/6 e 7/ 8 como eh preconizado na %norma o sistema efetua uma amostragem ou puncionam ento do sinal que sai do %codificador de taxa mae 1/2 acima. Seguindo a tabe la abaixo: % % TAXA Sequencia transmitida % 1/2 -> X1;Y1 % 2/3 -> X1;Y1;Y2 % 3/4 -> X1;Y1;Y2;X3 % 5/6 -> X1;Y1;Y2;X3;Y4;X5 % 7/8 -> X1;Y1;Y2;X3;Y4;X5;Y6;X7 %O parametro taxaCod identifica o tipo de codificac ao escolhida (taxaCod) % %taxaCod Taxa % 1 1/2 % 2 2/3 % 3 3/4 % 4 5/6 % 5 7/8 % ***------------------------------------------- if taxaCod == 1 %if principal para a rotin de puncionamento puncionamento= [ 1 , 1]; %pode ser 204 tsp taxa = '1/2' ; elseif taxaCod ==2 puncionamento= [ 1 0, 1 1]; %pode ser 204 tsp taxa = '2/3' ; elseif taxaCod == 3 puncionamento= [ 1 0 1, 1 1 0]; % pode ser 204 tsp taxa = '3/4' ; elseif taxaCod == 4 puncionamento= [ 1 0 1 0 1, 1 1 0 1 0]; %erro tem que ser 205 tsp taxa = '5/6' ; %correção do numero de bits para adequar ao mapeame nto SrsEntrBin = [zeros(1,8) SrsEntrBin]; elseif taxaCod == 5 puncionamento= [ 1 0 0 0 0 1 0 1, 1 1 1 1 0 1 0 ]; %erro tem que ser 210 taxa = '7/8' ; %correção do numero de bits para adequar ao mapeame nto
61
SrsEntrBin = [zeros(1,8*6) SrsEntrBin]; end %fim do if principal para a rotin de puncionamento %------------------------------------------------- %------------------------------------------------- %Codificação SrsEntrBinConv = convenc(SrsEntrBin,trellis, puncio namento); % MODIFICACAO: % Para usar outro codificador faca SrsEntrBinConvGl obal = seu codificador % ENTRADA: variavel "SrsEntrBin" % SAIDA: variavel "SrsEntrBinConv" % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.6) Mapeador %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Neste bloco efetua-se o mapeamento para a % transmissao da informacao. % Seguindo a parametrizacao pre definida pode-se % mapear o sinal para as seguintes modulacoes (tipo Map): % 1) DQPSK % 2) QPSK % 3) QAM-16 % 4) QAM-64 SrsEntrBinConvMap =ISDB_Mapeador(tipoMap,SrsEntrBin Conv); % MODIFICACAO: % Para usar outro mapeador faca SrsEntrBinConvMap = seu mapeador % ENTRADA: variavel "SrsEntrBinConv" % SAIDA: variavel "SrsEntrBinConvMap" %Carrega titulos das figuras e expoente "M" if tipoMap == 1 TipoModul = 'DQPSK' ; %titulo do grafico M=2; %Numero de bits par palavra elseif tipoMap == 2 TipoModul = 'QPSK' ; %titulo do grafico M=2; %Numero de bits par palavra elseif tipoMap == 3 TipoModul = 'QAM16' ; %titulo do grafico M=4; %Numero de bits par palavra else TipoModul = 'QAM64' ; %titulo do grafico M=6; %Numero de bits par palavra end
62
% ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% 2) CANAL %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 2.1) Canal com Ruido Branco Gaussiano Centrado %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ---------------------------------------------- SrsEntrBinConvMapRuido = awgn(SrsEntrBinConvMap,snr , 'measured' ) ; % MODIFICACAO: % Para usar outro canal faca SrsEntrBinConvMapRuido = seu canal % ENTRADA: variavel "SrsEntrBinConvMap" % SAIDA: variavel "SrsEntrBinConvMapRuido" % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% 3) SISTEMA DE DETECCAO %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.1) Deteccao por maximo de verossimilhanca % 3.1.1) Calculo da variancia do ruido do canal % 3.1.2) Estimacao por maximo de verossimilhanca %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ---------------------------------------------- % Este algoritmo usa uma funcao de maximo de veross imilhanca para um canal % com ruido gaussiano branco e centrado. % A funcao compara o simbolo recebido com todos os valores possiveis dos simbolos para % verificar a maxima probabilidade de cada bit da p alavra recebida ser % igual a "1" ou "0". Estimando assim o simbolo mai s provavel em relacao a % cada bit da palavra. % 3.1.1) Calculo da variancia do ruido do canal % ---------------------------------------------- Ruido=(SrsEntrBinConvMap - SrsEntrBinConvMapRuido); sigma= var(Ruido); % MODIFICACAO: % Para usar outro calculo da variancia faca sigma = seu calculo devariancia
63
% ENTRADA: variavel "Ruido" % SAIDA: variavel "sigma" % ---------------------------------------------- % 3.1.2) Estimacao por maximo de verossimilhanca % ---------------------------------------------- S_estime = calculoVerossimilhanca(SrsEntrBinConvMap Ruido,tipoMap,sigma); % MODIFICACAO: % Para usar outro algoritmo de estimacao faca S_est ime = seu sinal estimado % ENTRADA: variavel "SrsEntrBinConvMapRuido" % SAIDA: variavel "S_estime" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.2) Decodificacao de Viterbi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ---------------------------------------------- %identifica em relacao ao mapeamento e o puncioname nto se o numero de bits %por simbolo foi alterado if tipoMap == 4 && (taxaCod == 3 || taxaCod==5) S_estime = S_estime(3:end); end % ---------------------------------------------- % Esta funcao faz o descodificacao convolucional S_estime_decodVit = vitdec(S_estime,trellis,1, 'trunc' , 'hard' , puncionamento); % Decodificacao por algo de viterbi. % A trelica eh a mes ma definida no item 1.5.2 % MODIFICACAO: % Para usar outro algoritmo de viterbi faca S_estim e_decodVit= seu decodificador % ENTRADA: variavel "S_estime" % SAIDA: variavel "S_estime_decodVit" % ---------------------------------------------- % Correção para o puncionamento % correção devida a adequação do numero de bits por TSP e a amostragem do % puncionamento % ---------------------------------------------- if taxaCod == 4 S_estime_decodVit = S_estime_decodVit(9:end); %foi adicionado no sinal original 1 byte SrsEntrBin = SrsEntrBin(9:end); elseif taxaCod == 5 S_estime_decodVit = S_estime_decodVit(49:end); %foram adicionados no sinal original 6 byte SrsEntrBin = SrsEntrBin(49:end);
64
end %fim do if principal para a rotin de puncionamento % ---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.3) Desentrelacamento % 3.3.1) Bit para Decimal % 3.3.2) Desentrelacador %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.3.1) Bit para Decimal % ---------------------------------------------- % Muda o vetor para base decimal S_estime_decodVit_Dec=vetor_binario_para_decimal(S_ estime_decodVit); % Para usar outro algoritmo de transformacao de bas e faca S_estime_decodVit_Dec= seu transformador % ENTRADA: variavel "S_estime_decodVit" % SAIDA: variavel "S_estime_decodVit_Dec" % ---------------------------------------------- % 3.3.2) Desentrelacador % ---------------------------------------------- S_estime_decodVit_Dec_desentrelacado = desentrelacador(S_estime_decodVit_Dec); % MODIFICACAO: % Para usar outro desentrelacador faca S_estime_dec odVit_Dec= seu desentrelacador de base % ENTRADA: variavel "S_estime_decodVit" % SAIDA: variavel "S_estime_decodVit_Dec" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.4) Decodificador Reed-Solomon % 3.4.1) Reconstrucao da matriz de galois % 3.4.2) Decodificacao Reed-Solomon % 3.4.3) Adequacao do vetor de informacao %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.4.1) Reconstrucao da matriz de galois % ---------------------------------------------- S_estime_decodVit_Dec_desentrelacado_galois = gf(S_estime_decodVit_Dec_desentrelacado,8); % ---------------------------------------------- % 3.4.1) Decodificacao Reed-Solomon % ----------------------------------------------
65
[S_estime_decodVit_Dec_desentrelacado_decodRs,numer r] = rsdec(S_estime_decodVit_Dec_desentrelacado_galois,n ,k); % ---------------------------------------------- % 3.4.3) Adequacao do vetor de informacao % ---------------------------------------------- S_estimada = double(S_estime_decodVit_Dec_desentrel acado_decodRs.x); % MODIFICACAO: % Para usar outro decodificador Reed-Solomon faca S _estimada= seudecodificador % ENTRADA: variavel "S_estime_decodVit_Dec" % SAIDA: variavel "S_estimada" % ----------------------------------------------
messageAleaDec.m function S = messageAlea(M, L) %Ricardo Sugayama %Generation de message aleatoir en binaire pur %de 'M' bits de mot et de taille 'L' %example % S = messageAlea(2, 7) % S= 0 1 0 1 1 0 1 1 0 1 1 0 1 0 a=zeros(1,M); for i=1 : L sn = randperm(2^M); %an= binarycode(sn(1),M); %an= binarycode(sn(1)-1,M); a=[a,sn(1)-1]; end S= a((M+1):end); transm_Image_iterativo.m % % Projeto final de graduacao da Universidade Federa l do Parana % % Simulador do sistema de comunicacao ISDB-T % % Autor: Ricardo Sugayama, [email protected] r % Professor Orientador: Evelio M. G. Fernández % tic % comeca a contar o tempo de processamento %-------------------------------------------------- ----- %Configuracoes
66
%-------------------------------------------------- ----- ErrTotal = 0; %vetor de erro %sigma=0.25; % ruido do canal tipoMap =3; % tipo de modulacao: % 1) DQPSK % 2) QPSK % 3) QAM-16 % 4) QAM-64 %Carrega titulos das figuras if tipoMap == 1 TipoModul = 'DQPSK' ; %titulo do grafico elseif tipoMap == 2 TipoModul = 'QPSK' ; %titulo do grafico elseif tipoMap == 3 TipoModul = 'QAM16' ; %titulo do grafico else TipoModul = 'QAM64' ; %titulo do grafico end % Iteracao para sigma = [0,10 0,20 0,30 0,40 0,50 0 ,60 0,70 0,80 0,90 1] for i=0.1:0.1:3 %loop principal % Variacao de sigma sigma = i; %-------------------------------------------------- ----- %Bloc message %-------------------------------------------------- ----- %generation du signal: une message avec L mots de k bits imageLena = imread( 'lena_512x512.tif' ); imageLena = double(imageLena); % Dobra precisão [lines,columns] = size(imageLena); % Tamanho de matriz da imagem image_size = lines*columns; % Numero de pixels image_vector = reshape(imageLena,1,image_size); % Vetor da imagem carregado % envia imagem para bloco codificador ISDB image_vector_estimado=0; L=(262072/188) - 1; for i=0:L % diviminuicao da imagem de 262144 para 262072 para ser multiplo de 188 S=image_vector(i*188+1:i*188+188); %formacao do TSP ISDB_CodificadorTPS image_vector_estimado= [image_vector_estimado S _estimada];
67
end image_vector_estimado = [image_vector_estimado( 2:end) zeros(1,(262144 - 262072))]; %reconstrucao da mensagem de 262144 valores %-------------------------------------------------- ----- % Visualizacao da imagem %-------------------------------------------------- ----- figure; figure_estimada =reshape(image_vector_estimado,512, 512); colormap(gray); imagesc(figure_estimada) title([ 'Modulacao: ' TipoModul ', taxa de codigo = 1/2 e sigma= ' num2str(sigma)]) % tempo estimado mod QAM-16 e taxa 1/2 de cod convo lucional = 1h35m %-------------------------------------------------- ----- % Contagem de Erro %-------------------------------------------------- ----- count =0; erreur = image_vector-image_vector_estimado; for b=1:length(erreur ) if erreur(b)== 0 else count=count+1; end end ErrTotal = [ count ErrTotal]; end %Fim do loop pincipal t= toc; %termina de contar o tempo de processamento SNR_Por_TSP_8.m % % Projeto final de graduacao da Universidade Federa l do Parana % % Simulador do sistema de comunicacao ISDB-T % % Autor: Ricardo Sugayama, [email protected] r % Professor Orientador: Evelio M. G. Fernández % %Este script tem por objetivo tracar uma curva ERB/ SNR de um tsp, fazendo
68
%uma amostragem de 2 TSP por SNR. %Eh necessario deixar o codificador com a geracao d e mensagem aleatoria % ***------------------------------------------- %Parametros % ---------------------------------------------- % Tipo de mapeamento(tipoMap): % 1) DQPSK % 2) QPSK % 3) QAM-16 % 4) QAM-64 tipoMap =2; % tipo de modulacao % Taxa de codigo convolucional %taxaCod Taxa % 1 1/2 % 2 2/3 % 3 3/4 % 4 5/6 % 5 7/8 taxaCod = 2; %TAXA DO CODIGO CONVOLUCIONAL Vetor_ErrTotal_2=0; Vetor_ErrVero_2=0; Vetor_ErrViterbi_2=0; Vetor_SNR=0; limiteErr = 1000; for d=0:13 %loop principal snr=d; %relacao sinal ruido em dB %snr=100; %relacao sinal ruido em dB Vetor_ErrTotal_1=0; Vetor_ErrVero_1=0; Vetor_ErrViterbi_1=0; n_trasmitido = 0; %numero de transmissoes necessarias para obtermos 100 erros temporario = 0; % print na tela tic %contagem parcial de tempo while Vetor_ErrTotal_1 < limiteErr %loop secundario ateh contarmos 100 erros ISDB_CodificadorTPS
69
% ***------------------------------------------- %Contagem de erros % ---------------------------------------------- [ErrVero,ratioVero]=biterr(S_estime , SrsE ntrBinConv); [ErrViterbi,ratioViterbi]=biterr(S_estime_d ecodVit , SrsEntrBin); [ErrTotal,ratioTotal]=biterr(S_estimada , S , 8); Vetor_ErrTotal_1 = Vetor_ErrTotal_1 + ErrTo tal; Vetor_ErrVero_1 = Vetor_ErrVero_1 + ErrVero ; Vetor_ErrViterbi_1 = Vetor_ErrViterbi_1 + E rrViterbi; %para visualizacao if Vetor_ErrTotal_1 >0 & temporario < Vetor_ErrTotal_ 1 % print na tela [snr, Vetor_ErrTotal_1] end temporario = Vetor_ErrTotal_1; % print na tela n_trasmitido = n_trasmitido + 1; end %loop secundario toc %contagem parcial de tempo %Construcao do vetor de erro Vetor_ErrTotal_2=[Vetor_ErrTotal_2 (Vetor_ErrTotal_1/(188*8*n_trasmitido))]; Vetor_ErrVero_2=[Vetor_ErrVero_2 (Vetor_ErrVero_1/(204*8*2*n_trasmitido))]; Vetor_ErrViterbi_2=[Vetor_ErrViterbi_2 (Vetor_ErrViterbi_1/(204*8*n_trasmitido))]; if snr > 8 %para garantir uma boa amostragem para a curva SNR limiteErr=100; end end %fim loop principal %Readequacao do vetor de erro Vetor_ErrTotal_2=Vetor_ErrTotal_2(2:end) Vetor_ErrVero_2=Vetor_ErrVero_2(2:end) Vetor_ErrViterbi_2=Vetor_ErrViterbi_2(2:end) Vetor_SNR=Vetor_SNR(2:end) % Plotagem da curva SNR com o parametro enviado na funcao awgn do matlab
70
figure; semilogy(([0:13]-10*log10(M)),Vetor_ErrVero_2, '-go' ) hold on semilogy(([0:13]-10*log10(M)),Vetor_ErrViterbi_2, '-rx' ) hold on semilogy(([0:13]-10*log10(M)),Vetor_ErrTotal_2, '-*' ) title([ 'Modulacao: ' TipoModul ', taxa de codigo = ' taxa ' e SNR= 0~29' ])