IMPLEMENTAÇÃO EM FPGA DA TRANSFORMADA DISCRETA DE CO-SENOS COM QUANTIZAÇÃO PARA HDTV

Documentos relacionados
Classificação e Pesquisa de Dados. Aula 27 Compressão de Dados Multimídia: Compressão de Imagens

Transformada de Discreta de Co senos DCT

Televisão Digital 5ºano 2006/2007. Compressão/Descompressão de Imagens JPEG. Trabalho realizado por: Carla Neves, nº

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação

FERRAMENTA PARA ENSINO DAS TÉCNICAS DE COMPRESSÃO DE VÍDEO UTILIZADAS NO PADRÃO MPEG-2

Padrões de Compressão de Imagens

Televisão Digital. MPEG-2 Video

Parte # 2 - Circuitos Combinatórios

Processamento de Imagem. Compressão de Imagens Professora Sheila Cáceres

Dispositivos de Lógica Programável

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

EPUSP PCS2355 Laboratório Digital SOMADORES DECIMAIS

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO

Compressão de Imagens: Padrão JPEG

EPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL

Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01)

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Exploração do Espaço de Projeto da DCT 2-D de um Compressor de Imagens JPEG

Universidade Federal do Rio Grande do Sul Instituto de Informática

DESENVOLVIMENTO DO MÓDULO DE PRÉ-ENFASE PARA SISTEMAS DE RECONHECIMENTO AUTOMÁTICO DE VOZ EM FPGA

Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

ARQUITETURA DE HARDWARE DEDICADA PARA A DECODIFICAÇÃO EXP-GOLOMB DO PADRÃO H.264 DE COMPRESSÃO DE VÍDEO

EPUSP PCS 2011/2305/2355 Laboratório Digital SOMADORES DECIMAIS

Pontifícia Universidade Católica Federal do Rio de Santa Grande Catarina do Sul

4 Método Proposto Visão geral do Método

Computação Gráfica. Prof. MSc André Y. Kusumoto

Processamento digital de imagens

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI

Resumo do Artigo. Um Mecanismo Para Distribuição Segura de Vídeo MPEG. Escrito por

DSP (Conversão AD/ DA) Processo de conversão AD. Processo de conversão AD. Current A/D technology (cont.) Currente tecnologia A/D

Formatos de Áudio e Vídeo Digital Compactação de Vídeo

Relatório Circuitos Lógicos. Calculadora 4 bits

3 Arquitetura Conceitual do Codec Open DVC

Universidade de Pernambuco Escola Politécnica de Pernambuco

Especificação e Desenvolvimento da Estimação de Movimento em VHDL usando o Algoritmo Three Step Search

Projeto com Dispositivos Programáveis

Compressão de Imagens em Movimento

Imagem Estática JPEG 2000 JPEG 2000 JPEG 2000 JPEG Joint Photographic Experts Group Padrão ISO/IEC 15444; ITU-T T.800

UM MÉTODO PARA COMPARAÇÃO ENTRE HARDWARE E SOFTWARE DAS FUNÇÕES CRC-16 E FDCT SCHNEIDER, R. F. ¹, RAMOS, F. L. L.¹

COMPRESSÃO DE SINAIS DE ELETROMIOGRAFIA

Projeto de Hardware para a Compensação de Movimento do Padrão H.264/AVC de Compressão de Vídeo

Codificador de Entropia Segundo o Perfil Baseline do padrão H.264/AVC de Compressão de Vídeo

Compressão de Imagens. Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca (Coordenadora)...DPI/INPE

Multiplicador Binário com Sinal

Sistemas Digitais I LESI :: 2º ano. Introdução

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados.

Projeto com Linguagens de Descrição de Hardware

Fundamentos da Compressão de Vídeo

Lógica Reconfigurável

Eletrônica Digital para Instrumentação. Herman Lima Jr.

Capítulo 6 Aritmética Digital: Operações e Circuitos

AVALIAÇÃO DOS IMPACTOS DO USO DE SOMADORES COMO MACRO FUNCTIONS EM UM PROJETO DE COMPRESSOR JPEG

Arquitetura de um Módulo T Dedicado à Predição Intra do Padrão de Compressão de Vídeo H.264/AVC para Uso no Sistema Brasileiro de Televisão Digital

2 Conceitos iniciais 19

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Estudo sobre decodificação iterativa usando códigos de treliça

EPUSP PCS 3635 Laboratório Digital I. Trena Digital

Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva

Comunicação de Dados Quantização Aula-15

QUANTIZAÇÃO DIRETA E INVERSA DE ALTA PERFORMANCE PARA A COMPRESSÃO DE VÍDEO H.264/AVC DIRECIONADA PARA HDTV

EPUSP PCS 3335 Laboratório Digital A. Trena Digital

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

Circuitos Seqüenciais

CODIFICAÇÃO DE IMAGENS EM CORES USANDO A TRANSFORMADA SENO DISCRETA COM ROTAÇÃO DE EIXOS (DSTR)

Acadêmicos: Cassiano Cesar Casagrande Claudir Galesky Junior Rafael Voltolini

3 a Lista de Exercícios

MPEG-4 & H.264. Dissertação, entendimento e comparativo entre e com o MPEG-2

Princípios de Telecomunicações. PRT60806 Aula 19: Modulação por Código de Pulso (PCM) Professor: Bruno Fontana da silva 2014

FPGA & VHDL. Tutorial Aula 1. Computação Digital

Projeto Moderno de Sistemas Digitais

Introdução à Computação

Influência do Tamanho do Bloco na DCT

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

Representação da Informação

COMPRESSÃO E CODIFICAÇÃO SEM PERDAS. Mauro Nogueira Mônica Festa Paulo Antiquera

Exercícios de Laboratório 3

ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

Revisão: Projeto e síntese de Circuitos Digitais em FPGA

4 H Conceitos importantes

FACULDADE LEÃO SAMPAIO

Comunicação Serial Assíncrona

SSC510 Arquitetura de Computadores 1ª AULA

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Calculadora Simples em VHDL

Circuitos Lógicos. Profa. Grace S. Deaecto. Faculdade de Engenharia Mecânica / UNICAMP , Campinas, SP, Brasil. grace@fem.unicamp.

Aquisição/Codificação de Vídeo

Capítulo 5. Parte de Controle

CONTROLE DE UM SERVO MOTOR

Televisão Digital. Codificação de Entropia Códigos de Huffman. Hélio Manuel Gonçalves Jaco

PROJETO DE ARQUITETURAS SÍNCRONAS E DE ALTO DESEMPENHO PARA OS BLOCOS DAS TRANSFORMADAS DIRETAS E INVERSAS DA COMPRESSÃO H.264/AVC

FPGA & VHDL. Tutorial

Compressão de Imagens de Satélites: Embarcada e em Solo

Projetos de Circuitos Digitais em VHDL e FPGA

Compressão de Imagens em Movimento

Parte 02 Multiplexação Analógica e Digital no STFC. Prof. Rafael Saraiva Campos 2013/1

Transcrição:

IMPLEMENTAÇÃO EM FPGA DA TRANSFORMADA DISCRETA DE CO-SENOS COM QUANTIZAÇÃO PARA HDTV José Adson O. G. da Cunha 1, Évisson Fernandes de Lucena 1, Solon Ferreira de Lucena 1, Hamilton Soares da Silva 1, José Antônio Gomes de Lima 1, Leonardo Vidal Batista 1 1 Departamento de Informática Universidade Federal da Paraíba (UFPB) CEP 58059-900 João Pessoa PB Brasil {adson, evisson, solon}@lavid.ufpb.br, {hamilton, jose, leonardo}@di.ufpb.br ABSTRACT The MPEG-2 video standard uses Discrete Cosine Transform (DCT) in blocks of 8x8 pixels to efficiently explore the space correlation between adjacent pixels. It is obtained by applying the DCT-1D to the lines of the 8x8 blocks and then applying the DCT-1D to the columns of the resultant block. Subsequently, these blocks suffer a quantization process that discards less relevant visual information. This poster proposes a FPGA implementation of a bi-dimensional DCT followed by quantization. The architecture was validated and tested through simulation and the performance evaluation shows that the circuit can be used in High Definition Television codecs. RESUMO O padrão de vídeo MPEG-2 usa técnicas de Transformada Discreta de Co-Senos (DCT) em blocos de imagem de 8x8 pixels para explorar de forma eficiente a correlação espacial entre pixels próximos na mesma imagem. Isso é obtido através da aplicação da DCT-1D nas linhas da matriz e posterior aplicação da DCT-1D nas colunas da matriz resultante. Posteriormente, tais blocos passam por um processo de quantização que descarta informações visualmente insignificantes. Este poster propõe uma implementação em FPGA da DCT bidimensional seguido da quantização. A arquitetura foi validada e testada através de simulação e a performance obtida mostra que a mesma pode ser usada em codecs para TV Digital de Alta Resolução. 1. INTRODUÇÃO Em geral, seqüências de vídeo contêm uma quantidade significativa de redundância estatística e subjetiva entre e nos quadros. O objetivo final de um sistema de codificação de vídeo é a redução do número de bits a serem armazenados ou transmitidos explorando as redundâncias e codificando um conjunto mínimo de informação usando técnicas de codificação por entropia. A performance das técnicas de compressão de vídeo depende da quantidade de redundância contida na imagem, bem como das técnicas usadas na codificação [1]. A codificação de vídeo é estatística por natureza. A propriedade estatística básica sobre a qual esta codificação se baseia é correlação entre pixels (inter-pel correlation) incluindo a suposição de simples correlação de movimento translacional entre quadros consecutivos. Os algoritmos de compressão de vídeo, como o MPEG-2 [ITU-T Recommendation H.262] [2], usam técnicas de Transformada Discreta de Co-senos (Discrete Cosine Transform - DCT) [1] em blocos de imagem de 8x8 pixels para explorar de forma eficiente a correlação espacial entre pixels próximos na mesma imagem. A compactação proveniente da DCT está diretamente relacionada às características da imagem a ser codificada. O objetivo maior deste estágio é obter coeficientes suficientemente pequenos para serem desprezados no próximo estágio, referente à quantização. A função básica da quantização é dividir cada coeficiente proveniente do processo da DCT por números vindos de tabelas de quantização, de forma a gerar coeficientes pertos ou iguais a zero, sendo descartados de forma eficiente em processos subseqüentes, como o RLC ( Run-length coding ) e VLC ( Variable-length coding ) [2]. O desenvolvimento de um circuito de alta performance e baixo custo capaz de realizar os cálculos da DCT-2D seguido da quantização, em FPGA [3],[4] para HDTV [5],[6] foi o alvo deste trabalho. 2. TRANSFORMADA DISCRETA DE CO-SENOS Normalmente, os quadros de vídeo apresentam alta correlação entre pixels adjacentes. Neste caso, uma transformada adequada pode ser usada para concentrar a energia em poucos coeficientes. No MPEG-2 [2], o estágio DCT (Discrete Cosine Transform) [1] é aplicado tanto nos intraframes como nas imagens que representam os erros de predição, non-intraframes [2]. Para aumentar a 1

performance, a imagem é dividida em pequenos blocos de 8x8 pixels onde é aplicada uma DCT bidimensional. Uma fórmula para a DCT bidimensional 8x8 pode ser escrita em termos dos valores dos pixels, f(i,j), e os coeficientes no domínio da freqüência, F(u,v): linha 0 e coluna 0 de um bloco 8x8, se dá de maneira diferente da quantização dos coeficientes AC (demais coeficientes do bloco), através da seguinte fórmula: F[0][0] = round ( D[0,0] / intradcmult ) (3) 1 7 7 F ( u, v) = C( u) C( v) f ( i, j) * 4 i= 0 j = 0 (2i + 1) uπ (2 j + 1) vπ cos cos, 16 16 u = 0,1,...,7 v = 0,1,...,7 1, x = 0 C( x) = 2 1, x 0 (1) Onde, a constante intradcmult é obtida através do parâmetro intradcprecision de acordo com a tabela 1 [2]. Tabela1. Tabela do intradcmult A quantização dos demais coeficientes de um intraframe é obtida através da fórmula: A DCT é uma transformada separável. Isso significa que uma transformação multidimensional pode ser realizada por uma seqüência de transformações unidimensionais apresentando o mesmo resultado. A vantagem advinda desta propriedade é a existência de vários algoritmos rápidos para o cálculo da DCT-1D e da DCT-2D, os quais podem ser aproveitados durante a implementação [1]. A DCT bidimensional pode ser obtida através do cálculo da transformada unidimensional (DCT-1D) nas linhas seguida pela transformada unidimensional nas colunas. A DCT-1D é dada por: 7 (2i + 1) uπ F( u) = C( u) f ( i)cos, i= 0 16 u = 0,1,..., 7 1, x = 0 C( x) = 2 2 1, x 0 2 (2) F[u][v] = ( Y + 0.75 * quantscale ) / ( 2 * quantscale ), u = 0,1,...,7 v = 0,1,...,7 u e v 0 Y = round ( 32 * D[u,v] / W[u][v] ), (4) Onde, quantscale é obtido através dos parâmetros qscaletype e quantiserscalecode de acordo com a tabela 2 [2]. Tabela 2. Tabela do quantscale 3. QUANTIZAÇÃO O processo de quantização afeta diretamente na qualidade da imagem reconstruída. Entretanto, as informações descartadas não são perceptíveis ao olho humano. O processo diminui a quantidade de dados a serem transmitidos através da divisão dos coeficientes DCT [1] por números vindos das tabelas de quantização [2]. O processo de quantização é diferente para os intraframes e non-intraframes [2]. Nos intraframes, a quantização dos coeficientes DC, isto é, os coeficientes da 2

W[u][v] representa o coeficiente da tabela de quantização [2], sendo uma tabela usada para intraframes e outra para non-intraframes, conforme ilustrado nas tabelas 3 e 4. Tabela 3. Matriz de peso para intraframes 4. ARQUITETURA PROPOSTA O circuito está dividido em dois blocos principais, sendo o primeiro responsável por realizar o processo da DCT e o segundo por realizar o processo da quantização, como está ilustrado na figura 1. Figura 1. Esquema do Bloco Principal. Tabela 4. Matriz de peso para non-intraframes A quantização de non-intraframes é obtida da mesma maneira para todos os coeficientes, DC e AC, através da fórmula: u = 0,1,...,7 v = 0,1,...,7 u e v 0 F[u][v] = Y / ( 2 * quantscale ) Y = round ( 32 * D[u,v] / W[u][v] ), (5) Por fim, é realizada uma saturação, de forma que os coeficientes quantizados pertençam ao intervalo [- 2048:+2047], como segue abaixo: 2047 F[u][v] > 2047 F[u][v] F[u][v] -2048 F[u][v] 2047 (6) -2048 F[u][v] < -2048 4.1. Bloco DCT-2D Tomando a DCT-1D, observamos que as seguintes equações foram obtidas, a partir da equação 2: F(0) = 0.354 [ f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) ] F(1) = 0.490f(0) + 0.416f(1) + 0.278f(2) + 0.098f(3) - 0.098f(4) - 0.278f(5) - 0.416f(6) - 0.490f(7) F(2) = 0.462f(0) + 0.191f(1) - 0.191f(2) - 0.462f(3) - 0.462f(4) - 0.191f(5) + 0.191f(6) + 0.462f(7) F(3) = 0.416f(0) - 0.98f(1) - 0.490f(2) - 0.278f(3) + 0.278f(4) + 0.490f(5) + 0.98f(6) - 0.416f(7) F(4) = 0.354f(0) - 0.354f(1) - 0.354f(2) + 0.354f(3) + 0.354f(4) - 0.354f(5) - 0.354f(6) + 0.354f(7) F(5) = 0.278f(0) - 0.490f(1) + 0.98f(2) + 0.416f(3) - 0.416f(4) - 0.98f(5) + 0.490f(6) - 0.278f(7) F(6) = 0.191f(0) - 0.462f(1) + 0.462f(2) - 0.191f(3) - 0.191f(4) + 0.462f(5) - 0.462f(6) + 0.191f(7) F(7) = 0.98f(0) - 0.278f(1) + 0.416f(2) - 0.490f(3) + 0.490f(4) - 0.416f(5) + 0.278f(6) - 0.98f(7) Como se pode notar, cada coeficiente F(u) é obtido da soma dos valores de entrada f(i) multiplicados por um coeficiente específico. Podemos simplificar o processo utilizando uma série de oito multiplicadores seguidos de oito acumuladores, onde cada conjunto MAC (multiplicador + acumulador) está incumbido de calcular o resultado F(u) correspondente. Cada multiplicador receberá o valor de entrada f(i) e o multiplicará por um coeficiente diferente (exemplo: 0.098, 0.192, 0.278, 0.353, 0.416, 0.462, 0.491), e o fará para todos os oito valores de entrada. Logo após a leitura dos oito valores, todos os MACs terão em sua saída o F(u) correspondente à posição na linha. 3

Contador Coefs Linha Coefs Coluna Linha1 Coluna1 Linha2 Linha3 Controle MUX Coluna2 Coluna3 f(i) Linha4 Linha5 MUX fl(i) Coluna4 Coluna5 Serializador Arredondador F(i) Linha6 Coluna6 Linha7 Coluna7 Linha8 Coluna8 Figura 2. Esquema de blocos da DCT-2D A saída dos oito MACs é armazenada, para servir como entrada para o outro conjunto de oito MACs responsável pela DCT-1D nas colunas. Analisando a figura 2, pode-se notar que o esquema de blocos está dividido em duas grandes partes: a primeira, formada por 8 blocos idênticos, responsável pelo cálculo da DCT-1D nas linhas e a segunda, também formada por 8 blocos idênticos, responsável pelo cálculo da DCT-1D nas colunas. Entre as duas grandes partes, situa-se um multiplexador, responsável pelo controle do fluxo de dados entre a saída da DCT aplicada nas linhas e a entrada da DCT aplicada nas colunas. Na saída dos oito blocos responsáveis pela DCT-1D nas colunas há um bloco serializador, que tratará as saídas dos blocos (8 valores em paralelo) de forma que tenhamos um valor por ciclo de relógio na saída externa do circuito. E, na saída do serializador, o bloco arredondador é responsável pelo arredondamento dos resultados obtidos. Temos ainda dois blocos responsáveis pela geração dos coeficientes tanto para a aplicação da DTC-1D nas linhas como para a aplicação nas colunas. A DCT-2D opera em pipeline de 4 estágios, sendo necessários 17 ciclos de relógio para que o primeiro resultado seja gerado como saída. O pipeline foi utilizado por possibilitar uma boa relação de custo\desempenho. A seguir, temos um detalhamento dos blocos LINHA e COLUNA, de forma a completar o entendimento da arquitetura proposta. 4.1.1. Bloco Linha Cada bloco LINHA, ver figura 3, é responsável por calcular a DCT-1D em uma posição da linha (1 a 8). f(i) Coef(i) MACC MEM INT Figura 3. Esquema dos Blocos Linha fl(i) MACC Bloco responsável pela multiplicação do valor de entrada pelo respectivo coeficiente. Após a multiplicação, o resultado é adicionado ao resultado da última operação, funcionando como um Acumulador. MEM INT Memória interna responsável por reter o valor da DCT-1D nas linhas para posterior cálculo da DCT-1D nas colunas. 4.1.2. Bloco Coluna Cada bloco COLUNA, ver figura 4, é responsável por calcular a DCT-1D em uma posição da coluna (1 a 8). Ele é formado por um MACC que receberá os valores resultantes da DCT-1D nas linhas e novamente os 4

multiplicará por coeficientes distintos de forma a completar o cálculo da DCT-2D. fl(i) Coef(i) MACC F(i) Figura 4. Esquema dos Blocos Coluna 4.1.3. Bloco Serializador Este bloco realiza a serialização dos coeficientes DCT-2D provenientes do bloco coluna, de forma que seja gerado um valor por ciclo de relógio na saída do circuito. 4.1.4. Bloco Arredondador Este bloco converte o coeficiente que sai do serializador para um valor inteiro, representando o coeficiente DCT- 2D em valores de 12 bits. 4.2. Bloco Quantizador Analisando o processo da quantização, percebem-se quatro tabelas, que são implementadas como memórias. No circuito encontram-se os seguintes blocos: MEM QuantizerScale Apresenta como entradas: qscaletype e qscalecode, e como saída o quantscale. MEM Intradcmult Apresenta como entrada: intradcprecision e como saída o intradcmult. MEM Weighting Matrix Intra e MEM Weighting Matrix Non-Intra Apresenta como entrada um contador que varia de 1 a 64, o qual representa a posição do coeficiente no bloco 8x8. Desta forma, a cada ciclo de relógio em que chega um coeficiente DCT é retirado também um valor equivalente nessas tabelas. Todo o processo da quantização é feito com números positivos. Desta forma, caso os coeficientes DCT sejam negativos, realiza-se um complemento de dois de forma a torná-los positivos. Após os devidos cálculos, é realizado outro complemento de dois de forma a restaurar o sinal original (+/-) do coeficiente DCT. A figura 5 apresenta o diagrama de blocos principal. As saídas das memórias apresentadas anteriormente entram no bloco quantintranonintra, o qual efetua os cálculos necessários da quantização para intraframes e non-intraframes, de acordo com as equações 4 e 5. O sinal macroblockintra indica o tipo do bloco que contém o coeficiente, possibilitando assim a escolha de qual tabela de quantização deverá ser usada, através de um multiplexador, bem como a equação correspondente. Os cálculos são realizados em pipeline de 4 estágios, sendo necessários 19 ciclos de relógio para que o primeiro resultado seja gerado como saída. Tal atraso é necessário para o estabelecimento do sincronismo entre os blocos responsáveis pelo cálculo da quantização. Tal técnica foi utilizada por possibilitar uma boa relação de custo\desempenho. Por fim, um bloco é responsável por realizar a saturação dos resultados, ou seja, fazer com que os mesmos pertençam ao intervalo [-2048:+2047]. Figura 5. Esquema de blocos da Quantização 5

O símbolo do circuito é mostrado na figura 6, apresentando os sinais de entrada (E) e os sinais de saída (S). Na tabela 5 são mostrados: a largura, o tipo (D - Dado ou C - Controle) e a função de cada sinal usado. Figura 6. Símbolo do circuito Tabela 5. Sinais de entrada e saída do circuito. Pino Dimensão E/S D/C Função Clock 1 bit E C Relógio do sistema. Coef 8 bits E D Coeficiente de um bloco. MbIntra 1 bit E C Indica se bloco é intra (1) ou non-intra (0). Qscalecode 5 bits E C Parâmetro para escolha do quantiserscale. Qscaletype 1 bit E C Parâmetro para escolha do quantiserscale. Intradcprec 2 bits E C Parâmetro para a escolha do intradcmult. MCmd 2 bits E C Indicará a operação a ser executada pelo Chip. (11 Inicialização; 01 Leitura dos valores do bloco original; 00 - Inativo) EnableDct 1 bit E C Ativa o funcionamento do bloco DCT-2D. (1 Ativado; 0 Desativado). Valido 1 bit S C Indica se resultado é válido (1) ou não (0). Saida 12 bits S D Coeficiente quantizado. 5. METODOLOGIA E SIMULAÇÕES O processo da DCT-2D com Quantização MPEG-2 foi implementado em VHDL [7], com sua arquitetura dividida em blocos como mostrado nas figuras 2 e 5. Para cada bloco tem-se uma descrição comportamental (VHDL), e a descrição estrutural foi construída e validada usando a ferramenta Max + Plus II 10.0 Baseline [8],[9] e Quartus II Web Edition [10]. Foram utilizadas também algumas MegaFunctions das ferramentas como forma de agilizar o processo e tornar o circuito o mais enxuto possível. A simulação foi dividida em dois passos. O primeiro, referente à inicialização, é necessário para resetar o circuito. O segundo passo refere-se à saída dos valores depois de passados pelos processos da DCT-2D e quantização. A inicialização é realizada enviando o comando de escrita (MCmd = 11). No próximo pulso de relógio, iniciase a entrada dos valores do bloco de origem. Essa entrada se dará com o comando de leitura (MCmd = 01). Na figura 8 é utilizado quantiserscale igual a 1, apresentando coeficientes quantizados de maior amplitude. Já na figura 9 é utilizado quantiserscale igual a 20, gerando coeficientes de menor amplitude. Os valores quantizados são gerados depois de 36 ciclos de relógio, tempo este necessário para estabilização do circuito diante do pipeline utilizado. O circuito foi sintetizado utilizando as ferramentas do Altera [8],[9],[10]. Os resultados do número de células lógicas, memória utilizada, freqüência da operação e dispositivos utilizados são mostrados na tabela 6. 6

Inicialização do circuito Figura 7. Simulação de inicialização do circuito. Entrada de valores Contador Coeficientes quantizados Figura 8. Simulação do circuito para quantiserscale igual a 1. Contador Coeficientes quantizados Figura 10. Simulação do circuito para quantiserscale igual a 20. Tabela 6. Dados obtidos pelo sintetizador da ferramenta Quartus II Web Edition Dispositivo Elementos Lógicos Pinos E/S Bits de Memória Blocos DSP Freq. MHz EP1S10F484C5 4,810 (45 %) 55 5,274 (< 1%) 41 (85 %) 71.35 (Família Stratix) EP2S15F484C3 2,327 (18 %) 55 5,351 (<1 %) 81 (85%) 132.31 (Família Stratix II) EP2C20F256C6 (Família Cyclone II) 4,904 (26%) 55 5,349(2%) 51(98%) 74.59 7

6. CONCLUSÃO Este poster propõe uma implementação em FPGA [3],[4] da DCT-2D com quantização. Através dos resultados obtidos na simulação, é possível concluir que é viável implementar as funções de uma DCT-2D com quantização em um simples chip FPGA compatível com as especificações HDTV [5],[6]. A freqüência máxima de 132.31 MHz para o dispositivo da família Stratix II (EP2S15F484C3) mostra que cada bloco 8x8 é processado em 7.55 ns, permitindo uma vazão máxima de 132 Mpixel/s. Além do aproveitamento na área de TV Digital, esta proposta pode ser utilizada em qualquer esquema de codificação que use a transformada seguida de uma quantização como um de seus recursos. 7. REFERÊNCIAS [1] K.R. Rao; and P. Yip: Discrete Cosine Transform Algorithms, Advantages, Applications. Academic Press, 1990. [2] ISO/IEC 113818-2 (MPEG-2). [3] M.-B., Uwe: Digital Signal Processing with Filed Programmable Gate Arrays. Springer, 2001. [4] B. Zeidman: Designing with FPGAs & CPLDs, CMP Books, 2002. [5] M. Robin and M. Polin: Digital Television Fundamentals: Design and installation of video and audio systems. McGraw-Hill, second edition, 2000. [6] M. Ercegovac: Introdução aos Sistemas /Digitais, T. Lang and J. H. Moreno: Trad. J. C. B. Santos, Bookman, 2000. [7] R. K. Dueck Digital Design with CPLD applications and VHDL, Delmar Thomson Learning, 2000. [8] Altera Corporation. Altera Data Book,1995. [9] Altera Corporation. Data Book and Max + Plus II Getting Started,1997. [10] Altera Corporation. Using Quartus II Verilog HDL & VHDL Integrated Synthesis, 2002. 8