67
UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA DA COMPUTAÇÃO DAVI MOREIRA NEVES JOSIAS BORTOLOTTO BIASIBETTI Servidor de EPG (Eletronic Program Guide) para TV Digital implementado em FPGA Trabalho de Conclusão de Curso Prof. Edson Pedro Ferlin Orientador Curitiba, Dezembro de 2010.

Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

  • Upload
    vodan

  • View
    282

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

CURSO DE ENGENHARIA DA COMPUTAÇÃO

DAVI MOREIRA NEVES JOSIAS BORTOLOTTO BIASIBETTI

Servidor de EPG (Eletronic Program Guide) para TV Digital implementado em FPGA

Trabalho de Conclusão de Curso Prof. Edson Pedro Ferlin Orientador

Curitiba, Dezembro de 2010.

Page 2: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

2

UNIVERSIDADE POSITIVO Reitor: Prof. José Pio Martins Pró-Reitor de Graduação: Prof. Renato Casagrande Diretor Acadêmico: Prof. Marcos José Tozzi Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin

Page 3: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

3

Agradecimentos

Primeiramente a Deus por nos dar saúde e ajudar nos momentos difíceis passados desde que ingressamos na Universidade. Aos nossos familiares que suportaram nossa ausência em diversos momentos e muitas vezes quando estávamos juntos foram compreensíveis com nosso stress devido a atividades relacionadas a faculdade. A todos os nossos sinceros agradecimentos.

Page 4: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

4

SUMÁRIO

LISTA DE ABREVIATURAS E SIGLAS ................................................................. 6

LISTA DE FIGURAS ................................................................................................. 7

LISTA DE TABELAS ................................................................................................ 8

RESUMO .................................................................................................................... 9

ABSTRACT .............................................................................................................. 10

1 INTRODUÇÃO ................................................................................................. 11

1.1 Revisão Bibliográfica ...................................................................................................................... 12

2 PLANEJAMENTO ........................................................................................... 13

2.1 Composição dos Custos .................................................................................................................. 13

3 ESPECIFICAÇÃO DO SISTEMA ................................................................... 15

3.1 Características do Sistema ............................................................................................................. 17

3.2 Requisitos do Sistema ..................................................................................................................... 17

3.3 Arquitetura do Sistema .................................................................................................................. 17

3.4 Testes de Validação do Sistema ..................................................................................................... 18

4 DESENVOLVIMENTO DO SISTEMA ........................................................... 19

4.1 Hardware .......................................................................................................................................... 19

4.1.1 Módulo Embarcado ................................................................................................................... 20

4.1.2 Módulo de Serialização .............................................................................................................. 22

4.1.3 Módulo DVB-ASI ....................................................................................................................... 27

4.1.4 Conexão dos módulos (Barramento ISA) ................................................................................. 27

Page 5: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

5

4.2 SOFTWARE ..................................................................................................................................... 28

4.2.1 Análise de Requisitos ................................................................................................................. 28

4.2.2 Desenvolvimento ......................................................................................................................... 28

4.3 Firmware .......................................................................................................................................... 33

4.4 Protocolo de Comunicação ............................................................................................................. 34

5 IMPLEMENTAÇÃO ........................................................................................ 35

6 RESULTADOS ................................................................................................. 37

7 CONCLUSÃO ................................................................................................... 40

7.1 Trabalhos Futuros .......................................................................................................................... 41

REFERÊNCIAS ........................................................................................................ 42

ANEXO A .................................................................................................................. 43

ANEXO B .................................................................................................................. 44

ANEXO C .................................................................................................................. 45

ANEXO D .......................................................................................................... 464647

ANEXO E .......................................................................................................... 484849

ANEXO F .......................................................................................................... 494951

ANEXO G ......................................................................................................... 515153

ANEXO H ......................................................................................................... 545457

ANEXO I ........................................................................................................... 626265

Page 6: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

6

LISTA DE ABREVIATURAS E SIGLAS

BNC British Naval Conector (Conector Britânico Naval) DVBASI Digital Video Broadcast ( Transmissão de Vídeo Digital) EIT Event Information Table (Tabela de Informações de Evento) Hz Hertz ISA Industrial Standard Architecture (Arquitetura de padrão industrial) PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO Sistema Operacional VHDL Hardware Description Language (Linguagem de descrição de

hardware) XML Extensible Markup Language ( Linguagem de Marcação Extensível) IEEE Institute of Electrical and Electronic Engineers (Instituto de Engenheiros Elétricos e Eletrônicos ) ABNT Associação Brasileira de Normas Técnicas GPIO General Purpose Input/Output (Entradas e saídas de proposito geral)

Page 7: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

7

LISTA DE FIGURAS

Figura 3.1: Visão geral da transmissão da TV Digital (FONTE: ???)......................... 16

Figura 3.2: Diagrama em Blocos do Projeto ............................................................... 18 Figura 4.1: Diagrama em blocos do Hardware ........................................................... 19

Figura 4.2: Módulo Embarcado TS-7800 .................................................................... 20 Figura 4.3: PLL e Porta And desenvolvidas no Modulo de serialização ...................... 23

Figura 4.4: Bloco Controlador de Memória ................................................................ 23

Figura 4.5: Simulação Controlador de Memória ........................................................ 24 Figura 4.6:Bloco de Memória ..................................................................................... 24

Figura 4.7: Simulação Funcionamento bloco de memória .......................................... 25 Figura4.8: BlocoControlador EPG DataMuX ............................................................. 25

Figura 4.9: Gerador de Pacotes Vazios ...................................................................... 26

Figura 4.10: Simulação Gerador de Pacotes Nulos..................................................... 26 Figura 4.11: Bloco Driver DVBASI ............................................................................ 27

Figura 4.12: Simulação Driver DVB ASI .................................................................... 27 Figura 4.13: Bloco Barramento ISA 8 bits .................................................................. 28

Figura 4.14: Diagrama Básico do Gerador de Pacotes ............................................... 28

Figura 4.15: Tela Principal interface WEB ................................................................. 29 Figura 4.16: Diagrama de Classes interface WEB ...................................................... 29

Figura 4.17: Diagrama de Classes Biblioteca Principal Geração MPEG2TS ............. 31 Figura 4.18: Diagrama de Classes Biblioteca Principal Geração MPEG2TS (Cont.) 32

Figura 4.19: Fluxograma do Firmware (Módulo Embarcado) .................................... 34 Figura 4.20: Layout do protocolo de comunicação ..................................................... 34

Figura 5.1: Visão Geral da Implementação (1- Interface WEB de configuração. 2- Módulo Embarcado. 3- Módulo de Serialização. 4 –Módulo DVB-ASI. 5 – Dispositivo analisador de MPEG utilizado para testes) ................................................................. 36

Figura 6.1: Pacote de dados ....................................................................................... 37 Figura 6.2: Análise dos pacotes .................................................................................. 38

Figura 6.3: Taxa de transmissão dos pacotes de dados ............................................... 38

Figura 6.4: Taxa de transmissão dos pacotes de dados com preenchimento ................ 39 Figura 6.5: Forma de onda do sinal serializado.......................................................... 39

Page 8: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

8

LISTA DE TABELAS

Tabela 2.1: Cronograma simplificado ......................................................................... 13

Tabela 2.2: Composição dos Custos ............................................................................ 14 Tabela 2.3: Resumo da Composição dos Custos. ......................................................... 14

Tabela 4.1: Funções dos pinos do Conector ................................................................ 21 Tabela 4.2: Disposição dos bits nos registradores ...................................................... 21

Tabela 4.3: Parâmetros controlados pelo TS-7800 ..................................................... 21

Tabela 4.4: Endereço de memória base 7 e 8 bits ........................................................ 22

Page 9: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

9

RESUMO

Há alguns anos difundiu-se em uma escala considerável a TV digital brasileira. De forma genérica um sistema de TV digital é dividido em três partes: um difusor, responsável, por prover a programação a ser transmitida e suportar a interações com os telespectadores, um receptor que recebe e exibe o conteúdo ao telespectador e permite a interação com o meio de difusão que é composto por canal de difusão e canal de retorno. Para transmitir o sinal digital de TV são necessários diversos equipamentos tais como multiplexador, servidor EPG (Electronic Program Guide), servidor de pacotes de áudio, servidor de pacotes de vídeo entre outros.

Este projeto tem por objetivo implementar um servidor EPG, que é apenas uma parte de todo o processo de geração e transmissão do sinal digital. O equipamento desenvolvido tenha a finalidade de gerar pacotes MPEG2 Transport Stream contendo informações básicas sobre determinado programa tais como: horário de transmissão horário do término, classificação entre outros. Esses pacotes são disponibilizados em uma saída DVB ASI (Digital Video Broadcast - ASI) que os converte em sinal digital e torna disponível a uma possível conexão com um multiplexador de sinal digital.

O equipamento desenvolvido utiliza tecnologia de lógica programável com dispositivo FPGA (Field Programmable Gate Array) Stratix II da Altera e trabalha em conjunto com um KIT que possui um processador ARM e faz o controle do fluxo e armazenamento das informações, neste projeto o KIT ARM recebe o nome Módulo Embarcado. O projeto utiliza a tecnologia de FPGA devido à importante característica de ser configurável, além disso, há neste componente, diversas outras vantagens tais como: baixo consumo de energia, alto desempenho. Outro motivo que deve ser considerado e que levou a utilização de FPGA foi o fato de tornar possível a criação e diversos componentes dentro de um único encapsulamento, o que traz uma possibilidade testes e homologação muito maior, além de possibilitar a redução no tamanho do equipamento.

Palavras-Chave: Televisão Digital, Electronic Program Guide, Pacotes de vídeo.

Page 10: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

10

ABSTRACT

A few years spread to a considerable scale digital TV in Brazil. To transmit this signal are needed different equipment such as multiplexer, EPG server (Electronic Program Guide), audio packets server, video packages server among others.

This project has as its main objective depicting the phases of a project for an EPG server that is only part of the whole process of generating and transmitting the digital signal. The developed equipment generates MPEG2 Transport Stream packets containing basic information about a particular program such as: hours of transmission time of termination, among other classification. These packages are available in a DVB ASI output which makes them available to a possible connection to a digital signal multiplexer.

The equipment will be developed using FPGA technology from Altera and worked together with a module, purchased commercially, has named embedded system. We chose to develop the design using FPGA due to the important characteristic that has been reconfigurable, moreover, there is this component, several other advantages such as low power consumption, high performance. Another important reason that results to the use of FPGA is that it makes possible the creation and several components within a single package, which brings a chance to test much larger and approval, and could reduce the size of the equipament. Keywords: Digital TV, Electronic Program Guide, Video Packages.

Page 11: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

11

1 INTRODUÇÃO

O servidor de EPG (Electronic Program Guide) é um sistema responsável pela geração de informações adicionais inseridas no sistema de multiplexação de dados da televisão digital. Dentre estas informações estão: classificação, horário de exibição do programa, duração, gênero em que o programa se enquadra entre outros.

Servidores de EPG necessitam de um hardware que gere uma saída em tempo real codificada, aonde os dados inseridos se alteram ao longo do tempo baseando-se nas informações do guia de programação. O guia de programação consiste em uma estrutura de dados que pode conter diversas redes, que na pratica são as redes de TV transmitidas, em cada rede podem existir diversos serviços, que seriam os segmentos de cada emissora que estão espalhados pelo país dentro de cada um dos serviços são definidos eventos (programas) e respectivas durações. Cada evento transporta diversas informações chamadas descritores, dentre elas: título classificação de idade do evento, gênero, idioma entre outros.

O sistema desenvolvido é capaz de receber as informações do guia de programação por meio de uma interface com usuário que, neste caso, será um operador de TV digital. A interface é constituída de campos onde serão inseridos os descritores, os eventos (data e hora de inicio, hora do fim, duração entre outros). Os dados são codificados por meio de um algoritmo executado no Módulo Embarcado, e transmitidos para o Módulo de Serialização que tem uma saída com a informação no padrão MPEG2 Transport Stream (MPEG2 TS).

O algoritmo foi desenvolvido baseando-se nas estruturas definidas pelas normas ABNT (Associação Brasileira de Normas Técnicas). A operação consiste em receber os dados inseridos na interface web, hospedada no Módulo Embarcado, montar os pacotes e, com o uso do barramento ISA (Industrial Standard Architecture) de 8bits enviá-los para o Módulo de Serialização.

O Módulo Embarcado, adquirido comercialmente por questões de otimização e custo de desenvolvimento, é composto por um processador ARM utilizando para funcionamento o sistema operacional (SO) Linux distribuição Lenny. Dentro deste SO é processado o algoritmo de transmissão dos pacotes para o Módulo de Serialização.

O Módulo de Serialização é onde serão armazenados os pacotes tem como um de seus principais componente a FPGA Stratix II da altera, é responsável pelo controle do fluxo de dados e o envio destes ao módulo DVB ASI (Digital Video Broadcast Asynchronous interface) (Fischer, 2008).

O Módulo DVB ASI é responsável por receber os pacotes MPEG2 TS enviados pelo Módulo de Serialização converte-los para o padrão digital de vídeo. Sua saída é composta por dois conectores no BNC (British Naval Conector), que permitem altas taxas de transmissão de dados. Para homologação do projeto estas saídas são conectadas a um analisador de MPEG da marca DIGICAST comercialmente adquirido.

Page 12: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

12

1.1 Revisão Bibliográfica

O reconhecimento dos documentos técnicos, já editados, referentes ao tema do projeto demandou diversas etapas de trabalho. A busca foi dividida em dois grupos de documentos, primeiro as normas que definem o sistema de TV digital no Brasil, depois textos de auxilio para facilitar a compreensão das normas.

Dentre as normas pesquisadas está a ABNT NBR15603 (ABNT, 2008), que descreve o sistema de informação da TV digital brasileira. Entre as definições descritas está a estruturas de dados das informações contidas nas tabelas de informações dos eventos (Event Information Table-EIT) bem como os próprios eventos e seus descritores. A ABNT NBR15603 (ABNT, 2008) faz várias citações às normas ETSI EN 300468 (ETSI, 2006) e ISO 13818-1 (ISO, 2000) as quais descrevem com mais detalhes algumas partes do sistema brasileiro de TV digital.

Dentre os textos de auxilio há também o livro “Digital Vídeo and Broadcasting Technology” (FISCHER, 2008) que descreve com detalhe o sistema de codificação de MPEG2 Transport Stream e auxiliou para um melhor entendimento das normas usadas.

Page 13: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

13

2 PLANEJAMENTO

O projeto esta distribuído em diversas etapas, na Tabela 2.1 é exibido um resumo do cronograma de execução.

Tabela 2.1: Cronograma simplificado

2.1 Composição dos Custos

No que diz respeito a software como o projeto envolve e utiliza diversos recursos da Altera foi utilizado o software Quartus II 9.1. Para a documentação foi utilizado o Microsoft Office instalado no sistema operacional Microsoft Windows 7. Como plataforma de desenvolvimento para a interface web do sistema foi utilizado o Visual Studio 2008, para auxiliar o controle de execução foi utilizado o Microsoft Project.

No que diz respeito a Hardware foram utilizados os seguintes itens: KIT TS-7800, Osciloscópio, Nios II. A Tabela 2.2 apresenta os custos do Projeto.

Atividades Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez

Entrega das propostas do TCC para avaliação pelo colegiado

Entrega das especificações técnicas do TCC aprovado

Entrega da etapa de projeto do TCC (no formato de monografia).

Normas ABNT

Linguagem VHDL

Plataforma de Desenvolvimento Altera

Plataforma do Sistema Embarcado

Barramento de Comunicação

Protocolo de Comunicação

Porta DVB-ASI

Entrega da monografia completa

Hardware FPGA

Desenvolvimento

Codificação da FPGA

Codificação do drive de dispositivo para comunicação dos módulos

Codificação da Aplicação de Edição do Guia de Programação

Confecção

Prototipagem do Hardware

Ajustes Finais no Projeto

Entrega do artigo técnico completo

Ajustes na Documentação

Entrega da documentação completa

Apresentaçãoaberta ao público

Entrega Completa Do Projeto com A documentação em CD

Page 14: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

14

Tabela 2.2: Composição dos Custos

Tabela 2.3: Resumo da Composição dos Custos.

Resumo de Gastos com o

Projeto

Descrição Total (R$) Mão-de-obra 51.880,00

Licenças de Software e desenvolvimento 529,77 Equipamentos e Insumos 793,41

Espaço físico 392,00 Documentação e gastos extras 252,00

Custo estimado para Produção do Protótipo 1.000,00

Impostos Módulo Embarcado 392,00

TOTAL 54.455,18

Descrição Valor por HoraTotal de Horas Trabalhadas

Valor Total

Direta 30,00R$ 1100 33.000,00R$

Do Professor Orientador 63,50R$ 160 10.160,00R$

Do Coordenador do Curso 109,00R$ 80 8.720,00R$

51.880,00R$

DescriçãoValor do Software no

MercadoDepreciação em meses Horas Mês

Valor por Hora

Total de Horas Trabalhadas

Valor Total

Windows 7 Professional 2.000,00R$ 12 220 0,76R$ 220 166,67R$

Visual Studio 2008 3.000,00R$ 12 220 1,14R$ 150 170,45R$

Quartus II 9.1 1.980,00R$ 12 220 0,75R$ 70 52,50R$

Project 2.000,00R$ 12 220 0,76R$ 110 83,33R$

472,95R$

DescriçãoValor do Equipamento

no MercadoDepreciação em meses Horas Mês

Valor por Hora

Total de Horas Trabalhadas

Valor Total

KIT embarcado TS-7800 R$ 830,00 12 220 0,31R$ 220 69,17R$ Nios II Development Kit, Cyclone II Edition R$ 3.100,00 12 220 1,17R$ 220 258,33R$ Notebook R$ 4.900,00 12 220 1,86R$ 220 408,33R$

Fonte de alimentação simples 670,00R$ 12 220 0,25R$ 220 55,83R$

Fonte de alimentação simétrica 1.380,00R$ 12 220 0,52R$ 100 52,27R$

Multimetro Digital 41,00R$ 1 220 0,19R$ 100 18,64R$

Simulador Proteus 7.1 ou superior 3.000,00R$ 12 220 1,14R$ 50 56,82R$

850,23R$

Valor do espaço em m2 Quantidade de m2 Quantidade de Meses Valor Total

7,00R$ 7,00 8 392,00R$

392,00R$

Valor Mensal Quantidade de Meses Valor Total

19,00R$ 8 152,00R$

100,00R$ 1 100,00R$

252,00R$

Descrição Sub-total Percentual de Impostos Valor Total

Impostos 392,00R$ 35,70% 609,64R$

Impostos 54.455,18R$ 35,70% 84.689,24R$

Impostos

Gastos com Equipamentos

e Insumos

Valor total gasto com equipamentos e Insumos

Gastos com Espaço físico

Valor total gasto com espaço

Gastos com Documentação e Gastos Extras

Valor total gasto com Documentação e Gastos Extras

Orientador: Professor Edson Pedro Ferlin

Mão-de-obra (RH)

Valor total da Mão-de-obra gasta com o projeto

Gastos com Softwares

Valor total gasto com Softwares

Page 15: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

15

3 ESPECIFICAÇÃO DO SISTEMA

O Servidor de EPG é um sistema para a geração de pacotes MPEG2 Transport Stream contendo as seções de informações de eventos (conteúdo da EIT). Uma interface simplificada permite acesso do usuário ao sistema tornando possível a inserção dos dados como: classificação, início, término e gênero do programa a ser exibido. Um algoritmo tratará os dados inseridos pelo usuário, baseando-se nas estruturas definidas pelas normas, monta os pacotes inserindo cada uma das informações alimentadas pelo operador de TV digital e armazenará no Módulo de Serialização. A saída de dados do Módulo de Serialização será constituída de uma porta serial no padrão DVB-ASI, controlada por meio de uma lógica implementada em um dispositivo FPGA altera. O Módulo de Serialização receberá os dados do Módulo Embarcado e os disponibilizará na saída DVB-ASI. Esses dados terão a maior constância possível, pode haver delay de transmissão e quebra de pacotes apenas na comunicação entre os módulos, Embarcado e de Serialização. Isso significa que ao enviar os dados para o Módulo de Serialização o algoritmo executado no Módulo Embarcado envia no inicio da transmissão um bit indicando que é o início de um pacote, ao gerar outro pacote o sistema reenvia esse bit indicando o inicio que os dados que estão sendo gerados pertencem a um novo pacote.

Para a geração dos pacotes MPEG2 Transport Stream, foram usados apenas alguns dos descritores disponíveis na norma uma vez que apenas um dos descritores de eventos é obrigatório. Os descritores selecionados são os de classificação indicativa, de conteúdo, de componente de áudio, e há também o descritor de eventos curtos. A escolha de apenas alguns se deve às restrições de memória do Módulo de Serialização.

Com o desenvolvimento bem sucedido desse equipamento é possível após melhorias e customizações inserir um Servidor de EPG no mercado nacional, uma vez que atualmente recorre-se a produtos importados que possuem alto custo financeiro que pode chegar a U$ 150.000,00.

Para ilustrar de forma mais clara a imagem da Figura 3.1, traz uma visão gerar de como é o funcionamento da TV digital. O conteúdo deste projeto refere–se apenas a uma pequena parte destacada em vermelho, todos os outros itens da imagem seriam necessários para que os dados do servidor EPG chegasse ao equipamento de TV.

Page 16: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

16

Figura 3.1: Visão geral da transmissão da TV Digital (FONTE: www.digicast.com)

Page 17: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

17

O projeto constitui-se de interface que permite a entrada do conteúdo do pacote, o

hardware foi implementado em FPGA utilizando lógica programável. Além disso, o sistema está pronto para suportar 48 horas de programação para cinco canais convertendo esses dados para o formato digital. A parte destacada na Figura 3.1 pode ser analisada observando-se a Figura 4.1 do capítulo de desenvolvimento do sistema.

3.1 Características do Sistema

As principais características funcionais do sistema são: Software para a entrada de parâmetros para geração de dados; Geração de pacotes do EPG no padrão MPEG2 Transport Stream; Pacotes com no máximo dois dias de programação; Comunicação ISA 8bits entre Módulo Embarcado e de Serialização; Comunicação com 10 bits entre Módulo de Serialização e DVB ASI; Armazenamento de dados para até dois dias de programação; Pacotes MPEG2 de 188 bytes; Saídas no padrão DVB-ASI. (Fischer, 2008)

3.2 Requisitos do Sistema

Os requisitos necessários para o funcionamento do sistema são: Alimentação 110 -240VAC; Cabo com terminais do tipo BNC; Conexão ethernet 10/100/1000Mb; Cabo de rede ethernet com terminais RJ45; Cabo flat com 8vias para comunicação ISA; Cabo flat com 10 vias para comunicação entre Módulo de Serialização e

DVBASI.

3.3 Arquitetura do Sistema

O hardware do Servidor de EPG apresentado na Figura 2.3.1 é constituído por dois blocos principais (Módulo Embarcado e Módulo de Serialização).

O primeiro é o Módulo Embarcado que possui em seu hardware processador ARM9, memória flash para armazenamento do sistema operacional , portas de entrada e saída serial e de rede, bem como um barramento para comunicação de dados.

O segundo bloco é o Módulo de Serialização, o qual possui um banco de memória capaz de armazenar um dado tempo de conteúdo do guia de programação. A comunicação externa é controlada pelo controlador de entrada e saída que é feita por meio de um barramento de comunicação. O controlador EPG é o responsável por manipular os dados e enviar os mesmo em partes para o Módulo DVB-ASI que faz a serialização. A Figura 3.2 apresenta o digrama simplificado do hardware do projeto.

Page 18: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

18

Módulo EmbarcadoMódulo de Serialização

Módulo DVB-ASI

Computer

Figura 3.2: Diagrama em Blocos do Projeto

3.4 Testes de Validação do Sistema

A avaliação do sistema ocorre utilizando-se testes isolados que verificam as funcionalidades de cada um dos módulos pontualmente.

O hardware é dividido em três blocos sendo esses, o Módulo Embarcado, Módulo de Serialização e Módulo DVB ASI.

O Módulo Embarcado por ser uma plataforma comercial não necessita de testes, foram realizados testes apenas no barramento que faz a comunicação entre os módulos, Embarcado, de Serialização e DVB ASI.

A FPGA teve sua lógica desenvolvida por meio de uma ferramenta de modelagem e síntese, portanto os testes e validações foram feitos por meio do simulador do Quartus II.

A saída de dados seriais DVB-ASI é testada por um hardware externo, adquirido comercialmente, que faz a aquisição da saída a qual é transferida para um computador host onde, com auxilio de analisadores de arquivos hexadecimais ou do padrão EIT, é possível constatar a integridade dos dados inseridos pelo operador de TV digital, na interface de configuração.

Page 19: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

19

4 DESENVOLVIMENTO DO SISTEMA

Este capítulo descreve o sistema do servidor de EPG sob duas visões que se complementam e caminham juntas.

4.1 Hardware O projeto do hardware foi dividido em três blocos, Figura( Módulo Embarcado,

Módulo de Serialização e Módulo DVB-ASI, como mostrados na Figura 4.1

Figura 4.1: Diagrama em blocos do Hardware

Módulo de Testes

Page 20: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

20

4.1.1 Módulo Embarcado O KIT TS-7800 foi adquirido da empresa System Technologies para servir como Módulo Embarcado. A escolha deste Módulo Embarcado foi baseada nas características do projeto que exigiam que o KIT possuísse um sistema operacional, interface de rede ethernet, memórias SD (Segurança Digital), portabilidade, por se tratar de um módulo relativamente pequeno, e um ambiente de desenvolvimento que permitisse depurar a aplicação WEB dentro do módulo. O Módulo Embarcado é composto de um processador ARM 9 operando a 500MHz e possui um baixo custo comercial quando analisado o quesito custo beneficio e também possui porta serial, interface de rede 10/100/1000 Mbit/s, barramento PC/104 (padrão ISA BUS). Por possuir o sistema operacional a plataforma Linux na sua distribuição Debian Lenny o Módulo Embarcado facilita o desenvolvimento das aplicações necessárias para este projeto. As características padrões do TS-7800 são:

• CPU ARM9 500MHz; • Conector barramento PC/104; • 128MBytes DDR-RAM; • 512MBytes NAND Flash (17MB/s); • 2 slots para cartão SD (1 micro-SD, 1 full-SD); • 2 portas SATA; • 2 portas USB 2.0 480Mbit/s; • 1 Conexão ethernet, 10/100/1000; • 5 Canais ADC 10-bit; • 10 Portas seriais, 2 RS-485 opcionais; • 110 Conexões GPIO (86 no Conector PC/104); • Baixa potencia consumida (4W a 5V); • Inicialização do Linux em menos de 2 segundos; • Kernel 2.6 e Distribuição Lenny; • Eclipse IDE out-of-the-box.

O controlador principal dos periféricos de entrada e saída do Módulo Embarcado é

constituído por um dispositivo FPGA proporcionando um barramento PCI interno de 50MHz. Na Figura 4.2 tem-se a foto da placa do Módulo Embarcado TS-7800.

Figura 4.2: Módulo Embarcado TS-7800

FPGA

Page 21: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

21

A conexão entre os Módulos Embarcado e de Serialização ocorre por meio do barramento PC/104, que está disposto em quatro linhas de barramento, que estão rotuladas como A,B,C e D. A disposição dos pinos por ser vista Figura no ANEXO A.

A configuração do conector PC/104 pode ter um ajuste fino. Este ajuste pode ser feito por meio de um par de pinos para obter quatro funções diferentes que são mostradas na Tabela 4.1.

Tabela 4.1: Funções dos pinos do Conector

Numero da Função Descrição

0 GPIO

1 ISA

2 Reservado

3 Reservado

Após definir a função dos pares de pinos é possível escrever os bits nos registradores que correspondem às linhas do barramento em questão.

A Tabela 4.2 mostra a posição dos bits em cada registrador do barramento. Cada linha representa o endereço da linha do barramento e cada célula nas colunas representam o valor do endereço do pino do barramento. Por exemplo, para definir as funções dos pinos B19 e B20, a indica que se deve usar os bits [19:18] do registrador de endereço 0xE8000034.

Tabela 4.2: Disposição dos bits nos registradores

Coluna registradores endereços \/ bits->

31 30

29 28

27 26

25 24

23 22

21 20

19 18

17 16

15 14

13 12

11 10

09 08

07 06

05 04

03 02

01 00

A 0xE8000030 32 31

30 29

28 27

26 25

24 23

22 21

20 19

18 17

16 15

14 13

12 11

10 09

08 07

06 05

04 03

02 01

B 0xE8000034 32 31

30 29

28 27

26 25

24 23

22 21

20 19

18 17

16 15

14 13

12 11

10 09

08 07

06 05

04 03

02 01

C 0xE8000038 19 18

17 16

15 14

13 12

11 10

09 08

07 06

05 04

03 02

01 00

D 0xE800003C 19 18

17 16

15 14

13 12

11 10

09 08

07 06

05 04

03 02

01 00

Os detalhes sobre as conexões dos pinos estão descritas no ANEXO B. O Módulo

Embarcado (TS-7800) prove um controle sobre alguns parâmetros do barramento PC/104, por meio de um registrador de endereço localizado em 0xE800000C, que são definidos na Tabela 4.3.

Tabela 4.3: Parâmetros controlados pelo TS-7800

bit(s) Função

5-0 ISA strobe length

9-6 ISA setup length

10 Honor ISA 0WS/ENDX signal (1=true)

11 TS special ISA pinout enable (1=true)

12 ISA oscillator select

0 high-jitter approximation of 14.318Mhz

Page 22: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

22

1 clean 25Mhz

A ISA strobelength e a ISA setup length definem o número de períodos extras de

10ns. A ISA strobelength é a quantidade de tempo adicional para os sinais ISA_IOR, ISA_IOW, ISA_MEMR e ISA_MEMW. O mínimo que pode ser definido é 20ns. Ao ligar o sistema o valor padrão é definido 40, o que representa um strobelength de 420ns.

Caso seja configurado para usar o sinal Honor ISA WS/ENDX o periférico ignora o tempo do strobe e finaliza a transação do barramento, fazendo com que o barramento aceite a conexão com dispositivos mais rápidos do que o padrão ISA aceita. O valor padrão para o setup length é 14, isso representa um tempo de 160ns.

Ha um tempo de 20ns que é inserido no final do strobe para que o processo de leitura e escrita seja válido. A duração de um ciclo padrão do barramento é definida com setup (160ns), strobe (420ns) e hold (20ns) o que da um total de 500ns (2MHz). Isso é um mecanismo bem conservador para hardwares atuais, porem faz com que o barramento seja muito mais rápido.

Para acessar os periféricos do barramento PC/104 é necessário adicionar o endereço base da Tabela para o deslocamento do periférico para obter um endereço de memória e acessar o periférico. Por exemplo, para ISA de 8bits 0x100 endereço E/S, adicione 0xEE000000 de 0x100 para obter 0xEE000100, como mostrado na Tabela 4.4.

Tabela 4.4: Endereço de memória base 7 e 8 bits

Memória E/S

8-bit 0xEC000000 0xEE000000

16-bit 0xED000000 0xEF000000

Obs.: O módulo utiliza uma fonte de alimentação de 5V DC e 1A para trabalhar na

frequência nominal de 500MHz. Tensões superiores 6V DC podem danificar o equipamento portanto devem ser evitadas.

4.1.2 Módulo de Serialização . O Módulo de Serialização foi implementado dentro do Kit de desenvolvimento

FPGA Stratix II da Altera. Usando a linguagem VHDL foram desenvolvidos: o Ajuste do clock para 27 MHz, uma porta And, um controlador de memória, uma memória com capacidade para 65536 palavras de oito bits, um multiplexador de dados, um gerador de pacotes vazios, um Driver DVB ASI e um controlador ISA. Nesta seção serão descrito os blocos de controle Módulo de Serialização, será exibida uma descrição o bloco gerado no Quartus II, a imagem da simulação, bem como o código de implementado em VHDL. PLL- (Phase – locked loop)-O clock fornecido pelos padrões de confecção do KIT Altera Stratix II, que foi utilizado para construir o Módulo de Serialização, é de 50 MHz. Para possibilitar a sincronização e troca de dados com o módulo DVB ASI, que possui clock de 27MHz foi desenvolvida utilizando-se da megafunction ALTPLL da Altera. Este componente que é responsável por receber o clock de 50 MHz e internamente mantendo em um loop reinjetando-o até reduzir o clock a 27MHz. Quando esse valor é atingido um flag de locked é ativado e por meio de uma porta And o sistema verifica se o Driver DVB ASI está com sinal de leitura habilitado como visto na Figura 4.4. Com o resultado desta operação ativa-se o sinal de Enable do DataMux descrito na Figura 4.9. (ETSI, 2006)

Page 23: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

23

Figura 4.3: PLL e Porta And desenvolvidas no Modulo de serialização

Controlador de Memória- A memória implementada, dentro do dispositivo FPGA, permite que seja realizada leitura e gravação em paralelo, apesar deste recurso não ser amplamente utilizado neste projeto, o controlador de memória foi projetado com um clock para escrita e outro para leitura que facilitou o interfaceamento com o Módulo Embarcado. A Figura 4.5 mostra sinteticamente o bloco do controlador de memória com os sinais de entradas situados à esquerda e os de saída à direita.

Figura 4.4: Bloco Controlador de Memória

Escrita: O controlador verifica a ocorrência de um evento de clock de escrita e se o mesmo encontra-se em nível logico alto. Se isto confirmado, o dado que está sendo inserido no controlador por meio do barramento data_ram_in é escrito na memória por meio do barramento data_ram_out. A cada ciclo um endereço de referencia é incrementado armazenando o último endereço gravado eliminado possibilidades de erros na leitura. Estas ações são descritas nos código VHDL abaixo:

if (write_ena = '1') then -- rotina de escrita write_ram<= '1'; wr_addr<= wr_addr_ref; data_ram_out<= data_in; wr_addr_ref<= wr_addr_ref + 1; --incrementar o enderço de memória addr_ref<= wr_addr_ref; --armazena a referencia do ultimo endereço gravado.

Leitura: Paralelamente ao processo de escrita pode ser iniciada a rotina de leitura que fará a leitura de todos os endereços gravados. Isso ocorre disponibilizando-os no barramento data_out, até o endereço de leitura ser igual ao endereço de referencia, armazenado na rotina de escrita. Ao atingir este ponto a leitura é reiniciada a partir da posição 0 da memória. Essas operações estõa

read_ena

write_ena

data_in[7..0]

read_clk

write_clk

rst

data_ram_in[7..0]

can_read

data_ram_out[7..0]

write_ram

read_ram

wr_addr[15..0]

rd_addr[15..0]

data_out[7..0]

Memory Controller

inst4

Page 24: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

24

descritas no código VHDL abaixo:

if (read_ena = '1') then-- rotina de leitura rd_addr<= rd_addr_ref; rd_addr_ref<= rd_addr_ref + 1; read_ram<= '1'; data_out<= data_ram_in;

Na Figura 4.5 é apresentada uma simulação da temporização do controlador de memória.

Figura 4.5: Simulação Controlador de Memória

Memória – A memória tem capacidade de 64k palavras e permite leitura e escrita simultânea. Gerada a partir do Megacore do Quartus II é um ponto crucial do projeto. Caso não fosse possível realizar gravação e leitura de modo simultâneo seria necessário utilizar um mesmo clock para ambas as operações o que dificultaria o trabalho com essa implementação. Desta forma foi possível usar os clocks do Módulo Embarcado e Módulo de Serialização de forma independente para os processos de leitura e escrita. A Figura 4.7 mostra o bloco de memória utilizado contendo as entradas situadas à esquerda e a única saída à direita. Logo a seguir é exibida, na Figura 4.8, uma simulação da temporização e operação da memória.

Figura 4.6:Bloco de Memória

6553

6 W

ord(

s)

RAM

Block Ty pe: AUTO

data[7..0]

w raddress[15..0]

w ren

rdaddress[15..0]

rden

w rclock

rdclock

q[7..0]

lpm_ram_dp0

inst6

Page 25: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

25

Figura 4.7: Simulação Funcionamento bloco de memória

Controlador EPG-DataMux – O controlador EPG-DataMux tem como principal funcionalidade controlar a taxa de transmissão dos pacotes, com base no evento de clock verifica se o pacote a ser gerado deve ser vazio ou com dados válidos. Esse controle é necessário para que não ocorram problemas durante a leitura ou escrita dos dados, caso contrário podem ocorrer diferenças entre as taxas de transmissão do streaming de dados da EIT (Event Information Table) e um streaming de vídeo que podem causar distorção da informação. A Figura 4.8 apresenta o bloco do DataMux gerado no Quartus II com entradas dispostas do lado esquerdo e saídas do lado direito.

Figura4.8: BlocoControlador EPG DataMuX

As operações executadas pelo DataMux estão descritas no código VHDL

abaixo:

IF (byte_count /= 187) THEN mem_rdena <= '1'; ELSE mem_rdena <= '0'; END IF; IF ((mem_data = "01000111") OR byte_count > 0) THEN

data <= mem_data;

is_valid <= '1'; byte_count <= byte_count + 1; END IF; ELSE CASE (byte_count) IS

WHEN 187 => mem_rdena <= '1'; pcknull_ena <= '0'; WHEN OTHERS => pcknull_ena <= '1';

END CASE;

IF (byte_count /= 187) THEN pcknull_ena <= '1'; ELSE pcknull_ena <= '0'; END IF; IF ((pcknull_data = "01000111") OR byte_count > 0) THEN

data <= pcknull_data; is_valid <= '1'; byte_count <= byte_count + 1;

rate 5 Signed Integer

Parameter Value Type

clk

rst

enable

mem_data[7..0]

pcknull_data[7..0]

rdy _to_read

clk_out

is_v alid

mem_rdena

pcknull_ena

data[7..0]

DataMux

inst3

Page 26: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

26

NTSPG – Gerador de Pacotes Vazios – Responsável por gerar os pacotes vazios que fazem a redução da taxa de transmissão. Sua habilitação ocorre como o sinal lenght ligado a PKTSZ para definir o tamanho do pacote, o pcknull_ena do DataMux ligado a entrada BRATE (Byte Rate). A Figura 4.9 apresenta o bloco NTSPG gerado no Quartus II com entradas à esquerda e saíds à direita.

Figura 4.9: Gerador de Pacotes Vazios

As operações realizadas pelo NTSPG estão descritas no código VHDL abaixo:

IF BRATE = '1' THEN

BCLK <= '1'; IF pointer <= 187 THEN DVALID <= '1'; ELSE DVALID <= '0'; END IF;

IF pointer = 0 THEN PSYNC <= '1'; ELSE PSYNC <= '0'; END IF; DATA <= nullTSP(conv_integer(pointer));

A Figura 4.11 mostra uma simulação de temporização e funcionamento do Gerador de Pacotes Nulos.

Figura 4.10: Simulação Gerador de Pacotes Nulos

Driver DVB ASI – O módulo DVB ASI utiliza 15 ciclos de clocks para ativação de latches internos, por esse motivo foi desenvolvido em VHDL um dispositivo ao qual foi dado o nome Driver DVB ASI. O driver DVB ASI aguarda o fim destes ciclos para habilitar a transmissão dos Pacotes de dados. O driver DVB ASI também é responsável por analisar os 10 bits disponibilizados pelo Módulo de Serialização, o dado é disponibilizado na saída ts_data_out apenas quando for válido. Para isso são verificados os dois bits mais significativos, quando iguais a zero o dado contido na entrada data ts_data_in é válido e, consequentemente disponibilizado, caso contrário é descartado. A Figura 4.12 ilustra o bloco do Driver DVB ASI.

RESET

CLOCK

PKTSZ

BRATE

BCLK

DVALID

PSYNC

DATA[7..0]

NTSPG

inst1

Page 27: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

27

Figura 4.11: Bloco Driver DVBASI

O código abaixo desenvolvido em VHDL demonstra o principio de

funcionamento do dispositivode controle do DBV ASI:

IF (enable = '0' AND count /= 15) THEN count <= count + 1;

ready <= '0'; ELSE

ready <= '1'; enable <= '1';

END IF;

A Figura 4.13 demosntra uma simulação de funcionamento do Driver DVB ASI.

Figura 4.12: Simulação Driver DVB ASI

4.1.3 Módulo DVB-ASI Módulo conectado ao Módulo de Serialização recebe as informações em um

barramento de 10 bits, dos quais 8bits, fazem a conversão para o padrão DVB-ASI. O Módulo DVB ASI possui uma característica muito importante que é o fato de

necessitar que, após sua habilitação, transcorram 15 ciclos de clock utilizados para ativar latchs e outros periféricos, só após esse período torna-se estável e passa a disponibilizar os dados serializados. O diagrama esquemático é dado pelo ANEXO H.

Os valores de componentes utilizados são sugeridos no guia de referência, disponibilizado pelo fabricante, do LMH0340, principal componente do módulo e podem ser consultados no ANEXO C.

4.1.4 Conexão dos módulos (Barramento ISA)

A integração entre o Módulo Embarcado e o Módulo de Serialização é feita usando o barramento ISA 8 bits disponível no Módulo Embarcado. Como o módulo de Serialização foi desenvolvido dentro do de um dispositivo FPGA tornou-se necessário criar um bloco que controla a comunicação entre esses módulos. Como o módulo

clk_in

is_v alid

rst_in

ts_data_in[7..0]

ready

clk_out

rst_out

ts_data_out[9..0]

DVBASIDriv er

inst5

Page 28: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

28

embarcado possui barramento ISA 8 bits foi desenvolvido um protocolo de comunicação para barramento ISA de 8 bits cujo código VHDL pode ser visto no ANEXO D. A Figura 4.14 mostra o bloco gerado no Qartus II para este dispositivo com entradas à esquerda e saídas à direita.

Figura 4.13: Bloco Barramento ISA 8 bits

4.2 SOFTWARE

Neste capítulo são descritos os método de desenvolvimento, características e funcionamento da parte relacionada a software do sistema desenvolvido.

4.2.1 Análise de Requisitos Para que a interface web de configuração possa gerar as informações para o

pacote MPEG de forma adequada, devem ser informados todos necessários como classificação: gênero, início, fim do programa, identificação da rede, multiplexador e serviço. Para isso a interface de usuário possui campos para receber todos esses parâmetros. É necessário utilizar uma estação de trabalho com DOT.NET Framework instalado. O software é de fácil utilização, com rotinas otimizadas para evitar que seja necessário utilizar um computador com configurações elevadas para o funcionamento.

4.2.2 Desenvolvimento

Usando o ambiente de desenvolvimento do Visual Studio 2010 e as linguagens de programação C# e ASP.NET desenvolvemos uma aplicação para a entrada dos dados do guia de programação. O software foi dividido em três blocos, conforme o diagrama da Figura 4.14.

Interface ASP.NET

Biblioteca de Auxílio

Biblioteca Principal

Figura 4.14: Diagrama Básico do Gerador de Pacotes

O primeiro bloco do diagrama representa a interface desenvolvida para receber a entrada dos dados, e foi desenvolvido utilizando-se ASP.NET AJAX e C#. Na Figura 4.16 tem-se a tela principal da aplicação.

AEN

IOR

IOW

ADDRESS[7..0]

PORT_DATA_OUT[7..0]

WRITE_ENA

WRITE_CLK

DATA[7..0]

ISA8Slav e

inst7

Page 29: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

29

Figura 4.15: Tela Principal interface WEB

A inclusão de dados na aplicação deve ter a seguinte ordem, rede, multiplexador, serviço, eventos e descritores. Caso exista uma rede diversos multiplexadores podem ser criados e assim sucessivamente, porém quando não houver nenhuma rede não é possível criar um multiplexador já que este é dependente da mesma, o mesmo se aplica aos outros itens lembrando que podem existir diversas redes com seus respectivos dependentes (Multiplex, Services). Os dados estão relacionados entre si, obedecendo aos requisitos da especificação do padrão de televisão digital para a criação do guia de programação.

Cada evento cadastrado está relacionado a uma data e hora de inicio, duração e possui um conjunto de descritores que os definem. Os eventos devem ser únicos em uma data e hora específica para determinada rede, multiplexador e serviço. O diagrama de classe da Figura 4.17 mostra como os dados estão relacionados.

Figura 4.16: Diagrama de Classes interface WEB

Page 30: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

30

A classe EPG da biblioteca auxiliar tem a função de manipular os dados

cadastrados, e possibilita que os dados possam ser carregados ou armazenados no padrão XML. Esta mesma classe possui a função de codificar os dados para o padrão MPEG2TS, o qual é usado para a transmissão. O XML gerado pode ser visto no ANEXO E.

A codificação dos dados para o padrão MPEG2TS é feita usando a biblioteca principal, que possui toda a lógica de codificação. O método SaveTS implementado pela classe EPG faz uso da classe principal e codifica os dados, como se pode observar no ANEXO F.

A biblioteca principal foi programada com toda a lógica de codificação do padrão MPEG2TS, fazendo com que os dados cadastrados e armazenados no XML sejam convertidos para o padrão descrito pelas normas de transmissão de vídeo digital. As Figuras 4.18 e 4.19 trazem o digrama de classes da biblioteca principal para geração do MPEG2TS.

Page 31: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

31

Figura 4.17: Diagrama de Classes Biblioteca Principal Geração MPEG2TS

Page 32: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

32

Figura 4.18: Diagrama de Classes Biblioteca Principal Geração MPEG2TS (Cont.)

A classe Mux responsável por receber os objetos EIT gerados inserindo os o um a um e armazenando em um vetor de objetos EIT. Quando todos os objetos EIT estiverem inseridos no MUX é chamado o método start iniciando a codificação. O Mux por sua vez insere cada EIT no Encoder<T>. O “T” representa um tipo genérico

utilizado para representar objeto do tipo EIT. Com isso o Encoder<EIT> extrai os dados do objeto em um vetor de bytes seguindo os padrões DVB e os insere em pacotes de dados nos padrões MPEG2TS. O Código desenvolvido em C#, que realiza a operação descrita, encontra-se no ANEXO G.

A transmissão dos dados para a FPGA é feita por outro serviço, desenvolvido em C usando a plataforma de desenvolvimento do Kit embarcado, que é baseado na IDE Eclipse adaptada para o uso da programação em nesta linguagem. O bloco de código abaixo é usado para transmitir os dados armazenados no arquivo de transmissão que são gerados no software descrito acima cujo código encontra-se no ANEXO G. /* Carrega o arquivo no barramento */ intload_device(unsignedlongio_loc, FILE *bitstream) { int data; POKE_ISA(CONFIG_REG, 0xFF); /* Habilita a escrita na memória da FPGA. */ while ((data = fgetc(bitstream)) != EOF) { POKE_ISA(DATA_REG, data); //Envia o dado para o barramento

Page 33: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

33

POKE_ISA(CONFIG_REG, 0xFD); //Coloca o clock em nível lógico alto. } POKE_ISA(CONFIG_REG, 0xFE); /* Desabilita a escrita na memória da FPGA. */ /* Esta etapa é necessário para dasabilitar a escrita e gravar o último dado enviado */ POKE_ISA(CONFIG_REG, 0xFD); //Coloca o clock em nível lógico alto. return 0; }

As demais classes herdam boa parte dos métodos das classes EPG e MUX, a seguir um breve resumo do funcionamento de cada uma delas:

Standard Descriptor: Classe base para as classes de descritores, apenas prove informações básicas comuns a todos os descritores.

ShortEventDescriptor: Classe que representa a estrutura de dados do descritor de evento curto.

ContentDescriptor: Classe que representa a estrutura do descritor de conteúdo. ExtendEventDescriptor: Classe que representa a estrutura de dados do descritor

de evento estendido. ParentalRating: Classe que representa a estrutura de dados do descritos de

classificação de conteúdo. PSIBase: Classe base para a tabela EIT que prove as informações básicas para a

tabela EIT. EIT: Classe responsável pela codificação da EIT, retornando uma estrutura de

dados com as informações da tabela EIT e seu descritores associados. Packet: Classe que representa a estrutura de dados de um pacote MPEG2, usado

pelo Mux e Demux para a multiplexação ou demutiplexação dos dados MPEG2. Demux: Classe responsável pela demultiplexação dos dados e pelo envio dos

pacotes ao decodificador correto. Decoder<T>: Classe genérica responsável pela decodificação dos dados

MPEG2. O tipo T pode ser uma tabela do padrão MPEG2, que no caso deste sistema apenas utilizamos a EIT.

Mux: Classe responsável pela multiplexação dos dados e pelo retorno dos pacotes codificados no padrão MPEG2.

Encoder<T>: Classe genérica responsável pela codificação dos dados MPEG2. O tipo T pode ser uma tabela do padrão MPEG2, que no caso deste sistema apenas utilizamos a EIT.

As demais classes são utilizadas como apoio nas operações e não possuem operações especificas.

4.3 Firmware

O firmware (Software do Módulo Embarcado) responsável pelo controle do fluxo de dados no barramento ISA foi desenvolvido na linguagem VHDL utilizando a IDE Quartus II versão 9.1 da Altera. Sua principal função é ativar o device do Módulo Embarcado para enviar ou receber dados e esta operação é feita baseando-se no endereço de controle 0x3E0. A Figura 4.20 apresenta o fluxo básico do seu funcionamento.

Page 34: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

34

Inicio

Le o endereço enviado pelo sistema embarcado

Verifica se o endereço enviado é = 0x3E0

Mantém a entrada e saída do barramento desabilitada

Não

Habilita entrada e saída do

barramento ISA 8 bits

Sim

Aguarda evento de IOW( escrita)

Habilitação de saída = 1

Disponibiliza o dado na saída

Sim

Não

Fim

Figura 4.19: Fluxograma do Firmware (Módulo Embarcado)

4.4 Protocolo de Comunicação

Os 2 primeiros bytes enviados definem o endereço de memória inicial onde serão armazenados os dados no Módulo de Serialização.

Os 2 bytes seguintes, que estão reservados para uso futuro, definem a configuração do Módulo de Serialização.

A partir do sexto byte são enviados, de dois em dois bytes, os dados que serão armazenados na memória do Módulo de Serialização.

Endereço Configuração Dados

2 bytes 2 bytes N Bytes

Figura 4.20: Layout do protocolo de comunicação

Page 35: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

35

5 IMPLEMENTAÇÃO

O servidor EPG desenvolvido está dividido em três módulos que trabalham em conjunto. Uma Interface WEB hospedada no Módulo Embarcado recebe o conteúdo a ser inserido nos pacotes e armazena-os em um arquivo XML. Em seguida esses dados são convertidos para o formato MPEG2TS e transmitidos ao módulo de serialização onde os pacotes são gerados e, de forma serializada, enviados ao módulo DVB ASI que faz a conversão dos dados para o formato digital.

Como o Módulo Embarcado e o de Serialização trabalham em frequências diferentes de 27MHz e 50MHz, respectivamente. Desta forma, foi desenvolvido um circuito controlador de clock para adequar o clock do Módulo Embarcado ao Módulo de Serialização.

Devido ao fato de este projeto trabalhar apenas com cinco canais a capacidade da FPGA Stratix II acabou sendo subutilizada o que resultou em uma utilização de 2% de unidades lógicas e 1 % de memória.

Diversos dispositivos do Módulo Embarcado e do Módulo de Serialização foram utilizados para comunicação do projeto. Entre os módulos utilizou-se o barramento PC104, a comunicação do computador do operador com o Módulo Embarcado foi feita pela conexão Ethernet, entre o Módulo de Serialização e o DVB-ASI fez-se uso de um conector de alto desempenho de transmissão conhecido como BNC (British Naval Connector). A Figura 5.1 mostra uma visão geral do projeto implementado.

Page 36: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

36

Figura 5.1: Visão Geral da Implementação (1- Interface WEB de configuração. 2- Módulo

Embarcado. 3- Módulo de Serialização. 4 –Módulo DVB-ASI. 5 – Dispositivo analisador de MPEG utilizado para testes)

5 como os dados estão relacionados

1

2

3

4

Page 37: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

37

6 RESULTADOS

O sistema foi analisado sob a ótica dos três módulos (Módulo Embarcado, Módulo de Serialização, Módulo DVB-ASI)

Módulo Embarcado: Inicialmente tem-se uma interface de entrada de dados para o

sistema que fornece um parser XML capaz de codificar os dados, previamente inseridos pelo operador do sistema. É gerado um arquivo que contém os pacotes do guia de programação no formato MPEG2, sem um controle na taxa de transmissão do stream que é feita pelo Módulo de Serialização. Os pacotes produzidos na saída deste módulo possuem um tamanho fixo de 188 bytes e não incluem os pacotes de stuffing, que tem a finalidade de preencher o stream com dados vazios para o controle da taxa de transmissão. A Figura 6.1 representa um pacote de dados codificado em MPEG2.

Figura 6.1: Pacote de dados

Page 38: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

38

A Figura 6.2 representa os dados do mesmo pacote sendo analisados utilizando-se o software Stream Guru.

Figura 6.2: Análise dos pacotes

A taxa de transmissão de um arquivo MPEG2 puro, sem os pacotes de preenchimento vazios, ou stuffing packets, é muito mais baixa se comparada a um stream de transmissão completo. A Figura 6.3 nos mostra a taxa de transmissão deste arquivo MPEG2 gerado.

Figura 6.3: Taxa de transmissão dos pacotes de dados

Nessa figura tem-se que a taxa de transmissão do arquivo gerado é em torno de 5

Mbps e permite comparar a taxa deste stream gerado, com a taxa gerada pelo stream de saída do sistema.

Módulo de Serialização: Recebe os pacotes do Módulo Embarcado e armazena em memória, fazendo a serialização dos dados ou seja, inserindo ao stream os pacotes de preenchimento (stuffing packets) para o controle da taxa do stream. Isto resulta em um stream de dados com uma taxa bem mais elevada. A Figura 5.4 mostra a taxa do stream de saída do sistema.

Page 39: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

39

Figura 6.4: Taxa de transmissão dos pacotes de dados com preenchimento

Analisando as Figuras 6.3 e 6.4 pode-se observar que a taxa dos dados do stream,

depois da inserção dos pacotes de preenchimento, aumenta aproximadamente 10 vezes comparado com os dados sem os pacotes de preenchimento. Porém, isto é necessário para que se mantenha um fluxo constante de dados na saída do módulo DVB-ASI. Desta forma esses dados são ignorados quando inseridos na entrada de um multiplexador do sistema de televisão digital.

Módulo DVB-ASI: Recebe o stream de dados do Módulo de Serialização

produzindo uma saída serial digital. Os dados são transmitidos no canal físico a uma taxa de 216 Mbps nominal, porém a taxa atingida pelo sistema desenvolvido chegou ao máximo de 184 Mbps. Isso se dá devido a problemas de sincronização entre os blocos lógicos implementados no dispositivo FPGA.

A análise do canal de transmissão DVB-ASI na saída do sistema produz uma forma de onda mostrada na Figura 6.5. Pode-se observar que são geradas formas de onda, onde ocorre um jitter de saída que é típico neste tipo de sistema de transmissão.

Figura 6.5: Forma de onda do sinal serializado

Neste canal de transmissão o sistema pode atingir uma taxa de 3Gbps, porem isso é

limitado pelo padrão DVB-ASI que aceita taxas de no máximo 216 Mbps para transmissões dentro das normas estabelecidas pelo IEEE(Institute of Electrical and Electronics Engineers).

Para trabalhar com cinco canais foram utilizado 25% da memória da FPGA e menos de 1% das unidades lógicas.

Page 40: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

40

7 CONCLUSÃO

O Servidor de EPG que foi proposto e desenvolvido é um equipamento capaz de receber informações do guia de programação, codificar e transmitir os dados nos padrões definidos pelas normas de televisão digital brasileira.

Esse sistema prove uma interface com o usuário que recebe os dados do guia de programação. Um algoritmo de programação desenvolvido faz a codificação dos dados para o padrão MPEG2 Transport Stream que é serializado por meio de um sistema utilizando uma lógica de hardware implementada em uma FPGA capaz de inserir pacotes de preenchimento, ou seja, pacotes vazios no stream de dados para a manutenção da taxa de transmissão. Por fim, o sistema disponibiliza os dados em uma saída no padrão DVB-ASI fazendo a transmissão da informação.

No que tange o projeto do servidor de guia de programação eletrônico, objeto de estudo da monografia, pode-se concluir que o sistema funcionou dentro dos resultados esperados serializando pacotes com 188 bytes, permitindo a gravação dos mesmos para análise e homologação do sistema, comunicação adequada entre os módulos através do padrão ISA 8 bits. O sistema trabalha com um limite de cinco canais de programação com até 48 horas de eventos de programação por canais. Os dados podem ser inseridos pelo operador diretamente no equipamento por meio de uma interface WEB sem que haja a necessidade de softwares instalados localmente no computador do operador.

Com esse sistema foi possível atingir uma taxa de transmissão de 184 Mbps, o que indica 85% de eficiência da taxa de transmissão nominal do canal de comunicação, cujo à velocidade máxima é de 216 Mbps conforme o padrão DVB-ASI. Os problemas com perda de eficiência na transmissão são atribuídos ao alto sincronismo exigido entre os clocks internos dos blocos lógicos implementados no dispositivo FPGA. A não sincronização perfeita entre todos os blocos do Módulo de Serialização faz com que haja uma perda de 15% na taxa de transmissão.

Entretanto, a saída do sistema é limitada a pacotes de 188 bytes e ao modo de transmissão em rajada. Isso faz com que o sistema envie 188 bytes e posteriormente um stuffing byte, ou seja, um byte de preenchimento indicando o fim do pacote.

Os resultados obtidos nos permitem concluir que é completamente viável o desenvolvimento de um equipamento para a geração de um guia de programação para a Televisão Digital Brasileira.

Não há necessidade de utilizar necessariamente Stratix II para implementar este projeto, o principal requisito é que a FPGA a ser utilizada possua memória de no mínimo 500KBytes.

Page 41: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

41

7.1 Trabalhos Futuros

No desenvolvimento deste trabalho observou-se que o sistema implementado pode ser melhorado, buscando viabilizar o projeto comercialmente ou mesmo agregando valor ao produto por meio de serviços embutidos ao produto.

Com esse intuito podemos sugere-se as seguintes melhorias:

Integrar ao projeto já desenvolvido um analisador de MPEG2 Transport Stream para inserir alguns dados no EPG automaticamente. Como o sistema necessita de um conjunto de informações como: rede, multiplex e serviço para a codificação dos dados, pode-se fazer um analisador baseado na entrada de um stream contendo as informações de programas de áudio e vídeo. Assim seria possível extrair os dados de rede, multiplex e serviço deste stream informando o mesmo automaticamente na interface WEB do sistema. Isso eliminaria a necessidade do operador inserir esses dados manualmente, diminuindo assim a possibilidade de erros.

Criar um serviço provedor de informações de EPG que poderá prover os dados do guia de programação diretamente para os equipamentos. Esse serviço resultaria em um valor agregado ao produto.

Comunicação do equipamento com provedores de informações existentes no mercado atualmente, estabelecendo-se padrões.

Criar interfaces de entrada e saída MPEG2 Transport Stream para IPTV fazendo com que o sistema codifique os pacotes para esse padrão.

Dessa forma, pode-se observar que existem inúmeras oportunidades para agregar

valor ao projeto do Servidor de EPG, tornando esse um produto de valor agregado para o mercado nacional.

Page 42: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

42

REFERÊNCIAS

(ABNT, 2008) Associação Brasileira de Normas Técnicas (ABNT), “ABNT NBR 15603 - Televisão Digital Terrestre - Multiplexação e Serviços de Informação”, Norma ABNT

NBR 15603, Rio de Janeiro: ABNT, 2008. (ETSI, 2006) ETSI 2006-05, European Telecommunications Standard Institute Version 1.7.1,

ETSI EN 300 468 - Digital Video Broadcasting (DVB) Specification for Service Information (SI) in DVB systems, 2006.

(IOS, 2000) International Organization for Standardization, ISO/IEC 13818-1 –

Information Technology-Generic Coding of Moving Pictures and Associated Audio Information: Systems, Second Edition, 2000

(FISCHER, 2008) Fischer, W. “Digital Video and Audio Broadcasting Technology: A Practical

Engineering Guide”. 2ndEdition. Local: Springer, 2008. (EC, 2001) PC/104 Embedded Consortium, PC/104 Specification, Version 2.4, August 2001. (SHANLEY, 1995) Tom Shanley, ISA System Architecture, 3rd Edition, MindShare, 1995. (CYPRESS, 2010) Cypress Semiconductor Corporation, Single-channel HOTLink II™

Transceiver, San Jose, Revised March 24, 2005, Disponível em: < http://www.cypress.com/?docID=24377> acessado em jun./2010.

Page 43: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

43

ANEXO A

<Pinagem de comunicação módulo embarcado>

(Texto Explicativo)

D 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

C 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

B 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

O conector PC/104 pode ser usado com diferentes funcionalidades incluindo

barramento ISA e modo GPIO (Genereal Purpose Input/Output). Para habilitar o barramento PC/104 para trabalhar com sinais de barramento ISA é necessário escrever os respectivos valores nos registradores a seguir:

0x55555 para o endereço 0xE800003C 0x55555 para o endereço 0xE8000038 0x55555555 para o endereço 0xE8000034 0x55555555 para o endereço 0xE8000030

Page 44: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

44

ANEXO B

<Conectores PC 104>

As conexões PC/104 são descritas nas tabelas a seguir. A coluna ISA traz o nome do sinal representado pelo pino. Conector de 64 pinos. Pin ISA pin ISA

A1 IOCHK# B1 GND

A2 D7 B2 RESET

A3 D6 B3 +5V

A4 D5 B4 IRQ9

A5 D4 B5 3.3V

A6 D3 B6 DRQ2

A7 D2 B7 NC

A8 D1 B8 ENDX#

A9 D0 B9 8V_30V

A10 IORDY B10 GND

A11 AEN B11 MEMW#

A12 A19 B12 MEMR#

A13 A18 B13 IOW#

A14 A17 B14 IOR#

A15 A16 B15 DACK3#

A16 A15 B16 DRQ3

A17 A14 B17 DACK1#

A18 A13 B18 DRQ1

A19 A12 B19 RFRSH#

A20 A11 B20 BCLK

A21 A10 B21 IRQ7

A22 A9 B22 IRQ6

A23 A8 B23 IRQ5

A24 A7 B24 IRQ4

A25 A6 B25 IRQ3

A26 A5 B26 DACK2#

A27 A4 B27 TC

A28 A3 B28 BALE

A29 A2 B29 +5V

A30 A1 B30 OSC

A31 A0 B31 GND

A32 GND B32 ISA_B32

Conector de 40 pinos. Pin ISA pin ISA

C0 GND D0 GND

C1 SBHE# D1 MEM16#

C2 LA23 D2 IO16#

C3 LA22 D3 IRQ10

C4 LA21 D4 IRQ11

C5 LA20 D5 IRQ12

C6 LA19 D6 IRQ15

C7 LA18 D7 IRQ14

C8 LA17 D8 3.3V

C9 MEMR# D9 DRQ0

C10 MEMW# D10 DACK5#

C11 SD8 D11 DRQ5

C12 SD9 D12 DACK6#

C13 SD10 D13 DRQ6

C14 SD11 D14 DACK7#

C15 SD12 D15 DRQ7

C16 SD13 D16 +5V

C17 SD14 D17 MASTER#

C18 SD15 D18 GND

C19 GND D19 GND

Page 45: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

45

(1) Concluinte do Curso de Engenharia da Computação - [email protected] (2) Concluinte do Curso de Engenharia da Computação - [email protected] (3)Professor Orientador – [email protected]

ANEXO C

<Componentes módulo DVB ASI> O Quadro a seguir traz a relação de componentes utilizados na confecção do módulo DVB ASI.

Componente Descrição Designação Quantidade Número de Referência

CAP NP 0402 Cap, .1 uF, 16V, ceramic C4 1 0402YD333KAT2A 22uf 0805 Cap, 22 uF, 6.3V, ceramic C18 1 08056D226MAT2A

0,1uF Cap, 0.1 uF, 25V, ceramic

C5, C6, C7, C9, C11, C12, C13, C14, C15, C16, C17 11 08053C104KAT2A

10uF Ceramic 0805 Cap, 10 uF, 6.3V, ceramic C8, C10 2 LT056D106MAT2X 4,7uF Cap, 4.7 uF, 6.3V, ceramic C1, C2 2 06036D475MAT2A

LED LED, green, 30 mA, 0603 footprint D1 1 LTST-C190GKT

LED LED, red, 30 mA, 0603 footprint D2, D3 2 LTST-C190CKT

BNC

Trompeter BNC edge launch connector used on LMH0344 EVK J1 1

QTE-040-01-F-D-A J2 1 QTE-040-01-F-D-A 5,6nH Inductor, 5.6 nH, L1 1 LQP15MN5N6B02D

TST_CLK Header, 2-Pin P2 1 87220-2

GPIO Header, 4-Pin P1 1 87220-4

SMBUS Header, 5-Pin P4 1 87220-5 75 Resistor, 75-ohms, R1, R2, R3, R4 4 RG1005P-750-B-T5 2,2K Resistor, 2.2 K ohms R7 1 CRCW04022K20FNKD

2,2K Resistor, 2.2 K ohms R9, R11, R12, R35, R36, R37 6 CRCW06032K20FKEA

0 Resistor, 0 ohms R5, R32, R33, R34 4 CRCW04020000Z0EA 0 Resistor, 0 ohms, 0603 R10, R14, R16, R18 4 CRCW06030000Z0EA

8,06K Resistor, 8.06K, 0603 R22 1 CRCW06038K06FKEA

0 Resistor, 0 ohms, 0603 R13, R15, R17 3 CRCW06030000Z0EA 500 ohms Resistor, 0 ohms, 0402 R6 1 MCR01MZPJ000

Reset_Button SWITCH PB SPST MOM WITH PUSH PLATE SW1 1 EVQ-PLHSA15

LMH0040 LLP-48, SQA48A U1 1

M24C01-W IC SRL EEPROM 1KBIT 2.5V 8-SOIC U2 1 M24C01-WMN6T

Page 46: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

46

ANEXO D

< Código barramento isa >

O código abaixo desenvolvido em VHDL, descreve o funcionamento do barramento ISA de 8 bits. Neste código estão as instruções de habilitação e controle de transmissão deste barramento.

ARCHITECTURE ISA8 OF ISA8Slave IS SIGNAL CONFIG_IO, DATA_IO, RESET_IO: STD_LOGIC; SIGNAL PORT_DATA_IN : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN -- AEN='0' precisa ser zero para ter certeza que não éuma ciclo de barramento DMA -- Liga o CONFIG_IO caso o endereço seja 0xE4 CONFIG_IO <= '1' WHEN ADDRESS = B"11100100" AND AEN='0' ELSE '0'; -- Liga o RESET_IO caso o endereço seja 0xE5 RESET_IO <= '1' WHEN ADDRESS = B"11100101" AND AEN='0' ELSE '0'; -- Liga o DATA_IO caso o endereço seja 0xE6 DATA_IO <= '1' WHEN ADDRESS = B"11100110" AND AEN='0' ELSE '0'; -- I/O Porta de entrada - Apenas para usar buffers tri state PORT_DATA_IN <= "10100101" WHEN ((ADDRESS = B"11100000") AND (IOR ='0')) ELSE "00000000" WHEN ((ADDRESS = B"11100100") AND (IOR ='0') AND (WRITE_ENA = '1'))

ELSE "10000000" WHEN ((ADDRESS = B"11100100") AND (IOR ='0') AND (WRITE_ENA = '0'))

ELSE "ZZZZZZZZ"; -- I/O Porta de saída - Salva os dados no registrador (DFFs) DATA <= PORT_DATA_IN; PROCESS (IOW) BEGIN -- Aguarda a borda positiva do clock do IOW IF(IOW'EVENT AND IOW='1') THEN -- Se for um sinal de CONFIG então podemos ter DATA igual: -- 0xFF -> Habilita a escrita na memória -- 0xFE -> Desabilita a escrita na memória -- 0xFD -> Define nível lógico alto no clock de escrita IF CONFIG_IO = '1' THEN CASE DATA IS WHEN "11111111" => --0xFF PORT_DATA_OUT <= "00000000"; WRITE_ENA <= '1'; WHEN "11111110" => --0xFE WRITE_ENA <= '0'; WRITE_CLK <= '0'; PORT_DATA_OUT <= "00000000"; WHEN "11111101" => --0xFD WRITE_CLK <= '1'; WHEN OTHERS => NULL; END CASE; END IF; -- Se for um sinal de RESET então podemos ter DATA igual: -- 0xFF -> Reinicia todos os sinais para o estado inicial

Page 47: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

47

(1) Concluinte do Curso de Engenharia da Computação - [email protected] (2) Concluinte do Curso de Engenharia da Computação - [email protected] (3)Professor Orientador – [email protected]

IF RESET_IO = '1' THEN CASE DATA IS WHEN "11111111" => WRITE_CLK <= '0'; WRITE_ENA <= '0'; PORT_DATA_OUT <= "00000000"; WHEN OTHERS => NULL; END CASE; END IF; -- Se for um sinal de DATA então: -- Salva o dado do barramento ISA no registrador IF (DATA_IO = '1' AND WRITE_ENA = '1') THEN PORT_DATA_OUT <= DATA; WRITE_CLK <= '0'; END IF; END IF; END PROCESS;

END ISA8;

Page 48: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

48

ANEXO E

<XML de armazenamento dados WEB>

Abaixo está o código XML por meio do qual são armazenados os dados inseridos na interface WEB. Esses dados são tratados e codificados no padrão MPEG. <?xml version="1.0" encoding="utf-8"?> <EPG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Networks> <Network id="4159" name="RedeGlobo"> <Multiplexers> <Multiplex id="4160" name="Curitba"> <Services> <Service id="4250" name="Globo News"> <Events> <Event id="1200" starttime="2010-08-16T20:00:00" durariton="2010-08-16T20:30:00"> <Descriptors> <Descriptor xsi:type="ContentDescriptor" ID="96172d38-69fd-48f0-a77f-3d3b74b03429" nibble1="1" nibble2="1" /> <Descriptorxsi:type="ShortEventDescriptor" ID="b6dbfbe6-5911-461d-b907-f0cc96a23a20" languagecode="por" eventname="Jornal" text="Jornal Última Hora" /> </Descriptors> </Event> <Event id="1201" starttime="2010-08-16T20:30:00" durariton="2010-08-16T22:00:00"> <Descriptors> <Descriptorxsi:type="ContentDescriptor" ID="ec796e7c-8bf3-4ebf-8f48-e3b7a1434738" nibble1="1" nibble2="7" /> <Descriptorxsi:type="ShortEventDescriptor" ID="3d4eb146-0f74-4fa5-b3cf-35467b46a44f" languagecode="por" eventname="Histórico" text="A história da nossa civilização." /> </Descriptors> </Event> </Events> </Service> </Multiplex> </Multiplexers> </Network> </Networks> </EPG>

Page 49: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

49

(1) Concluinte do Curso de Engenharia da Computação - [email protected] (2) Concluinte do Curso de Engenharia da Computação - [email protected] (3)Professor Orientador – [email protected]

ANEXO F

<Codificação padrão MPEG2TS>

O código abaixo desenvolvido em C#, é responsável pela aquisição dos dados do arquivo XML e converte-los para o padrão MPEG2TS para posteriormente inseri-los na tabela EIT. Muxmux = newMux(output); foreach (Network net in _networks) { foreach (Multiplexmplexinnet.Multiplexers) { foreach (Serviceservinmplex.Services) { bytesectionNumber = 0; foreach (Eventevtinserv.Events) { EITeit = newEIT(); eit.TableID = 0x4F; eit.SectionSyntaxIndicator = true; eit.ReservedFutureUse = true; eit.ReservedHeader = 0x03; eit.Reserved = 0x03; eit.OriginalNetworkID = (ushort)net.ID; eit.TransportStreamID = (ushort)mplex.ID; eit.ServiceID = (ushort)serv.ID; eit.VersionNumber = 0x01; eit.CurrentNextIndicator = true; eit.SectionNumber = sectionNumber; eit.LastSectionNumber = (byte)(serv.Events.Count - 1); eit.LastTableID = 0x4F; EventInfoevtInfo = newEventInfo(); evtInfo.EventID = (ushort)evt.ID; evtInfo.FreeCAMode = false; evtInfo.RunningStatus = 4; byte[] b = BitConverter.GetBytes(evtInfo.CalculateMJD(evt.StartTime.Year, evt.StartTime.Month, evt.StartTime.Day)); byte[] result = newbyte[8]; result[3] = b[1]; result[4] = b[0]; result[5] = (byte)int.Parse(evt.StartTime.Hour.ToString(), System.Globalization.NumberStyles.HexNumber); result[6] = (byte)int.Parse(evt.StartTime.Minute.ToString(), System.Globalization.NumberStyles.HexNumber); result[7] = (byte)int.Parse(evt.StartTime.Second.ToString(), System.Globalization.NumberStyles.HexNumber); evtInfo.StartTime = BitHelper.GetLong(result, 40, 0);

Page 50: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

50 result = newbyte[4]; result[1] = (byte)int.Parse(evt.EndTime.Hour.ToString(), System.Globalization.NumberStyles.HexNumber); result[2] = (byte)int.Parse(evt.EndTime.Minute.ToString(), System.Globalization.NumberStyles.HexNumber); result[3] = (byte)int.Parse(evt.EndTime.Second.ToString(), System.Globalization.NumberStyles.HexNumber); evtInfo.Duration = BitHelper.GetInt(result, 24, 0); eit.Events.Add(evtInfo); foreach (Descriptordescinevt.Descriptors) { switch (desc.GetType().Name) { case"ContentDescriptor": JBB.MPEG2TS.Core.Tables.Descriptors.ContentDescriptorcDesc = newCore.Tables.Descriptors.ContentDescriptor(); cDesc.DescriptorTag = 0x54; cDesc.ContentNibbleLevel1 = (byte)int.Parse(((ContentDescriptor)desc).Nibble1.ToString(), System.Globalization.NumberStyles.HexNumber); cDesc.ContentNibbleLevel2 = (byte)int.Parse(((ContentDescriptor)desc).Nibble2.ToString(), System.Globalization.NumberStyles.HexNumber); cDesc.UserNibble1 = 0x00; cDesc.UserNibble2 = 0x00; evtInfo.Descriptors.Add(cDesc); break; case"ShortEventDescriptor": JBB.MPEG2TS.Core.Tables.Descriptors.ShortEventDescriptorsDesc = newCore.Tables.Descriptors.ShortEventDescriptor(); sDesc.DescriptorTag = 0x4D; System.Text.Encodingascii = System.Text.Encoding.ASCII; Byte[] encodedBytes = ascii.GetBytes(((ShortEventDescriptor)desc).LanguageCode); byte[] buffer = newbyte[4]; buffer[3] = encodedBytes[2]; buffer[2] = encodedBytes[1]; buffer[1] = encodedBytes[0]; sDesc.ISO639LanguageCode = BitHelper.GetInt(buffer, 24, 0); sDesc.EventName = ((ShortEventDescriptor)desc).EventName; sDesc.Text = ((ShortEventDescriptor)desc).Text; evtInfo.Descriptors.Add(sDesc); break; } } mux.EIT.Add(eit); sectionNumber++; } } } } mux.Start();

Page 51: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

51

(1) Concluinte do Curso de Engenharia da Computação - [email protected] (2) Concluinte do Curso de Engenharia da Computação - [email protected] (3)Professor Orientador – [email protected]

ANEXO G

<Encoder e criação dos pacotes MPEG2TS>

Este código foi desenvolvido em C# e é o responsável pelo empacotamento dos dados, que já foram convertidos para MPEG2TS, possibilitando a transmissão dos dados para o módulo de serialização. Encoder<EIT> encoder = newEncoder<EIT>(); foreach (vareitin _eit) {

encoder.PushTable(eit); } foreach (var item inencoder.Packets) {

_output.WritePacket(item.Data); } Neste próximo bloco pode-se ver como o Encoder codifica os dados e cria os pacotes MPEG2TS:

byte[] data = ((IPSIBase)table).Data; double temp = (double)data.Length / 184; double r = Math.Truncate(temp); double f = temp - r; intamountOfPackets = (f == 0.0) ? (int)r : (int)r + 1; int index = 0; for (int i = 0; i <amountOfPackets; i++) { Packetpacket = newPacket(Packet.Size._188); packet.PID = 0x12; packet.AdaptationFieldControl = 0x01; packet.PayloadUnitStartInidicator = (i == 0) ?true :false; packet.TransportScramblingControl = 0x00; packet.TransportPriority = false; packet.TransportErrorIndicator = false; packet.ContinuityCounter = _counter;

Page 52: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

52 byte[] buffer = null; intstartBufferIndex = 0; if (i != amountOfPackets - 1) { buffer = newbyte[184]; if (packet.PayloadUnitStartInidicator) { startBufferIndex = 1; buffer[0] = 0x00; } else startBufferIndex = 0; Array.Copy(data, index, buffer, startBufferIndex, (buffer.Length - startBufferIndex)); index += buffer.Length - startBufferIndex; } else { buffer = newbyte[184]; Packet.InitializeBuffer(buffer); if (packet.PayloadUnitStartInidicator) { startBufferIndex = 1; buffer[0] = 0x00; } else startBufferIndex = 0; Array.Copy(data, index, buffer, startBufferIndex, (data.Length - index)); } packet.Payload = buffer; if (_counter == 15) _counter = 0x00; else _counter++; _packets.Add(packet);

ANexo H<Diagrama esquemático módulo DVB ASI>

A seguir está a imagem do diagrama esquemático do Módulo DVB ASI, que foi projetado. Contudo, a sua confecção terceirizada devido a restrições de manufatura da placa impostas pelo LMH0340 principal componente utilizado para a confecção do módulo.

Formatado: Inglês (Estados Unidos)

Page 53: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

53

(1) Concluinte do Curso de Engenharia da Computação - [email protected] (2) Concluinte do Curso de Engenharia da Computação - [email protected] (3)Professor Orientador – [email protected]

Page 54: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

54

ANEXO H

Servidor de EPG (Eletronic Program Guide) para TV Digital Implementado em FPGA

Davi Moreira Neves (1), Josias Bortoloto Biasibetti(2), Edson Pedro Ferlin (3)

Universidade Positivo Departamento de Engenharia da Computação

Dezembro de 2010

Page 55: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

55

RESUMO Neste trabalho é descrito o projeto de um servidor de guia de programação de TV digital implementado em FPGA. O sistema gera os pacotes de programação para o formato MPEG2 (Moving Picture Experts Group) e depois os disponibiliza em uma saída no padrão digital. Os testes consistem basicamente na geração dos pacotes de dados por meio de um software desenvolvido para codificação dos dados no padrão MPEG2 Transport Stream que é o passo inicial para a geração dos pacotes de dados. Nesses pacotes estão contidas informações como classificação, duração e gênero do programa a ser exibido. Os pacotes são disponibilizados em uma saída com padrão DVB (Digital Video Broadcasting) ASI (Asynchronous Serial Interface). Palavras-chaves: Televisão Digital, Electronic Program Guide, Pacotes de vídeo.

ABSTRACT This work describes the design of a server guide digital TV programming implemented in FPGA. The system generates packages of programming to MPEG2 (Moving Picture Experts Group) and then makes them available in a digital pattern output. The tests are basically the generation of data packets through a software developed for data encryption standard in the MPEG2 Transport Stream which is the initial step for the generation of data packets. In these packages are contained information such as classification, gender and duration of the program to be displayed. Packages are available with output in a standard DVB (Digital Video Broadcasting) ASI (Asynchronous Serial Interface). Keywords: Digital TV, Electronic Program Guide, Video Packages.

INTRODUÇÃO O servidor de EPG (Electronic Program Guide) é um sistema responsável pela geração de informações adicionais inseridas no sistema de multiplexação de dados da televisão digital. Dentre estas informações estão: classificação, horário de exibição do programa, duração, gênero em que o programa se enquadra entre outros.

Os servidores de EPG necessitam de um hardware que gere uma saída em tempo real codificada, aonde os dados inseridos se alteram ao longo do tempo baseando-se nas informações do guia de programação. O guia de programação consiste em uma estrutura de dados que pode conter diversas redes, que na pratica são as redes de TV transmitidas, em cada rede podem existir diversos serviços, que seriam os segmentos de cada emissora que estão espalhados pelo país dentro de cada um dos serviços são definidos eventos (programas) e respectivas durações (IOS,2000). Cada evento transporta diversas informações chamadas descritores, dentre elas: título classificação de idade do evento, gênero, idioma entre outros. A Figura 1 mostra uma visão geral do servidor EPG.

Page 56: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

56

Figura 1 – Visão Geral do Projeto

O sistema é composto por três módulos: Embarcado, Serialização e DVB (Digital

Video Broadcasting) ASI (Asynchronous Serial Interface). Este servidor de EPG é capaz de receber as informações do guia de programação por meio de uma interface com usuário que, neste caso, é um operador de TV digital. A interface é constituída de campos onde serão inseridos os descritores, os eventos (data e hora de inicio, hora do fim, duração entre outros). Os dados são codificados por meio de um algoritmo executado no Módulo Embarcado, e transmitidos para o Módulo de Serialização que produz uma saída com a informação no padrão MPEG2 Transport Stream.

O algoritmo do sistema baseia-se nas estruturas definidas pelas normas da Associação Brasileira de Normas Técnicas (ABNT, 2008). A operação consiste em receber os dados inseridos na interface web, hospedada no Módulo Embarcado montar os pacotes e, com o uso do barramento ISA de 8bits enviá-los para o Módulo de Serialização. O Módulo Embarcado constitui-se de um KIT adquirido comercialmente por questões de otimização e custo de desenvolvimento. O KIT é composto por um processador ARM utilizando para funcionamento o sistema operacional Linux distribuição Lenny. Além disso, há também memória flash para armazenamento do sistema operacional, portas de entrada e saída serial e rede bem como um barramento para comunicação de dados. Dentro do sistema operacional é processado o algoritmo de transmissão dos pacotes para o Módulo de Serialização. No Módulo de Serialização são armazenados os pacotes contendo as informações, e tem como um de seus principais componente a FPGA (Field programmable gate array) Stratix II da Altera (www.altera.com) onde está implementado um banco de memória capaz de armazenar até 48 horas de conteúdo do guia de programação. Esse módulo é responsável pelo controle do fluxo de dados e o envio destes ao Módulo DVB ASI. A comunicação externa é controlada pelo controlador de entrada e saída que é feita por meio de um barramento de comunicação. O controlador EPG é o responsável por manipular os dados e enviar os mesmo em partes para o Módulo DVB-ASI que faz a serialização convertendo para o formato digital.

O servidor de EPG efetua a geração de pacotes MPEG2 TS contendo as seções de informações de eventos (conteúdo da EIT-Event Information Table). Uma interface simplificada permite o acesso do usuário ao sistema tornando possível a inserção dos dados. Um algoritmo trata os dados inseridos pelo usuário, baseando-se nas estruturas definidas pelas normas e monta os pacotes inserindo cada uma das informações alimentadas pelo operador de TV digital e armazena no Módulo de Serialização.

A saída de dados do Módulo de Serialização é constituída de uma porta serial no padrão DVB-ASI, controlada por meio de uma lógica implementada em FPGA. O

Page 57: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

57

Módulo de Serialização recebe os dados do Módulo Embarcado e os disponibiliza na saída DVB-ASI. Esses dados terão a maior constância possível, podendo haver atraso de transmissão e quebra de pacotes apenas na comunicação entre os módulos (Embarcado e de Serialização). Isto significa que ao enviar os dados para o módulo de serialização o algoritmo executado do módulo embarcado envia no inicio da transmissão um bit indicando que é o início de um pacote. A cada inicio de novo pacote esse bit de indicação é enviado novamente.

Para a geração dos pacotes MPEG2 TS, foram usados apenas alguns dos descritores disponíveis na norma (IOS 2000) uma vez que apenas um dos descritores de eventos é obrigatório. Os descritores selecionados são os de classificação indicativa, de conteúdo, de componente de áudio, e há também o descritor de eventos curtos. A escolha de apenas alguns descritores se deve às restrições de memória implementada dentro do Módulo de Serialização.

METODOLOGIA A geração dos pacotes começa na interface web hospedada no Módulo Embarcado, em que o operador entra com os parâmetros. Após este processo os dados são armazenados em um arquivo XML(Extensible Markup Language) que é lido por um algoritmo implementado em C#, que é responsável pela conversão dos dados para o padrão MPEG2TS.

Após este processo os dados no formato MPEG2TS são empacotados utilizando-se de um novo algoritmo, também implementado em C#, quebra os pacotes em tamanhos adequados para transmissão por meio do barramento ISA de 8 bits ao módulo de serialização. Nesse módulo os pacotes são montados seguindo os padrões da tabela EIT (ETSI, 2006). O Módulo de serialização foi implementado em lógica programável utilizando – se a linguagem VHDL (Very Hardware Description Language). Após montagem dos pacotes os dados são enviados ao Módulo DVB -ASI onde ocorre a conversão dos dados para o formato digital.

IMPLEMENTAÇÃO O Servidor EPG desenvolvido opera em uma frequência de 27 MHz, é capaz de armazenar dois dias de programação.

Foram implementados dois descritores com receio de sobrecarregar a operação do sistema, para tal utilizou-se o descritor de classificação, que é o único obrigatório, e o descritor de Gênero. É possível implementar vários outros que por uma questão de conveniência não estão no projeto. Dado o receio de sobrecarregar a FPGA, as rotinas descritas em VHDL foram bastante otimizadas, ao final da implementação o percentual

Figura 2 – Tela principal do software de entrada de dados

Page 58: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

58

de utilização da FPGA ficou em 1%. Para a conexão entre Módulo Embarcado e Módulo de Serialização utilizou-se o barramento PC 104 do Kit Arm (EC, 2001) com barramento ISA 8 bits ( Shanley,1995) implementado na FPGA. Como os módulos possuem frequências de operação diferentes entre si (Embarcado 27MHZ, Serialização 50MHZ) foi implementado um circuito redutor de clock para manter o funcionamento em 27 MHz.

RESULTADOS A taxa de transmissão dos dados chegou 180MB/s, o que indica 84% de eficiência da taxa de transmissão nominal do canal de comunicação. A transmissão dos dados ocupou pouco mais 1% da banda de transmissão do stream os dados de cinco canais com uma programação de eventos de seis horas de duração, atendendo as necessidades exigidas para sua comercialização no mercado atual.

Como produto desse estudo, foi desenvolvido um equipamento para o sistema de televisão digital capaz de gerar um guia de programação eletrônico. O sistema desenvolvido atende aos requisitos descritos neste trabalho e produziu os resultados que veremos a seguir.

Para uma análise dos resultados vamos analisar o sistema sob a ótica dos três módulos funcionais:

Módulo Embarcado Módulo de Serialização Módulo DVB-ASI

A princípio nosso trabalho produziu uma interface de entrada de dados para o

sistema que fornece um parser XML capaz de codificar os dados, previamente inseridos pelo operador do sistema, a Figura 2 mostra a tela principal do software de entrada de dados.

É gerado um arquivo que contém os pacotes do guia de programação no formato MPEG2, sem um controle na taxa de transmissão do stream que é feita pelo módulo de serialização. Os pacotes produzidos na saída deste módulo possuem um tamanho fixo de 188 bytes e não incluem os pacotes de stuffing, que tem a finalidade de preencher o stream com dados vazios para o controle da taxa de transmissão. A Figura 3 os dados do mesmo pacote sendo analisados utilizando-se o software Streamguru (www.streamguru.de)

Figura 4 - Tela osciloscópio exibindo taxa de transmissão com preenchimento

Page 59: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

59

Figura 3 - Análise dos pacotes

A taxa de transmissão de um arquivo MPEG2 puro, sem os pacotes de preenchimento vazios, ou stuffing packets, é muito mais baixa se comparada a um stream de transmissão completo. Necessita-se observar que a taxa de transmissão do arquivo gerado é em torno de 5 Mbps e permite comparação da taxa deste stream gerado, com a taxa gerada pelo stream de saída do sistema. O Módulo de Serialização que recebe os pacotes do módulo embarcado e armazena em memória fazendo a serialização dos dados, ou seja, inserindo ao stream os pacotes de preenchimento (stuffing packets) para o controle da taxa do stream. Isto resulta em um stream de dados com uma taxa bem mais elevada. A Figura 4 mostra a taxa do stream de saída do sistema.

Analisando a Figura 4 pode-se observar que a taxa dos dados do stream, depois da

inserção dos pacotes de preenchimento, aumenta aproximadamente 10 vezes comparado com os dados sem os pacotes de preenchimento. Porém, isto é necessário para que se mantenha um fluxo constante de dados na saída do Módulo DVB-ASI. Desta forma esses dados são ignorados quando inseridos na entrada de um multiplexador do sistema de televisão digital.

O Módulo DVB-ASI recebe o stream de dados do módulo de serialização produzindo uma saída serial digital. Os dados são transmitidos no canal físico a uma taxa de 216 Mbps nominal, porém a taxa atingida pelo sistema desenvolvido chegou ao máximo de 184 Mbps. Isso devido a problemas de sincronização entre os blocos lógicos programados no dispositivo FPGA.

A análise do canal de transmissão DVB-ASI na saída do sistema produziu a forma de onda, visualizada na Figura 5. Pode-se observar que são geradas formas de onda, onde ocorre um jitter de saída que é típico neste tipo de sistema de transmissão.

Figura 5 - Forma de Onda do sinal serializado

Neste canal de transmissão o sistema pode atingir uma taxa de 3Gbps, porém isso é limitado pelo padrão DVB-ASI que aceita taxas de no máximo 216 Mbps para transmissões dentro das normas estabelecidas pelo IEEE(Institute of Electrical and Electronicas Engineers) (ETSI, 2006).

Page 60: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

60

CONCLUSÕES O Servidor de EPG que foi proposto e desenvolvido é um equipamento capaz de receber informações do guia de programação, codificar e transmitir os dados nos padrões definidos pelas normas de televisão digital.

Esse sistema prove uma interface com o usuário que recebe os dados do guia de programação. Um algoritmo faz a codificação dos dados para o padrão MPEG2TS que é serializado por meio de um sistema utilizando uma lógica de hardware implementada em uma FPGA capaz de inserir pacotes de preenchimento, ou seja, pacotes vazios no stream de dados para a manutenção da taxa de transmissão. Por fim o sistema disponibiliza os dados em uma saída no padrão DVB-ASI fazendo a transmissão da informação.

No que tange o projeto do servidor de guia de programação eletrônico, objeto de estudo da monografia, pode-se concluir que o sistema funcionou dentro dos resultados esperados que consiste basicamente na transmissão dos pacotes gerados com baixíssimo índice de inconsistência na transmissão algo em torno de 15%. O sistema trabalha com um limite de cinco canais de programação com até 48 horas de eventos de programação por canal. Os dados podem ser inseridos pelo operador diretamente no equipamento por meio de uma interface WEB sem que haja a necessidade de softwares instalados localmente no computador do operador.

A saída do sistema é limitada a pacotes de 188 bytes e ao modo de transmissão em rajada, que faz com que o sistema envie 188 bytes e, posteriormente, um stuffing byte, ou seja, um byte de preenchimento indicando o fim do pacote.

Os resultados obtidos permitem concluir que é completamente viável o desenvolvimento de um equipamento para a geração de um guia de programação para a Televisão Brasileira.

Page 61: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

61

REFERENCIAS (ABNT, 2008) Associação Brasileira de Normas Técnicas (ABNT), ABNT NBR 15603 - Televisão Digital Terrestre - Multiplexação e Serviços de Informação, Norma ABNT NBR 15603, Rio de Janeiro: ABNT, 2008. (ETSI, 2006) European Telecommunications Standard Institute Version 1.7.1, ETSI EN 300 468 - Digital Video Broadcasting (DVB) Specification for Service Information (SI) in DVB systems) (IOS, 2000)International Organization for Standardization, ISO/IEC 13818-1 – Information Technology-Generic Coding of Moving Pictures and Associated Audio Information: Systems, Second Edition, 2000.

(Fischer, 2008) Fischer, W. Digital Video and Audio Broadcasting Technology: A Practical Engineering Guide. 2ndEdition. Local: Springer, 2008. (EC, 2001)PC/104 Embedded Consortium, PC/104 Specification, Version 2.4, August 2001. (Shanley, 1995) Shanley, T. ISA System Architecture, 3rd Edition, MindShare 1995.

Page 62: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

62

ANEXO I

Conexão do Painel Traseiro

Todas as conexões do Servidor de EPG podem ser feitas pelo painel traseiro do equipamento. Conecte primeiro o cabo de Ethernet e posteriormente o cabo BNC a saída DVB-ASI. Por fim conecte o cabo de alimentação ao equipamento.

É necessário configurar a placa de rede para acessar o Servidor de EPG. Abra as conexões de redes de seu sistema operacional e configure a interface de rede da seguinte forma:

Defina o IP da interface de rede como 192.168.2.50 e a sub-rede como 255.255.255.0, assim o host ficará acessível.

Page 63: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

63

Utilizando a Interface WEB do Servidor EPG

O Servidor de Guia de Programação Eletrônico fornece uma aplicação embarcada dedicada à configuração da grid de programação. Nesta aplicação é possível configurar as Redes, Multiplexadores e Serviços que estarão disponíveis no stream de dados MPEG2.

É possível a definições dos eventos para um determinado serviço do stream de conteúdo, bem com os descritores dos eventos disponíveis.

Este guia tem como objetivo auxiliar no entendimento de cadastro da estrutura da grid de programação do sistema de geração do Guia de Programação Eletrônico.

Usando um navegador WEB acesse o endereço IP do servidor de EPG, assim obterá acesso à aplicação de configuração do Guia de Programação.

Cadastrando Uma Network

Para criar uma rede acesse o menu File-> New-> Network. Preencha com o identificador e o nome da Rede e clique em salvar.

Page 64: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

64

Cadastrando um Multiplex

Para criar um multiplexador acesse o menu File-> New-> Multiplex. Preencha com o identificador e o nome do Multiplexador, selecionar na combo Network a rede desejada e clique em salvar.

Cadastrando um Service

Para criar um serviço acesse o menu File-> New-> Service. Preencha com o identificador e o nome do Serviço, selecione na combo Network a rede desejada e na combo Multiplex o multiplexador desejado, após clique em salvar.

Page 65: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

65

Vizualizando um Serviço

Para visualizar um serviço clique no serviço desejado a esquerda da aplicação, com isso o sistema mostrará os dados do serviço bem como a lista de eventos disponível.

Pode-se criar ou excluir um evento clicando nos botões do New/Delete no menu de eventos.

Cadastrando um Evento

Para criar um Evento clique em New na grid de eventos. Preencha com o identificador, hora de inicio e duração do Evento, após clique em salvar.

Após o evento ser salvo é possível o cadastro dos descritores, conforme mostra a

figura abaixo. Clique em New Descriptor e selecione o descritor desejado para cadastrar um novo descritor. Caso haja algum descritor cadastrado e seja necessário remove-lo, selecione o descritor na lista e clique em Delete.

Page 66: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

66

Cadastrando um ShortEvent Descriptor Selecione o código de idioma desejado na combo Language Code, preencha o nome do evento com o nome desejado e o texto de descrição do evento, após clique em salvar.

Cadastrando um Content Descriptor

Page 67: Servidor de EPG (Eletronic Program Guide para TV Digital ... · PLL Phase-Locked Loop (Fase de Loop Fechado) FPGA Field Programmable Gate Array (Matriz de Campos Programáveis) SO

67

Selecione o gênero desejado na combo Nibble Level 1 e um subgênero na combo Nibble Level 2 , após clique em salvar.