180
UNIVERSIDADE FEDERAL DA PARAÍBA CENTRO DE CIÊNCIAS EXATAS E DA NATUREZA DEPARTAMENTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA ANDRÉ RICARDO CIRAULO DE SOUZA DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE UM SISTEMA PORTÁTIL PARA AQUISIÇÃO E COMPRESSÃO SEM PERDAS DE ELETROCARDIOGRAMAS João Pessoa, ABRIL 2008

DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Embed Size (px)

Citation preview

Page 1: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

UNIVERSIDADE FEDERAL DA PARAÍBA

CENTRO DE CIÊNCIAS EXATAS E DA NATUREZA

DEPARTAMENTO DE INFORMÁTICA

PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA

ANDRÉ RICARDO CIRAULO DE SOUZA

DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE UM

SISTEMA PORTÁTIL PARA AQUISIÇÃO E COMPRESSÃO SEM

PERDAS DE ELETROCARDIOGRAMAS

João Pessoa, ABRIL 2008

Page 2: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

II

UNIVESIDADE FEDERAL DA PARAÍBA

CENTRO DE CIÊNCIAS EXATAS E DA NATUREZA

DEPARTAMENTO DE INFOMÁTICA

PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA

DISSERTAÇÃO DE MESTRADO

DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE UM

SISTEMA PORTÁTIL PARA AQUISIÇÃO E COMPRESSÃO SEM

PERDAS DE ELETROCARDIOGRAMAS

ANDRÉ RICARDO CIRAULO DE SOUZA

ORIENTADORES

JOSÉ ANTÔNIO GOMES DE LIMA

LEONARDO VIDAL BATISTA

JOÃO PESSOA

ABRIL 2008

Page 3: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

III

UNIVESIDADE FEDERAL DA PARAÍBA

CENTRO DE CIÊNCIAS EXATAS E DA NATUREZA

DEPARTAMENTO DE INFOMÁTICA

PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA

DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE UM

SISTEMA PORTÁTIL PARA AQUISIÇÃO E COMPRESSÃO SEM

PERDAS DE ELETROCARDIOGRAMAS

ANDRÉ RICARDO CIRAULO DE SOUZA

ORIENTADORES

JOSÉ ANTÔNIO GOMES DE LIMA

LEONARDO VIDAL BATISTA

Dissertação de Mestrado apresentada ao

Programa de Pós-Graduação em Informática, da

Universidade Federal da Paraíba, como parte dos

requisitos para a obtenção do título de Mestre em

Informática.

Área de concentração: Ciências da Computação.

Linha de pesquisa: Processamento de Sinais e Sistemas Gráficos.

JOÃO PESSOA

ABRIL 2008

Page 4: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

IV

ANDRÉ RICARDO CIRAULO DE SOUZA

DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE UM

SISTEMA PORTÁTIL PARA AQUISIÇÃO E COMPRESSÃO SEM

PERDAS DE ELETROCARDIOGRAMAS

Esta dissertação foi julgada adequada para a obtenção do título de Mestre em Informática e aprovada em sua forma final pelos Orientadores e pela Banca Examinadora.

____________________________________

Prof. Dr. José Antônio Gomes de Lima UFPB.

Doutor pela Universidade Federal de Campina Grande – Campina Grande, Brasil.

____________________________________

Prof. Dr. Leonardo Vidal Batista, UFPB.

Doutor pela Universidade Federal de Campina Grande – Campina Grande, Brasil.

Banca Examinadora:

Prof. Dr. Lucídio dos Anjos Formiga Cabral, UFPB.

Doutor pela Universidade Federal do Rio de Janeiro - Rio de Janeiro, Brasil.

Prof. Dr. Antonio Carlos Cavalcanti, UFPB.

Pós-Doutor pela Universidade Técnica de Lisboa - Lisboa, Portugal.

Prof. Dr. Elmar Uwe Kurt Melcher, UFCG.

Doutor pela Ecole Nationale Superieure des Telecommunications - Paris, França

Coordenadora do PPGI: _______________________________

PROFª.DRª. Valéria Gonçalves Soares

João Pessoa, Março 2008.

Page 5: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

V

FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA CENTRAL DA UFPB

S555d Souza, André Ricardo Ciraulo de 2008 Desenvolvimento e implementação em FPGA de um sistema portátil para

aquisição e compressão sem perdas de Eletrocardiogramas/ André Ricardo Ciraulo de Souza. – João Pessoa, 2008.

100fs.:il. Referências.

Dissertação (Mestrado em Informática) – Universidade Federal da Paraíba, Centro de Ciências Exatas e da Natureza, Departamento de Informática, Programa de Pós-Graduação em Informática. Orientadores: José Antônio Gomes de Lima e Leonardo Vidal Batista. 1 – Processamento de Sinais 2 – Processamento Digital 3 - IP Core 4 – Prototipação 5 – FPGA 6 – VHDL 7 – Compressão sem perdas I – Título

CDU XXX.XXX-X

Page 6: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

VI

“Ainda que eu tenha o dom de profetizar e

conheça todos os mistérios e toda a ciência; ainda que

eu tenha tamanha fé ao ponto de transportar montes,

se não tiver Amor, nada serei.”

1 CORÍNTIOS, 13

Page 7: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

VII

“E ali logo em frente, a esperar pela gente, o futuro está.

E o futuro é uma astronave que tentamos pilotar,

Não tem tempo nem piedade, nem tem hora de chegar.

Sem pedir licença muda nossa vida, depois convida a rir ou chorar.

Nessa estrada não nos cabe conhecer ou ver o que virá.

O fim dela ninguém sabe bem ao certo onde vai dar.

Vamos todos numa linda passarela

De uma aquarela que um dia, enfim, descolorirá.”

TOQUINHO - VINICIUS DE MORAES - M. FABRIZIO - G. MORRA

Page 8: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

VIII

DEDICATÓRIA

Dedico este estudo à minha família, em especial, à minha mãe Anamaria C. Ciraulo pelo

apoio irrestrito em todos os momentos, alguns difíceis, iluminando-me nos caminhos

enevoados com bastante dedicação, afeto, amor e luta para propiciar a vida e ensinar a vivê-la

com dignidade.

Dedico ainda este trabalho a memória da minha avó materna Maria José Cavalcanti Ciraulo,

referência primeira na formação dos meus princípios basilares éticos e morais, indispensáveis

na minha formação social e acadêmica.

De igual sorte ao meu Padrinho e amigo, Rivaldo, responsável por ajudar na minha formação

inicial, incentivando e contribuindo em momentos de difíceis de outrora.

Aos meus amigos verdadeiros, alguns de infância e outros colhidos no decorrer da vida, pelo

apoio e incentivo dispensado ao longo de nossa caminhada.

Por fim, não menos importante, à minha namorada Cibele P. Moura pela compreensão e apoio

nos momentos de ausentes durante a realização deste trabalho e principalmente pelo amor e

incentivo.

A habitual tendência de tentar encontrar uma forma verbal para exprimir minha gratidão,

agradecimento e carinho por todos aqui citados, revela minha impossibilidade de traduzir uma

emoção em palavras.

Page 9: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

IX

AGRADECIMENTOS

Agradeço inicialmente a Deus, por ter me concedido em essência a capacidade física e mental

para a realização deste trabalho de pós-graduação.

Agradeço ao meu orientador José Antônio Gomes de Lima por acreditar no meu trabalho e

conduzir-me na direção correta, dando a liberdade necessária para dividir expectativas e

questionamentos, a maiores reflexões e enriquecimento da pesquisa. Agradeço pela paciência

de ler e entender as idéias apresentadas. Minha especial admiração e gratidão.

Ao meu orientador Leonardo Vidal Batista, um agradecimento especial pela serenidade,

empenho e admirável paciência dispensados na orientação do meu primeiro artigo publicado;

bem como, pela oportunidade e acolhida no trabalho de pesquisa desenvolvido ao longo de

dois anos.

Ao Professor Antônio Carlos que ministrou a disciplina Arquitetura de Computadores e

contribuiu de maneira significativa para a realização desta etapa acadêmica Agradeço pelas

aulas, por todos os conselhos e conversas, e por toda ajuda concedida em momentos cruciais,

inclusive apontando novos caminhos profissionais.

Ao Professor Lucídio dos Anjos Formiga por ter me apresentado á área de Complexidade de

Algoritmos e Teoria da computação e por toda paciência dispensada durante todo o processo

de meu estudo, principalmente pela sabedoria argumentativa empregada nas explanações de

idéias e pontos de vista o que me fez aprender bastante.

Page 10: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

X

À Coordenação do PPGI, Programa de Pós Graduação em Informática, pela presteza e

dedicação para o funcionamento do curso visando à qualidade do ensino. À Professora

Valéria pelo grau de compromisso e ajuda dispensada, meus agradecimentos.

Agradeço aos Professores Hamilton e Luiz Carlos, bem como a todos os professores que

participaram desta caminhada, sempre solícitos, até mesmo fora do horário do curso, sempre

dispostos a ajudar e formar novas idéias. Meus sinceros agradecimentos.

Aos meus queridos colegas e amigos do Mestrado pelos momentos de convívio, riso, estudos,

troca de idéias e experiências nas listas do Professor Lucídio e nos trabalhos do Professor

Antônio Carlos. Quero agradecer a Fernando Lordão pelos esclarecimentos e amizade; assim

também como aos companheiros de jornada, Christhiny Sanson, Fabrizia Medeiros, André

Marinho, Carlos Alberto, Maria das Graças; aos amigos do LASID Eduardo Serafim,

Eudisley Gomes, Gustavo Viana, Guilherme, Yuri, dentre outros pelo apoio, amizade, o

prazer em ajudar e também pelos momentos de descontração e alegria que passamos juntos.

Agradeço a todos os funcionários do DI/PPGI que direta ou indiretamente contribuíram para

este trabalho.

Ao CNPq pelo apoio financeiro.

E a todos os que de alguma forma vibraram positivamente para a realização desse trabalho.

Page 11: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XI

RESUMO

Com a popularização do computador o uso de eletrocardiogramas tornou-se uma importante

ferramenta, e a mais utilizada no diagnóstico das doenças cardíacas. Aliado a isso, a

computação reconfigurável vem crescendo devido ao avanço dos dispositivos reprogramáveis.

Nesse contexto, o sistema proposto na presente Dissertação de Mestrado “Desenvolvimento e

Implementação em FPGA de um Sistema Portátil para Aquisição e Compressão Sem Perdas

de Eletrocardiogramas” é composto por um conversor analógico digital (ADC) de doze bits

com oito entradas analógicas multiplexadas e saída de dados para porta USB, controlado por

circuitos desenvolvidos especialmente para este fim, utilizando ambientes de projeto auxiliado

por computador EDAs (Electronic Design Automation) para circuitos integrados FPGA (Field

Programmable Gate Array). Como a Dissertação contempla o uso em dispositivos portáteis,

foi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching

(PPM) modificado para o alfabeto binário com um codificador aritmético, aplicando o código

Gray e separando em plano de bits. Este compressor foi modelado usando a linguagem de

descrição de hardware VHDL (VHSIC Hardware Description Language) e após as

simulações necessárias, incorporado ao controlador do conversor de forma a se obter o menor

número possível de circuitos integrados componentes do sistema, bem como sua possível

reutilização em projetos futuros.

Page 12: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XII

ABSTRACT

With computer popularization, the electrocardiograms has become an important tool and the

most used in heart diseases diagnosis. Additionally, the reconfigurable computing is growing

because of the advancement of reprogrammable devices. In this context, the system,

proposed in this master dissertation: "Development and Implementation of an FPGA in

Portable System for Acquisition and Compression Lossless of Electrocardiograms", is

composed by a twelve bit analog digital converter (ADC) with eight multiplexed analogical

inputs and an USB output port, controlled by a circuit especially developed for this purpose,

using computer design environment, well-known as EDAs (Electronic Design Automation)

for integrated FPGA (Field Programmable Gate Array) circuits. As dissertation contemplates

portable devices uses, was developed a real time compressor using Prediction by Partial

Matching (PPM) modified binary alphabet with arithmetic encoder, Gray code and separating

in bit plans. The developed compressor was modeled using hardware description language

VHDL (VHSIC Hardware Description Language). After the simulations, the compressor was

added to ADC controller , configuring a complete system with a smaller number of integrated

circuits components, allowing possible reuse in future projects.

.Keywords: Eletrocardiogram. FPGA. Signal Processing. PPM. Lossless compression.

Data compression.

Page 13: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XIII

SUMÁRIO

DEDICATÓRIA VIII

AGRADECIMENTOS IX

RESUMO XI

ABSTRACT XII

SUMÁRIO XIII

ÍNDICE DE FIGURAS XVI

ÍNDICE DE TABELAS XVIII

LISTA DE ABREVIATURAS E SIGLAS XX

CAPÍTULO I 1

1 INTRODUÇÃO 1

1.1 Motivação 3

1.2 Objetivos 4

1.3 Organização do Trabalho 4

CAPÍTULO 2 6

2 REVISÃO LITERÁRIA 6

2.1 O Eletrocardiograma 6 2.1.1 História.........................................................................................................6 2.1.2 Noções de Eletro-fisiologia ..............................................................................7 2.1.3 Derivações ....................................................................................................9 2.1.4 Plano Frontal – Derivações Clássicas dos Membros ..........................................10 2.1.5 Derivação I .................................................................................................10 2.1.6 Derivação I I ...............................................................................................10 2.1.7 Derivação I I I .............................................................................................10 2.1.8 Plano Frontal – Derivações Unipolares Aumentadas dos Membros......................11 2.1.9 Plano Horizontal – Derivações Precordiais .......................................................12 2.1.10 Morfologia de um sinal de ECG normal........................................................13

Page 14: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XIV

2.2 Processamento Digital de Sinais 15 2.2.1 Amostragem................................................................................................15 2.2.2 Quantização ................................................................................................16

2.3 Sistemas embutidos 18 2.3.1 IP core........................................................................................................19 2.3.2 Sistemas Integrados em um único chip...........................................................19 2.3.3 Arquitetura Dedicada....................................................................................20 2.3.4 Um modelo de desenvolvimento ....................................................................21

2.4 Computação Reconfigurável 26 2.4.1 Dispositivos Lógicos Programáveis .................................................................26 2.4.1.1 Arranjo Lógico Programável.......................................................................27 2.4.1.2 Arranjos de Portas Programáveis................................................................28 2.4.2 VHDL - VHSIC Hardware Description Language ...............................................32 2.4.2.1 História ...................................................................................................32 2.4.2.2 Definição.................................................................................................33 2.4.2.3 Vantagens e desvantagens........................................................................33 2.4.2.4 Fluxo de projeto bem definido em VHDL .....................................................34

2.5 Compressão de Dados 36 2.5.1 Informação e Entropia ..................................................................................37 2.5.2 Modelagem .................................................................................................38 2.5.3 Modelagem Estatística ..................................................................................38 2.5.4 Codificação da Entropia ................................................................................40 2.5.5 Codificação de Huffman ................................................................................40 2.5.6 Codificação de Golomb .................................................................................44 2.5.7 LZW e LZ78.................................................................................................45 2.5.8 Codificação aritmética...................................................................................46 2.5.9 PPM............................................................................................................53

2.6 Barramento USB 55

2.7 Trabalhos Relacionados 56

CAPÍTULO 3 58

3 SISTEMA PROPOSTO 58

3.1 Modelo de referência implementado em JAVA 58

3.2 Estudo comparativo preliminar 58

3.3 Descrição do Sistema 61

3.4 Ferramental utilizado 63

3.5 Aplicação desenvolvida 64

3.6 Protótipo do Conversor A/D 65 3.6.1 Interface USB ..............................................................................................67 3.6.2 Micro-controlador.........................................................................................70 3.6.3 Conversor A/D .............................................................................................71

3.7 Compressor 72 3.7.1 Módulos do compressor ................................................................................76 3.7.1.1 Code Gray ...............................................................................................76

Page 15: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XV

3.7.1.2 Segmentação em plano de bits ..................................................................77 3.7.1.3 PPM Binário .............................................................................................77 3.7.1.4 Codificador Aritmético...............................................................................78 3.7.2 Implementação do compressor ......................................................................79

CAPÍTULO 4 81

4 RESULTADOS OBTIDOS 81

4.1 Protótipo Conversor AD e o Aplicativo LASID-USB 81

4.2 Validação dos Módulos do compressor 84 4.2.1 Validação do PPM.........................................................................................86 4.2.2 Validação do Codificador Aritmético................................................................88 4.2.3 Validação do Compressor com um modelo PPM ...............................................90

4.3 Síntese 92

CAPÍTULO 5 100

5 CONCLUSÃO 100

6 REFERÊNCIAS 103

7 GLOSSÁRIO 108

APÊNDICE A - TESTBENCH DO PPM BINÁRIO 110

APÊNDICE B - TESTBENCH DO CODIFICADOR ARITMÉTICO 114

APÊNDICE C - TESTBENCH COMPRESSOR PPM BINÁRIO E CÓD.ARITMÉTICO 156

Page 16: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XVI

ÍNDICE DE FIGURAS

1.1 – Tela de abertura do BioMed. Fonte [31]. ....................................................... 3

2.1 – Fibra miocárdica. Fonte[35].......................................................................... 8

2.2 – Fibra cardíaca ativa e em repouso................................................................. 8

2.3 – Processo de despolarização e repolarização.................................................... 9

2.4 – Dipolo........................................................................................................ 9

2.5 – Derivações eletrocardiográficas clássicas. Fonte[35]..................................... 11

2.6 – Derivações Precordiais ............................................................................... 12

2.7 – Morfologia de um ciclo típico de um sinal de ECG.......................................... 13

2.8 – Processo de conversão AD. ........................................................................ 15

2.9 – Amostragem de um sinal analógico. ............................................................ 16

2.10 – Quantização do sinal................................................................................ 17

2.11 – Modelo de IP Business. Fonte [52]. ........................................................... 20

2.12 – Ciclo de desenvolvimento. ........................................................................ 21

2.13 – Procedimento de teste – caso geral. Adaptada da fonte [17]. ....................... 24

2.14 – Dispositivos Lógicos Programáveis............................................................. 27

2.15 – Arquitetura Interna de uma PLA. Fonte[56]. ............................................... 28

2.16 – CPLD. .................................................................................................... 29

2.17 – Arquitetura Interna de um FPGA. Fonte[50]. .............................................. 30

2.18 – Ciclo de vida VHDL. Fonte [57]. ................................................................ 34

2.19 – Formação da árvore de Huffman, passos 1-3.............................................. 42

2.20 - Formação da árvore de Huffman, passos 4-6. ............................................. 43

2.21 - Passo1 exemplo da codificação aritmética. Fonte[62]................................... 48

2.22 – Passo 2 exemplo da codificação aritmética. Fonte[62]. ................................ 48

2.23 – Passo 3 exemplo da codificação aritmética. Fonte[62]. ................................ 48

2.24 – Final do processo de codificação. Fonte[62]. .............................................. 49

2.25– Intervalo - HALF PART. ............................................................................. 50

2.26 – Exemplo de half point zooming. Fonte [67]. ............................................... 50

2.27 – Exemplo de quarter-point zooming.. Fonte [67]. ......................................... 51

2.28 – Subdivisão interna do intervalo no QM-coder. Fonte [67]. ............................ 52

Page 17: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XVII

2.29 – Codificador Aritmetico X QM-coder. Fonte[67]. ........................................... 53

3.1 – ECG 215 – primeiro canal – do MIT-BIH. ..................................................... 59

3.2 – Gráfico da compressão percentual média. .................................................... 60

3.3 – Arquiterura do Projeto. .............................................................................. 64

3.4 – Software de controle – Conversor LASID USB 12Bits. .................................... 64

3.5 – Protótipo Conversor AD sem o módulo compressor. ...................................... 66

3.6 - DLP-USB245M. Fonte [68]. ...................................................................... 67

3.7 – FT245BM. Fonte[68].................................................................................. 67

3.8 - Ciclo de escrita do DLP-USB245M Fonte[69]. ................................................ 68

3.9 - Ciclo de leitura do DLP-USB245M. Fonte[69]................................................. 69

3.10 - Descrição em VHDL do Protótipo do Conversor AD. ..................................... 70

3.11 - Conversor AD574A. .................................................................................. 71

3.12 - Estrutura da memória............................................................................... 72

3.13 - Decomposição em planos de bits. .............................................................. 74

3.14 - Diagrama em blocos do compressor proposto ............................................. 74

3.15 – Diagrama em blocos expandido do compressor........................................... 75

3.16 – Code Gray para 4 bits. ............................................................................. 77

3.17 – PPM binário ............................................................................................ 78

3.18 – Codificador Aritmético.............................................................................. 78

3.19 – Compressor PPM binário com um modelo................................................... 79

4.1 - EPM 7128SLC84-7 ..................................................................................... 82

4.2 – Protótipo Conversor AD. ............................................................................ 82

4.3 – Exemplo dos arquivos gerados.................................................................... 83

4.4 – Verificação de aquisição de sinal senoidal. ................................................... 84

4.5 – Estímulos no modelo alto e baixo nível. ....................................................... 85

4.6 – Testbench do módulo PPM. ........................................................................ 86

4.7 – Forma de onda do PPM gerada no testbench................................................ 87

4.8 – Testbench do codificador Aritimético. .......................................................... 88

4.9 - Forma de onda do codificador aritmético gerada no testbench. ...................... 89

4.10 - Testbench do compressor PPM binário com um modelo................................ 90

4.11 - Forma de onda do compressor PPM Binário gerada no testbench. ................. 91

Page 18: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XVIII

ÍNDICE DE TABELAS

2.1 – Classificação de IP cores. Fonte [51]. .......................................................... 19

2.2 – Freqüências indicadas. Fonte[60]................................................................ 41

2.3 – Exemplos de códigos Golomb e Golomb Rice, m=1 até 5............................... 45

2.4 - Modelo PPM após processamento da string abracadabra. Fonte[61]. ............... 54

3.1 – Código Gray. ............................................................................................ 73

3.2 – Código Gray para 4 bits. ............................................................................ 77

4.1 – Síntese Conversor AD. ............................................................................... 92

4.2 – Síntese do módulo PPM. ............................................................................ 95

4.3 – Síntese do módulo Codificador Aritmético. ................................................... 96

4.4 – Síntese do módulo compressor com um modelo PPM. ................................... 97

4.5 – Síntese do Compressor com 12 modelos. ..................................................... 98

4.6 – Síntese do compressor com 12 modelos mais o conversor AD. ....................... 99

Page 19: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XIX

ÍNDICE DE EQUAÇÕES

1.1.... .............................................................................................................. 11

2.1.... .............................................................................................................. 16

2.2.... .............................................................................................................. 36

2.3.... .............................................................................................................. 37

2.4.... .............................................................................................................. 37

2.5.... .............................................................................................................. 37

2.6.... .............................................................................................................. 38

2.7.... .............................................................................................................. 45

3.1.... .............................................................................................................. 72

3.2.... .............................................................................................................. 77

Page 20: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

XX

LISTA DE ABREVIATURAS E SIGLAS

A/D Analógico/Digital ADC Conversor Analógico/Digital ALU Aritmetic Logic Unit

API Application Programming Interface

CLB Configurable Logic Block

CPLD Complex Programmable Logic Device

D/A Digital/Analógico DSP Digital Signal Processor

DUV Design Under Verification

DVD Digital Versatile Disc

ECG Eletrocardiograma ECGs Eletrocardiogramas

FIFO First In First Out

FPGA Field-Programmable Gate Array

GPP General Purpose Processor

HDL Hardware Description Language

HLA High Level Architecture

IOB Input Output Block

IP Core Intellectual Property Core

MIT-BIH Massachussetts Institute of Technology – Beth Israel Hospital (Instituto de Tecnologia de Massachussets – Hospital Israelita Beth)

NoC Network-on-chip

OCP-IP Open Core Protocol – International Partnership

PC Personal Computer

PDA Personal Digital Assistant

PDSV Processamento Digital de Sinais de Voz PPM Prediction by Partial Matching

RAM Random Access Memory

ROM Read Only Memory

RTL Register Transfer Level

RTOS Real Time Operation System

SoC System-On-Chip

SRAM Static Random Access Memory

TCL Tool Command Language

VHDL VHSIC Hardware Description Language

VHSIC Very High Speed Integrated Circuits

USB Universal Serial Bus

Page 21: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

1

CAPÍTULO I

1 Introdução

O eletrocardiograma (ECG) é um dos sinais fisiológicos mais usados para diagnóstico e

monitorização. Após a coleta do sinal, pode ser desejável armazenar os registros para posterior

comparação e avaliação ou transmiti-los por enlaces de dados para avaliação remota [1].

A conversão dos dados para o formato digital traz uma série de vantagens. Womble et al. [2]

relata a necessidade de conversão dos registros da Biblioteca Eletrocardiográfica Central da

USAFSAM (United States Air Force School of Aerospace Medicine) para o formato digital, com

vistas a automatizar a obtenção de parte das medidas extraídas dos traçados pelos cardiologistas,

tornar os dados mais facilmente acessíveis, e reduzir os problemas causados por ruídos na

transmissão rotineira de ECGs através de linhas telefônicas, na forma de sinais de FM.

Os sistemas de registros computadorizados de sinais biológicos costumam gerar elevadas

quantidades de dados, impondo dificuldades para o armazenamento ou transmissão dos

resultados. Um eletrocardiógrafo digital de 12 derivações, operando com valores de 12 bits e taxa

de amostragem de 500 Hz, produz mais de 30 Mbytes por hora.

Quanto maior a quantidade de dados gerada, maiores os custos com armazenamento e

transmissão. Os aparelhos de Holters devem apresentar dimensões reduzidas e baixo consumo de

energia, para que possam ser transportados pelos pacientes [3].

Todos estes fatos mostram a importância de utilizar algum método de compressão de dados que

mantenha as características essenciais do registro original. Antoniol e Tonella [3] relatam que

Page 22: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

2

determinadas técnicas de compressão permitiram o desenvolvimento de um sistema de tele

medicina capaz de transmitir sinais de ECG em tempo real, da residência do paciente para o

hospital, através de linhas telefônicas.

Um esquema de compressão sem perdas permite a reconstrução perfeita do sinal original a partir

do sinal comprimido, devendo ser aplicado quando qualquer alteração nos dados originais é

inaceitável. Na compressão sem perdas, portanto, o sinal é integralmente preservado, procurando-

se unicamente reduzir a redundância na representação dos dados. Qualquer método de

compressão de ECG deve procurar preservar a informação clínica relevante para não conduzir a

diagnósticos errôneos.

Muitos métodos de compressão de ECG foram desenvolvidos nos últimos 35 anos, com razões de

compressão (RC) variando de aproximadamente 2:1 a 50:1 [4, 5, 6]. Bilgin et al. [74] afirmam

que para imagens radiológicas tem sido largamente preferida o uso de compressão sem perdas em

sinais de ECG e uma das razões seria temor de que as perdas possam conduzir a diagnósticos

errôneos. Entretanto é surpreendentemente baixo o número de artigos que tratam sobre

compressão sem perdas de ECG.

Koski [7] apresenta um dos poucos resultados de testes sistemáticos e consistentes envolvendo

compressão sem perdas de ECG. Koski afirma que a freqüência de amostragem e a resolução das

amostras são os fatores que mais influenciam a razão de compressão sem perdas. Comparações

precisas entre técnicas diferentes devem necessariamente ser efetuadas sobre um mesmo corpo de

sinais de teste. Contudo, os resultados de Koski foram obtidos com registros colhidos em um

laboratório local, que não podem ser facilmente acessados por outros pesquisadores, o que

dificulta uma comparação justa com outros métodos. Para minimizar esse tipo de problema,

Jalaleddine [5] sugere a utilização de bancos padrões de ECG, disponíveis aos pesquisadores de

todo o mundo, como o MIT-BIH Arrhythmia Database [8], certamente o mais empregado nos

testes de compressores de ECG divulgados na literatura.

Batista et al. [9] investigaram métodos de compressão sem perdas de sinais de eletrocardiograma

(ECG) que utilizavam, na etapa de descorrelação diversos preditores e transformadas wavelet e

na etapa de codificação, os algoritmos de Huffman, Golomb, LZ78 e LZW. Sua avaliação

experimental foi feita usando todo o banco padrão de ECGs MIT-BIH Arrhythmia Database,

Page 23: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

3

onde o melhor método avaliado nomeado no trabalho de P2 + Huffman, atingiu uma razão de

compressão (RC) média de 2,69:1 e o segundo melhor 2,65:1, comparável à RC de alguns

compressores com perdas de sinais de ECG.

Para atender a motivação apresentada na secção 1.1, foi desenvolvido no LASID um sistema de

aquisição analógico-digital (ADC), via barramento USB, que graças a técnicas de SoC’s foi

possível obter um dispositivo com tamanho reduzido. Uma vez testada suas funcionalidades,

surgiu possibilidade de acoplar a esse dispositivo um módulo de compressão de dados e assim

através de técnicas de SoC’s e IP core, obter um dispositivo portátil (Holter). Estudos

desenvolvidos para a publicação do artigo “Compressão Contextual sem Perdas de

Eletrocardiogramas utilizando Recursos Reduzidos de Memória” [14] permitiram obter um

compressor PPM binário possível de se implementar em hardware.

1.1 Motivação

O sistema de aquisição de sinais biológicos BioMed, utilizado por médicos e fisioterapeutas, e

desenvolvido no Laboratório de Processamento de Sinais Biológicos e Instrumentação Biomédica

do NETEB / UFPB possuía como plataforma de hardware uma placa de conversão A/D baseada

no barramento ISA e como plataforma de software o Delphi 1.0, rodando em Windows 98. As

funcionalidades e rotinas implementadas no BioMed, apresentado na Figura 1.1, bastante

complexas, motivaram a necessidade de atualização da plataforma de hardware e software do

sistema.

1.1 – Tela de abertura do BioMed. Fonte [31].

Page 24: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

4

Motivaram também a automatização da obtenção de medidas extraídas dos traçados de ECG; a

diminuição das elevadas quantidades de dados gerados pelos registros computadorizados de

sinais biológicos; a diminuição dos custos com armazenamento e transmissão e a mobilidade

necessária para ser transportado pelos pacientes;

1.2 Objetivos

O presente trabalho propõe um sistema completo com aquisição analógico-digital (ADC) e

transmissão de dados obtidos através do barramento USB para dispositivos portáteis, usando

método de compressão sem perdas, baseado em uma versão binária do algoritmo Prediction by

Partial Matching (PPM), para sinais de ECG. O método apresenta reduzida complexidade

computacional visando sua implementação em hardware através de modelagem com linguagem

de descrição de hardware, utilizando o paradigma de desenvolvimento em FPGA, para aplicações

em equipamentos portáteis.

Como objetivos específicos, têm-se:

• Especificação de uma arquitetura de hardware para aquisição e compressão de

eletrocardiogramas para dispositivos portáteis;

• Definição dos blocos lógicos a serem implementados para o compressor PPM

binário em hardware;

• Refinamento da arquitetura proposta para atender restrições de memória dos

dispositivos portáteis;

• Implementação de protótipos que contemplem a arquitetura ou parte dela a fim de

demonstrar sua exeqüibilidade.

1.3 Organização do Trabalho

O trabalho está dividido em cinco capítulos. O Capítulo 2 apresenta uma revisão literária

acerca dos assuntos e conceitos que de algum modo foram utilizados no documento, como

Eletrocardiograma, Processamento Digital de Sinais, Sistemas Embutidos, Computação

Reconfigurável e Compressão de Dados, Barramento USB e por fim alguns trabalhos

relacionados. No Capítulo 3, é apresentado o sistema proposto. Inicialmente é apresentado o

Page 25: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

5

modelo de referência em alto nível para o compressor em baixo nível e o estudo que

culminou na configuração do compressor utilizado. É feita ainda a descrição do sistema,

dividido na aplicação (software), ADC e compressor PPM binário.

O Capítulo 4 apresenta os resultados obtidos em cada uma das fases do projeto. Começando

pelo Protótipo do ADC e o Aplicativo denominado LASID-USB. Em seguida, é abordada a

validação dos módulos do compressor: PPM binário, Codificador Aritmético e um

compressor contendo um modelo PPM binário e o Codificador Aritmético. Finalmente uma

comparação da síntese de cada parte do projeto em diversos dispositivos de algumas das

famílias de componentes mais importantes da Altera. O Capítulo 5 é responsável por

apresentar as considerações finais, uma breve discussão sobre trabalhos futuros e por fim a

conclusão do presente trabalho.

Page 26: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

6

CAPÍTULO 2

2 Revisão Literária

2.1 O Eletrocardiograma

Não há dúvida a respeito da importância do ECG como uma técnica que tem contribuído para

entender e tratar os mais diversos tipos de doenças cardíacas. A eletrocardiografia permanece

como o principal método direto para avaliar as alterações de ritmo cardíaco. Além disso, o ECG é

essencial no manejo de anormalidades metabólicas e no acompanhamento do efeito e toxicidade

de drogas (por ex: digital, antidepressivos tricíclicos e antiarrítmicos) [32].

Denomina-se eletrocardiograma de superfície (ECG) o registro dos sinais elétricos de origem

cardíaca captados em pontos particulares da superfície do corpo humano (derivações). O ECG é

um método, não invasivo, de simples realização, seguro, reproduzível, podendo ser usado em

grandes estudos devido ao seu baixo custo, o que permite sua utilização para análises e

diagnósticos de anomalias cardíacas [32].

2.1.1 História

O eletrocardiógrafo, que permitiu registrar a atividade elétrica do coração, pode ser considerado

como um dos maiores avanços da história da cardiologia [36]. Einthoven, seu inventor,

considerado o pai da eletrocardiografia era médico fisiologista, professor na Universidade de

Leiden (1886-1927), e ganhou o Prêmio Nobel de Fisiologia ou Medicina (1924)[38];

Os primeiros estudos sobre fisiologia cardíaca datam do início do século XVII por William

Harvey, mas só em 1887 Augustus Waller registrou pela primeira vez o potencial elétrico

cardíaco a partir da superfície corpórea, sendo o primeiro a usar o termo eletrocardiograma. A

Page 27: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

7

partir daí, outros estudiosos como Eithoven e Nürr desenvolveram novos aparelhos para registro

da atividade elétrica cardíaca e conceitos na eletrocardiografia, passando a ser utilizada como

auxílio no diagnóstico [39].

Em 1842, Carlo Matteucci, físico italiano, demonstra que cada batimento cardíaco é

acompanhado de uma corrente elétrica. Anos depois (1887), Augustus Waller, um fisiologista

inglês, publica o primeiro eletrocardiograma de uma derivação em um homem, utilizando o

eletrômetro fotográfico desenvolvido por Lippmann[37] em 1872.

Willeim Einthoven em 1895, distingue as ondas do coração e introduz a nomenclatura P,Q,R,S e

T. Einthoven dedica-se ao estudo do galvanômetro de bobina criado por Clement Ader em 1897,

engenheiro francês, para uso em linhas telegráficas submarinas, sistema de amplificação de

registros, denominado "Galvanômetro de Corda".

Já em 1901, depois de modificar aparelho elaborado por Ader, Einthoven registra seu primeiro

eletrocardiograma e em 1912 descreve as derivações bipolares I, II e III, como os lados de um

triângulo eqüilátero que posteriormente foi chamado "Triângulo de Einthoven".

Frank Wilson em 1931 desenvolve o sistema de 6 derivações precordiais ligadas a um eletrodo

indiferente: o terminal central de Wilson, posteriormente simplificadas e integradas ao ECG por

Emanuel Goldberger. Em 1938 As Sociedades Americana e Britânica de Cardiologia definem o

posicionamento das derivações V1 a V6.

Emanuel Goldberger em 1942, acrescenta as derivações aVR, aVL, aVF e as três de Einthoven e

às 6 de Wilson, determinando o eletrocardiograma de 12 derivações utilizado até hoje [45].

2.1.2 Noções de Eletro-fisiologia

Quando a fibra miocárdica, Figura 2.1, está em repouso, polarizada, tem elevada concentração de

potássio e apresenta-se negativa em relação ao meio externo que tem elevada concentração de

sódio [40], ou seja, o estado de repouso da membrana de negatividade interna e positividade

externa [34].

Page 28: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

8

2.1 – Fibra miocárdica. Fonte[35].

Quando a permeabilidade da membrana ao sódio aumenta subitamente, muitos dos íons de sódio

que estão presentes em alta concentração na face externa da fibra precipitam-se, levando cargas

positivas, para o interior, em número suficiente para produzir o desaparecimento total do

potencial de repouso normal negativo e, em geral, é transportado número suficiente de cargas

para a produção do estado de positividade no interior da fibra. Essa perda súbita do potencial

normal negativo denomina-se “despolarização”. O potencial positivo que se desenvolve

momentaneamente no interior da fibra é chamado “potencial de inversão” [34], apresentado na

Figura 2.2.

+++++

----------------

despolarizada

(Ativa)

----------------

+++++++

repolarizada

(repouso)

2.2 – Fibra cardíaca ativa e em repouso.

Durante o processo de “despolarização” [34], o potencial negativo normal do interior da fibra é

perdido e o potencial da membrana, na verdade, se inverte, isto é, torna-se ligeiramente positivo

dentro e negativo fora.

Page 29: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

9

+-----------

----------------

(INÍCIO)

+++++++

-+++++++

(FIM)

DESPOLARIZAÇÃO

-+++++++

+++++++

(INÍCIO)

-----------

+-----------

(FIM)

REPOLARIZAÇÃO

2.3 – Processo de despolarização e repolarização.

No processo de despolarização e repolarização, (Figura 2.3) surge o dipolo que é quando uma

carga negativa e outra positiva são adjacentes. Com a estimulação da célula, a atividade elétrica

avança, sendo representada por um dipolo (- +) que se propaga ao longo da membrana celular e

forma um limite móvel entre a parte estimulada e a parte ainda em repouso. Podemos representar

o dipolo por um vetor que apresenta uma grandeza infinitamente pequena, uma direção e um

sentido, mostrado na Figura 2.4, que é dado pelo pólo positivo [41].

- +vetordipolo- +

2.4 – Dipolo.

Uma onda progressiva de despolarização pode ser considerada como uma onda móvel de cargas

positivas; deste modo, quando a onda positiva de despolarização mover-se em direção a um

eletrodo na pele (eletrodo positivo), é registrado no ECG uma deflexão positiva, por outro lado,

quando a onda estiver em sentido oposto, ou seja, quando a onda de despolarização se afasta do

eletrodo, tem-se uma deflexão negativa registrada no ECG [40]. O registro fica isoelétrico

quando não ocorre atividade elétrica.

2.1.3 Derivações

Durante o ciclo sístole-diástole (contração/relaxamento) podem ser registrados os potenciais

gerados pelo coração aplicando-se eletrodos em diferentes posições do corpo, onde é medida a

Page 30: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

10

diferença de potencial elétrico entre dois pontos no campo elétrico gerado pelo dipolo elétrico

cardíaco ao longo do ciclo cardíaco.

Cada local destas ligações é padronizado e conhecido como uma derivação do eletrocardiograma,

ou seja, a atividade elétrica do coração é captada através da colocação de eletródios em

determinados pontos da superfície corporal. Os estudos do coração são feitos através de dois

planos elétricos principais: O Plano frontal e o Plano horizontal.

2.1.4 Plano Frontal – Derivações Clássicas dos Membros

As possibilidades de derivações na superfície do corpo são infinitas, surgindo daí a necessidade

de se estabelecer como convenção O Triângulo de Einthoven, que especifica três derivações

dispostas de modo a formar os lados de um triângulo eqüilátero com os vértices nos braços

direito, esquerdo e perna esquerda em que os lados são conhecidos como linhas de derivação.

2.1.5 Derivação I

É a primeira derivação bipolar, conhecida por Derivação 1 ou simplesmente D1. É a diferença de

potencial entre o braço esquerdo e o braço direito. O pólo positivo da Derivação 1 é o lado

esquerdo, conforme mostrado na Figura 2.5.

2.1.6 Derivação I I

A segunda derivação é conhecida como Derivação 2 ou D2, e mede a diferença de potencial entre

perna esquerda e braço direito. O Terminal negativo do eletrocardiógrafo é ligado ao braço

direito e o terminal positivo à perna esquerda. Portanto quando o braço direito é negativo em

relação à perna esquerda, o eletrocardiógrafo registra positividade[35], conforme mostrado na

Figura 2.5;

2.1.7 Derivação I I I

A terceira derivação ( Derivação 3 ou D3) mede a diferença de potencial entre perna esquerda e

o braço esquerdo, sendo o braço esquerdo ligado ao terminal negativo e a perna esquerda ao

terminal positivo, conforme mostrado na Figura 2.5.

Page 31: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

11

2.5 – Derivações eletrocardiográficas clássicas. Fonte[35].

A lei de Einthoven estabelece simplesmente que se os potenciais elétricos de duas das três

derivações eletrocardiográficas clássicas são conhecidas em qualquer momento, o da terceira

pode ser determinado matematicamente pela simples soma dos dois primeiros.

321 DDD += 1.1

A Equação 1.1 corresponde à lei das Tensões de Kirchhoff [43][44], onde, a qualquer instante em

um caminho fechado de um circuito, tanto em sentido horário quanto em sentido anti-horário, a

soma algébrica das quedas de tensão é igual à zero, ou seja, para qualquer malha fechada em

uma rede que seja percorrida em um único sentido, a soma algébrica das tensões presentes é

zero[42].

2.1.8 Plano Frontal – Derivações Unipolares Aumentadas dos Membros

Nas derivações unipolares dos membros o eletrodo relacionado com pólo positivo, dito eletrodo

explorador, é colocado sucessivamente no braço direito, no braço esquerdo e na perna esquerda.

Enquanto o eletrodo positivo está em um dos membros por vez, os outros dois membros são

Page 32: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

12

ligados por meio de resistências elétricas ao terminal negativo do eletrocardiógrafo[34]. Deste

modo, registram-se os potenciais absolutos VR, VL e VF.

As correntes captadas com o sistema unipolar de Wilson apresentam-se com voltagem

relativamente pequena e, por esta razão, Goldberger propôs derivações unipolares aumentadas,

em que a amplitude das deflexões aumentava cerca de 50%, sendo chamadas de aVR, aVL e aVF

(a letra “a” refere-se a “aumentadas”).

Quando o terminal positivo está no braço direito, a derivação é conhecida como derivação aVR;

quando está no braço esquerdo, é conhecida como aVE; e, quando está na perna esquerda,

derivação aVF [34].

2.1.9 Plano Horizontal – Derivações Precordiais

O eletrodo negativo chamado de “eletródio indiferente” é normalmente ligado, através de

resistências, ao braço direito e esquerdo e à perna esquerda. Comumente seis derivações

precordiais diferentes são registradas com os eletródios sendo colocados nos seis pontos da

parede anterior do tórax [34] mostrados na Figura 2.6.

2.6 – Derivações Precordiais [34].

As derivações precordiais, posicionadas na face anterior do tórax são denominadas: V1: 4°

espaço intercostal direito (EID);V2: 4° espaço intercostal esquerdo (EIE).;V3: entre V2 e V4.;V4:

Page 33: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

13

5° EIE na linha hemiclavicular.;V5: 5° EIE na linha axilar anterior.;V6: 5° EIE na linha axilar

média.

2.1.10 Morfologia de um sinal de ECG normal

O Eletrocardiograma é o registro da variação dos potenciais elétricos gerados pela atividade

cardíaca. O traçado de um ECG típico é formado por eventos claramente identificáveis: onda P;

complexo QRS; pelas ondas Q, R e S; e uma onda T. Há ainda uma onda U com significado

incerto e que pode refletir a repolarização da fibra de Purkinje; geralmente observada quando o

nível sérico de potássio do paciente é baixo.

A Figura 2.7 mostra os eventos de um ciclo típico de um ECG, onde suas características podem

ser claramente identificadas como a amplitude, segmentos, intervalos, ondas, duração e ritmo. A

seguir são fornecidas as principais partes constituintes de um ECG normal [47]:

P

Q S

R

T

U

Onda P Onda T Onda U

Seg

men

to P

Q

Complexo QRS

Seg

men

to S

T

Intervalo

PQ ou PR

Intervalo QT

Intervalo QU

2.7 – Morfologia de um ciclo típico de um sinal de ECG.

Page 34: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

14

Onda P: despolarização dos átrios;

Complexo QRS: despolarização dos ventrículos;

Onda T: repolarização dos ventrículos;

Intervalo PQ ou PR: inicio da onda P, contração atrial, até o início do complexo QRS, contração

ventricular.

Onda Q: quando presente, ocorre no início do complexo QRS, de curta duração, é a primeira

deflexão negativa no ECG normal.

Onda S: deflexão negativa que ocorre no final do complexo QRS.

Intervalo QT: compreende a extensão do inicio do complexo QRS até o final da onda T.

Intervalo P-P ou ciclo PP: é o intervalo entre duas ondas P, ou seja, a freqüência atrial.

Intervalo R-R ou ciclo RR: é o intervalo entre duas ondas R, ou seja, a freqüência ventricular.

Page 35: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

15

2.2 Processamento Digital de Sinais

O Processamento Digital de Sinais – PDS ou, em inglês, DSP (Digital Signal Processing)

consiste na análise ou modificação de sinais de forma a extrair informações dos mesmos e,

quando necessário, torná-los mais apropriados para alguma aplicação específica.

A origem do processamento de sinal está na engenharia elétrica, onde o termo sinal significa um

sinal elétrico conduzido por qualquer meio, (fio, onda de rádio, etc) e pode ser encarado como

uma sequência de valores que representam informação sobre o comportamento ou estado de

algum fenômeno.

Os sinais elétricos podem ser digitais ou analógicos. Enquanto os analógicos variam

continuamente no tempo ou espaço assumindo um número infinito de valores dentro de uma

faixa de valores, os digitais são caracterizados por assumirem valores finitos em um intervalo.

A maioria dos sinais encontrados na natureza são analógicos, o que requer a conversão de

analógico para digital, para processar por computador. O processo de digitalização pode ser visto

na Figura 2.8.

Amostragem Quantização

Sinal Analógico

Sinal Amostrado

Sinal Digital

2.8 – Processo de conversão A/D.

O sinal digital é obtido a partir de um sinal analógico que inicialmente é amostrado e depois

quantizado, ou seja, seus valores devem ser arredondados ou truncados obtendo-se assim um

sinal de tempo discreto que assume valores discretos dentro de um conjunto de possíveis valores.

2.2.1 Amostragem

O teorema da amostragem ou de Nyquist mostra que um sinal pode ser amostrado e recuperado

sem perda de informação se “A freqüência de amostragem for no mínimo o dobro da maior

freqüência contida no sinal”.

Page 36: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

16

max2FFam > 2.1

Para que a amostragem do sinal analógico seja feita corretamente é preciso que a freqüência de

amostragem escolhida Fam seja maior que duas vezes a maior componente de freqüência

presente no sinal analógico Fmax, ou seja, é necessário conhecer o sinal a ser amostrado.

Se Fam for adequadamente escolhida, todas as freqüências presentes no sinal analógico original

são representadas sem redundância no sinal digital permitindo sua reconstrução sem que haja

distorções, (Figura 2.9).

Amostragem

Sinal analógico

Sinal amostrado

Instantes de amostragem

2.9 – Amostragem de um sinal analógico.

2.2.2 Quantização

Uma vez o sinal devidamente amostrado, podemos realizar o processo de quantização, que é o

processo de atribuição de valores discretos para um sinal cuja amplitude assume valores no

conjunto dos reais, ou seja, discretizar a amplitude do sinal, Figura 2.10. O processo de

quantização é caracterizado por aproximar cada saída do amostrador para um valor discreto,

definido por certo número N de bits

Page 37: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

17

2.10 – Quantização do sinal.

Após a quantização, cada amostra quantizada é representada por uma palavra de código. Evidente

que quanto maior for à quantidade de bits para a quantização, melhor será a qualidade do sinal,

contudo é importante ponderar que o referido aumento é diretamente ligado ao tamanho dos

arquivos e assim, maior será o custo computacional para manipular e operar tais informações.

Page 38: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

18

2.3 Sistemas embutidos

A transformação mundial vivenciada atualmente no setor de tecnologia acarretou uma crescente

demanda na produção de hardware e software para sistemas embarcados, exigindo assim, que o

tempo de projeto seja cada vez mais curto na cadeia de produção de circuito integrado, que

engloba geralmente as seguintes etapas: projeto, fabricação da pastilha (a qual utiliza processos

físico-químicos cada vez mais sofisticados), encapsulamento e testes.

O sistema embutido é implementado para realizar uma tarefa bem definida dentro de um outro

sistema maior. Diante disso, surge o conceito de sistema embutido (embarcado), que é a

combinação de hardware e software, e algumas vezes peças mecânicas, desenvolvidos para

realizar uma função específica [48], ou seja, colocar capacidade computacional dentro de um

circuito integrado, equipamento ou sistema.

Devido à diversidade das aplicações em hardware de sistemas embutidos, a terminologia dos

sistemas embutidos não é muito consistente. A definição mais antiga, diz que um sistema

embarcado é um sistema microprocessado no qual o computador é completamente encapsulado

ou dedicado ao dispositivo ou sistema que ele controla.

Cada vez mais, esses componentes e seus programas são embutidos em produtos para os

tornarem mais “inteligentes” como elevadores, carros (motores, suspensão), termostatos,

instrumentos médicos, científicos, de telecomunicações, dentre outros.

O projeto de um sistema embarcado pode ser complexo, por requerer conhecimentos diversos.

Dentre eles, questões geralmente pouco exploradas ou ignoradas em aplicações desktop, como

por exemplo, a restrição ao consumo de energia e a pouca disponibilidade de memória. Outro

complicador está relacionado ao espaço arquitetural, que torna a exploração das opções para a

construção de um sistema ainda mais difícil [49].

A arquitetura de hardware de um sistema embarcado pode conter um ou mais processadores,

memórias de vários tipos, interfaces para periféricos e blocos dedicados.

Page 39: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

19

2.3.1 IP core

Uma descrição de um sistema digital pode ser chamada de Core. Nos últimos anos a sua

utilização na construção de aplicações e sistemas maiores em circuito integrado, tem se mostrado

uma tendência de mercado. Os cores podem ser classificados de três modos, como indicado na

Tabela 2.1.

2.1 – Classificação de IP cores. Fonte [51].

IP Cores (Intellectual Property Cores) são blocos em hardware que executam tarefas específicas

e são projetados para permitir sua reutilização em outros sistemas. Com isso, os sistemas

integrados em um único chip (SoCs) podem conter diversos IP Cores que podem ser ligados por

um barramento ou uma rede mais complexa, conhecida como network-on-chip (NoC) [49].

2.3.2 Sistemas Integrados em um único chip

O mercado atual de projetos VLSI exige um baixíssimo tempo de projeto aliado a uma alta

complexidade e elevado desempenho, o que somente é possível com o uso de IP cores, e SoCs.

O SoC, é um sistema em um único chip, que pode conter um ou mais IP cores (processadores,

memórias, interfaces para periféricos e blocos dedicados), todos recursos disponíveis em chips

mais modernos com alta capacidade de integração, fato que torna o projeto e desenvolvimento

cada vez mais complexo.

Page 40: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

20

Pode-se destacar como vantagens associadas ao uso de SOCs o uso de cores; baixo custo de

fabricação em série; alta qualidade; diminuição de defeitos de montagem e fabricação em geral;

baixa potência consumida; pequeno tamanho e alta velocidade.

O uso e reuso de IP cores na indústria de semicondutores possibilitou o surgimento de um novo

mercado, chamado IP Business [52]. Esse novo mercado é descrito na Figura 2.11 e engloba três

segmentos: Produtores de IP; Utilizadores de IP e Desenvolvedores de ferramentas de IP.

2.11 – Modelo de IP Business. Fonte [52].

2.3.3 Arquitetura Dedicada

Existe certa dificuldade em classificar um determinado sistema com o termo “Sistema

Embarcado” devido ao avanço das possibilidades e tecnologias para implementação. Contudo

uma alternativa consiste na implementação do sistema através de uma Arquitetura Dedicada por

meio de hardware com arquitetura específica, o que contribui significantemente ao incremento da

velocidade do sistema.

Caso as restrições de recursos como consumo, tempo e memória tornem-se críticas, pode ser

indispensável o desenvolvimento de um ASIC (Application-Specific Integrated Circuit) ou um

FPGA (Field Programmable Gate Array).

As referidas tecnologias de implementação em hardware permitem que o desempenho global do

sistema seja muito maior, além de reduzir o tempo de chegado do produto ao mercado (time-to-

market).

Page 41: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

21

2.3.4 Um modelo de desenvolvimento

O processo de desenvolvimento se constitui de: Especificação – Projeto Arquitetural –

Construção de modelo(s) RTL – Verificação Funcional – Síntese – Cosimulação - Prototipação.

Inicialmente, definem-se quais funcionalidades o sistema deve ou não conter.

ProjetoArquiteturalEspecificação

Construção de modelos RTL

Verificação Funcional

Síntese PrototipaçãoCosimulação

2.12 – Ciclo de desenvolvimento.

Em sistemas complexos, a exemplo de SoCs, as especificações são feitas de modo top-down e

implementados de forma bottom-up. Partindo de uma visão geral do sistema, com alto nível de

abstração, ele é decomposto em partes menores, IP cores, que são implementados e depois

interligados para formar o sistema completo. Durante esse processo é possível definir estratégias

de verificação e testes do sistema, a fim de constatar seu correto funcionamento.

No Projeto Arquitetural, procura-se implementar as funções contidas na especificação inicial

através de uma arquitetura abstrata, ou seja, projeto de alto nível.

Ao contrário do que ocorre nas fases de projeto anteriores, a arquitetura abstrata estabelece uma

ligação onde cada função do sistema é atribuída a um bloco dedicado de hardware. O projeto

arquitetural compreende a alocação de recursos para realizar as operações e o escalonamento no

tempo destas operações supondo-as realizadas pelos recursos citados. Recursos estes, tipicamente

componentes estruturais de sistemas digitais, tais como ULAs, registradores, multiplicadores, etc.

A exploração do espaço de projeto deve encontrar uma solução ótima para três questões básicas

[53]: 1) Quantos e quais são os processadores e blocos dedicados de hardware necessários? 2)

Qual é o mapeamento ideal entre funções e componentes de hardware? 3) Qual é a estrutura de

comunicação ideal para conectar os componentes entre si, tendo em vista as trocas de

informações que devem ser realizadas entre as funções mapeadas para os componentes?

Para uma exploração efetuada rapidamente, é fundamental a existência de estimadores que sejam

capazes de informar os valores de métricas importantes de projeto (desempenho, consumo de

Page 42: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

22

potência, área) que irão resultar de cada alternativa arquitetural (uma macro-arquitetura e um

mapeamento de funções) a partir da especificação funcional do sistema [48].

Devido a multiplicidade quase infindável de soluções arquiteturais possíveis e a uma elevada

complexidade computacional, em busca de uma solução ótima ou mesmo aproximada, a etapa do

projeto arquitetural é usualmente simplificada pela escolha prévia de uma plataforma arquitetural

conhecida e adequada ao domínio da aplicação. Uma vez definida a macro-arquitetura, é

necessária a geração do software para a mesma, a partir da especificação funcional do sistema. A

geração do software é bastante facilitada se a especificação funcional inicial tiver sido feita sobre

uma interface de programação da aplicação padronizada (API – Application Programming

Interface) que ofereça recursos para comunicação entre as tarefas e para a qual exista uma

implementação sobre a plataforma arquitetural selecionada. É também necessário um compilador,

que traduza a especificação funcional para uma linguagem de programação adequada a cada

processador. Componentes de hardware e software selecionados para a macro-arquitetura podem

ter interfaces heterogêneas, implementando diferentes protocolos de comunicação. Neste caso, é

necessária a síntese da comunicação entre os componentes [48].

Em todas as etapas da metodologia de projeto é preciso avaliar e verificar as descrições

funcionais e arquiteturais geradas, onde normalmente essas verificações e validações se dão por

simulação.

A construção de modelo(s) RTL (Register Transfer Level) é a descrição do projeto através do uso

de registradores, ou seja, o projeto é visto através do fluxo (transferência) de dados entre os seus

registradores.

A implementação em nível RTL é feita através de alguma linguagem de descrição de hardware

(HDL), muitas vezes usada no processo chamado de síntese lógica que consiste em um outro

nível de abstração em que todo o modelo RTL é transformado noutro modelo em nível de portas

lógicas.

A verificação funcional tem o objetivo de checar todas as funcionalidades de projeto e assegurar

que estas estão ocorrendo da maneira especificada; e é uma das principais tarefas do fluxo de

desenvolvimento [48].

Page 43: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

23

A fase de verificação é uma etapa crítica, por se concentrar nas conexões dos módulos, já que

esses já foram testados independentemente. Outras metodologias ainda devem ser utilizadas para

a verificação das partes desenvolvidas, tanto em hardware como em software, utilizando

ferramentas adequadas para a verificação de sistemas desse nível. Dado o modelo funcional do

sistema pode-se usar software real ou outra estratégia de teste para garantir a compatibilidade

com as especificações iniciais e assim enviá-lo a produção.

Ao testar uma descrição, pode-se utilizar diferentes métodos, e a escolha da abordagem mais

adequada deve ponderar questões como facilidade na elaboração, compatibilidade entre

ferramentas de diferentes fornecedores, tempo de execução, necessidade de armazenar resultados,

dentre outros aspectos [17].

Os testes em projetos de hardware são realizados através de elementos chamados testbenches,

escritos em linguagem formal, e usados para criar simulações para o modelo do Design Under

Verification (DUV) ou Entidade Sob Teste (EST) que é representado em alguma linguagem de

descrição de hardware. A função do testbench é criar estímulos que conseguem ativar as

funcionalidades desejadas no EST.

A EST fica envolta pelo testbench, que confrontará a sua funcionalidade com o modelo de

referência que pode ser até mesmo um software escrito em alguma linguagem de alto nível como

C, C++, Java, Pascal,etc.

O modelo de referência pode ser entendido como um projeto de software que contém as

funcionalidades especificadas inicialmente no projeto e que está sendo usando neste caso para ser

confrontado com o modelo de hardware.

A Figura 2.13 mostra o caso geral de uma estrutura de teste utilizando o emprego dos recursos da

linguagem (VHDL) como uma maneira eficiente de realizar parte ou toda operação de teste de

uma entidade de projeto [17].

Os estímulos de teste podem ser gerados por uma constante do tipo vetor, por um conjunto de

comandos próprios da linguagem, ou por arquivo de dados. Os valores obtidos com a simulação

da entidade de projeto podem ser observados através de uma janela própria da ferramenta de

Page 44: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

24

simulação, porém a verificação das formas de onda em descrições complexas exigem a análise de

muitas condições, o que dificulta a detecção de falhas de forma visual [17].

2.13 – Procedimento de teste – caso geral. Adaptada da fonte[17].

Outra opção é realizar uma comparação entre os valores obtidos e os valores corretos, gerados

pelo modelo de referência, segundo as especificações de projeto. Nesse caso, os valores corretos

podem ser gerados de modo semelhante ao formato dos estímulos de teste: constantes, comandos,

arquivos ou uma composição desses. A descrição que controla as operações se encarrega da

comparação dos resultados, gerando mensagens de alerta e armazenamento dos resultados em

arquivo. A vantagem dessa opção é a independência com a ferramenta empregada, permitindo

que o procedimento seja aplicado por qualquer simulador VHDL de modo automático, com a

documentação em forma de arquivos [17].

A síntese poderá ser feita logo após definidos e validados os componentes de hardware da macro-

arquitetura, incluindo a infra-estrutura de comunicação e os eventuais adaptadores [48].

Numa primeira etapa, a macro-arquitetura pode ser expandida para uma micro-arquitetura (ou

arquitetura RTL), contendo o detalhamento de todos os componentes e suas interconexões, pino-

a-pino e considerando o funcionamento do circuito com precisão de ciclo de clock. Numa

segunda etapa, podem ser usadas ferramentas convencionais para síntese de hardware, que a

partir da micro-arquitetura irão gerar o layout final do circuito. Para tanto, é necessário que a

Valores para o teste

Valores de referência

Page 45: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

25

micro-arquitetura esteja descrita numa linguagem apropriada para estas ferramentas, como

VHDL ou Verilog. A existência prévia de layouts para os componentes de hardware selecionados

facilita bastante esta síntese, que se limita então ao posicionamento e roteamento de células [48].

Uma vez realizada a síntese, questões específicas do dispositivo escolhido passam a ser

consideradas, como por exemplo os atrasos das portas lógicas durante a execução do sistema

devem obedecer os limites esperados de não comprometer a corretude. Por fim, a etapa de

prototipação consiste na implantação do código gerado pela síntese em algum dispositivo de

hardware.

Page 46: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

26

2.4 Computação Reconfigurável

A computação reconfigurável surgiu como uma solução intermediária entre as soluções em

hardware e software para atender as metas e motivações relacionadas com a melhoria de

desempenho, flexibilidade, generalidade, eficiência, custo e outros. A seguir, algumas citações

definindo computação reconfigurável:

"Dispositivo que realiza computação usando conexão espacial "pós

fabricação" de elementos de computação" [55].

"Computação reconfigurável representa uma nova idéia em filosofia de

computação, na qual algum agente de hardware de propósito geral é

configurado para realizar uma tarefa específica, mas pode ser reconfigurado

sob demanda para realizar outras tarefas específicas." [74]

"Um novo paradigma de computação no qual circuitos integrados

programáveis são usados em conjunto com software para reconfigurar

circuitos integrados FPGA dinamicamente e produzir arquiteturas de

computador sob demanda." [75]

As principais características e atributos desejáveis em soluções que utilizam sistemas

computacionais reconfiguráveis, são: regularidade de comportamento, flexibilidade, desempenho,

generalidade, eficácia e custo.

Outra vantagem é que o hardware é otimizado para executar uma aplicação específica sem que

haja a necessidade de fabricação de chips, protótipo ou a versão final do projeto desenvolvido.

2.4.1 Dispositivos Lógicos Programáveis

Os componentes da lógica programável são dispositivos que possuem em sua lógica interna

centenas ou milhares de portas lógicas, flip-flops e registradores e são chamados de dispositivos

lógicos programável (PLD – Programmable Logic Devices), mostrado na Figura 2.14, e se

dividem em:

Page 47: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

27

1. Simple Programmable Logic Devices (SPLDs): possuem funções lógicas mais simples,

como funções AND e OR;

2. High Capacity Programmable Logic Devices (HCPLDs): são dispositivos lógicos

programáveis de alta capacidade por oferecerem mais de 600 portas disponíveis.

a. Complex Programmable Logic Devices (CPLDs): possuem vários blocos de

SPLDs num único chip;

b. Field-Programmable Logic Devices (FPLDs): os FPLDs mais usados

comercialmente são os Field-Programmable Gate Arrays (FPGAs)

Arranjos Lógicos

Programáveis

Arranjos de Portas

Programáveis

SPLDsPLDs Simples

HCPLDSPLDs de alta capacidade

FPGAs CPLDsPLA PAL PROM

PLD

2.14 – Dispositivos Lógicos Programáveis

2.4.1.1 Arranjo Lógico Programável

Um arranjo lógico programável, Figura 2.15, consiste de um circuito que possui uma estrutura

interna baseada em um conjunto de portas AND-OR (o conjunto de portas AND e OR é chamado

de arranjos).

Page 48: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

28

2.15 – Arquitetura Interna de uma PLA. Fonte[56].

PROM - As PROMs são dispositivos onde o arranjo AND é pré definido em fábrica e somente o

arranjo OR é programável, portanto capaz de gerar qualquer função lógica das suas variáveis de

entrada pelo fato de poder gerar cada um dos possíveis produtos AND de tais variáveis.

PAL – Programmable Array Logic - O PAL tem as a portas AND programáveis, ou seja,

enquanto as portas OR são pré-conectadas em fábrica, todas as portas AND podem ser

programadas.

PLA – Programmable Logic Arrays - Um PLA possui tanto a matriz de portas AND quanto a

matriz de portas OR programáveis combinando as características de uma PROM e de um PAL.

2.4.1.2 Arranjos de Portas Programáveis

Os arranjos de portas programáveis são estruturas mais genéricas e versáteis que as baseadas na

estrutura tradicional AND-OR dos arranjos lógicos programáveis. A principal vantagem deste

tipo de circuito é a possibilidade de reprogramação do comportamento de um circuito quantas

vezes forem necessárias, ao contrário dos arranjos lógicos programáveis que só podem ser

programados uma vez, ou seja, definida sua função lógica ela não poderá ser mudada.

CPLD – Complex PLD - Os CPLDs podem ser vistos como dispositivos que utilizam em sua

estrutura vários PLD´s (PLA ou PAL). Figura 2.16.

Page 49: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

29

2.16 – CPLD.

Cada PLA ou PAL formam células que são interligadas através de conexões programáveis.

FPGA – Field Programmable Gate Array - É um dispositivo lógico programável que possui uma

arquitetura baseada em blocos lógicos configuráveis, chamados de CLB (Configuration Logical

Blocks) que são formados por portas lógicas e flip-flops que implementam funções lógicas.

O FPGA também é formado por estruturas chamadas de blocos de entrada e saída (IOB – In/Out

Blocks), os quais são responsáveis pelo interfaceamento entre as saídas provenientes das

combinações de CLBs.

A típica estrutura interna de um bloco lógico configurável de um FPGA, consiste em flip-flops,

um determinado número de multiplexadores e uma estrutura de função combinatória para

implementar as funções lógicas.

Introduzida pela empresa Xilinx Inc. no ano de 1985, esta tecnologia consiste em dispositivos

lógicos programáveis que suportam a implementação de circuitos lógicos relativamente grandes

[56], mostrados na Figura 2.17.

Page 50: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

30

Rede de Interconexão Programável

CLB (Configurable LogicBlock)

IOB (Input/Output Block)

2.17 – Arquitetura Interna de um FPGA. Fonte[50].

Um FPGA possui três tipos principais de recursos:

1. blocos lógicos,

2. blocos de entrada e saída, e

3. chaves de interconexão programáveis.

Os blocos lógicos formam um arranjo bi-dimensional e as chaves de interconexão são

organizadas como canais de roteamento horizontais e verticais entre as linhas e colunas de blocos

lógicos. Cada um destes canais possui chaves programáveis que permitem conectar os blocos

lógicos de maneira conveniente, em função da necessidade de cada projeto [56].

A funcionalidade de uma FPGA é definida através de comutadores elétricos programáveis cujas

propriedades, tamanho, resistência em condução e capacitância parasita, definem a eficiência e o

desempenho do dispositivo. Outros atributos a ter em conta são: a volatilidade da sua

programação, a possibilidade de reprogramação e a complexidade do processo de fabricação. As

tecnologias mais usadas na implementação desses comutadores são as tecnologias de

Page 51: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

31

programação baseadas em memória estática (SRAM-based), anti-fusível e porta flutuante

(floating gate) [56].

Os recursos de configuração ou reconfiguração do dispositivo, como conceitos e características

arquiteturais, que podem apresentar as seguintes características:

• Capacidade de realizar uma única configuração ou muitas reconfigurações,

• Reconfiguração estática ou dinâmica, ou seja, pode ser realizada em tempo de

compilação ou em tempo de execução,

• Reconfiguração parcial ou total,

• Modo de configuração único ou múltiplo,

• Quantidade de configurações armazenadas simultaneamente no dispositivo,

• Tempo gasto com a configuração ou a reconfiguração.

Uma característica importante dos FPGA é sua capacidade de ser programado em campo pois sua

funcionalidade não é definida na fundição do chip e sim pelo projetista da aplicação final, que usa

métodos de reconfiguração, classificados como:

• Reconfiguração Total: todo o dispositivo programável é reconfigurado.

• Reconfiguração Parcial: apenas uma parte do dispositivo é reconfigurada. Se afetar

outras partes não reconfiguradas, todo o sistema deve ser reiniciado.

• Reconfiguração Dinâmica: reconfiguração em tempo de execução. Reconfiguração

realizada durante o funcionamento do dispositivo.

Page 52: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

32

2.4.2 VHDL - VHSIC Hardware Description Language

VHDL é um acrônimo de VHSIC Hardware Description Language, onde VHSIC é um acrônimo

de Very High Speed Integrated Circuit..

2.4.2.1 História

A VHDL foi originalmente desenvolvida sob o comando do Departamento de Defesa (DoD) dos

Estados Unidos, em meados da década de 80, para documentar o comportamento de ASICs que

compunham os equipamentos vendidos às Forças Armadas americanas. Isto quer dizer que a

linguagem VHDL foi desenvolvida para substituir os complexos manuais que descreviam o

funcionamento dos ASICs. Até aquele momento, a única metodologia largamente utilizada no

projeto de circuitos era a criação através de diagramas esquemáticos. O problema com esta

metodologia é o fato de que desenhos têm menor portabilidade, são mais complexos para

compreensão e são extremamente dependentes da ferramenta utilizada para produzi-los [57].

Uma vez que o projeto VHSIC era de alta prioridade militar e havia dezenas de fornecedores

envolvidos, o DoD estava preocupado principalmente com as questões de portabilidade,

documentação e compreensibilidade dos projetos. Cada um destes fornecedores atuava

desenvolvendo partes dos projetos ou mesmo fornecendo componentes que viriam a se encaixar

em outros sistemas maiores. Desta forma o DoD optou por buscar desenvolver uma linguagem

que servisse como base para troca de informações sobre estes componentes e projetos. Uma

linguagem que, independente do formato original do circuito, pudesse servir como uma descrição

e documentação eficientes do circuito, possibilitando os mais diferentes fornecedores e

participantes a entender o funcionamento das outras partes, padronizando a comunicação [57].

O desenvolvimento da VHDL serviu inicialmente aos propósitos de documentação do projeto

VHSIC. Entretanto, nesta época buscava-se uma linguagem que facilitasse o projeto de um

circuito; ou seja, a partir de uma descrição textual, um algoritmo, desenvolver o circuito, sem

necessidade de especificar explicitamente as ligações entre componentes. A VHDL presta-se

adequadamente a tais propósitos, podendo ser utilizada para as tarefas de documentação,

descrição, síntese, simulação, teste, verificação formal e ainda compilação de software, em alguns

casos [57].

Page 53: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

33

Após o sucesso inicial do uso da VHDL, a sua definição foi posta em domínio público, o que

levou a ser padronizada pelo IEEE (Institute of Electrical and Electronic Engineers) em 1987. O

fato de ser padronizada e de domínio público ampliou ainda mais a sua utilização, novas

alterações foram propostas, como é natural num processo de aprimoramento e a linguagem sofreu

uma revisão e um novo padrão mais atualizado foi lançado em 1993. Atualmente ela continua a

ser revisada e deverá ser lançado um novo padrão[57].

2.4.2.2 Definição

VHDL é uma linguagem estruturada que oferece a possibilidade de descrever e simular o

hardware antes de sua síntese, facilitando a validação ou verificação, tanto em termos de

funcionamento quanto em termos de tempos de atraso dos componentes e desempenho, sem a

necessidade da prototipação do sistema.

Um programa em VHDL pode ser dividido e implementado em parte como software (hardware

programável) e outra, em hardware reconfigurável.

Pode ser escrito basicamente usando dois tipos (modelos) de descrição: estrutural e

comportamental. Na descrição estrutural, a organização física e topológica do sistema é descrita,

ou seja, são especificadas as entradas e/ou saídas, os componentes lógicos, a interligação deles e

os sinais que compõem o sistema.

Na descrição comportamental, não é preciso descrever a organização física e topológica do

sistema, somente o comportamento. São descritas as funções (comportamento) do sistema. Um

programa que utiliza esse tipo de descrição possui o mesmo formato de um programa fonte

escrito em uma linguagem de programação de alto nível, como C++. Essa abordagem diminui a

necessidade de conhecimento em projeto de hardware, aumentando a facilidade de

desenvolvimento do sistema.

2.4.2.3 Vantagens e desvantagens

Algumas vantagens no uso de VHDL são: projetos independentes da tecnologia; maior facilidade

de atualização dos projetos; exploração de alternativas arquiteturais em um nível mais alto de

abstração; redução do tempo de projeto e custos; e simplificação da documentação. Como

Page 54: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

34

desvantagem o hardware gerado é menos otimizado, simulações mais lentas e falta de pessoal

treinado para lidar com a tecnologia.

2.4.2.4 Fluxo de projeto bem definido em VHDL

2.18 – Ciclo de vida VHDL. Fonte [57].

Especificação de Requisitos – Durante a etapa de Especificação de Requisitos, mostrado na

Figura 2.18, o projetista e o usuário (em muitos casos podem ser a mesma pessoa), fazem um

estudo e levantam todos os requisitos e características do sistema e definem o seu funcionamento.

Esta fase é muito importante, pois permite o correto entendimento do funcionamento do sistema,

o que evita a ocorrência de erros futuros. [57].

Modelamento - O projeto é iniciado de fato na etapa de modelamento, onde com base nas

especificações da etapa inicial, o projetista escreverá os modelos que representam o circuito [57].

Síntese – A Síntese de Alto Nível está para o hardware assim como a compilação está para o

software. Na síntese, o modelo descrito será convertido para estruturas de dados representando as

conexões, blocos, componentes e portas lógicas. Esta etapa é automática, e dependente da

ferramenta de software utilizada. Durante a síntese são pré-avaliados os requisitos do sistema a

fim de indicar se o circuito irá atendê-los adequadamente. Após a síntese ainda não está definido

o circuito a ser implementado, a especificação intermediária que é resultante é ainda bastante

Page 55: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

35

genérica e pode ser direcionada para uma de muitas possibilidades de tecnologias de

implementação.

Mapeamento Tecnológico – O Mapeamento Tecnológico permite que o circuito seja definido

dentro da tecnologia em que será implementado, pouco influindo nesse processo o projetista, que

poderá apenas especificar parâmetros de otimização desejados. Para entender essa etapa

adequadamente é preciso conhecer as diferentes tecnologias disponíveis no mercado, como full

custom, gate array, FPGAs, entre outros [57].

Implementação – Na etapa de implementação/fabricação são criados os primeiros protótipos,

avaliadas as condições finais, detalhes de produção entre outros detalhes de implementação final.

Testes – Em seguida à fabricação, os circuitos são testados para que possam ser entregues ao

usuário com garantia de isenção de falhas.

Page 56: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

36

2.5 Compressão de Dados

Compressão de dados é o ato de reduzir a quantidade de bits necessários para representar os

dados, ou seja, reduzir a redundância da representação da informação gerada pela fonte

procurando-se preservar a informação em si.

Nos próximos itens serão apresentados técnicas de compressão sem perdas com códigos baseados

em modelos estatísticos e em dicionários a exemplo de código de Golomb, código de Huffman,

código aritmético, código de Lempel-Ziv (L-Z) e PPM.

Os dados são comprimidos para eliminação da redundância objetivando economizar espaço em

dispositivos de armazenamento, como discos rígidos, ou ganhar desempenho (diminuir tempo)

em transmissões.

Uma medida comumente usada para quantificar o grau de compressão é a razão de compressão

ou, abreviadamente, RC. Se o número de bits usados na representação da mensagem original

(entrada do compressor) é n e o número de bits usados na representação da mensagem

comprimida (saída do compressor) é m, a RC é definida como:

m

nRC = 2.2

Alternativamente, a RC pode ser representada na forma (n / m):1.

A taxa de bits de uma mensagem (taxa) é definida como a razão entre o número de bits usados na

representação da mensagem e o número de elementos na mensagem [58] original. Abrevia-se a

taxa de bits por R (do inglês rate, taxa).

Um texto com 10 caracteres codificados em ASCII utiliza 8x10 = 80 bits. Portanto, R = 80/10 = 8

bits/símbolo. Se este texto é comprimido (com ou sem perdas) gerando uma seqüência de 40 bits,

tem-se RC = 80/40 = 2, ou RC = 2:1, e R= 40/10 = 4 bits/símbolo.

Quando há eliminação de informação, a mensagem original não pode mais ser perfeitamente

reconstruída. Por este motivo, esta modalidade é chamada de compressão com perdas. Neste

Page 57: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

37

caso, a descompressão constrói apenas uma aproximação para a mensagem original, exigindo a

adoção de medidas que permitam aferir a distorção entre a mensagem original e a mensagem

descomprimida.

Existem dois tipos de compressão: Com perdas e sem perdas. Um esquema de compressão sem

perdas permite a reconstrução perfeita do sinal original a partir do sinal comprimido, devendo ser

aplicado quando qualquer alteração nos dados originais é inaceitável. Na compressão sem perdas,

portanto, o sinal é integralmente preservado, procurando-se unicamente reduzir a redundância na

representação dos dados.

2.5.1 Informação e Entropia

Seja uma fonte de informação S produzindo elementos com seus valores selecionados do

conjunto A = {a0, a1,...,aM-1}. Este conjunto é o alfabeto de S e os seus elementos são conhecidos

como letras ou símbolos. Um elemento x gerado por S pode ser considerado uma variável

aleatória que assume o valor ai com probabilidade P( x = ai ), i = 0, 1,..., M-1. Define-se a auto-

informação, I(ai), associada à ocorrência do símbolo ai como[58]:

bitsaxP

aIi

i )(

1log)( 2

== 2.3

Caso x0 x1... xN-1 sejam elementos gerados por S, a entropia da fonte é definida como segue:

NN

GN

SH1

lim)(∞→

= bits/símbolo 2.4

Onde;

),...,(log),...,,(110110

0 1 1

11,02110

1

0

1

0

1

0−−

======−=−−

=

=

=

∑∑ ∑ NN

n

iniiinii

M

i

M

i

M

i

N axaxaxPaxaxaxPG L

2.5

Page 58: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

38

Caso as variáveis aleatórias que constituem a mensagem forem independentes e identicamente

distintas (IID), a Equação 2.5 pode então ser simplificada para expressar a entropia de ordem 1 de

S [58].

)(log)()( 2

1

00

i

M

i

i axPaxPSH ==−= ∑−

=

bits/símbolo 2.6

Claude Shannon mostrou que é possível codificar sem perdas a saída de uma fonte qualquer de

informação usando um número médio de bits por símbolo arbitrariamente próximo à entropia,

mas no inferior a ela [12][58]. Assim pode-se usar a entropia para avaliar a eficiência da

codificação efetuada, sendo o código ótimo aquele cujo comprimento médio é igual a entropia

[58].

2.5.2 Modelagem

Um dos grandes avanços na área de compressão de dados foi a separação do processo de

compressão em: modelagem e codificação. Tal avanço permitiu tratar uma enorme variedade de

compressores como a associação entre alguns poucos modelos e codificadores.

2.5.3 Modelagem Estatística

Diretamente relacionado com a definição das probabilidades associadas aos símbolos gerados

pela fonte está o conceito de entropia, por conseguinte o de código ótimo. A entropia é calculada

a partir da definição de um modelo estatístico para a fonte de informação. Um modelo que

captura mais precisamente as características reais da fonte “reduz sua entropia”, aumentando as

oportunidades de compressão. Em uma mensagem onde seus elementos são estatisticamente

dependentes, a entropia associada a um modelo que reflita este comportamento será menor que

aquele associado a um modelo IID [58].

Page 59: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

39

Ganhos de compressão podem ser obtidos com modelos mais precisos, uma vez que a codificação

ótima é um problema já solucionado e a modelagem permanece um ativo campo de pesquisa

[58].

Um modelo estatístico simples consiste em assumir que os valores gerados pela fonte, com

alfabeto A = {a0, a1,...,aM-1}, são independentes e assumem o valor ai com probabilidade P(x=ai),

i = 0, 1,..., M-1. Caso a suposição de independência não seja satisfatória, os modelos de Markov,

estão entre os mais comumente usados para representar a relação existente entre símbolos.

Se a distribuição de probabilidades de um elemento depende dos K símbolos que o antecedem, a

mensagem segue o modelo de Markov de K-ésima ordem; mister se faz portanto, estimar as

probabilidades P(Xn=ai | xn-1,xn-2,...,xn-k), i=0,1...,M-1. Os modelos de Markov são conhecidos

como modelos de contexto finito por usarem os K símbolos precedentes para construir o contexto

a partir do qual a probabilidade de ocorrência do próximo elemento é estimada[58].

Caso uma fonte gere símbolos dependentes estatisticamente dos valores presentes em um

contexto C de tamanho L, um modelo de Markov de ordem K com K ≤ L, é capaz de representar

com maior precisão as características da fonte do que um modelo de ordem K-1 e, portanto,

conduzir a uma maior redução na entropia [58].

Teoricamente empregar modelos de ordem elevada melhoraria os níveis de compressão, contudo,

surgem alguns problemas de ordem prática que limitaria aplicabilidade da técnica. Tem-se Mk

possíveis contextos para um modelo de ordem K e um alfabeto de tamanho M, onde o número de

contextos diferentes cresce exponencialmente com a ordem do modelo[58].

Como exemplo, com M=256 e K=5 para obter um número de um trilhão de contextos diversos, o

que claramente compromete a computação, nos dias de hoje, no tocante a problemas de requisitos

de memória, cálculo das estimativas, dentre outros. Por este motivo os modelos de Markov de

ordem zero e de primeira ordem são os mais utilizados em situações reais [58].

Page 60: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

40

2.5.4 Codificação da Entropia

Entenda-se por codificação, no presente trabalho, a representação de dados através de

identificadores binários, denominados palavras-códigos, onde o conjunto de todas as palavras

códigos para uma determinada fonte constitui um código. O comprimento de uma palavra código

é o seu número de bits, donde surgem duas categorias: palavras código de comprimento variável

e palavras código de comprimento fixo. Uma maneira de reduzir o comprimento médio dos

identificadores e a taxa das mensagens geradas pela fonte é atribuir menos bits à representação

dos valores com maior probabilidade de ocorrência[58].

Para evitar o problema da ambigüidade na recuperação da mensagem é importante utilizar um

código unicamente decodificável, o que pode se tornar um processo complexo, entretanto são

facilmente decodificáveis se também forem código de prefixo (quando nenhuma de suas palavras

código é prefixo de outra.).

2.5.5 Codificação de Huffman

Em 1952, Huffman apresentou um procedimento sistemático para a construção de código de

prefixo ótimo, chamados de códigos de mínima redundância, dadas as probabilidade previamente

definidas na etapa de modelagem[59][58].

O algoritmo idealizado por Huffman associa uma árvore ponderada a cada letra do alfabeto da

fonte de informação. Inicialmente, cada árvore possui um único nó, com peso igual à

probabilidade de ocorrência do símbolo a ela associado. A cada iteração do algoritmo, as duas

árvores de menor peso são substituídas por uma nova árvore cujo peso é a soma dos pesos das

primeiras. A árvore de menor peso se torna a sub-árvore esquerda e a outra se torna a sub-árvore

direita da nova árvore.

Na ordenação dos pesos, empates são resolvidos por qualquer regra sistemática. O procedimento

pára quando resta apenas uma única árvore. A palavra-código para qualquer letra é obtida

percorrendo-se esta árvore desde a raiz até a folha correspondente à letra em questão, registrando

0 para cada ramo esquerdo e 1 para cada ramo direito.

Page 61: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

41

A codificação é feita concatenando as palavras código que representam cada caractere no

arquivo.

Como exemplo, considere-se um arquivo de dados contendo 100.000 caracteres, distribuídos

entre “a”, “b”, “c”, “d”, “e” e “f”, e freqüências indicadas na Tabela 2.2. Se cada caractere for

codificado com uma palavra código de 3 bits, o arquivo ficará com 300.000 bits ao passo que o

mesmo arquivo poderá ser codificado com apenas 224.000 bits se for codificado usando palavra

código de comprimento variável [60].

Observando as freqüências indicadas é possível exemplificar a construção da árvore de Huffman,

na Figura 2.19, cada passo mostra o conteúdo da fila ordenado em ordem crescente por

freqüência. Em cada passo as duas árvores com freqüências menores são intercaladas.

2.2 – Freqüências indicadas. Fonte[60].

a b c d e f

Freqüência (em milhares) 45 13 12 16 9 5

Palavra código de comprimento fixo 000 001 010 011 100 101

Palavra código de comprimento variável 0 101 100 111 1101 1100

Os retângulos representam as folhas contendo um caractere e sua freqüência e os círculos

representam nós internos contendo a soma das freqüências de seus filhos. Arestas ligando um nó

interno a filho esquerdo é identificado com 0 e identificado com 1 aresta que ligar nó interno

com filho localizado à direita. Percorrendo a seqüência formada pelas arestas desde a raiz ate a

folha correspondente a esse caractere se obtém a palavra-código [60].

Page 62: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

42

f:5 e:9 c:12 b:13 d:16 a:451)

2) c:12 b:13 d:16 a:4514

f:5 e:9

0 1

d:16 a:4525

c:12 b:13

0 1

14

f:5 e:9

0 1

3)

2.19 – Formação da árvore de Huffman, passos 1-3.

A Figura 2.19 passo 2 mostra a junção das sub-árvores de menor peso (5 e 9) e a formação de

uma nova árvore de peso 14 e ordenada de modo crescente em meio as outras árvores.

No passo 3, é mostrado a formação de uma nova árvore de peso 25 como resultado da

composição das árvores de peso 12 e 13, ficando as árvores ordenadas na seqüência 14, 16, 25 e

45.

Por fim a Figura 2.20 mostra os passos 4, 5 e 6 da formação da árvore de Huffman. A árvore final

pode ser vista no passo 6. Para qualquer letra pode-se obter a palavra código, bastando percorrer

a árvore.

Page 63: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

43

a:4530

d:16

0 1

25

c:12 b:13

0 1

4)

14

f:5 e:9

0 1

a:45

30

d:16

0 1

25

c:12 b:13

0 1

5)

14

f:5 e:9

0 1

55

0 1

a:45

30

d:16

0 1

25

c:12 b:13

0 1

6)

14

f:5 e:9

0 1

55

0 1

100

0 1

2.20 - Formação da árvore de Huffman, passos 4-6.

O código de Huffman possui uma redundância residual que decorre da atribuição de um número

inteiro de bits a cada letra do alfabeto[58].

Page 64: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

44

2.5.6 Codificação de Golomb

Solomon W. Golomb em 1966 propôs um esquema simples de codificação de valores inteiros não

negativos. É conhecido como a codificação de Golomb que é um conjunto de códigos de prefixo

que podem ser utilizados na compressão de dados, apresentando resultados ótimos para

determinadas distribuições de probabilidade dos símbolos codificados.

Dado um parâmetro inteiro positivo m, o código de Golomb de um inteiro não negativo n é a

concatenação da codificação unária de mn / com a codificação binária ajustada de n mod m

[58].

A codificação unária de um inteiro não negativo v é uma seqüência de v bits com valor ‘1’

finalizada por um bit com valor ‘0’. Para descrever a codificação binária ajustada [9], considere-

se um alfabeto de tamanho m = 2k+b, composto pela seqüência de inteiros 0, 1, 2,..., 2k+b-1, onde

k é o maior inteiro tal que 2k ≤ m, e b é um inteiro não negativo[58].

Na representação binária convencional, cada símbolo deste alfabeto seria codificado com

m2log bits. Assim, as palavras-código teriam k bits se b = 0, e k+1 bits se b ≠ 0. Para b = 0, a

codificação binária ajustada é idêntica à codificação binária convencional, mas para b ≠ 0, parte

dos símbolos é codificada com k bits, e o restante com k+1 bits. Mais especificamente, a

codificação binária ajustada de um símbolo no intervalo [0, 1,..., 2k-b-1] é simplesmente sua

representação binária convencional com k bits, enquanto a codificação binária ajustada de um

símbolo de valor w fora deste intervalo é a representação binária, com k+1 bits, de w + m - 2b.

Para m = 5, por exemplo, tem-se k = 2 e b = 1. Neste caso, os símbolos 0, 1 e 2, na codificação

binária ajustada, tornam-se 00, 01 e 10, respectivamente, enquanto que os símbolos 3 e 4 são

codificados como 110 e 111.[58]

O código de Golomb é ótimo para distribuições de probabilidade geométricas, também

conhecidas como geométricas unilaterais dadas por:

Page 65: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

45

nppnxP )1()( −== 2.7

onde P(x=n) é a probabilidade de x assumir o valor inteiro n ≥ 0, e 0 < p <1. Para distribuições

genéricas o código de Golomb produz o menor comprimento médio dentre todos os códigos

unicamente decodificáveis[58].Podemos observar um exemplo de código Golomb na Tabela 2.3.

2.3 – Exemplos de códigos Golomb, m=1 até 5

Golomb: m=1 m=2 m=3 m=4 m=5

n=0 0 00 00 000 000 1 10 01 010 001 001 2 110 100 011 010 010 3 1110 101 100 011 0110 4 11110 1100 1010 1000 0111 5 111110 1101 1011 1001 1000 6 : 11100 1100 1010 1001 7 : 11101 11010 1011 1010 8 : 111100 11011 11000 10110 9 : 111101 11100 11001 10111 : : : : : :

2.5.7 LZW e LZ78

Ziv e Lempel definiram um esquema de codificação simples capaz de explorar as dependências

estatísticas entre os símbolos produzidos por uma fonte de informação. O algoritmo deu origem a

uma grande família de compressores práticos de bom desempenho, amplamente utilizados até

hoje. Considere uma fonte de informação que produza seqüências de símbolos selecionados de

um alfabeto A = {ao, a1,..., aM-1}. Uma frase é qualquer seqüência de símbolos selecionados de A.

O tamanho de uma frase é o número de símbolos que a constituem. Um dicionário é uma lista de

frases[9].

No LZ78, o dicionário contém inicialmente apenas uma frase vazia ou nula, ou seja, uma frase de

tamanho zero. Essa frase ocupa o índice zero no dicionário. Seja x = x0x1x2... a seqüência de

símbolos a ser codificada, e f uma frase inicialmente vazia. Os símbolos de x são seqüencialmente

Page 66: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

46

concatenados a f até que a concatenação de um dado símbolo xi produza uma frase que não se

encontre no dicionário. A frase f é então codificada como um par (d, xi), onde d é o índice da

última frase coincidente no dicionário, e f é adicionada ao dicionário. A frase f é novamente

anulada e o processo de codificação se repete a partir do símbolo xi+1. Quando há D frases no

dicionário, d é representado pela codificação binária ajustada, com D2log ou com D2log -1

bits.

No LZW [3], o dicionário é inicialmente carregado com todas as frases possíveis de tamanho um.

Assim, para um alfabeto A = {ao, a1,..., aM-1}, o dicionário contém inicialmente M frases de

tamanho unitário. Como no LZ78, os símbolos de x são seqüencialmente concatenados a f até

que a concatenação de um dado símbolo xi produza uma frase que não se encontre no dicionário.

A ultima coincidente é então codificada pelo seu índice d no dicionário e f é adicionada ao

dicionário. A frase f é novamente anulada e o processo de codificação se repete a partir do

símbolo que quebrou a coincidência, xi. Observe-se que, no LZW, os códigos das frases são

unicamente os índices das frases coincidentes, representados usando a codificação binária

ajustada.

2.5.8 Codificação aritmética

O codificador aritmético elimina a associação entre símbolos individuais e palavras-códigos de

comprimento inteiro e, com isto, é capaz de praticamente igualar a entropia da fonte em todos os

casos.

O método de codificação aritmética foi sugerido por Peter Elias, e apresentado por Abramson no

texto “Information Theory and Coding” [64]. Em 1976, Rissanen e Pasco descobrem novas

classes de códigos, onde o cálculo poderia ser feito com precisão aritmética finita e em tempo

linear. O código de Rissanene utilizava estruturas LIFO (last-in frst-out) produzindo o código em

ordem reversa. O código de Pasco, diferentemente, utilizava estruturas FIFO ( first-in first-out), e

mantinha todo o código em memória, ate que o ultimo símbolo fosse codificado [65].

Na mesma época, Rubin, Guazzo e Rissanen e Langdon apresentam os conceitos modernos de

codificação aritmética: precisão aritmética; operação incremental (símbolo a símbolo) e

estruturas tipo FIFO [65].

Page 67: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

47

Muitos pesquisadores tiveram a mesma idéia de forma independente. No campo da codificação

aritmética foram feitos diversos estudos, divididos basicamente em códigos para alfabetos

binários e para alfabetos com mais de dois símbolos. Em 1982, Langdon e Rissanen

implementaram um código aritmético muito simples para alfabetos binários. Langdon em 1981

desenvolve um tutorial no campo da codificação aritmética, e, em 1984 publica uma versão mais

atualizada que inclui a historia do método. Ian Witten, Radford M. Neal & John G. Cleary obtém

uma implementação completa do mesmo, em 1987 [65].

Uma técnica de codificação aritmética que não usa multiplicações nem divisões foi estudada por

Rissanen e Mohiuddin e, é baseado no código para alfabeto binário, porém, se aplica também a

alfabetos com mais de dois símbolos. Uma implementação foi obtida por Radford M. Neal em

1991 [65].

O algoritmo de codificação aritmética consiste em representar a probabilidade de ocorrência de

cada caractere com intervalos. Parte-se do intervalo [0,1) e nele identifica-se o subintervalo ao

qual corresponde o primeiro símbolo lido do arquivo. Para cada símbolo subseqüente, subdivide-

se o intervalo atual em sub-intervalos proporcionais às probabilidades dos símbolos, e encontra-

se novamente o intervalo que corresponde ao próximo símbolo. Ao final do processo, teremos um

intervalo que corresponde a probabilidade da ocorrência de todos os símbolos na ordem correta.

A saída do algoritmo é então um valor que esteja contido neste intervalo e possa ser representado

com o menor número possível de dígitos.

Um pseudo-algorítimo seria [58]:

1. Cria-se o intervalo [0,1).

2. Para cada elemento da mensagem faça:

a. Divide-se o intervalo corrente em subintervalos, um para cada letra do alfabeto. O

tamanho do subintervalo associado a uma dada letra é proporcional à

probabilidade de que esta letra seja o próximo elemento da mensagem, ou seja, o

comprimento do subintervalo é igual às probabilidades dos símbolos, de acordo

com o modelo assumido.

Page 68: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

48

b. O subintervalo correspondente à letra que é realmente o próximo elemento é

selecionado como novo intervalo corrente.

3. A mensagem é codificada com o menor número de bits necessário para distinguir o

intervalo final de todos os outros possíveis intervalos finais.

Dois problemas práticos decorrentes da implementação básica são: o cálculo dos limites do

intervalo corrente para mensagens genéricas, potencialmente grandes, que exige aritmética de

altíssima precisão; e nenhuma codificação é produzida ate que toda mensagem tenha sido

processada [58].

Como exemplo, seja uma fonte que produz os símbolos A e B com as probabilidades 0,6 e 0,4,

respectivamente. Inicialmente o intervalo [0,1) é criado. Ao símbolo A é associado o intervalo

semifechado de 0 a 0,6 ao símbolo B vamos associar o intervalo semifechado de 0,6 a 1 [62],

conforme Figura 2.21.

2.21 - Passo1 exemplo da codificação aritmética. Fonte[62].

No passo seguinte cada um dos intervalos é dividido em outros dois com a mesma proporção

(60% e 40%) obtemos quatro intervalos menores, [0;0,36[, [0,36;0,6[ [0,6;0,84[ e [0,84;1[.

2.22 – Passo 2 exemplo da codificação aritmética. Fonte[62].

Prosseguindo a subdivisão obteríamos oito intervalos ainda menores:

2.23 – Passo 3 exemplo da codificação aritmética. Fonte[62].

Page 69: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

49

À mensagem “AAA” corresponde o intervalo de 0 a 0,216 (com largura igual a P(A)3=0,216), a

“BAB” corresponde o intervalo de 0,744 até 0,84 (com largura 0,84-0,744=

P(B)P(A)P(B)=0,096), e assim por diante.

Por fim, pode-se codificar a mensagem “AAA” escolhendo um número dentro do intervalo

correspondente, e de preferência um que seja representado pelo menor número de bits: Figura

2.24.

2.24 – Final do processo de codificação. Fonte[62].

Um intervalo necessita de um limite inferior, um comprimento e, por conseguinte um limite

superior. Com as sucessivas repartições um intervalo pode ficar tão pequeno ou a representação

do limite inferior tão longo que não é possível expressá-lo em memória por números inteiros de

16 ou 32 bits.

Observando a Figura 2.25 é possível notar que para um número binário compreendido num

determinado intervalo, escolhendo qualquer valor abaixo do meio 0.5 (half part) a palavra código

inicia com bit 0.

Page 70: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

50

0.0

0.5

1.0

01110110010101000011001000010000

11111110110111001011101010011000

2.25 – Intervalo - HALF PART.

Fazendo o mesmo para a parte superior, a palavra código inicia com o bit 1.Em todos os casos, o

bit inicial poderia ser enviado para a saída e o processamento poderia ser limitado a metade do

intervalo em que ocorreu o número, tomando por limite os valores de [0, 0.5], para abaixo e

[0.5, 1] para cima de half part. [67].

Este procedimento é conhecido como zooming e é mostrado na Figura 2.26.

1.0

0.0

0.5

1.0

0.0

0.5

0.30.4

0.6

0.2

2.26 – Exemplo de half point zooming. Fonte [67].

Page 71: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

51

Para os casos em que o limite inferior do intervalo desce abaixo do half ponit e o limite superior

fica a cima do half point o caso de “half-point zoom” não pode ser aplicado. A solução está

exemplificada na Figura 2.27 e, é chamada de “quarter-point zooming”.[67].

1.0

0.0

0.50.4

0.6

1.0

0.0

0.75

0.25

0.5

0.75

0.25

1.0

0.0

0.5

0.75

0.250.3

0.1

0.7

0.9

2.27 – Exemplo de quarter-point zooming. Fonte[67].

A condição de “quarter-point zooming” é que o limite inferior do intervalo não ultrapasse 0.25 e

o limite superior não exceda 0.75. Agora é sabido que se o intervalo está abaixo do half point o

stream de bits é qualquer um da forma “01xxx” ou “10xxx” se o intervalo final estiver acima do

half point, onde xxx é o resto do stream. [67].

Pode ser mostrado que se o próximo bit devido a um half-point zooming for um bit “b” este será

seguido por bits opostos a b tantos quantos forem os quarter-point zoomings antes do próximo

half-point zooming.

Desde que o intervalo alcance qualquer valor no range [0.25, 0.5] ou [0.5, 0.75] a codificação

pode ser encerrada enviando o par de bits “01” se o limite superior do intervalo estiver abaixo de

0.75 ou “10” se o limite inferior exceder 0.25.

Com base no codificador aritmético, surgiram algumas variações do método. Como exemplo.

1. Q-coder,

2. QM-coder usado nos padrões JBIG e JPEG Arithmetic (IBM, Mitsubishi e Lucent)

3. MQ-Coder: Usado nos padrões JBIG2 e JPEG2000 (IBM e Mitsubishi)

Page 72: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

52

4. M-coder

O Q-coder é uma nova forma de codificador aritmético binário adaptativo. A codificação binária

aritmética parte da técnica derivada de conceitos básicos introduzidos por Rissanen, Pasco, e

Langdon, porém com certas convenções a fim de resolver problemas práticos de implementação.

O Q-coder incorpora uma nova técnica para estimar as probabilidades com extrema simplicidade

aliado a um robusto mecanismo para estimar as probabilidades adaptativamente durante o

processo de codificação [66]

O Q-coder tem por características a separação entre o modelo de codificação e máquina usada na

codificação; a quantização das probabilidades em frações potências de 2(2-Q); Precisão finita e

tratamento de Carry-over: Bit stuffing.

O QM-coder tem o alfabeto de entrada no formato binário, e para ganhar velocidade eliminou

multiplicações e possui seus próprios meios de modelagem. É implementado comercialmente,

pela MITSUBISHI SEMICONDUCTOR (LSI) - M65762FP(QM-CODER).

No QM-coder as multiplicações foram substituídas por operações de aproximação ou rolagem de

bits a esquerda. O símbolo com maior probabilidade no modelo fica em MPS (Most. Probable.

Symbol) e os de menor probabilidade no LPS (Least. Probable Symbol). O intervalo no QM-

coder é dividido de modo que o subintervalo LPS está na parte superior ao subintervalo MPS. O

intervalo é “A” a probabilidade estimada de LPS é “Qe”. A probabilidade ideal estimada de MPS

poderia ser (1-Qe). O comprimento do respectivos subintervalos são A Qe⋅ e ( )A Qe⋅ −1 [67].

A+C

C

MPS

LPS A Qe

A (1-Qe)

C+A-Qe A

2.28 – Subdivisão interna do intervalo no QM-coder. Fonte [67].

Page 73: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

53

A seguir, na Figura 2.29, tem-se uma comparação entre o codificador aritmético e o QM-coder:

Compression with arithmetic coding

Modelling: Coding:

Compressionwith QM-coder

Processingthe image

Determiningthe context

Updating model

Arithmetic CodingDetermining

the prob.distribution

Modelling: QM-coder:

Processingthe image

Determiningthe context

Updating model

Arithmetic Coding

Determiningthe prob.distribution

2.29 – Codificador Aritmético X QM-coder. Fonte[67].

2.5.9 PPM

O algoritmo Prediction by Partial Matching (PPM) [10][11], introduzido em 1984 por Cleary e

Witten, é uma técnica de compressão baseada na modelagem estatística adaptativa e na predição

por contexto. O PPM é considerado um dos compressores de propósito genérico mais eficaz da

atualidade na sua variação PPM-C introduzido por Mofaft.

O modelo PPM utiliza um conjunto de no máximo K símbolos precedentes como contexto para

estimar a distribuição de probabilidades condicionais para o próximo símbolo da mensagem. O

modelo alimenta um codificador aritmético, que atribui a cada símbolo um número de bits

praticamente igual a sua informação condicional, que por sua vez depende da probabilidade de

ocorrência do símbolo condicionada ao contexto [12]. Assim, o esquema de codificação

aritmética é capaz de praticamente igualar a entropia da fonte em todos os casos, atingindo

compressão máxima para o modelo utilizado [10][12].

Algumas características do PPM são :a alta taxa de compressão devido a sua adaptabilidade, ao

uso de contexto e ao uso do codificador aritmético; ineficiência em termos de tempo para

compressão devido a complexas estruturas de dados utilizadas para armazenamento de dados de

contexto, à grande quantidade de cálculos de precisão flutuante para geração do código de saída,

e a atualização de todas as freqüências para cada nova entrada; devido à sua simetria a

Page 74: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

54

descompressão exige tempo na mesma ordem de grandeza que a descompressão; requer

implementação cuidadosa para obter-se a taxa de compressão ótima que o método pode oferecer.

O PPM mantém contextos de todos os tamanhos inteiros menores que k, e efetivamente combina

as diferentes distribuições, usando um mecanismo de escape. Inicia-se o modelo com o valor

mais alto de k. Se um novo caractere é encontrado no contexto, significa que o contexto não pode

ser usado para a codificação do caractere então um símbolo de escape é transmitido como sinal

para a saída, situação denominada evento de escape. Sendo assim, o algoritmo continua sua busca

no contexto para o próximo valor inferior de k .

Este processo é repetido para tamanhos cada vez menores de k até que se encontre o símbolo em

questão. Nesse caso, o caractere é codificado com a distribuição de probabilidades condicionadas

àquele contexto. A estrutura de dados é usada para armazenar todas as probabilidades nos

diferentes modelos de contexto, como mostrado na Tabela 2.4, um exemplo clássico do modelo

PPM após o processamento da string abracadabra [61].

2.4 - Modelo PPM após processamento da string abracadabra. Fonte[61].

Page 75: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

55

2.6 Barramento USB

Em meados da década de 1990 surgiu o USB (Universal Serial Bus) promovido principalmente

pela Intel. No final da década de 1990 o USB começou a conquistar espaço no mercado de PCs.

Sua função principal é promover a conexão de vários tipos de periféricos e equipamentos de

modo simples, eficiente e com bom desempenho em contraste ao modo anterior em que se

necessitava de interfaces complexas e variadas.

O USB possui algumas características próprias, tais como:

• Padronização dos conectores.

• O cabo USB possui quatro fios, sendo dois para a transmissão de dados e dois para

alimentação, proporcionando aos dispositivos a obtenção de alimentação diretamente pelo

cabo.

• Plug and Play, tecnologia criada com o objetivo de fazer com que o computador reconheça

e configure automaticamente dispositivos que seja instalado, facilitando a expansão

segura dos computadores e eliminando a configuração manual.

• Hot Plugging, que é a possibilidade de conectar e desconectar dispositivos com o

computador ligado. No instante em que um dispositivo USB é conectado, ele informa ao

computador sobre a sua presença.

O USB possui um conector universal que permite ao usuário adicionar periféricos, apenas

conectando-os ao computador através de um cabo, permitindo transferências a 1,5 ou 12 Mbits/s

para a versão 1.0/1.1 e até 480 Mbits/s para a versão 2.0.

Dois identificadores são usados para marcar um dispositivo: o ID de vendedor e o ID de produto.

Ambos IDs são registrados no descritor do dispositivo USB. O ID de vendedor (VID) marca o

fabricante e é normalmente designado pelo USBIF (Universal Serial Bus Implementers Forum).

O ID de produto (PID) é (como o VID) um número de 16 bits e marca o produto. A atribuição é

feita pelo fabricante do dispositivo. Para o PID não há nenhuma restrição administrativa do

USBIF como no VID.

Page 76: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

56

2.7 Trabalhos Relacionados

Foram estudados os algoritmos de codificação de Huffman, de Golomb, o LZ78 e o LZW, PPM

Binário + codificador Aritmético. Contudo apenas o PPM binário como codificador aritmético

mostrou-se apto a atender as necessidades impostas no trabalho.

O código de Huffman e o de Golomb já foram implementados no LASID da UFPB; o LZ78 e o

LZW são técnicas que usam dicionário o que consome muita memória; As técnicas introduzidas

por Batista[58] e POEL[42] mostram excelentes resultados e em alguns caso com níveis de

compressão excelentes, utilizando compressão baseada em DCT (Discrete Cosine Transform);

quantização e codificação.

(Batista, [58])

Batista [58] propôs um método de compressão de sinais eletrocardiográficos baseada na

transformada do cosseno discreta. Em seu compressor específico para ECG, enfatiza-se a

qualidade da reconstrução, pois com uma PRD de apenas 3%, atingiu-se uma RC média de 13,3:1

e em alguns sinais com a mesma PRD chegou-se a RCs superiores a 40,0:1. O compressor

combina DCT, quantização uniforme com zona morta ótima e codificação de entropia. O

compressor utiliza compressão com perdas.

(POEL, [42])

POEL [42] propôs um método para a codificação e compressão de sinais eletrocardiográficos

com perda baseado na transformada discreta do cosseno, também com ótimos resultados.

(Choong et al, [72])

O trabalho apresenta a implementação de um compressor sem perdas utilizando o PPM com o

codificador aritmético implementado em FPGA. Contudo, por questões de simplificação o

método apresentado usa o modelo de Markov de ordem 0.

Page 77: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

57

(Zúñiga-Grajeda et al, [73])

Zúñiga-Grajeda et al propõem a implementação do PPMC em FPGA para incrementar a

velocidade de compressão. Por motivos de simplicidade o algoritmo PPMC é implementado

apenas em ordem 0 com dois dicionários de contexto, um pra ordem 0 e outro pra ordem -1.

É bastante complexo o projeto de hardware, por envolver conceitos pouco analisados pela

computação de alto nível tais como, questões de consumo, potência, tempo de processamento,

mobilidade, baixos recursos de memória e confiabilidade. Além do que, não raro, projetos na área

de hardware envolvem equipes multidisciplinares (equipe digital, equipe analógico, equipe de

software e de testes).

Os módulos desenvolvidos neste trabalho podem ser reutilizados em aplicações de hardware

bastando apenas o conhecimento de suas interfaces, além do que, modificações ou manutenções

em qualquer um dos módulos podem ser feitas sem interferência ao demais, desde que não mude

a interface.

O modelo PPM implementado possui um K máximo ajustável, bastando mudar seu valor na

cláusula apropriada, faz chaveamento de contexto, escape e possui limites ajustáveis em tempo de

execução. Os limites são fixados também em uma cláusula apropriada, e em tempo de execução

são renormalizados. O código aritmético implementado possui os limites de precisão máxima

igualmente ajustáveis; totalmente implementado sem uso de aritmética flutuante e com as

funções internas bem comentadas permitindo sua substituição ou manutenção de modo fácil e

rápido. O algoritmo manteve em sua lógica as características de generalidade podendo facilmente

ser reutilizado em outros projetos.

O exposto acima, reflete, portanto, o diferencial deste trabalho e sua importância para outros

trabalhos que podem utilizar os módulos ora desenvolvidos para objetivos outros que não os

deste trabalho.

Page 78: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

58

CAPÍTULO 3

3 Sistema Proposto

3.1 Modelo de referência implementado em JAVA

Uma vez escolhido o método de compressão adequado e suas características, foi implementado

um modelo de referência, utilizando linguagem de alto nível, JAVA, contendo o modelo PPM

Binário mais o codificador aritmético, utilizando código Gray e decomposição em planos de bits,

onde para cada plano se associa um modelo PPM binário.

3.2 Estudo comparativo preliminar

Com o modelo em alto nível, foram utilizados 16 sinais do banco de dados MIT-BIH Arrhythmia

Database, muitos dos quais escolhidos por serem dos mais difíceis de comprimir, devido à

presença de ruído ou arritmias severas, visando avaliar casos desafiadores para dispositivos

portáteis como Holters.

O MIT-BIH foi desenvolvido por pesquisadores que investigavam métodos para análise em

tempo real do ritmo cardíaco através de ECGs (1975 -1979), nos laboratórios do MIT

(Massachusetts Institute of Technology – Instituto de Tecnologia de Massachusets) e do BIH

(Beth Israel Hospital). Devido ao crescimento das pesquisas, os pesquisadores resolveram

compartilhar o banco com a comunidade cientifica e acadêmica, o que aconteceu em 1980

(primeira edição); em 1988 (segunda edição) e em 1992 (última edição, que pode ser adquirida na

internet desde 1997).

O banco tem sua maioria formada com dados colhidos dos próprios pacientes do BIH para

tratamento. O primeiro grupo de registros, escolhidos aleatoriamente, é numerado de 100 a 124

totalizando 23 registros por estar ausente os números 110 e 120.

Page 79: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

59

No segundo grupo os sinais são de pacientes portadores de fenômenos cardíacos raros e são

numerados de 200 a 234 totalizando 25 registros por ausência de 10 números. Cada registro

contem dois canais (canal 0 e canal 1), coletados quase simultaneamente, com 65024 amostras

por canal.

Foram utilizados 16 sinais do banco de dados MIT-BIH Arrhythmia Database, muitos dos quais

escolhidos por serem dos mais difíceis de comprimir, devido à presença de ruído ou arritmias

severas, visando avaliar o pior caso de compressão para dispositivos portáteis como Holters. O

sinal 215, canal 1, representado na Figura 3.1 foi o que resultou na menor compressão, com RC =

2,10:1 para K=7.

Foram testados valores de contexto máximo K entre 0 e 10. O gráfico representado na Figura 3.2,

mostra que a compressão melhora substancialmente quando se passa de K =0 para K=1 e se

mantém praticamente estável para K>1 decrescendo após o K=7. Com K=7 atinge-se a RC

máxima de 2,46:1.

Sinal 215 canal 1

3.1 – ECG 215 – primeiro canal – do MIT-BIH.

Para implementações em hardware, que exigem soluções com recursos reduzidos, o estudo

mostra que, ao se escolher um K=1, já se obtém uma compressão próxima da máxima para o

método proposto a um custo muito menor do que com o K ótimo, K=7. Com um K=7, a RC é de

2,46:1 utilizando 510 elementos no vetor para os contadores. Com K=4 o tamanho do vetor é de

62 elementos, ocorrendo assim, uma redução da quantidade de memória de aproximadamente

oito vezes em relação a K= 7, mantendo a compressão média em aproximadamente 2,44:1. Para

K=1, o tamanho do vetor cai para apenas seis elementos, cerca de 85 vezes menor do que com

K=7 e com RC = 2,38:1 muito próxima da máxima.

Page 80: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

60

0

0,5

1

1,5

2

2,5

Compressão / Médias de k´s

k0

k1

k2

k3

k4

k5

k6

k7

k8

k9

k10

3.2 – Gráfico da compressão percentual média.

O referido estudo foi realizado em um microcomputador com processador INTEL x86 Family 15

Model 4 Stepping 1 GenuineIntel ~2400 MHz, 512 MBytes de memória RAM, disco rígido

SATA com 80 GBytes, sistema operacional Windows XP 5.1.2600 Service Pack 2, Máquina

Virtual Java versão 1.5.0_06-b05 com o Eclipse 3.2.0. Um arquivo de 317Kbytes, com 65024

amostras é comprimido/descomprimido em aproximadamente 550 milisegundos, aí inclusos o

tempo de leitura e escrita em disco rígido. Este tempo inclui todas as etapas, com operações

muito rápidas quando comparadas às operações de leitura e escrita em disco.

Este estudo revelou que o método de compressão de arquivos utilizando código Gray,

decomposição em planos de bits e o algoritmo PPM indica que a melhor compressão ocorre

observando um contexto de tamanho máximo igual a sete, resultando em uma RC de 2.46:1. Isso

significa que o compressor proposto foi capaz de reduzir arquivos a menos da metade do seu

tamanho original, sem perda de informação.

Contudo, com a utilização de um contexto extremamente limitado, de tamanho máximo um, se

obtém uma RC = 2,38, muito próxima à máxima, com redução da ordem de 85 vezes nos

requisitos de memória.

Batista et al. [9] apresentam o melhor resultado com razão de compressão (RC) média de 2,69:1

utilizando P2 + Huffman; contudo, deve-se levar em consideração a dificuldade de

Page 81: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

61

implementação do algoritmo de Huffman em hardware pela necessidade de ordenação da árvore

binária e seu crescimento dinâmico, que torna muito complexa a descrição e síntese do circuito

por requerer técnicas como máquinas de estados.

Com uma RC média de 2.38:1 para um K=1, o método proposto atinge RC próxima da RC do

compressor P2 + Huffman abordado por Batista et al. [9], sendo porém, muito mais simples de

implementar por usar estruturas fixas e pouca memória, dispensando alocação dinâmica,

ordenamento e cálculos complexos.

O estudo revelou ainda que os resultados indicam que um esquema de modelagem avançado

produz uma compressão eficaz e foi publicado como artigo no IV Congresso Latino Americano

de Engenharia Biomédica [14].

3.3 Descrição do Sistema

As arquiteturas muitas vezes são construídas através de descrições informais e usualmente,

representadas de forma abstrata utilizando diagramas de caixa e linha, acompanhadas de texto

explicativo, num processo empírico. A informalidade destas descrições podem acarretar

complicações, tais como: o significado do projeto pode não ser claro; comprometimento da

consistência, completeza e correção dos diagramas, que não podem ser formalmente analisadas;

restrições arquitetônicas assumidas no início do projeto podem não ser asseguradas à medida que

o projeto/sistema evolui. São necessárias notações formais para descrições arquitetônicas e

técnicas de análise mais rigorosas, como por exemplo, as abordadas no item 2.3.4.

O projeto apresenta adequações dos modelos necessários ao processo de implementação da

arquitetura dedicada em hardware, procurando manter as características desejáveis a exemplo de

uma abordagem visando o reuso, facilitando projetos futuros, em que várias partes necessárias

para se produzir um sistema já existem e já foram testadas, restando somente colocá-las em

conjunto, ou criar outras partes, quando necessário. O reuso é um problema de funcionalidade e

não de estrutura.

Os módulos desenvolvidos possuem características como estilo de código, comentários,

especificação de testes e documentação, indispensáveis em um core reusável. A elaboração e

Page 82: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

62

testes foram realizados com ferramentas de EDAs (Eletronic Design Automation) disponíveis no

mercado e detalhadas a seguir.

Obter uma arquitetura de hardware e software adequadamente especificada é um fator crítico para

o sucesso no desenvolvimento de um sistema que contemple as necessidades de compressão do

sinal de eletrocardiograma.

O sistema completo de aquisição e compressão de sinais de ECG pode ser visto na Figura 3.3

abaixo.

Em um dos extremos da arquitetura temos a aplicação e no outro extremo os canais de sinais

analógicos. A aplicação é o sistema responsável pela exibição dos dados coletados no dispositivo

portátil. O dispositivo por sua vez, é responsável pelo processo de conversão de sinais analógicos

e compressão dos mesmos depois de digitalizados.

O processo de conversão é iniciado após a configuração do sistema portátil, em que é informada a

freqüência de amostragem e dos canais de atuação para o circuito controlador utilizando a

interface USB DLP-USB245M. Uma vez realizada a configuração, o controlador informa ao

conversor AD574A a taxa de amostragem em que ele deve operar e, ao multiplexador os canais

que serão utilizados na digitalização, já que há a possibilidade de conversão de até oito canais

Microcontrolador+

Compressor

3.3 - Arquitetura do Projeto.

Sistema Portátil

Memória

Page 83: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

63

distintos. A conversão é iniciada ao comando do usuário e, durante o processo de aquisição a

cada pulso de relógio os dados gerados pelo ADC são digitalizados e enviados ao compressor,

que após compactá-los, os envia ao micro-controlador que se responsabiliza pelo seu

armazenamento em memória.

Para cada dado recebido, o controlador anexa a indicação do canal de onde foi retirada a amostra

e envia este novo dado para armazenamento. É durante esse processo de conversão que há uma

completa interação entre todos os elementos da arquitetura. O término desse processo é dado após

o comando de encerramento enviado pelo usuário.

3.4 Ferramental utilizado

Para poder desenvolver o sistema proposto foi necessária a utilização de ferramentas variadas,

devido às necessidades de implementação específicas em cada etapa.

Linguagens de programação e linguagens de descrição de hardware:

1. VHDL;

2. Pascal;

3. JAVA;

A parte relacionada com o desenvolvimento em hardware foi necessária a utilização de CADs

(Computer Aided Design) específicos de EDAs.

• Quartus II da Altera;

• ModelSim SE 6.3

Para o desenvolvimento em software foram utilizados as ferramentas:

• Borland Delphi

• Eclipse SDK 3.3.1

Page 84: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

64

Outros recursos utilizados foram o SDL Suíte, DLP-USB245M Manual e o D2XX

Programmer's Guide.

3.5 Aplicação desenvolvida

A aplicação LASID-USB que controla o conversor foi desenvolvida em Delphi e está dividido na

parte de controle e aquisição dos dados e na parte de visualização dos dados capturados bem

como sua visualização em tempo real (SDL Suite).

A aplicação desenvolvida, Figura 3.4, está basicamente dividida em:

Controle de protocolo: Parte responsável por montar as palavras de controle e enviar para o

conversor AD no padrão do protocolo de comunicação desenvolvido, para determinar a

velocidade, freqüência de operação, os canais a serem amostrados, abrir e fechar porta de

comunicação, iniciar e parar a aquisição dos dados segundo o operador do sistema.

Dados

Inte

rfac

e U

SB

Validação e

TratamentoConversor AD

VisualizaçãoOff line

VisualizaçãoOn line

Tempo real

Controlede

Armazenamento

ControleProtocolo

ControleTEMPO

hardware software

3.4 – Software de controle – Conversor LASID USB 12Bits.

Controle de tempo: é o módulo responsável por controlar a quantidade de tempo em que o

sistema deve operar realizando a aquisição de dados. O tempo é definido em segundos, e ao seu

termino o sistema é automaticamente desligado, o que permite monitoramento por um período

Page 85: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

65

longo de tempo. Alternativamente o módulo também permite que seja determinado, ao invés de

tempo, um número de amostras predefinidas. Por exemplo, realizar aquisição de dados até que

sejam totalizadas 65000 amostras no arquivo.

Validação e Tratamento: Este módulo é responsável por fazer a leitura dos dados do buffer do

dispositivo USB e recompor as amostras verificando sua integridade e realizando tratamento de

erro a fim de detectar possíveis perdas de amostras. Ao final desse processo é contabilizado e

disponibilizado um relatório de verificação de integridade.

Controle de Armazenamento: Módulo responsável por receber os dados e realizar a identificação

e separação por canais ao mesmo tempo em que os grava em arquivo ou os envia para o módulo

de visualização em tempo real.

Visualização Off line: Módulo responsável por visualizar os sinais digitalizados a qualquer

tempo, ou imediatamente após o término da aquisição dos sinais ou abrindo um sinal já

existente e armazenado. Esse módulo implementado com o recurso das bibliotecas Tchar do

Delphi também permite a visualização individual ou simultânea dos oito canais amostrados.

Visualização On line: Este módulo permite a visualização do sinal ao mesmo tempo em que está

sendo amostrado. O recurso é implementado com o uso das bibliotecas SDL Component Suíte

que é uma coleção de componentes com apoio ao uso científico e da engenharia. O pacote

ChatPack contém suporte a gráficos e diagramas para uso com escalas arbitrárias, gráficos em 3D

que podem ser manipulados e rotacionados de forma interativa além de gráficos em tempo real.

3.6 Protótipo do Conversor A/D

O protótipo do conversor A/D é um dos principais elementos da arquitetura, pois ele engloba

todos os componentes físicos necessários para que a conversão de sinais analógicos em digitais

possa ser realizada.

Inicialmente o conversor A/D foi desenvolvido sem o uso do módulo compressor, Figura 3.5. O

módulo compressor, detalhadamente abordado mais a frente, foi desenvolvido para permitir sua

inclusão de forma “modularizada”. Como conseqüências diretas dessa decisão de projeto surgem

Page 86: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

66

vantagens como o reuso do compressor, sua troca de modo facilitado, o aperfeiçoamento do

sistema bem como a facilidade de sua manutenção.

3.5 – Protótipo Conversor AD sem o módulo compressor.

Em um dos extremos da arquitetura temos a aplicação e no outro extremo os canais de sinais

analógicos. A aplicação é o sistema responsável pelo início e fim de todo o processo de

conversão de sinais analógicos e também pelo tratamento dos dados digitalizados. A aplicação

utiliza a dll “d2xx.dll” para chamar as funções implementadas na interface USB.

O processo de conversão é iniciado quando a aplicação envia um sinal contendo a configuração

da freqüência de amostragem e dos canais de atuação para o circuito controlador utilizando a

interface USB DLP-USB245M. De posse desse sinal, o controlador informa ao conversor

AD574A a freqüência de amostragem que ele deve operar e informa ao multiplexador os canais

que serão utilizados na digitalização, já que há a possibilidade de conversão de até oito canais

distintos. A conversão é então iniciada e, durante o processo, a aplicação se responsabiliza pela

aquisição e o armazenamento dos dados digitalizados, que são gerados pelo conversor A/D a cada

pulso de relógio e enviados ao compressor, que após compactar os dados, os envia ao

controlador.

Para cada dado recebido, o controlador anexa a indicação do canal de onde foi retirada a amostra

e envia este novo dado à interface USB, que irá aguardar a próxima leitura e enviar os dados para

a aplicação. É durante esse processo de conversão que há uma completa interação entre todos os

elementos da arquitetura. O término desse processo ocorre após o envio de um sinal de

Page 87: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

67

encerramento pela aplicação, que então pode fazer a representação gráfica do sinal sob a forma

digital.

3.6.1 Interface USB

O trabalho utiliza uma interface de comunicação USB criada pela DLP Design que possui baixo

custo e uma alta usabilidade na construção dos mais variados tipos de sistemas digitais

(prototipagem de dispositivos). A interface DLP-USB245M, Figura 3.6, funciona basicamente

como uma fila do tipo FIFO, o que a torna um método fácil e eficaz na transmissão de dados

entre o host e o controlador.

3.6 - DLP-USB245M. Fonte [68].

Em sua composição consta um de uma EEPROM de referência 93C46 e um outro chip de nome

FT245BM cuja fabricação pertence à FTDI (Future Technology Devices International Ltd). A

EEPROM possibilita a customização de parte da configuração básica da interface, como a taxa de

transmissão e a forma de comunicação, informações como o PID e VID da interface USB, bem

como seu número serial. O responsável por implementar uma FIFO tanto de leitura como de

escrita que utiliza os 8 bits do barramento de comunicação de forma bidirecional é o FT245BM,

mostrado na Figura 3.7.

3.7 – FT245BM. Fonte[68].

O dispositivo DLP-USB245M, possui 24 pinos de comunicação. Destes pinos 8 são reservados

para a comunicação bidirecional, formando assim um barramento de 8 bits. Os pinos WR, RD#

Page 88: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

68

são pinos de entrada e servem para que um dispositivo externo dispare o ciclo de escrita ou de

leitura, respectivamente. Os pinos TXE# e RXF# indicam o estado atual da FIFO, ou seja, se a

FIFO de transmissão está cheia ou se a FIFO de recepção está vazia, respectivamente.

O DLP-USB245M é dotado de um cristal de quartzo com freqüência de 6Mhz. Através dele é

possível disparar os ciclos de leitura e escrita. A Figura 3.8 ilustra um ciclo de escrita no

dispositivo, bem como os tempos máximos e mínimos dos sinais, definidos pelo fabricante.

De acordo com o manual do usuário do dispositivo, a escrita de um byte na FIFO de transmissão

é feita através do barramento D[7..0] e do sinal WR.

O dado presente no barramento é escrito na FIFO na transição negativa do sinal WR. O sinal

TXE# indica quando a FIFO está cheia (TXE#=1).

3.8 - Ciclo de escrita do DLP-USB245M Fonte[69].

Page 89: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

69

O ciclo de leitura, Figura 3.9, se assemelha bastante com o de escrita, lembrando que se deve

seguir rigorosamente os tempos pré-estabelecidos pelo fabricante do dispositivo.

O sinal RXF# indica quando a FIFO está pronta para ser lida, ou seja, há no mínimo 1 byte na

FIFO (RXF# = 0). Jogando o sinal RD# para zero, faz-se com que os dados existentes no buffer

de recepção sejam lidos. Para a captação desses dados, o sinal de RD# dever permanecer em zero

por no mínimo 50 ns.

3.9 - Ciclo de leitura do DLP-USB245M. Fonte[69].

Page 90: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

70

3.6.2 Micro-controlador

O circuito controlador USB/Conversor A/D é implementado em um chip FPGA fabricado pela

ALTERA, o EPM7128SLC84-7 (no caso sem o módulo compressor), Figura 3.10. Para o

desenvolvimento desse controlador foi utilizada a ferramenta de desenvolvimento da ALTERA, o

QUARTUS II. Essa ferramenta integra descrição da entidade e do comportamento em linguagem

VHDL, depuração e simulação do circuito, validando a arquitetura.

3.10 - Descrição em VHDL do Protótipo do Conversor AD.

Os blocos principais nesse circuito controlador são:

• módulo de base de tempo, responsável por gerar as freqüências menores, a partir de um

cristal de 25Mhz, de 1MHz, 100KHz, 1KHz e assim obter um valor bastante aproximado

do solicitado pelo usuário;

Page 91: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

71

• controlador do conversor, responsável pelo gerenciamento dos dados fornecidos pelo

conversor A/D, que de posse da freqüência de amostragem, gerada pelo bloco anterior,

faz a leitura dos dados entregues pelo conversor A/D, na freqüência solicitada e nos

canais solicitados;

• controlador da USB, que envia os dados para o barramento USB reagrupando-os de 12

para 8 bits.

3.6.3 Conversor A/D

A conversão de sinais analógicos em seus correspondentes digitais é realizada através de técnicas

e algoritmos de conversão. O conversor utilizado neste trabalho, o AD574A, produzido pela

Analog Devices, Figura 3.11, e se baseia na técnica de aproximações sucessivas. A técnica de

aproximações sucessivas introduz a maneira de pesagem das balanças de fiel ao centro. Nestas

balanças, quando uma massa desconhecida (tensão amostrada) é colocada num dos pratos, o

operador começa por colocar no outro prato o maior peso-referência de que dispõe (o bit mais

significativo, ou MSB) e decide, observando o fiel, se ele é excessivo ou se tem que adicionar o

peso-referência seguinte.

3.11 - Conversor AD574A.

Na primeira hipótese, retira-se o peso-referência do prato (atribuindo zero ao bit). Na segunda

hipótese, o peso-referência utilizado permanece no prato (atribuindo um ao bit). Esta operação se

repete sucessivamente até chegar ao último peso-referência de que se dispõe (o bit menos

significativo, ou LSB).

Este conversor foi escolhido por sua estabilidade na conversão de sinais analógicos, contendo

uma variação máxima, para mais ou para menos, de 1 LSB, e por possuir 12 bits de resolução, o

Page 92: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

72

que significa que os dados convertidos representam a entrada analógica como uma fração de sua

escala, que varia de 0 a 4095, adequada para sinais de ECG, de acordo com as recomendações de

qualidade da AHA (American Heart Association) [75].

3.7 Compressor

O método de compressão apresentado consiste em codificar o sinal com o código Gray e em

seguida fazer sua decomposição em planos de bits, que são então codificados separadamente por

um PPM adaptado para alfabeto binário. Esta abordagem simplifica consideravelmente as

estruturas utilizadas reduzindo os requisitos computacionais do compressor e tornando possível

sua implementação em hardware inclusive utilizando FPGA.

Trabalhando com vetores fixos, sem alocação dinâmica de estruturas de dados e com um K

pequeno, mas suficiente para obter um bom nível de compressão, os requisitos de memória são

muito reduzidos, permitindo a implementação em hardware voltada para dispositivos portáteis.

Na Figura 3.12 é possível observar a organização do vetor de memória para um determinado K.

Apenas a informação dos contadores de ocorrências de 0’s e 1’s, Cont0 e Cont1 em cada contexto

precisa ser armazenada em memória, devido à organização rígida da estrutura. Pela posição dos

contadores, fica implícito que os dois primeiros correspondem aos contadores de 0 e 1 para K=0;

os dois próximos são os contadores de 0 e 1 no contexto 0, para K =1; os dois seguintes são os

contadores de 0 e 1 no contexto 1 para K =1, e assim sucessivamente. Quando K = c, onde c é

uma constante positiva, é necessário armazenar todos os contadores para K menor ou igual a c.

Cont 0 Cont 1 Cont 0 Cont 1 Cont 0 Cont 1

Contexto 0 Contexto 1

K= 0 K= 1 K= 2

Contexto 00

Cont 0 Cont 1

...

3.12 - Estrutura da memória.

Page 93: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

73

A parte inferior da Figura 3.12 ilustra a estrutura do vetor para K=0 com 2 células, K=1 com 6

células, sendo 2 do K=0 e 4 do K=1, e assim por diante.

Do acima exposto, utiliza-se a Equação 3.1 para mensurar o número de elementos do vetor fixo:

T= 2 ( K + 2) – 2 3.1

Na entrada do PPM é acoplado um módulo para converter o sinal para o código Gray, que é um

tipo de representação binária, onde dois números sucessivos diferenciam-se exatamente por um

bit. Alguns exemplos apresentados na Tabela 3.1.

3.1 – Código Gray.

Decimal Binário Gray 0 000 000 1 001 001 2 010 011 3 011 010 4 100 110 5 101 111 6 110 101 7 111 100

Em sinais digitais extraídos de sistemas físicos como eletrocardiogramas, os valores de duas

amostras adjacentes não variam muito devido à natureza contínua dos sinais, e assim, utilizando o

código Gray há uma redução acentuada na variação da representação binária entre amostras

sucessivas.

A decomposição em planos de bits permite que um sinal S de n bits por amostra seja dividido em

n seqüências binárias S0, S1, ..., Sn-1. Um bit na seqüência Si equivale ao i-ésimo bit da amostra na

mesma posição em S. A Figura 40 mostra a decomposição em planos de bits. Nesse exemplo,

Figura 3.13, cada amostra no sinal original possui 11 bits. Assim a decomposição gera 11 sinais

binários. O primeiro S0,é formado pelos bits menos significativos de cada amostra, e assim

sucessivamente.

Page 94: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

74

0 1 1 1 0 1 0 0 1 1 10 1 1 1 0 1 0 0 1 1 00 1 1 1 0 1 0 1 0 1 00 1 1 1 0 1 0 1 0 0 1

S0

S10 ...S1

...

Amostra 1

Amostra 2

Amostra 3

Amostra 4

3.13 - Decomposição em planos de bits.

O compressor foi dividido em módulos independentes. O diagrama em blocos do compressor

proposto está mostrado na Figura 3.14.

ARQUIVOORIGINAL

CÓDIGOGRAY

PPM + ARITIMÉTICO(COMPRESSOR)

ARQUIVOCOMPRIMIDO

DECOMPOSIÇÃOEM BITS

3.14 - Diagrama em blocos do compressor proposto

Page 95: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

75

O método de compressão proposto na Figura 3.15, consiste em codificar o sinal com o código

Gray e em seguida fazer sua decomposição em planos de bits para alimentar os modelos S0 a

S11, de compressores PPMs adaptados para alfabeto binário. Em seguida, na ordem em que

foram separados, os bits são enviados para o codificador aritmético,

ArithEncoder

BitOutput

Modelo S0PPM Bin

Modelo S1PPM Bin

Modelo S2PPM Bin

Modelo S3PPM Bin

Modelo S4PPM Bin

Modelo S5PPM Bin

Modelo S6PPM Bin

Modelo S7PPM Bin

Modelo S8PPM Bin

Modelo S9PPM Bin

Modelo S10PPM Bin

Modelo S11PPM Bin

ARQUIVOORIGINAL

CÓDIGOGRAY

Seg

men

taçã

o em

pla

no d

e bi

ts

ARQUIVOCOMPRIMIDO

Compressor

3.15 – Diagrama em blocos expandido do compressor.

Trabalhando com vetores fixos, o PPM Bin constrói o modelo estatístico e alimenta o módulo

responsável pela codificação aritmética. O módulo BitOutPut envia os dados para a saída onde se

obtém um sinal com bom nível de compressão e baixos requisitos de memória.

Page 96: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

76

3.7.1 Módulos do compressor

O compressor mostrado na Figura 3.15 possui uma configuração projetada para aumentar a RC.

Essa configuração usa o recurso de segmentação em planos de bits, apresentado na Figura 3.12,

código Gray e 12 modelos PPM binários. Os modelos são instanciados 12 vezes como cópia de

um mesmo objeto.

Componentes do sistema, de fato, são as classes:

1. Code Gray;

2. Segmentação em plano de bits;

3. PPM Binário

a. PPM Bin;

b. PPM Model;

4. Codificador Aritimético

a. ArithEncoder

b. BitOutPut;

3.7.1.1 Code Gray

Na Tabela 3.1 foi exemplificada a entrada em binário ou decimal de 0 até 7 e a saída em código

Gray. Dependendo da utilização do módulo é possível utilizá-lo com sua entradas em inteiro ou

em binário; contudo a função de conversão obedecerá a mesma lógica.

Page 97: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

77

3.16 – Code Gray para 4 bits.

A mesma funcionalidade descrita em VHDL obedece a Equação 3.2, exemplificada na Tabela

3.2, como alternativa a implementação da Figura 3.16.

B(i) xor 1)B(i G(i) += 3.2

3.2 – Código Gray para 4 bits.

Linha nº Comandos

1 G(0) <= B(1) xor B(0);

2 G(1) <= B(2) xor B(1);

3 G(2) <= B(3) xor B(2);

4 G(3) <= B(3);

3.7.1.2 Segmentação em plano de bits

Na segmentação, utilizamos um MUX controlado de modo a fazer a leitura seqüencial das

entradas e no tempo certo entregar os bits lidos no módulo PPM correto, de 0 a 11, conforme

visto na Figura 3.16.

3.7.1.3 PPM Binário

O PPM Binário está dividido em duas classes, a PPM Bin e PPM Model.

Page 98: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

78

Modelo PPM

PPM Bin

Stream de bits Saida (Low,High,Total)

3.17 – PPM binário

PPM Bin é a entidade responsável por realizar o controle do modelo PPM, Figura 3.17,

atualização e envio das estatísticas ao codificador aritmético, chaveamento de contexto e escape.

Ele interage diretamente com o PPM Model.

PPM Model é a parte responsável por realizar todo o levantamento estatístico dos símbolos que

apareceram na mensagem, Figura 3.17. Esse modelo é de difícil implementação no PPM

genérico, por precisar de sistemas com complexas estruturas de dados. Fato simplificado com o

uso do alfabeto binário, necessitando para isso a estrutura de memória exemplificada na Figura

39.

3.7.1.4 Codificador Aritmético

Está dividido em duas partes, o ArithEncoder e o BitOutPut (Figura 3.18).

ArithEncoder BitOutput

Entrada (Low, ,High, Total) Saída seq. inteiros

3.18 – Codificador Aritmético.

Page 99: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

79

ArithEncoder é a parte responsável por realizar toda a aritmética de alta precisão em que os

intervalos são sucessivamente criados para gerar a codificação.

O ArithEncoder possui alguns aspectos de implementação para evitar os aspetos indesejáveis

discutidos na seção 2.5.8.

O BitOutPut é responsável por guardar os bits enviados para a saída pelo ArithEncoder em um

buffer de 8 bits. Os bits são armazenados e obedecendo algumas regras vão se acumulando até

que sejam enviados para a saída do codificador aritmético definitivamente. Ele acumula os bits

enviados por half-point zooming ou os acumulados seguidamente por quarter-point zoomings.

3.7.2 Implementação do compressor

Com a arquitetura já definida e os elementos componentes implementados e testados um a um

por ferramental específico foi possível a simplificação da arquitetura exposta na Figura 3.15, que

teve por objetivo a avaliação do comportamento dos componentes do compressor operando em

conjunto.

ARQUIVOCOMPRIMIDO

Modelo PPM

PPM Bin

Stream de bits (Low,High,Total)

ArithEncoder

BitOutput

3.19 – Compressor PPM binário com um modelo.

A Figura 3.19 mostra o compressor PPM binário contendo um modelo estatístico que recebe um

stream de bits e então procede com o levantamento estatístico enviando para o Codificador

Aritmético um intervalo (Low, High, Total), um para cada símbolo de entrada. O codificador

Page 100: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

80

aritmético por sua vez, não envia para a saída um elemento por intervalo (Low, High, Total), que

recebeu. Dependendo da quantidade de half-point zooming ou quarter-point zoomings o

codificador pode até enviar em um único ciclo de clock mais de uma saída.

Page 101: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

81

CAPÍTULO 4

4 Resultados Obtidos

Os resultados ora apresentados são baseados no que foi produzido nas principais etapas do

projeto em hardware, objetivando não apenas sua correção funcional, mas também questões

como reutilização de componentes, e parametrizável com bastante facilidade de manutenção.

Serão descritos os resultados obtidos em cada etapa de desenvolvimento.

A Verificação funcional, secção 2.3.4, foi uma etapa bastante árdua como processo de

demonstração do correto funcionamento dos modelos apresentados, chegando a alguns casos a

consumir cerca de 70% do esforço de projeto e os testbenches representando até 80% do volume

total de código.

No desenvolvimento desse projeto foi utilizada a ferramenta de desenvolvimento da ALTERA, o

QUARTUS II, ferramenta que integra a descrição da entidade e do comportamento em linguagem

VHDL, depuração e simulação do circuito, validando a arquitetura. Contudo para a validação do

módulo compressor será necessário o uso de ferramental auxiliar de simulação para validar a

arquitetura, como o ModelSim previamente citados no item 3.4.

4.1 Protótipo Conversor AD e o Aplicativo LASID-USB

O protótipo do conversor foi implementado inicialmente no dispositivo EPM 7128SLC84-7 (sem

o módulo compressor), conforme visto na Figura 4.1.

Page 102: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

82

4.1 - EPM 7128SLC84-7

A Figura 4.2 mostra em detalhes a implementação do conversor como protótipo em uma caixa

plástica, contudo pode ser observado que as dimensões do circuito, cabem perfeitamente em um

dispositivo com dimensões bastante reduzida da ordem de alguns poucos centímetros.

4.2 – Protótipo Conversor AD.

Para controlar o protótipo do conversor foi necessário desenvolver uma API em Delphi,

Aplicativo LASID USB, responsável pela aquisição e visualização em tempo real dos dados

enviados pelo protótipo do conversor com o uso de geradores de funções, fornecendo os sinais

elétricos com a possibilidade de variação de amplitude, freqüência e tipos de formas de onda,

como ondas do tipo quadradas, triangular ou dente de serra e senoidal. Ao final da aquisição, é

Page 103: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

83

realizado uma etapa de verificação de integridade do sinal colhido e então o sinal é separado por

canal, um arquivo para cada canal.

Esses arquivos são separados observando a seguinte nomenclatura: Sinal completo (todos os

canais): “nome do experimento.txt”; Sinal separado por canais: “nome do experimento + canal +

data + hora + mim + seg . txt”; Verificação de integridade: “nome do experimento + resumo +

data + hora + mim + seg . txt”.

O arquivo é separado em 8 novos arquivos, cada um contendo os dados de seu respectivo canal,

desprezando o cabeçalho primeiro dígito do dado, que representa o canal convertido. No exemplo

da Figura 4.3, os dois primeiros bytes 01 e B0 são combinados 01B0 e o primeiro dígito

representa o canal ao qual esta informação pertence, no caso 1B0 está relacionado com o arquivo

“Teste1_Ch_1_2-3-2007_10-19-54.txt”.

4.3 – Exemplo dos arquivos gerados.

A Figura 4.4 ilustra um teste realizado através de verificação funcional onde a conversão e

plotagem do sinal foram realizadas sobre uma função senoidal, com amplitude próxima a mais ou

menos 3,0 Volts. A Arquitetura de software desenvolvida também contempla um módulo para

plotagem em tempo real dos dados com uso de estruturas FIFO.

Page 104: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

84

4.4 – Verificação de aquisição de sinal senoidal.

4.2 Validação dos Módulos do compressor

A validação dos módulos do compressor, devido a complexidade natural imposta pelo método e

ao elevado volume de dados gerada em todas as etapas da codificação, foi realizada com

testbench seguindo a metodologia apresentada na Figura 2.13 [17] como referência e ainda,

utilizando como ferramenta de simulação o ModelSim SE PLUS 6.3 da Mentor Graphics

Corporation.

Outro complicador é a compressão em tempo real, que necessitou um tratamento mais cuidadoso

para que as reações dos estímulos oriundos do seu ambiente ocorressem em prazos específicos,

revelando assim, a dicotomia existente entre os elementos teóricos e a prática no mundo real.

Cada um dos componentes do compressor foi utilizado isoladamente para garantir a integridade

de cada um. Para cada módulo foi criada uma Entidade de Teste específica. Uma vez cada

módulo validade eles foram unidos numa versão mais simples do codificador, exposto na Figura

3.19. Agora com os elementos unidos, foi criada uma entidade de teste para validar o

comportamento de todo o conjunto. O modelo de referencia em JAVA com 12 modelos PPM,

mostra que os níveis de compressão são interessantes e indicam a viabilidade do sistema. Como

cada módulo foi validado separadamente, a junção entre os módulos pode ocorrer de acordo com

as especificações de cada projeto, no entanto um segundo modelo de referencia em JAVA foi

Page 105: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

85

criado, este agora para validar o modelo em hardware contendo um modelo PPM, apresentado

na Figura 4.5.

Modelo PPM

PPM Bin ArithEncoder

BitOutput

PPM Codificador Aritmético

A

J

Modelo Alto nível - JAVA

Modelo PPM

PPM Bin ArithEncoder

BitOutput

PPM Codificador Aritmético

A

V

Modelo Baixo nível - VHDL

ENTRADA

SAÍDA

ENTRADA

SAÍDA

4.5 – Estímulos no modelo alto e baixo nível.

Submetendo na entrada do modelo de alto nível como estímulo de entrada o arquivo “A”,

obtemos na saída do modelo um arquivo “J”. Fazendo o mesmo procedimento no modelo de

baixo nível VHDL, como mesmo arquivo de entrada, obtemos o arquivo de saída “V”. Tomando

por base que o modelo de alto nível está correto e serve como referencia para o modelo de baixo

nível, podemos concluir que o modelo de baixo nível é válido caso os arquivos “J” e “V” sejam

exatamente idênticos.

No modelo de alto nível JAVA, apresentado na Figura 4.5, foram submetidos 16 sinais do MIT-

BIH, e colhidos 16 arquivos comprimidos como saída, para servirem de comparação com os

resultado apresentados no item 4.2.3.

Page 106: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

86

4.2.1 Validação do PPM

Para a validação do módulo PPM foi criado uma entidade de teste test_ppm.vhd apresentado na

Figura 4.6 para testar a descrição do módulo PPM ppmen.vhd.

Entidade Sob Teste

Arquivosde

entrada

Entidade de projeto para o Teste

Arquivosde

saída

CheckerDriver

4.6 – Testbench do módulo PPM.

O modelo de referência em alto nível JAVA foi alimentado com os sinais de ECG do MIT-BIH,

105, 115, 119, 205, 215, 220, 230, todos com os dois canais (canal 0 e canal1), produzindo saídas

da forma (Low, High, Total), um arquivo para cada canal de todos os sinais.

Alimentando a entidade de projeto para o teste test_ppm.vhd com os mesmos sinais de entrada o

driver da entidade de teste converte os dados colhidos do arquivo em estímulos para a entidade

sob teste, no caso ppmen.vhd. À medida que os estímulos vão produzindo resultados o checker

vai verificando e armazenando a saída em disco ao mesmo tempo em que os estímulos de reposta

também são exibidos na tela em forma de onda, apresentados na Figura 4.7, em que os sinais que

refletem a saída estão indicados como low1,high2 e total3 (as três primeiras linhas) . O sinal

arithClose é responsável pela finalização do codificador aritmético quando seu valor vai para ‘1’,

o que acontece ao final da compressão quando o PPM envia o último conjunto low, high e total.

O sinal arithenable é responsável por habilitar o codificador aritmético e deve estar ativo em ‘1’

durante todo o processo de compressão. O sinal ppmEnable habilita o módulo PPM para iniciar a

compressão ativo em ‘1’ e o encoderClose é ativado quando do fim da última amostra e é ativo

Page 107: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

87

em ‘1’ . Os dados são alimentados no compressor com o sinal bitIn, o qual aceita um stream de

bits como entrada.

4.7 – Forma de onda do PPM gerada no testbench.

Uma vez finalizado o teste, a comparação é feita de forma automática entre a saída do modelo de

referencia em alto nível com a saída do modelo de baixo nível. Em todos os casos, o modelo sob

teste correspondeu integralmente ao modelo de referência.

Page 108: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

88

4.2.2 Validação do Codificador Aritmético

Para a validação do módulo do codificador Aritmético foi criado uma entidade de teste

test_arithen.vhd apresentado na Figura 4.8 para testar a descrição do módulo codificador

aritmético arithen.vhd.

Entidade Sob Teste

Arquivosde

entrada

Entidade de projeto para o Teste

Arquivosde

saída

CheckerDriver

4.8 – Testbench do codificador Aritimético.

O modelo de referência em alto nível JAVA foi alimentado com os sinais já citados

anteriormente, a diferença agora é que o conjunto de testes gerado é na forma da entrada do

arithen, ou seja, (Low, High, Total).

Alimentando a entidade de projeto para o teste test_arithen.vhd com os mesmos sinais de entrada

o driver da entidade de teste converte os dados colhidos do arquivo em estímulos para a entidade

sob teste, no caso arithen.vhd. À medida que os estímulos vão produzindo resultados o checker

vai verificando e armazenando a saída em disco ao mesmo tempo em que os estímulos de reposta

também são exibidos na tela em forma de onda, apresentada na Figura 4.9. Podemos notar como

entrada deste módulo os sinais low1, high2 e total3 ao passo em que a saída pode ser observada

nos sinais saída, saida2 e saida3. As saídas ficam ativas quando os sinais saidaativa, saida2ativa

e saida3ativa ficam ativas em ‘1’.

Page 109: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

89

É possível perceber na forma de onda os estímulos de entrada para o codificador aritmético na

correta seqüência de low, high e total respeitada as cadências que o processo exige, sem com isso

causar nenhum atraso. Os sinais do MIT-BIH com 65024 amostras de entrada produzem uma

quantidade grande de sinais na saída, e todos iguais à saída gera pelo modelo de alto nível em

JAVA.

4.9 - Forma de onda do codificador aritmético gerada no testbench.

Page 110: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

90

Uma vez finalizado o teste, a comparação é feita de forma automática entre a saída do modelo de

referencia em alto nível com a saída do modelo de baixo nível. Em todos os casos, o modelo sob

teste correspondeu integralmente ao modelo de referência.

4.2.3 Validação do Compressor com um modelo PPM

Para a validação do módulo do compressor PPM Binário, foi criado uma entidade de teste

tcompressor_ppm_arith_estrutural.vhd apresentado na Figura 4.10 para testar a descrição do

módulo codificador aritmético compressor_ppm_arith_estrutural.vhd.

Arquivosde

entrada

Entidade de projeto para o Teste

Driver

Arquivosde

saída

Checker

Entidade Sob Teste

4.10 - Testbench do compressor PPM binário com um modelo.

O modelo de referência em alto nível JAVA foi alimentado com os sinais já citados

anteriormente, a diferença agora é que o conjunto de testes gerado é na forma de streams de bits

na entrada e uma seqüência de inteiro na saída que é codificada em binário para gravação em

arquivos ou memória.

Alimentando a entidade de projeto para o teste tcompressor_ppm_arith_estrutural.vhd com os

mesmos sinais de entrada o driver da entidade de teste converte os dados colhidos do arquivo em

estímulos para a entidade sob teste, no caso compressor_ppm_arith_estrutural.vhd. À medida

Page 111: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

91

que os estímulos vão produzindo resultados o checker vai verificando e armazenando a saída em

disco ao mesmo tempo em que os estímulos de reposta também são exibidos na tela em forma de

onda, apresentada na Figura 4.11. Como entrada temos o sinal bitIn em que recebe um stream de

bits. O processso de compressão e iniciado com o sinal ppmEnable indo para ‘1’ e encoderClose

indo para ‘0’. A medida em que o stream de bits é processado, os sinais agora internos low1_int,

high2_int e total3_int vão alimentando o codificador aritimético e assim obtendo a saida nos

sinais saída, ,saida2 esaida3 que quando ativos apresentam um pulso em saidaativa , saida2ativa

ou saida3ativa.

4.11 - Forma de onda do compressor PPM Binário gerada no testbench.

Page 112: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

92

Uma vez finalizado o teste, a comparação é feita de forma automática entre a saída do modelo de

referencia em alto nível com a saída do modelo de baixo nível. Em todos os casos, o modelo sob

teste correspondeu integralmente ao modelo de referência.

4.3 Síntese

A seguir, é mostrado o resultado da síntese de cada módulo e configuração do compressor

abordado no trabalho. As tabelas estão dividas por módulo componente, família, dispositivo e

quadro resumo exibido pelo Quartus II. Na Tabela 4.1 é mostrado a síntese do conversor AD em

várias famílias da Altera a fim de observar aspectos relacionados à alocação de espaço para o

projeto e comparar com os outros módulos do projeto.

4.1 – Síntese Conversor AD.

CONVERSOR AD

Família/

Dispositivo

Resumo

MAX

EPM240T100C3

Page 113: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

93

FLEX10K

EPF10K10LC84-3

MAX7000B

EPM7256BTC100-5

MAX7000S

EPM 7128SLC84-7

Page 114: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

94

CICLONE

EP1C3T100C6

CICLONE II

EP2C5T144C6

STRATIX

EP1S10F484C5

Page 115: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

95

STRATIX II

EP2S15F484C3

4.2 – Síntese do módulo PPM.

PPM

Família/

Dispositivo

Resumo

CICLONE

EP1C12Q240C6

Page 116: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

96

CICLONE II

EP2C20F256C6

Na tabela 4.2 podemos observar a implementação do módulo PPM na família Ciclone e Ciclone

II, dispositivo de baixo custo da Altera sendo um dos menores e mais baratos que permitem o

processamento de sinais.

4.3 – Síntese do módulo Codificador Aritmético.

CODIFICADOR ARITIMÉTICO

Família/

Dispositivo

Resumo

CICLONE II

EP2C50F484C6

Page 117: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

97

Na tabela 4.3 temos a implementação do codificador aritmético, que também coube num Ciclone

II apesar as sua lógica configurável e com uso de uma aritmética de inteiros com um range

elevado.

A Tabela 4.4 mostra a síntese do modelo proposto na Figura 3.19, em que obtemos um

compressor com um modelo PPM binário aliado ao codificador aritmético e testado no item

4.2.3.

4.4 – Síntese do módulo compressor com um modelo PPM.

COMPRESSOR COM UM PPM E

UM CODIFICADOR ARITIMÉTICO

Família/

Dispositivo

Resumo

CICLONE II

EP2C70F672C6

A Tabela 4.5 mostra a síntese do modelo proposto na Figura 3.15, item 3.7, em que obtemos um

compressor com doze modelos PPM binário aliado ao codificador aritmético. Os componentes

foram sintetizados em um único dispositivo EP2S180F1020C3 da família Stratix II da Altera.

Page 118: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

98

4.5 – Síntese do Compressor com 12 modelos.

COMPRESSOR COM DOZE MODELOS PPM E

UM CODIFICADOR ARITIMÉTICO

Família/

Dispositivo

Resumo

STRATIX II

EP2S180F1020C3

A Tabela 4.6 contém como resultado a síntese do circuito completo (Controlador do Conversor,

Controlador USB e Compressor) em um Circuito Integrado FPGA; dispositivo EP2S180F1020C3

da família Stratix II, demonstrando assim exeqüibilidade da arquitetura proposta inicialmente e o

sucesso de cata etapa vencida , dentre elas o mapeamento das classes do código JAVA do PPM

binário em funções VHDL; a análise dos requisitos computacionais, envolvendo a descrição

informal do compressor e de suas funcionalidades; a definição da arquitetura do compressor;

especificação em VHDL dos blocos e sub-blocos componentes da arquitetura.

Page 119: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

99

4.6 – Síntese do compressor com 12 modelos mais o conversor AD.

COMPRESSOR COM DOZE MODELOS PPM E

UM CODIFICADOR ARITIMÉTICO + CONVERSOR AD

Família/

Dispositivo

Resumo

STRATIX II

EP2S180F1020C3

Page 120: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

100

CAPÍTULO 5

5 Conclusão

A transformação mundial vivenciada atualmente no setor de tecnologia acarretou uma crescente

demanda na produção de hardware e software para sistemas embarcados, arquiteturas dedicadas

ou mesmo sistemas eletrônicos de um modo geral, exigindo assim, que o tempo de projeto seja

cada vez mais curto.

Este trabalho apresentou uma proposta de uma arquitetura completa para aquisição e compressão

de sinais usados em holters. No método de compressão sugerido, os arquivos utilizavam código

Gray, decomposição em planos de bits e o algoritmo PPM com uso de codificador aritmético.

Os resultados indicam que a melhor compressão ocorre observando um contexto de tamanho

máximo igual a sete, resultando em uma RC de 2.46:1. Isso significa que o compressor proposto

foi capaz de reduzir arquivos a menos da metade do seu tamanho original, sem perda de

informação. Contudo, com a utilização de um contexto extremamente limitado, de tamanho

máximo um, se obtém uma RC = 2,38, muito próxima à máxima, com redução da ordem de 85

vezes nos requisitos de memória.

Com uma RC média de 2.38:1 para um K=1, o método proposto atinge RC próxima da RC do

compressor P2 + Huffman abordado por Batista et al. [9], sendo, porém, muito mais simples de

implementar por usar estruturas fixas e pouca memória, dispensando alocação dinâmica,

ordenamento e cálculos complexos.

O modelo PPM implementado neste trabalho, mesmo em FPGA e descrito em VHDL, possui

chaveamento de contexto em tempo de execução, fazendo o K variar do maior valor ao menor na

procura pelo contexto em memória. Possui ainda o K máximo configurável, bastando para isso

Page 121: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

101

modificar a cláusula generic da descrição VHDL correspondente informando o novo K máximo;

possui mecanismo de escape implementado; outro diferencial é a renormalização dos contadores

em tempo de execução, pois quando os contadores chegam ao limite o modelo os reconfigura

automaticamente..Todos esses detalhes de implementação fazem com que este dispositivo seja

passível de reuso em outros projetos, necessitando apenas instanciar o componente já pronto e

testado.

De igual sorte o codificador aritmético, com uso apenas de aritmética de inteiros, sem uso de

aritmética flutuante, mantém a generalidade uma vez que possui sua precisão configurável,

podendo colocar o maior valor do range dos inteiros que a plataforma em questão suportar. Além

disso possui todo o código comentado o que permite uma boa manutenção e até um nível de

modularização por permitir uma eventual troca de alguma função sem que haja

comprometimento de qualquer outra parte do sistema.

Os resultados indicam ainda que um esquema de modelagem avançado produz um sistema

completo de aquisição e compressão eficaz que trazem uma série de benefícios adicionais,

podendo ser implementado em hardware inclusive com inovações ainda não abordadas.

Dentre as etapas superadas nesse trabalho estão: O mapeamento das classes do código JAVA do

PPM binário em funções VHDL; Análise dos requisitos computacionais, envolvendo a descrição

informal do compressor e de suas funcionalidades; Definição da arquitetura do compressor;

Especificação em VHDL dos blocos e sub-blocos componentes da arquitetura; Simulação e

síntese dos blocos e sub-blocos usando ferramental específica de CAD para FPGA; Síntese do

circuito completo (Controlador do Conversor, Controlador USB e Compressor) em Circuito

Integrado ou Circuitos Integrados FPGA; Implementação de protótipos que implementem partes

da arquitetura proposta para demonstrar sua exeqüibilidade;

Como trabalhos futuros pode se sugerir a substituição da divisão de inteiros necessária ao calculo

do range no codificador aritmético por uma função especifica previamente implementada com a

finalidade de aumentar a velocidade do sistema, uma vez que essa divisão mesmo que de inteiros

é o elemento limitador do sistema por ter uma precisão muito grande.

Page 122: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

102

O compressor PPM binário com 12 modelos PPM em paralelo foi descrito em diagrama

esquemático do Quartus II, que devido ao uso dos módulos individuais já validados, podem ser

utilizados como componentes nesse ou em outros trabalhos sem qualquer esforço adicional.

Como sugestão poderia se implementar outro compressor com os módulos existentes assumindo

uma nova configuração onde características ainda não exploradas para a redução da surpresa do

sistema fossem atacadas.

Outro ponto a ser melhorado o espaço ocupado pelo sistema que pode ser diminuído com troca

das estruturas de repetição por subcircuitos que possam ser utilizados várias vezes dentro da

lógica do compressor implementado.

Neste trabalho, foram abordados assuntos dos mais diversos; integrando os ramos da medicina,

física, matemática e ciências da computação. Mais que o sistema de aquisição e compressão de

sinais de eletrocardiograma o estudo torna evidente que o uso do conhecimento adquirido ao

longo dos anos deve ser dirigido para o bem da sociedade com a aplicação de pesquisas

multidisciplinares juntando áreas, hoje isoladas, para a produção de novos equipamentos, técnicas

ou métodos.

Na área de computação, passamos por conceitos relacionados desde a compressão,

processamento de sinais até sistemas digitais onde o conceito de cores foi amplamente usado,

ressaltando sua importância no mercado mundial de semicondutores, devido a possibilidade de

reuso dos módulos projetados, testados e otimizados que permitem, que projetos cada vez mais

complexos sejam desenvolvidos em uma janela de tempo menor, time-to-market.

Foi possível entender a enorme dimensão especial que envolve o projeto de sistemas digitais e

assim o quanto de trabalho que ainda é preciso para auxiliar a comunidade desenvolvedora

devido as muitas ferramentas necessárias como simuladores, compiladores, montadores e pouco

disponibilizadas em software livre.

Desse modo, é possível afirmar que o sistema ora estudado, modelado e apresentado no presente,

atende as finalidades para as quais foi projetado.

Page 123: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

103

6 Referências

1. Husoy, J. H.; And Gjerde, T. (1996) “Computationally Efficient Sub-band Coding of ECG Sig-nals.” Medical

Engineering & Physics, v. 18, n. 2, p. 132-142.

2. Womble, M. E.; Halliday, J. S.; Mitter, S. K.; Lancaster, M. C.; And Triebwasser, J. H. (1977) “Data Compression for Storing and Transmitting ECG’s/VCG’s.” Proceedings of the IEEE, v. 65, n. 5, p. 702-706.

3. Antoniol, G.; And Tonella, P. (1997) “EEG Data Compression Techniques.” IEEE Transactions on Biomedical

Engineering, v. 44, n. 2, p. 105-114..

4. Batista, L. V.; Melcher, E. U. K.; And Carvalho, L. C. (2001) “Compression of ECG Signals by Optimized Quantization of Discrete Cosine Transform Coefficients.” Medical Engineering & Physics, v. 23, n. 2, p. 127-134.

5. Jalaleddine, S. M. S; Hutchens, C. G.; Strattan, R. D.; And Coberly, W. A. (1990) “ECG Data Compression

Techniques - A Unified Approach.” IEEE Transactions on Biomedical Engineering, v. 37, n. 4, p. 329-343. 6. Lee, H.; And Buckley, K. M. “ECG Data Compression Using Cut and Align Beats Ap-proach and 2-D

Transforms.” IEEE Transactions on Biomedical Engineering, v. 46, n. 5, p. 556-564, March 1999. 7. Koski, A. (1997) “Lossless ECG Encoding.” Computer Methods and Programs in Biomedicine, v. 52, n. 1, p. 23-

33. 8. Moody, G. B.; And Mark, R. G. (1988) MIT-BIH Arrhythmia Database Directory. Second edition, BMEC

TR010 (revised), Massachusetts Institute of Technology, Biomedical Engineering Center, and August. 9. Batista, L.V.; Meira, M.M.; Patrício, F.Z.A.; Carvalho, L.C.; e lima, J.A.G. (2003) “Compressão sem Perdas de

Sinais Eletrocardiográficos” Workshop de Informática Médica. 10. Bell, T., Cleary, J., Witten, I. (1984), “Data compression using adaptive coding and partial string matching”.

IEEE Transactions on Communications, v. 32, n. 4, pp. 396-402.

11. Moffat, A. (1990), “Implementing the PPM data compression scheme”. IEEE Transactions on Communications, v. 38, n.11, pp. 1917-1921.

12. Shannon, C. E. (1948) “A Mathematical Theory of Communication.” Bell Syst. Tech. J., v. 27, p.379-423. 13. ALTERA. MAX+PLUS II: Programmable Logic Development System & Software– Data Sheet v8.0. Altera

Corporation, 1998. 14. Souza, A.R.C.; Marques; J. R. T.; Batista, L.V.; e lima, J.A.G. (2007) “Compressão Contextual sem Perdas de

Eletrocardiogramas utilizando Recursos Reduzidos de Memória” Congresso Latino Americano de Engenharia

Biomédica.

15. ANALOG DEVICES. AD574A User Manual. 16. BEZERRA, Cyro; LACERDA, Emmanuel. Implementação de um Controlador em FPGA para barramento USB.

2005. 93f. Trabalho de Conclusão de Curso (Conclusão do Curso de Ciências da Computação). Centro Universitário de João Pessoa – UNIPÊ.

Page 124: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

104

17. D´AMORE, Roberto. VHDL: Descrição e Síntese de Circuitos Digitais. Rio de Janeiro: Ed. LTC, 2005. 276p. 18. DEITEL, H.M.; DEITEL, P.J. Java: Como Programar. Porto Alegre: Ed. Bookman, 2003. 1386p. 19. DLP. DLP-USB245M User Manual. Developer Design Ltd, 2002. 20. ERCEGOVAC, M.; LANG, T.; MORENO, J.H. Introdução aos Sistemas Digitais. Porto Alegre: Ed. Bookman,

2000. 453p. 21. FTDI. D2XX Programmer’s Guide. Future Technology Devices International Ltd, 2004. 22. GILBERT, David. The JFreeChart Class Library Developer Guide. 2005. 564p. 23. Linguagem de Descrição de Hardware. Disponível em:

<http://www.dee.ufcg.edu.br/~scaico/unipe/sd.htm/fpga1.htm>. Acesso em: 01 set. 2006. 24. Lógica Programável e Dispositivos Lógicos Programáveis. Disponível em:

<http://www.dee.ufcg.edu.br/~scaico/unipe/sd.htm/fpga2.htm>. Acesso em: 01 set. 2006. 25. PERRY, Douglas. VHDL: Programming by Example. New York: Ed. McGrawHill, 2002. 476p. 26. SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Ed. Pearson, 2003. 604p. 27. TOCCI, Ronald J.; WIDMER, Neal S. Sistemas Digitais: Princípios e Aplicações. São Paulo: Ed. Prentice Hall,

2003. 776p. 28. TORRES, Gabriel. Hardware: Curso Completo. Rio de Janeiro: Ed. Axcel Books, 2001. 1440p. 29. VASCONCELOS, Laércio. Hardware Total. São Paulo: Ed. Makron Books, 2002. 1505p. 30. ZELENOVSKY, Ricardo; MENDONÇA Alexandre. PC: Um Guia Prático de Hardware e Interfaceamento. Rio

de Janeiro: Ed. MZ Editora, 2002. 1031p. 31. SBC (Sociedade Brasileira de Cardiologia). Diretriz de interpretação de eletrocardiograma de repouso. Arquivo

Brasileiro de Cardiologia, volume 80, (suplemento II), 2003. 32. BARCELLOS, Gilberto Alt. ACHADOS Eletrocardiográficos na Gravidez Normal Revista da Sociedade de

Cardiologia do Rio Grande do Sul - Ano XIV nº 04 Jan/F Fev/ev/Mar/Abr 2005 33. ROSA, Agostinho. Micro análise de alta resolução do electrocardiograma. Lisboa: Universidade Técnica de

Lisboa -Instituto Superior Técnico, 2003. 34. GUYTON, A.C. & HALL, J.E. Tratado de Fisiologia Médica. 6ª edição, Rio de Janeiro Editora Guanabara,

1981. 35. GUYTON, A.C. & HALL, J.E. Tratado de Fisiologia Médica. 10ª edição, McGraw-Hill Interamericana ,2001.

ISBN 970-10-3599-2 36. LAMA T, Alexis. Einthoven: El hombre y su invento. Rev. méd. Chile, feb. 2004, vol.132, no.2, p.260-264.

ISSN 0034-9887. 37. MACIEL, Rubens. Willem Einthoven. De Um Começo Árduo Ao Prêmio Nobel - Arquivos Brasileiros de

Cardiologia - http://publicacoes.cardiol.br/caminhos/015/default.asp, 1996 38. http://nobelprize.org/nobel_prizes/medicine/laureates/1924/einthoven-bio.html - site da FUNDAÇÃO NOBEL:

Page 125: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

105

Acessos em: fevereiro de 2008. 39. WOLF, R., CAMACHO, A.A. y SOUZA, R.C.A. Computerized electrocardiography in dogs. Arq. Bras. Med.

Vet. Zootec. [online]. 2000, vol. 52, no. 6 [citado 2008-02-23], pp. 610-615. Disponible en: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0102-09352000000600010&lng=es&nrm=iso>. ISSN 0102-0935. doi: 10.1590/S0102-09352000000600010

40. RAMOS, Ângela Patrícia, SOUZA, Bolívar Saldanha. Eletrocardiograma: princípios, conceitos e aplicações.

Centro de Estudos de Fisiologia do Exercício, 2007 41. FUGANTI , Cláudio José. OLIVEIRA , Divina Seila de. RODRIGUES, Ricardo José. Curso de

Eletrocardiografia Básica - CCS/UEL – Universidade Estadual de Londrina Disponible em:: < http://www3.solar.com.br/~roque/cursoeletrocardiogramainicio.htm> .

42. POEL, JanKees van der. Compressão de Sinais de Eletrocardiograma. 1999. 164 f. Dissertação (Mestrado em Engenharia Biomédica) - Universidade Federal da Paraíba, Coordenação de Aperfeiçoamento de Pessoal de Nível Superior. Co-Orientador: Leonardo Vidal Batista

43. GUSSOW, Milton, Eletricidade Básica - McGraw-Hill-2a edição-1985. 44. O'MALLEY, John, Análise de Circuitos , McGraw-Hill-2a edição-1994. 45. Jornal Diagnósticos em Cardiologia - Edição 21ª - publicação trimestral do Instituto Cardios de ensino e

Pesquisa em Eletrocardiologia não Invasiva e MAPA - Av. Paulista, 509 1º andar 01311-910 São Paulo SP. Coordenação Editorial: Dr. Ricardo J. Miglino, Flavia Torretta Martins, Redação: Dr. Ricardo J. Miglino, Flavia Torretta Martins Produção Gráfica: TMDesigners Disponivel em:: <http://www.cardios.com.br/Jornais/jornal-21/indice.htm>

46. RUSSO, Rosaria. FADINI, Gianpaolo. L' interpretazione dell'elettrocardiogramma. Manuale rapido di

apprendimento, Presentazioni Sabino Ilíceto, Editore:Piccin-Nuova Libraria. 47. UENISHI , Eliza Kaori. Enfermagem medico-cirurgica em unidade de terapia intensiva. 1º Edição, Editora:

Senac Sao Paulo, ISBN: 8585578181, 1994. 48. SILVA, Daniella Dias Cavalcante da. Desenvolvimento de um IP Core de pré-processamento digital de sinais de

voz para aplicação em sistemas embutidos. Dissertação (Mestrado em Informática) UFCG, Campina Grande, 2006.92fs.: il.

49. BARBIERO, Andréia Aparecida. AMBIENTE DE SUPORTE AO PROJETO DE SISTEMAS

EMBARCADOS, Universidade Federal do Paran´a,2006. 50. Xilinx An Introduction to xilinx products 1999

Disponível em: http://bwrc.eecs.berkeley.edu/Research/Pico_Radio/Test_Bed/Hardware/Documentation/Xilinx/ intro.pdf

51. PALMA, J. C.; Moraes, F.; Calazans, N. Métodos para desenvolvimento e distribuição de ip cores SRC'2001 - Seminário de compoutacao Reconfigurável, p. S,2001.

52. GAJSKI, Daniel D; WU, Allen C.-H; CHAIYAKUL, Viraphol; MORI, Shojiro; NUKIYAMA, Tom;

BRICAUD Pierre. “Essential Issues for IP Reuse” IEEE Jan. 2000. 53. CARRO, L.; WAGNER, F. R. Sistemas Computacionais Embarcados. In: JAI'03 – XXII Jornadas de

Atualização em Informática, 2003, Campinas. 54. PESSOA, Isaac Maia; Geração semi-automática de Testbenches para Circuitos Integrados Ditigais. Dissertação

(Mestrado em Informática) UFCG, Campina Grande, 2007.

Page 126: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

106

55. DEHON, Andre. The Density Advantage of Configurable Computing. In: IEEE Computer. Vol. 33, No. 4. 2000. 56. PONTE, D.F; MADEIRA, C.S; Aplicação Da Linguagem Descritiva De Hardware No Ensino De Circuitos

Digitais. I Congresso de Pesquisa e Inovação da Rede Norte Nordeste de Educação Tecnológica. Natal-RN - 2006.

57. Wikipédia, a enciclopédia livre.; VHDL - Disponível em:: < http://pt.wikipedia.org/wiki/VHDL> 58. BATISTA, L.V; “Compresão de Sinais Eletrocardiógraficos Baseada na Transformada cosseno Discreta” 2002.

Tese (Doutorado em Ciências no domínio da Engenharia Elétrica) - Universidade Federal de Campina Grande, Orientadores: Elmar Uwe Kurt Melcher e Luis Carlos Carvalho.

59. HUFFMAN, D. A. “A Method for the Construction of Minimum Redundancy Codes.” Proceedings of the

Institute of Radio Engineers, n. 40, p. 1098-1101, 1996. 60. CORMEN, T. H. et al. Algoritmos: Teoria e Prática. Rio de Janeiro: Campus, 2002. 61. COUTINHO, Bruno Cunha, et al. “Atribuição de Autoria usando PPM” XXV Congresso da Sociedade

Brasileira de Compoutação: A universidade da Computação: um agente de inovação e conhecimento. Unisinos, - São Leopoldo/RS

62. ABRANTES, Sílvio A. "Apontamentos de Teoria da Informação" FEUP, Univerdisade do Proto Faculdade de

Engenharia - 2003. 63. SAID, Amir; "Introduction to Arithmetic Coding - Theory and Practice". Imaging Systems Laboratory, HP

Laboratories Palo Alto, HPL-2004-76, 2004. 64. ABRAMSON, Norman, “Information Theory and Coding”. McGraw-Hill, 1963. Hard Cover, Very Good, Very

Good. 201 pgs. 65. RIS, Marcelo; “Compressão adaptativa usando codificação aritmética” 1996. Dissertação (Mestrado em

Matemática Aplicada) - Universidade de São Paulo. 66. PENNEBAKER,W. B; MITCHELL , J. L; LANGDON, G. G. Jr; Arps , R. B; “An overview of the basic

prlnclples of the Q-Coder adaptive binary arithmetic coder” IBM 1. Res. Develop. Vol. 32 No. 6 November 1988.

67. FRÄNTI, Pasi; "Image Compression", Lecture Notes, UNIVERSITY OF JOENSUU, Department of Computer

Science, 2002. 68. http://dlpdesign.com/ 69. DLP Design; DLP-USB245M User Manual, Disponível em <http://www.dlpdesign.com> 70. CARPENTER , Bob; “Arithmetic Coding and PPM” Disponível em:

<http://www.colloquial.com/ArithmeticCoding/javadoc/tutorial.html> 71. CARPENTER , Bob; “Compression via Arithmetic Coding in Java.” Disponível em:

<http://www.colloquial.com/ArithmeticCoding > 72. CHOONG, F; REAZ, M.B.I; CHIN, T. C; MOHD-YASIN, F. “Desing and Implementation of a Data

Compression Scheme: A Partial Matching Approach” Faculty of Engineering, Multimedia University 63100 Cyberjaya, Selangor, Malaysia.

Page 127: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

107

73. ZÚÑIGA-GRAJEDA, Virgilio; FEREGRINO-URIBE, Claudia. "Implementación en un FPGA del Modelo de Compresión de Datos PPMC" Coordinación de Ciencias Computacionales, Instituto Nacional de Astrofísica, Óptica y Electrónica, INAOE.Tonantzintla, Puebla México.

74. BILGIN, A.; ZWEIG, G.; AND MARCELLIN, M. W. “Efficient Lossless Coding of Medical Ima-ge Volumes

Using Reversible Integer Wavelet Transforms.” Proc. of 1998 Data Compres-sion Conference, p. 428-437, Snowbird, Utah, March 1998.

75. http://www.americanheart.org 76. http://www.acm.uiuc.edu/sigarch/projects/reconf/report_1.html 77. http://www.starbridgesystems.com/

Page 128: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

108

7 Glossário

• ADC - Sigla em inglês para Conversor Analógico Digital.

• API - Conjunto de rotinas e padrões estabelecidos por um software para utilização de suas

funcionalidades.

• Arquitetura de software: especificação abstrata da estrutura dos elementos usados na

construção de sistemas, como estes elementos interagem, os padrões que guiam sua

composição e as diretrizes e princípios orientadores de seu projeto e evolução ao longo do

tempo;

• BIT - Um dígito no sistema de numeração binário.

• BYTE - Octeto formado pelo conjunto de 8 bits.

• CAD - Nome dado a sistemas computacionais que facilitam no projeto de desenhos

técnicos.

• CHIP - Abreviação da palavra microchip, que é a miniaturização de circuitos eletrônicos.

• CLB - Blocos Lógicos Configuráveis contidos em um FPGA.

• DLL - Biblioteca de Ligação Dinâmica largamente utilizada pelo sistema operacional

Windows que proporciona a redução do arquivo executável final.

• ECG – Sigla que significa Eletrocardiograma.

• FIFO - Estrutura de dados do tipo fila aonde os primeiros dados a chegarem são os

primeiros a saírem.

• FPGA - Dispositivo semicondutor largamente utilizado para o processamento de

informações digiais.

• FTDI - Fabricante do chip FT245BM da interface USB

• HARDWARE - Elemento físico dos componentes do computador.

Page 129: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

109

• HOST - Computador ligado a uma rede ou que executa uma aplicação.

• HOT PLUGGING - Recurso que permite conectar um dispositivo a um equipamento ativo

sem desligá-lo.

• IEEE - Instituto de Engenheiros Eletricistas e Eletrônicos.

• LASID - Laboratório de Sistemas Digitais.

• LSB - Bit Menos Significativo.

• MSB - Bit Mais Significativo.

• PC - Abreviação de computador pessoal.

• PLD - Sigla em inglês para Dispositivos Lógicos Programáveis.

• PORTABILIDADE: permite que uma entidade de software opere em diferentes sistemas e

computação;

• SOFTWARE - Programa de computador com toda a documentação associada e dados de

configuração necessários para o seu correto funcionamento.

• USB - Barramento Serial Universal.

• VHDL - Linguagem de descrição de hardware.

Page 130: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

110

Apêndice A - Testbench do PPM Binário

library IEEE; use ieee.std_logic_1164.all; use IEEE.std_logic_arith.all; use ieee.std_logic_unsigned.all; 8 entity test_ppmen is PORT ( low1, high2,total3 : OUT integer range 0 to 512; 9 arithClose : OUT STD_LOGIC; arithEnable : OUT STD_LOGIC ); end; 10 architecture only of test_ppmen is 11 12 COMPONENT ppmen 13 PORT ( 14 clk : IN STD_LOGIC; 15 ppmEnable : IN STD_LOGIC; 16 encoderClose : IN STD_LOGIC; 17 bitin : IN STD_LOGIC; 18 low1,high2,total3 : OUT INTEGER range 0 to 512; 19 arithClose : OUT STD_LOGIC; 20 arithEnable : OUT STD_LOGIC 21 ); 22 END COMPONENT ; 23 24 SIGNAL clk : STD_LOGIC := '0'; 25 SIGNAL ppmEnable : STD_LOGIC := '0'; 26 SIGNAL encoderClose : STD_LOGIC := '0'; 27 SIGNAL bitin : STD_LOGIC := '0'; 28 29 begin 30 31 dut : ppmen 32 PORT MAP ( 33 34 clk => clk, 35 ppmEnable => ppmEnable, 36 encoderClose => encoderClose, 37 bitin => bitin, 38 low1 => low1, 39 high2 => high2, 40 total3 => total3, 41 arithClose => arithClose, 42 arithEnable => arithEnable );

Page 131: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

111

43 44 clock : PROCESS 45 begin 46 wait for 80 ns; clk <= not clk; 47 end PROCESS clock; 48 stimulus : PROCESS begin 49 ppmEnable <='1'; 50 encoderClose <='0'; 51 bitin <='0'; 52 wait for 140 ns; bitin <='1'; 53 wait for 160 ns; bitin <='1'; 54 wait for 160 ns; bitin <='1'; 55 wait for 160 ns; bitin <='0'; 56 wait for 160 ns; bitin <='1'; 57 wait for 160 ns; bitin <='1'; 58 wait for 160 ns; bitin <='1'; 59 wait for 160 ns; bitin <='0'; 60 wait for 160 ns; bitin <='1'; 61 wait for 160 ns; bitin <='1'; 62 wait for 160 ns; bitin <='1'; 63 wait for 160 ns; bitin <='0'; 64 wait for 160 ns; bitin <='1'; 65 wait for 160 ns; bitin <='1'; 66 wait for 160 ns; bitin <='1'; 67 wait for 160 ns; bitin <='1'; 68 wait for 160 ns; bitin <='0'; 69 wait for 160 ns; bitin <='0'; 70 wait for 160 ns; bitin <='0'; 71 wait for 160 ns; bitin <='0'; 72 wait for 160 ns; bitin <='1'; 73 wait for 160 ns; bitin <='1'; 74 wait for 160 ns; bitin <='0'; 75 wait for 160 ns; bitin <='0'; 76 wait for 160 ns; bitin <='1'; 77 wait for 160 ns; bitin <='1'; 78 wait for 160 ns; bitin <='1'; 79 wait for 160 ns; bitin <='1'; 80 wait for 160 ns; bitin <='0'; 81 wait for 160 ns; bitin <='0'; 82 wait for 160 ns; bitin <='0'; 83 wait for 160 ns; bitin <='0'; 84 wait for 160 ns; bitin <='0'; 85 wait for 160 ns; bitin <='1'; 86 wait for 160 ns; bitin <='1';

Page 132: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

112

87 wait for 160 ns; bitin <='0'; 88 wait for 160 ns; bitin <='1'; 89 wait for 160 ns; bitin <='1'; 90 wait for 160 ns; bitin <='1'; 91 wait for 160 ns; bitin <='1'; 92 wait for 160 ns; bitin <='0'; 93 wait for 160 ns; bitin <='0'; 94 wait for 160 ns; bitin <='0'; 95 wait for 160 ns; bitin <='0'; 96 wait for 160 ns; bitin <='1'; 97 wait for 160 ns; bitin <='1'; 98 wait for 160 ns; bitin <='1'; 99 wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0';

Page 133: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

113

wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='1'; wait for 160 ns; bitin <='0'; wait for 160 ns; bitin <='0'; 100 wait for 160 ns; encoderClose <='1'; 101 wait; end PROCESS stimulus; 102 end only; 103

Page 134: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

114

Apêndice B - Testbench do Codificador Aritmético

104 library IEEE; 105 use ieee.std_logic_1164.all; 106 use IEEE.std_logic_arith.all; 107 use ieee.std_logic_unsigned.all; 108 109 entity test_arithen is 110 PORT ( saida : OUT std_logic_vector( 8 downto 1); 111 saida2 : OUT std_logic_vector( 8 downto 1); 112 saida3 : OUT std_logic_vector( 8 downto 1); 113 saidaAtiva : OUT STD_LOGIC; 114 saida2Ativa : OUT STD_LOGIC; 115 saida3Ativa : OUT STD_LOGIC 116 );-- BUFFER bit_vector(8 downto 1) 117 end; 118 119 architecture only of test_arithen is 120 121 COMPONENT arithen 122 PORT ( 123 clk : IN STD_LOGIC; 124 arithEnable : IN STD_LOGIC; 125 arithClose : IN STD_LOGIC; 126 low1,high2,total3 : IN integer range 0 to 512; 127 saidaAtiva : OUT STD_LOGIC; 128 saida2Ativa : OUT STD_LOGIC; 129 saida3Ativa : OUT STD_LOGIC; 130 saida : OUT std_logic_vector( 8 downto 1); 131 saida2 : OUT std_logic_vector( 8 downto 1); 132 saida3 : OUT std_logic_vector( 8 downto 1) 133 ); 134 END COMPONENT ; 135 136 SIGNAL clk : STD_LOGIC := '0'; 137 SIGNAL arithEnable : STD_LOGIC := '1'; 138 SIGNAL arithClose : STD_LOGIC := '0'; 139 SIGNAL low1, high2, total3 : integer range 0 to 512 := 0; 140 begin 141 dut : arithen 142 PORT MAP ( 143 clk => clk, 144 arithEnable => arithEnable, 145 arithClose => arithClose, 146 low1 => low1, 147 high2 => high2,

Page 135: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

115

148 total3 => total3, 149 saidaAtiva => saidaAtiva, 150 saida2Ativa => saida2Ativa, 151 saida3Ativa => saida3Ativa, 152 saida => saida, 153 saida2 => saida2, 154 saida3 => saida3 155 ); 156 clock : PROCESS 157 begin 158 wait for 190 ns; clk <= not clk; 159 end PROCESS clock; 160 stimulus : PROCESS 161 begin 162 arithEnable<='1'; 163 low1 <=0; high2 <= 1; total3 <= 2; 164 wait for 220 ns; low1 <=1; high2 <= 2; total3 <= 2; 165 wait for 380 ns; low1 <=1; high2 <=3; total3 <=3; 166 wait for 380 ns; low1 <=1; high2 <=2; total3 <=2; 167 wait for 380 ns; low1 <=0; high2 <=1; total3 <=2; 168 wait for 380 ns; low1 <=1; high2 <=2; total3 <=2; 169 wait for 380 ns; low1 <=2; high2 <=3; total3 <=3; 170 wait for 380 ns; low1 <=2; high2 <=4; total3 <=4; 171 wait for 380 ns; low1 <=0; high2 <=2; total3 <=5; 172 wait for 380 ns; low1 <=1; high2 <=2; total3 <=2; 173 wait for 380 ns; low1 <=3; high2 <=6; total3 <=6; 174 wait for 380 ns; low1 <=3; high2 <=7; total3 <=7; 175 wait for 380 ns; low1 <=0; high2 <=3; total3 <=8; 176 wait for 380 ns; low1 <=1; high2 <=3; total3 <=3; 177 wait for 380 ns; low1 <=4; high2 <=9; total3 <=9; 178 wait for 380 ns; low1 <=4; high2 <=10; total3 <=10; 179 wait for 380 ns; low1 <=4; high2 <=11; total3 <=11; 180 wait for 380 ns; low1 <=0; high2 <=4; total3 <=12; 181 wait for 380 ns; low1 <=0; high2 <=1; total3 <=4; 182 wait for 380 ns; low1 <=0; high2 <=2; total3 <=5; 183 wait for 380 ns; low1 <=0; high2 <=3; total3 <=6; 184 wait for 380 ns; low1 <=4; high2 <=7; total3 <=7; 185 wait for 380 ns; low1 <=5; high2 <=13; total3 <=13; 186 wait for 380 ns; low1 <=0; high2 <=5; total3 <=14; 187 wait for 380 ns; low1 <=0; high2 <=4; total3 <=8; 188 wait for 380 ns; low1 <=5; high2 <=9; total3 <=9; 189 wait for 380 ns; low1 <=6; high2 <=15; total3 <=15; 190 wait for 380 ns; low1 <=6; high2 <=16; total3 <=16; 191 wait for 380 ns; low1 <=6; high2 <=17; total3 <=17; 192 wait for 380 ns; low1 <=0; high2 <=6; total3 <=18; 193 wait for 380 ns; low1 <=0; high2 <=5; total3 <=10;

Page 136: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

116

194 wait for 380 ns; low1 <=0; high2 <=6; total3 <=11; 195 wait for 380 ns; low1 <=0; high2 <=7; total3 <=12; 196 wait for 380 ns; low1 <=0; high2 <=8; total3 <=13; 197 wait for 380 ns; low1 <=9; high2 <=14; total3 <=14; 198 wait for 380 ns; low1 <=7; high2 <=19; total3 <=19; 199 wait for 380 ns; low1 <=0; high2 <=7; total3 <=20; 200 wait for 380 ns; low1 <=9; high2 <=15; total3 <=15; 201 wait for 380 ns; low1 <=8; high2 <=21; total3 <=21; 202 wait for 380 ns; low1 <=8; high2 <=22; total3 <=22; 203 wait for 380 ns; low1 <=8; high2 <=23; total3 <=23; 204 wait for 380 ns; low1 <=0; high2 <=8; total3 <=24; 205 wait for 380 ns; low1 <=0; high2 <=9; total3 <=16; 206 wait for 380 ns; low1 <=0; high2 <=10; total3 <=17; 207 wait for 380 ns; low1 <=0; high2 <=11; total3 <=18; 208 wait for 380 ns; low1 <=12; high2 <=19; total3 <=19; 209 wait for 380 ns; low1 <=9; high2 <=25; total3 <=25; 210 wait for 380 ns; low1 <=9; high2 <=26; total3 <=26; 211 wait for 380 ns; low1 <=0; high2 <=9; total3 <=27; 212 wait for 380 ns; low1 <=12; high2 <=20; total3 <=20; 213 wait for 380 ns; low1 <=10; high2 <=28; total3 <=28; 214 wait for 380 ns; low1 <=10; high2 <=29; total3 <=29; 215 wait for 380 ns; low1 <=10; high2 <=30; total3 <=30; 216 wait for 380 ns; low1 <=0; high2 <=10; total3 <=31; 217 wait for 380 ns; low1 <=0; high2 <=12; total3 <=21; 218 wait for 380 ns; low1 <=0; high2 <=13; total3 <=22; 219 wait for 380 ns; low1 <=14; high2 <=23; total3 <=23; 220 wait for 380 ns; low1 <=0; high2 <=11; total3 <=32; 221 wait for 380 ns; low1 <=0; high2 <=14; total3 <=24; 222 wait for 380 ns; low1 <=15; high2 <=25; total3 <=25; 223 wait for 380 ns; low1 <=0; high2 <=12; total3 <=33; 224 wait for 380 ns; low1 <=15; high2 <=26; total3 <=26; 225 wait for 380 ns; low1 <=13; high2 <=34; total3 <=34; 226 wait for 380 ns; low1 <=13; high2 <=35; total3 <=35; 227 wait for 380 ns; low1 <=13; high2 <=36; total3 <=36; 228 wait for 380 ns; low1 <=0; high2 <=13; total3 <=37; 229 wait for 380 ns; low1 <=0; high2 <=15; total3 <=27; 230 wait for 380 ns; low1 <=16; high2 <=28; total3 <=28; 231 wait for 380 ns; low1 <=0; high2 <=14; total3 <=38; 232 wait for 380 ns; low1 <=16; high2 <=29; total3 <=29; 233 wait for 380 ns; low1 <=15; high2 <=39; total3 <=39; 234 wait for 380 ns; low1 <=0; high2 <=15; total3 <=40; 235 wait for 380 ns; low1 <=0; high2 <=16; total3 <=30; 236 wait for 380 ns; low1 <=17; high2 <=31; total3 <=31; 237 wait for 380 ns; low1 <=16; high2 <=41; total3 <=41; 238 wait for 380 ns; low1 <=16; high2 <=42; total3 <=42; 239 wait for 380 ns; low1 <=16; high2 <=43; total3 <=43;

Page 137: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

117

240 wait for 380 ns; low1 <=0; high2 <=16; total3 <=44; 241 wait for 380 ns; low1 <=0; high2 <=17; total3 <=32; 242 wait for 380 ns; low1 <=18; high2 <=33; total3 <=33; 243 wait for 380 ns; low1 <=0; high2 <=17; total3 <=45; 244 wait for 380 ns; low1 <=0; high2 <=18; total3 <=34; 245 wait for 380 ns; low1 <=0; high2 <=19; total3 <=35; 246 wait for 380 ns; low1 <=20; high2 <=36; total3 <=36; 247 wait for 380 ns; low1 <=0; high2 <=18; total3 <=46; 248 wait for 380 ns; low1 <=20; high2 <=37; total3 <=37; 249 wait for 380 ns; low1 <=19; high2 <=47; total3 <=47; 250 wait for 380 ns; low1 <=19; high2 <=48; total3 <=48; 251 wait for 380 ns; low1 <=19; high2 <=49; total3 <=49; 252 wait for 380 ns; low1 <=0; high2 <=19; total3 <=50; 253 wait for 380 ns; low1 <=0; high2 <=20; total3 <=38; 254 wait for 380 ns; low1 <=0; high2 <=21; total3 <=39; 255 wait for 380 ns; low1 <=22; high2 <=40; total3 <=40; 256 wait for 380 ns; low1 <=20; high2 <=51; total3 <=51; 257 wait for 380 ns; low1 <=20; high2 <=52; total3 <=52; 258 wait for 380 ns; low1 <=20; high2 <=53; total3 <=53; 259 wait for 380 ns; low1 <=0; high2 <=20; total3 <=54; 260 wait for 380 ns; low1 <=22; high2 <=41; total3 <=41; 261 wait for 380 ns; low1 <=21; high2 <=55; total3 <=55; 262 wait for 380 ns; low1 <=21; high2 <=56; total3 <=56; 263 wait for 380 ns; low1 <=21; high2 <=57; total3 <=57; 264 wait for 380 ns; low1 <=0; high2 <=21; total3 <=58; 265 wait for 380 ns; low1 <=0; high2 <=22; total3 <=42; 266 wait for 380 ns; low1 <=0; high2 <=23; total3 <=43; 267 wait for 380 ns; low1 <=24; high2 <=44; total3 <=44; 268 wait for 380 ns; low1 <=0; high2 <=22; total3 <=59; 269 wait for 380 ns; low1 <=0; high2 <=24; total3 <=45; 270 wait for 380 ns; low1 <=25; high2 <=46; total3 <=46; 271 wait for 380 ns; low1 <=0; high2 <=23; total3 <=60; 272 wait for 380 ns; low1 <=25; high2 <=47; total3 <=47; 273 wait for 380 ns; low1 <=24; high2 <=61; total3 <=61; 274 wait for 380 ns; low1 <=24; high2 <=62; total3 <=62; 275 wait for 380 ns; low1 <=24; high2 <=63; total3 <=63; 276 wait for 380 ns; low1 <=0; high2 <=24; total3 <=64; 277 wait for 380 ns; low1 <=0; high2 <=25; total3 <=48; 278 wait for 380 ns; low1 <=0; high2 <=26; total3 <=49; 279 wait for 380 ns; low1 <=0; high2 <=27; total3 <=50; 280 wait for 380 ns; low1 <=28; high2 <=51; total3 <=51; 281 wait for 380 ns; low1 <=0; high2 <=25; total3 <=65; 282 wait for 380 ns; low1 <=0; high2 <=28; total3 <=52; 283 wait for 380 ns; low1 <=0; high2 <=29; total3 <=53; 284 wait for 380 ns; low1 <=30; high2 <=54; total3 <=54; 285 wait for 380 ns; low1 <=26; high2 <=66; total3 <=66;

Page 138: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

118

286 wait for 380 ns; low1 <=26; high2 <=67; total3 <=67; 287 wait for 380 ns; low1 <=26; high2 <=68; total3 <=68; 288 wait for 380 ns; low1 <=0; high2 <=26; total3 <=69; 289 wait for 380 ns; low1 <=0; high2 <=30; total3 <=55; 290 wait for 380 ns; low1 <=0; high2 <=31; total3 <=56; 291 wait for 380 ns; low1 <=0; high2 <=32; total3 <=57; 292 wait for 380 ns; low1 <=33; high2 <=58; total3 <=58; 293 wait for 380 ns; low1 <=0; high2 <=27; total3 <=70; 294 wait for 380 ns; low1 <=0; high2 <=33; total3 <=59; 295 wait for 380 ns; low1 <=0; high2 <=34; total3 <=60; 296 wait for 380 ns; low1 <=35; high2 <=61; total3 <=61; 297 wait for 380 ns; low1 <=28; high2 <=71; total3 <=71; 298 wait for 380 ns; low1 <=28; high2 <=72; total3 <=72; 299 wait for 380 ns; low1 <=0; high2 <=28; total3 <=73; 300 wait for 380 ns; low1 <=35; high2 <=62; total3 <=62; 301 wait for 380 ns; low1 <=29; high2 <=74; total3 <=74; 302 wait for 380 ns; low1 <=29; high2 <=75; total3 <=75; 303 wait for 380 ns; low1 <=29; high2 <=76; total3 <=76; 304 wait for 380 ns; low1 <=0; high2 <=29; total3 <=77; 305 wait for 380 ns; low1 <=0; high2 <=35; total3 <=63; 306 wait for 380 ns; low1 <=36; high2 <=64; total3 <=64; 307 wait for 380 ns; low1 <=0; high2 <=30; total3 <=78; 308 wait for 380 ns; low1 <=36; high2 <=65; total3 <=65; 309 wait for 380 ns; low1 <=31; high2 <=79; total3 <=79; 310 wait for 380 ns; low1 <=31; high2 <=80; total3 <=80; 311 wait for 380 ns; low1 <=31; high2 <=81; total3 <=81; 312 wait for 380 ns; low1 <=0; high2 <=31; total3 <=82; 313 wait for 380 ns; low1 <=0; high2 <=36; total3 <=66; 314 wait for 380 ns; low1 <=0; high2 <=37; total3 <=67; 315 wait for 380 ns; low1 <=0; high2 <=38; total3 <=68; 316 wait for 380 ns; low1 <=0; high2 <=39; total3 <=69; 317 wait for 380 ns; low1 <=0; high2 <=40; total3 <=70; 318 wait for 380 ns; low1 <=0; high2 <=41; total3 <=71; 319 wait for 380 ns; low1 <=0; high2 <=42; total3 <=72; 320 wait for 380 ns; low1 <=43; high2 <=73; total3 <=73; 321 wait for 380 ns; low1 <=32; high2 <=83; total3 <=83; 322 wait for 380 ns; low1 <=32; high2 <=84; total3 <=84; 323 wait for 380 ns; low1 <=0; high2 <=32; total3 <=85; 324 wait for 380 ns; low1 <=43; high2 <=74; total3 <=74; 325 wait for 380 ns; low1 <=33; high2 <=86; total3 <=86; 326 wait for 380 ns; low1 <=33; high2 <=87; total3 <=87; 327 wait for 380 ns; low1 <=0; high2 <=33; total3 <=88; 328 wait for 380 ns; low1 <=43; high2 <=75; total3 <=75; 329 wait for 380 ns; low1 <=0; high2 <=34; total3 <=89; 330 wait for 380 ns; low1 <=0; high2 <=43; total3 <=76; 331 wait for 380 ns; low1 <=0; high2 <=44; total3 <=77;

Page 139: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

119

332 wait for 380 ns; low1 <=45; high2 <=78; total3 <=78; 333 wait for 380 ns; low1 <=35; high2 <=90; total3 <=90; 334 wait for 380 ns; low1 <=35; high2 <=91; total3 <=91; 335 wait for 380 ns; low1 <=0; high2 <=35; total3 <=92; 336 wait for 380 ns; low1 <=45; high2 <=79; total3 <=79; 337 wait for 380 ns; low1 <=36; high2 <=93; total3 <=93; 338 wait for 380 ns; low1 <=36; high2 <=94; total3 <=94; 339 wait for 380 ns; low1 <=0; high2 <=36; total3 <=95; 340 wait for 380 ns; low1 <=0; high2 <=45; total3 <=80; 341 wait for 380 ns; low1 <=46; high2 <=81; total3 <=81; 342 wait for 380 ns; low1 <=37; high2 <=96; total3 <=96; 343 wait for 380 ns; low1 <=0; high2 <=37; total3 <=97; 344 wait for 380 ns; low1 <=46; high2 <=82; total3 <=82; 345 wait for 380 ns; low1 <=38; high2 <=98; total3 <=98; 346 wait for 380 ns; low1 <=38; high2 <=99; total3 <=99; 347 wait for 380 ns; low1 <=0; high2 <=38; total3 <=100; 348 wait for 380 ns; low1 <=46; high2 <=83; total3 <=83; 349 wait for 380 ns; low1 <=39; high2 <=101; total3 <=101; 350 wait for 380 ns; low1 <=39; high2 <=102; total3 <=102; 351 wait for 380 ns; low1 <=39; high2 <=103; total3 <=103; 352 wait for 380 ns; low1 <=0; high2 <=39; total3 <=104; 353 wait for 380 ns; low1 <=0; high2 <=46; total3 <=84; 354 wait for 380 ns; low1 <=0; high2 <=47; total3 <=85; 355 wait for 380 ns; low1 <=0; high2 <=48; total3 <=86; 356 wait for 380 ns; low1 <=49; high2 <=87; total3 <=87; 357 wait for 380 ns; low1 <=40; high2 <=105; total3 <=105; 358 wait for 380 ns; low1 <=40; high2 <=106; total3 <=106; 359 wait for 380 ns; low1 <=40; high2 <=107; total3 <=107; 360 wait for 380 ns; low1 <=0; high2 <=40; total3 <=108; 361 wait for 380 ns; low1 <=0; high2 <=49; total3 <=88; 362 wait for 380 ns; low1 <=0; high2 <=50; total3 <=89; 363 wait for 380 ns; low1 <=0; high2 <=51; total3 <=90; 364 wait for 380 ns; low1 <=0; high2 <=52; total3 <=91; 365 wait for 380 ns; low1 <=0; high2 <=53; total3 <=92; 366 wait for 380 ns; low1 <=54; high2 <=93; total3 <=93; 367 wait for 380 ns; low1 <=0; high2 <=41; total3 <=109; 368 wait for 380 ns; low1 <=54; high2 <=94; total3 <=94; 369 wait for 380 ns; low1 <=42; high2 <=110; total3 <=110; 370 wait for 380 ns; low1 <=42; high2 <=111; total3 <=111; 371 wait for 380 ns; low1 <=42; high2 <=112; total3 <=112; 372 wait for 380 ns; low1 <=0; high2 <=42; total3 <=113; 373 wait for 380 ns; low1 <=0; high2 <=54; total3 <=95; 374 wait for 380 ns; low1 <=0; high2 <=55; total3 <=96; 375 wait for 380 ns; low1 <=56; high2 <=97; total3 <=97; 376 wait for 380 ns; low1 <=0; high2 <=43; total3 <=114; 377 wait for 380 ns; low1 <=56; high2 <=98; total3 <=98;

Page 140: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

120

378 wait for 380 ns; low1 <=44; high2 <=115; total3 <=115; 379 wait for 380 ns; low1 <=0; high2 <=44; total3 <=116; 380 wait for 380 ns; low1 <=56; high2 <=99; total3 <=99; 381 wait for 380 ns; low1 <=45; high2 <=117; total3 <=117; 382 wait for 380 ns; low1 <=45; high2 <=118; total3 <=118; 383 wait for 380 ns; low1 <=45; high2 <=119; total3 <=119; 384 wait for 380 ns; low1 <=0; high2 <=45; total3 <=120; 385 wait for 380 ns; low1 <=0; high2 <=56; total3 <=100; 386 wait for 380 ns; low1 <=0; high2 <=57; total3 <=101; 387 wait for 380 ns; low1 <=58; high2 <=102; total3 <=102; 388 wait for 380 ns; low1 <=46; high2 <=121; total3 <=121; 389 wait for 380 ns; low1 <=46; high2 <=122; total3 <=122; 390 wait for 380 ns; low1 <=46; high2 <=123; total3 <=123; 391 wait for 380 ns; low1 <=0; high2 <=46; total3 <=124; 392 wait for 380 ns; low1 <=58; high2 <=103; total3 <=103; 393 wait for 380 ns; low1 <=47; high2 <=125; total3 <=125; 394 wait for 380 ns; low1 <=47; high2 <=126; total3 <=126; 395 wait for 380 ns; low1 <=47; high2 <=127; total3 <=127; 396 wait for 380 ns; low1 <=0; high2 <=47; total3 <=128; 397 wait for 380 ns; low1 <=0; high2 <=58; total3 <=104; 398 wait for 380 ns; low1 <=59; high2 <=105; total3 <=105; 399 wait for 380 ns; low1 <=0; high2 <=48; total3 <=129; 400 wait for 380 ns; low1 <=59; high2 <=106; total3 <=106; 401 wait for 380 ns; low1 <=49; high2 <=130; total3 <=130; 402 wait for 380 ns; low1 <=49; high2 <=131; total3 <=131; 403 wait for 380 ns; low1 <=0; high2 <=49; total3 <=132; 404 wait for 380 ns; low1 <=59; high2 <=107; total3 <=107; 405 wait for 380 ns; low1 <=50; high2 <=133; total3 <=133; 406 wait for 380 ns; low1 <=50; high2 <=134; total3 <=134; 407 wait for 380 ns; low1 <=50; high2 <=135; total3 <=135; 408 wait for 380 ns; low1 <=0; high2 <=50; total3 <=136; 409 wait for 380 ns; low1 <=0; high2 <=59; total3 <=108; 410 wait for 380 ns; low1 <=60; high2 <=109; total3 <=109; 411 wait for 380 ns; low1 <=0; high2 <=51; total3 <=137; 412 wait for 380 ns; low1 <=0; high2 <=60; total3 <=110; 413 wait for 380 ns; low1 <=61; high2 <=111; total3 <=111; 414 wait for 380 ns; low1 <=52; high2 <=138; total3 <=138; 415 wait for 380 ns; low1 <=0; high2 <=52; total3 <=139; 416 wait for 380 ns; low1 <=61; high2 <=112; total3 <=112; 417 wait for 380 ns; low1 <=53; high2 <=140; total3 <=140; 418 wait for 380 ns; low1 <=53; high2 <=141; total3 <=141; 419 wait for 380 ns; low1 <=53; high2 <=142; total3 <=142; 420 wait for 380 ns; low1 <=0; high2 <=53; total3 <=143; 421 wait for 380 ns; low1 <=0; high2 <=61; total3 <=113; 422 wait for 380 ns; low1 <=0; high2 <=62; total3 <=114; 423 wait for 380 ns; low1 <=0; high2 <=63; total3 <=115;

Page 141: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

121

424 wait for 380 ns; low1 <=0; high2 <=64; total3 <=116; 425 wait for 380 ns; low1 <=65; high2 <=117; total3 <=117; 426 wait for 380 ns; low1 <=54; high2 <=144; total3 <=144; 427 wait for 380 ns; low1 <=0; high2 <=54; total3 <=145; 428 wait for 380 ns; low1 <=65; high2 <=118; total3 <=118; 429 wait for 380 ns; low1 <=55; high2 <=146; total3 <=146; 430 wait for 380 ns; low1 <=55; high2 <=147; total3 <=147; 431 wait for 380 ns; low1 <=55; high2 <=148; total3 <=148; 432 wait for 380 ns; low1 <=0; high2 <=55; total3 <=149; 433 wait for 380 ns; low1 <=0; high2 <=65; total3 <=119; 434 wait for 380 ns; low1 <=66; high2 <=120; total3 <=120; 435 wait for 380 ns; low1 <=0; high2 <=56; total3 <=150; 436 wait for 380 ns; low1 <=0; high2 <=66; total3 <=121; 437 wait for 380 ns; low1 <=67; high2 <=122; total3 <=122; 438 wait for 380 ns; low1 <=57; high2 <=151; total3 <=151; 439 wait for 380 ns; low1 <=0; high2 <=57; total3 <=152; 440 wait for 380 ns; low1 <=67; high2 <=123; total3 <=123; 441 wait for 380 ns; low1 <=58; high2 <=153; total3 <=153; 442 wait for 380 ns; low1 <=58; high2 <=154; total3 <=154; 443 wait for 380 ns; low1 <=58; high2 <=155; total3 <=155; 444 wait for 380 ns; low1 <=0; high2 <=58; total3 <=156; 445 wait for 380 ns; low1 <=0; high2 <=67; total3 <=124; 446 wait for 380 ns; low1 <=68; high2 <=125; total3 <=125; 447 wait for 380 ns; low1 <=59; high2 <=157; total3 <=157; 448 wait for 380 ns; low1 <=59; high2 <=158; total3 <=158; 449 wait for 380 ns; low1 <=0; high2 <=59; total3 <=159; 450 wait for 380 ns; low1 <=68; high2 <=126; total3 <=126; 451 wait for 380 ns; low1 <=0; high2 <=60; total3 <=160; 452 wait for 380 ns; low1 <=68; high2 <=127; total3 <=127; 453 wait for 380 ns; low1 <=61; high2 <=161; total3 <=161; 454 wait for 380 ns; low1 <=61; high2 <=162; total3 <=162; 455 wait for 380 ns; low1 <=61; high2 <=163; total3 <=163; 456 wait for 380 ns; low1 <=0; high2 <=61; total3 <=164; 457 wait for 380 ns; low1 <=0; high2 <=68; total3 <=128; 458 wait for 380 ns; low1 <=69; high2 <=129; total3 <=129; 459 wait for 380 ns; low1 <=0; high2 <=62; total3 <=165; 460 wait for 380 ns; low1 <=0; high2 <=69; total3 <=130; 461 wait for 380 ns; low1 <=70; high2 <=131; total3 <=131; 462 wait for 380 ns; low1 <=63; high2 <=166; total3 <=166; 463 wait for 380 ns; low1 <=0; high2 <=63; total3 <=167; 464 wait for 380 ns; low1 <=70; high2 <=132; total3 <=132; 465 wait for 380 ns; low1 <=64; high2 <=168; total3 <=168; 466 wait for 380 ns; low1 <=64; high2 <=169; total3 <=169; 467 wait for 380 ns; low1 <=64; high2 <=170; total3 <=170; 468 wait for 380 ns; low1 <=0; high2 <=64; total3 <=171; 469 wait for 380 ns; low1 <=0; high2 <=70; total3 <=133;

Page 142: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

122

470 wait for 380 ns; low1 <=0; high2 <=71; total3 <=134; 471 wait for 380 ns; low1 <=0; high2 <=72; total3 <=135; 472 wait for 380 ns; low1 <=73; high2 <=136; total3 <=136; 473 wait for 380 ns; low1 <=0; high2 <=65; total3 <=172; 474 wait for 380 ns; low1 <=0; high2 <=73; total3 <=137; 475 wait for 380 ns; low1 <=0; high2 <=74; total3 <=138; 476 wait for 380 ns; low1 <=75; high2 <=139; total3 <=139; 477 wait for 380 ns; low1 <=66; high2 <=173; total3 <=173; 478 wait for 380 ns; low1 <=66; high2 <=174; total3 <=174; 479 wait for 380 ns; low1 <=66; high2 <=175; total3 <=175; 480 wait for 380 ns; low1 <=0; high2 <=66; total3 <=176; 481 wait for 380 ns; low1 <=0; high2 <=75; total3 <=140; 482 wait for 380 ns; low1 <=0; high2 <=76; total3 <=141; 483 wait for 380 ns; low1 <=0; high2 <=77; total3 <=142; 484 wait for 380 ns; low1 <=0; high2 <=78; total3 <=143; 485 wait for 380 ns; low1 <=0; high2 <=79; total3 <=144; 486 wait for 380 ns; low1 <=80; high2 <=145; total3 <=145; 487 wait for 380 ns; low1 <=0; high2 <=67; total3 <=177; 488 wait for 380 ns; low1 <=80; high2 <=146; total3 <=146; 489 wait for 380 ns; low1 <=68; high2 <=178; total3 <=178; 490 wait for 380 ns; low1 <=68; high2 <=179; total3 <=179; 491 wait for 380 ns; low1 <=68; high2 <=180; total3 <=180; 492 wait for 380 ns; low1 <=0; high2 <=68; total3 <=181; 493 wait for 380 ns; low1 <=0; high2 <=80; total3 <=147; 494 wait for 380 ns; low1 <=0; high2 <=81; total3 <=148; 495 wait for 380 ns; low1 <=82; high2 <=149; total3 <=149; 496 wait for 380 ns; low1 <=69; high2 <=182; total3 <=182; 497 wait for 380 ns; low1 <=0; high2 <=69; total3 <=183; 498 wait for 380 ns; low1 <=0; high2 <=82; total3 <=150; 499 wait for 380 ns; low1 <=0; high2 <=83; total3 <=151; 500 wait for 380 ns; low1 <=84; high2 <=152; total3 <=152; 501 wait for 380 ns; low1 <=70; high2 <=184; total3 <=184; 502 wait for 380 ns; low1 <=70; high2 <=185; total3 <=185; 503 wait for 380 ns; low1 <=70; high2 <=186; total3 <=186; 504 wait for 380 ns; low1 <=0; high2 <=70; total3 <=187; 505 wait for 380 ns; low1 <=0; high2 <=84; total3 <=153; 506 wait for 380 ns; low1 <=0; high2 <=85; total3 <=154; 507 wait for 380 ns; low1 <=86; high2 <=155; total3 <=155; 508 wait for 380 ns; low1 <=71; high2 <=188; total3 <=188; 509 wait for 380 ns; low1 <=71; high2 <=189; total3 <=189; 510 wait for 380 ns; low1 <=0; high2 <=71; total3 <=190; 511 wait for 380 ns; low1 <=0; high2 <=86; total3 <=156; 512 wait for 380 ns; low1 <=87; high2 <=157; total3 <=157; 513 wait for 380 ns; low1 <=72; high2 <=191; total3 <=191; 514 wait for 380 ns; low1 <=72; high2 <=192; total3 <=192; 515 wait for 380 ns; low1 <=72; high2 <=193; total3 <=193;

Page 143: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

123

516 wait for 380 ns; low1 <=0; high2 <=72; total3 <=194; 517 wait for 380 ns; low1 <=0; high2 <=87; total3 <=158; 518 wait for 380 ns; low1 <=0; high2 <=88; total3 <=159; 519 wait for 380 ns; low1 <=89; high2 <=160; total3 <=160; 520 wait for 380 ns; low1 <=0; high2 <=73; total3 <=195; 521 wait for 380 ns; low1 <=89; high2 <=161; total3 <=161; 522 wait for 380 ns; low1 <=0; high2 <=74; total3 <=196; 523 wait for 380 ns; low1 <=0; high2 <=89; total3 <=162; 524 wait for 380 ns; low1 <=90; high2 <=163; total3 <=163; 525 wait for 380 ns; low1 <=75; high2 <=197; total3 <=197; 526 wait for 380 ns; low1 <=75; high2 <=198; total3 <=198; 527 wait for 380 ns; low1 <=0; high2 <=75; total3 <=199; 528 wait for 380 ns; low1 <=90; high2 <=164; total3 <=164; 529 wait for 380 ns; low1 <=76; high2 <=200; total3 <=200; 530 wait for 380 ns; low1 <=76; high2 <=201; total3 <=201; 531 wait for 380 ns; low1 <=76; high2 <=202; total3 <=202; 532 wait for 380 ns; low1 <=0; high2 <=76; total3 <=203; 533 wait for 380 ns; low1 <=90; high2 <=165; total3 <=165; 534 wait for 380 ns; low1 <=77; high2 <=204; total3 <=204; 535 wait for 380 ns; low1 <=0; high2 <=77; total3 <=205; 536 wait for 380 ns; low1 <=90; high2 <=166; total3 <=166; 537 wait for 380 ns; low1 <=78; high2 <=206; total3 <=206; 538 wait for 380 ns; low1 <=78; high2 <=207; total3 <=207; 539 wait for 380 ns; low1 <=0; high2 <=78; total3 <=208; 540 wait for 380 ns; low1 <=90; high2 <=167; total3 <=167; 541 wait for 380 ns; low1 <=79; high2 <=209; total3 <=209; 542 wait for 380 ns; low1 <=79; high2 <=210; total3 <=210; 543 wait for 380 ns; low1 <=79; high2 <=211; total3 <=211; 544 wait for 380 ns; low1 <=79; high2 <=212; total3 <=212; 545 wait for 380 ns; low1 <=79; high2 <=213; total3 <=213; 546 wait for 380 ns; low1 <=79; high2 <=214; total3 <=214; 547 wait for 380 ns; low1 <=0; high2 <=79; total3 <=215; 548 wait for 380 ns; low1 <=90; high2 <=168; total3 <=168; 549 wait for 380 ns; low1 <=80; high2 <=216; total3 <=216; 550 wait for 380 ns; low1 <=80; high2 <=217; total3 <=217; 551 wait for 380 ns; low1 <=0; high2 <=80; total3 <=218; 552 wait for 380 ns; low1 <=90; high2 <=169; total3 <=169; 553 wait for 380 ns; low1 <=81; high2 <=219; total3 <=219; 554 wait for 380 ns; low1 <=81; high2 <=220; total3 <=220; 555 wait for 380 ns; low1 <=81; high2 <=221; total3 <=221; 556 wait for 380 ns; low1 <=0; high2 <=81; total3 <=222; 557 wait for 380 ns; low1 <=90; high2 <=170; total3 <=170; 558 wait for 380 ns; low1 <=82; high2 <=223; total3 <=223; 559 wait for 380 ns; low1 <=0; high2 <=82; total3 <=224; 560 wait for 380 ns; low1 <=90; high2 <=171; total3 <=171; 561 wait for 380 ns; low1 <=83; high2 <=225; total3 <=225;

Page 144: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

124

562 wait for 380 ns; low1 <=83; high2 <=226; total3 <=226; 563 wait for 380 ns; low1 <=0; high2 <=83; total3 <=227; 564 wait for 380 ns; low1 <=90; high2 <=172; total3 <=172; 565 wait for 380 ns; low1 <=84; high2 <=228; total3 <=228; 566 wait for 380 ns; low1 <=84; high2 <=229; total3 <=229; 567 wait for 380 ns; low1 <=84; high2 <=230; total3 <=230; 568 wait for 380 ns; low1 <=84; high2 <=231; total3 <=231; 569 wait for 380 ns; low1 <=84; high2 <=232; total3 <=232; 570 wait for 380 ns; low1 <=84; high2 <=233; total3 <=233; 571 wait for 380 ns; low1 <=0; high2 <=84; total3 <=234; 572 wait for 380 ns; low1 <=90; high2 <=173; total3 <=173; 573 wait for 380 ns; low1 <=85; high2 <=235; total3 <=235; 574 wait for 380 ns; low1 <=85; high2 <=236; total3 <=236; 575 wait for 380 ns; low1 <=85; high2 <=237; total3 <=237; 576 wait for 380 ns; low1 <=0; high2 <=85; total3 <=238; 577 wait for 380 ns; low1 <=0; high2 <=90; total3 <=174; 578 wait for 380 ns; low1 <=0; high2 <=91; total3 <=175; 579 wait for 380 ns; low1 <=0; high2 <=92; total3 <=176; 580 wait for 380 ns; low1 <=93; high2 <=177; total3 <=177; 581 wait for 380 ns; low1 <=0; high2 <=86; total3 <=239; 582 wait for 380 ns; low1 <=93; high2 <=178; total3 <=178; 583 wait for 380 ns; low1 <=0; high2 <=87; total3 <=240; 584 wait for 380 ns; low1 <=93; high2 <=179; total3 <=179; 585 wait for 380 ns; low1 <=88; high2 <=241; total3 <=241; 586 wait for 380 ns; low1 <=88; high2 <=242; total3 <=242; 587 wait for 380 ns; low1 <=88; high2 <=243; total3 <=243; 588 wait for 380 ns; low1 <=0; high2 <=88; total3 <=244; 589 wait for 380 ns; low1 <=0; high2 <=93; total3 <=180; 590 wait for 380 ns; low1 <=0; high2 <=94; total3 <=181; 591 wait for 380 ns; low1 <=95; high2 <=182; total3 <=182; 592 wait for 380 ns; low1 <=89; high2 <=245; total3 <=245; 593 wait for 380 ns; low1 <=89; high2 <=246; total3 <=246; 594 wait for 380 ns; low1 <=0; high2 <=89; total3 <=247; 595 wait for 380 ns; low1 <=0; high2 <=95; total3 <=183; 596 wait for 380 ns; low1 <=96; high2 <=184; total3 <=184; 597 wait for 380 ns; low1 <=90; high2 <=248; total3 <=248; 598 wait for 380 ns; low1 <=90; high2 <=249; total3 <=249; 599 wait for 380 ns; low1 <=90; high2 <=250; total3 <=250; 600 wait for 380 ns; low1 <=0; high2 <=90; total3 <=251; 601 wait for 380 ns; low1 <=0; high2 <=96; total3 <=185; 602 wait for 380 ns; low1 <=97; high2 <=186; total3 <=186; 603 wait for 380 ns; low1 <=0; high2 <=91; total3 <=252; 604 wait for 380 ns; low1 <=0; high2 <=97; total3 <=187; 605 wait for 380 ns; low1 <=98; high2 <=188; total3 <=188; 606 wait for 380 ns; low1 <=0; high2 <=92; total3 <=253; 607 wait for 380 ns; low1 <=0; high2 <=98; total3 <=189;

Page 145: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

125

608 wait for 380 ns; low1 <=99; high2 <=190; total3 <=190; 609 wait for 380 ns; low1 <=93; high2 <=254; total3 <=254; 610 wait for 380 ns; low1 <=93; high2 <=255; total3 <=255; 611 wait for 380 ns; low1 <=93; high2 <=256; total3 <=256; 612 wait for 380 ns; low1 <=0; high2 <=93; total3 <=257; 613 wait for 380 ns; low1 <=0; high2 <=99; total3 <=191; 614 wait for 380 ns; low1 <=0; high2 <=100; total3 <=192; 615 wait for 380 ns; low1 <=101; high2 <=193; total3 <=193; 616 wait for 380 ns; low1 <=94; high2 <=258; total3 <=258; 617 wait for 380 ns; low1 <=0; high2 <=94; total3 <=259; 618 wait for 380 ns; low1 <=0; high2 <=101; total3 <=194; 619 wait for 380 ns; low1 <=0; high2 <=102; total3 <=195; 620 wait for 380 ns; low1 <=103; high2 <=196; total3 <=196; 621 wait for 380 ns; low1 <=95; high2 <=260; total3 <=260; 622 wait for 380 ns; low1 <=95; high2 <=261; total3 <=261; 623 wait for 380 ns; low1 <=95; high2 <=262; total3 <=262; 624 wait for 380 ns; low1 <=0; high2 <=95; total3 <=263; 625 wait for 380 ns; low1 <=0; high2 <=103; total3 <=197; 626 wait for 380 ns; low1 <=0; high2 <=104; total3 <=198; 627 wait for 380 ns; low1 <=105; high2 <=199; total3 <=199; 628 wait for 380 ns; low1 <=0; high2 <=96; total3 <=264; 629 wait for 380 ns; low1 <=105; high2 <=200; total3 <=200; 630 wait for 380 ns; low1 <=97; high2 <=265; total3 <=265; 631 wait for 380 ns; low1 <=0; high2 <=97; total3 <=266; 632 wait for 380 ns; low1 <=105; high2 <=201; total3 <=201; 633 wait for 380 ns; low1 <=98; high2 <=267; total3 <=267; 634 wait for 380 ns; low1 <=98; high2 <=268; total3 <=268; 635 wait for 380 ns; low1 <=98; high2 <=269; total3 <=269; 636 wait for 380 ns; low1 <=0; high2 <=98; total3 <=270; 637 wait for 380 ns; low1 <=0; high2 <=105; total3 <=202; 638 wait for 380 ns; low1 <=106; high2 <=203; total3 <=203; 639 wait for 380 ns; low1 <=0; high2 <=99; total3 <=271; 640 wait for 380 ns; low1 <=0; high2 <=106; total3 <=204; 641 wait for 380 ns; low1 <=107; high2 <=205; total3 <=205; 642 wait for 380 ns; low1 <=0; high2 <=100; total3 <=272; 643 wait for 380 ns; low1 <=0; high2 <=107; total3 <=206; 644 wait for 380 ns; low1 <=108; high2 <=207; total3 <=207; 645 wait for 380 ns; low1 <=101; high2 <=273; total3 <=273; 646 wait for 380 ns; low1 <=101; high2 <=274; total3 <=274; 647 wait for 380 ns; low1 <=101; high2 <=275; total3 <=275; 648 wait for 380 ns; low1 <=0; high2 <=101; total3 <=276; 649 wait for 380 ns; low1 <=0; high2 <=108; total3 <=208; 650 wait for 380 ns; low1 <=109; high2 <=209; total3 <=209; 651 wait for 380 ns; low1 <=0; high2 <=102; total3 <=277; 652 wait for 380 ns; low1 <=0; high2 <=109; total3 <=210; 653 wait for 380 ns; low1 <=110; high2 <=211; total3 <=211;

Page 146: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

126

654 wait for 380 ns; low1 <=0; high2 <=103; total3 <=278; 655 wait for 380 ns; low1 <=0; high2 <=110; total3 <=212; 656 wait for 380 ns; low1 <=111; high2 <=213; total3 <=213; 657 wait for 380 ns; low1 <=104; high2 <=279; total3 <=279; 658 wait for 380 ns; low1 <=104; high2 <=280; total3 <=280; 659 wait for 380 ns; low1 <=104; high2 <=281; total3 <=281; 660 wait for 380 ns; low1 <=0; high2 <=104; total3 <=282; 661 wait for 380 ns; low1 <=0; high2 <=111; total3 <=214; 662 wait for 380 ns; low1 <=112; high2 <=215; total3 <=215; 663 wait for 380 ns; low1 <=0; high2 <=105; total3 <=283; 664 wait for 380 ns; low1 <=112; high2 <=216; total3 <=216; 665 wait for 380 ns; low1 <=106; high2 <=284; total3 <=284; 666 wait for 380 ns; low1 <=106; high2 <=285; total3 <=285; 667 wait for 380 ns; low1 <=0; high2 <=106; total3 <=286; 668 wait for 380 ns; low1 <=112; high2 <=217; total3 <=217; 669 wait for 380 ns; low1 <=107; high2 <=287; total3 <=287; 670 wait for 380 ns; low1 <=107; high2 <=288; total3 <=288; 671 wait for 380 ns; low1 <=107; high2 <=289; total3 <=289; 672 wait for 380 ns; low1 <=0; high2 <=107; total3 <=290; 673 wait for 380 ns; low1 <=0; high2 <=112; total3 <=218; 674 wait for 380 ns; low1 <=113; high2 <=219; total3 <=219; 675 wait for 380 ns; low1 <=0; high2 <=108; total3 <=291; 676 wait for 380 ns; low1 <=113; high2 <=220; total3 <=220; 677 wait for 380 ns; low1 <=109; high2 <=292; total3 <=292; 678 wait for 380 ns; low1 <=109; high2 <=293; total3 <=293; 679 wait for 380 ns; low1 <=0; high2 <=109; total3 <=294; 680 wait for 380 ns; low1 <=113; high2 <=221; total3 <=221; 681 wait for 380 ns; low1 <=110; high2 <=295; total3 <=295; 682 wait for 380 ns; low1 <=110; high2 <=296; total3 <=296; 683 wait for 380 ns; low1 <=110; high2 <=297; total3 <=297; 684 wait for 380 ns; low1 <=0; high2 <=110; total3 <=298; 685 wait for 380 ns; low1 <=0; high2 <=113; total3 <=222; 686 wait for 380 ns; low1 <=114; high2 <=223; total3 <=223; 687 wait for 380 ns; low1 <=111; high2 <=299; total3 <=299; 688 wait for 380 ns; low1 <=0; high2 <=111; total3 <=300; 689 wait for 380 ns; low1 <=0; high2 <=114; total3 <=224; 690 wait for 380 ns; low1 <=115; high2 <=225; total3 <=225; 691 wait for 380 ns; low1 <=0; high2 <=112; total3 <=301; 692 wait for 380 ns; low1 <=115; high2 <=226; total3 <=226; 693 wait for 380 ns; low1 <=113; high2 <=302; total3 <=302; 694 wait for 380 ns; low1 <=113; high2 <=303; total3 <=303; 695 wait for 380 ns; low1 <=113; high2 <=304; total3 <=304; 696 wait for 380 ns; low1 <=0; high2 <=113; total3 <=305; 697 wait for 380 ns; low1 <=0; high2 <=115; total3 <=227; 698 wait for 380 ns; low1 <=0; high2 <=116; total3 <=228; 699 wait for 380 ns; low1 <=0; high2 <=117; total3 <=229;

Page 147: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

127

700 wait for 380 ns; low1 <=118; high2 <=230; total3 <=230; 701 wait for 380 ns; low1 <=114; high2 <=306; total3 <=306; 702 wait for 380 ns; low1 <=114; high2 <=307; total3 <=307; 703 wait for 380 ns; low1 <=0; high2 <=114; total3 <=308; 704 wait for 380 ns; low1 <=118; high2 <=231; total3 <=231; 705 wait for 380 ns; low1 <=115; high2 <=309; total3 <=309; 706 wait for 380 ns; low1 <=115; high2 <=310; total3 <=310; 707 wait for 380 ns; low1 <=115; high2 <=311; total3 <=311; 708 wait for 380 ns; low1 <=0; high2 <=115; total3 <=312; 709 wait for 380 ns; low1 <=0; high2 <=118; total3 <=232; 710 wait for 380 ns; low1 <=0; high2 <=119; total3 <=233; 711 wait for 380 ns; low1 <=120; high2 <=234; total3 <=234; 712 wait for 380 ns; low1 <=116; high2 <=313; total3 <=313; 713 wait for 380 ns; low1 <=116; high2 <=314; total3 <=314; 714 wait for 380 ns; low1 <=116; high2 <=315; total3 <=315; 715 wait for 380 ns; low1 <=0; high2 <=58; total3 <=158; 716 wait for 380 ns; low1 <=120; high2 <=235; total3 <=235; 717 wait for 380 ns; low1 <=59; high2 <=159; total3 <=159; 718 wait for 380 ns; low1 <=59; high2 <=160; total3 <=160; 719 wait for 380 ns; low1 <=59; high2 <=161; total3 <=161; 720 wait for 380 ns; low1 <=0; high2 <=59; total3 <=162; 721 wait for 380 ns; low1 <=0; high2 <=120; total3 <=236; 722 wait for 380 ns; low1 <=0; high2 <=121; total3 <=237; 723 wait for 380 ns; low1 <=0; high2 <=122; total3 <=238; 724 wait for 380 ns; low1 <=123; high2 <=239; total3 <=239; 725 wait for 380 ns; low1 <=60; high2 <=163; total3 <=163; 726 wait for 380 ns; low1 <=60; high2 <=164; total3 <=164; 727 wait for 380 ns; low1 <=0; high2 <=60; total3 <=165; 728 wait for 380 ns; low1 <=123; high2 <=240; total3 <=240; 729 wait for 380 ns; low1 <=61; high2 <=166; total3 <=166; 730 wait for 380 ns; low1 <=61; high2 <=167; total3 <=167; 731 wait for 380 ns; low1 <=61; high2 <=168; total3 <=168; 732 wait for 380 ns; low1 <=0; high2 <=61; total3 <=169; 733 wait for 380 ns; low1 <=0; high2 <=123; total3 <=241; 734 wait for 380 ns; low1 <=0; high2 <=124; total3 <=242; 735 wait for 380 ns; low1 <=0; high2 <=125; total3 <=243; 736 wait for 380 ns; low1 <=126; high2 <=244; total3 <=244; 737 wait for 380 ns; low1 <=0; high2 <=62; total3 <=170; 738 wait for 380 ns; low1 <=126; high2 <=245; total3 <=245; 739 wait for 380 ns; low1 <=0; high2 <=63; total3 <=171; 740 wait for 380 ns; low1 <=126; high2 <=246; total3 <=246; 741 wait for 380 ns; low1 <=64; high2 <=172; total3 <=172; 742 wait for 380 ns; low1 <=64; high2 <=173; total3 <=173; 743 wait for 380 ns; low1 <=0; high2 <=64; total3 <=174; 744 wait for 380 ns; low1 <=126; high2 <=247; total3 <=247; 745 wait for 380 ns; low1 <=65; high2 <=175; total3 <=175;

Page 148: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

128

746 wait for 380 ns; low1 <=65; high2 <=176; total3 <=176; 747 wait for 380 ns; low1 <=65; high2 <=177; total3 <=177; 748 wait for 380 ns; low1 <=0; high2 <=65; total3 <=178; 749 wait for 380 ns; low1 <=0; high2 <=126; total3 <=248; 750 wait for 380 ns; low1 <=127; high2 <=249; total3 <=249; 751 wait for 380 ns; low1 <=0; high2 <=66; total3 <=179; 752 wait for 380 ns; low1 <=127; high2 <=250; total3 <=250; 753 wait for 380 ns; low1 <=67; high2 <=180; total3 <=180; 754 wait for 380 ns; low1 <=67; high2 <=181; total3 <=181; 755 wait for 380 ns; low1 <=0; high2 <=67; total3 <=182; 756 wait for 380 ns; low1 <=127; high2 <=251; total3 <=251; 757 wait for 380 ns; low1 <=68; high2 <=183; total3 <=183; 758 wait for 380 ns; low1 <=68; high2 <=184; total3 <=184; 759 wait for 380 ns; low1 <=0; high2 <=68; total3 <=185; 760 wait for 380 ns; low1 <=127; high2 <=252; total3 <=252; 761 wait for 380 ns; low1 <=69; high2 <=186; total3 <=186; 762 wait for 380 ns; low1 <=69; high2 <=187; total3 <=187; 763 wait for 380 ns; low1 <=0; high2 <=69; total3 <=188; 764 wait for 380 ns; low1 <=127; high2 <=253; total3 <=253; 765 wait for 380 ns; low1 <=70; high2 <=189; total3 <=189; 766 wait for 380 ns; low1 <=70; high2 <=190; total3 <=190; 767 wait for 380 ns; low1 <=70; high2 <=191; total3 <=191; 768 wait for 380 ns; low1 <=0; high2 <=70; total3 <=192; 769 wait for 380 ns; low1 <=0; high2 <=127; total3 <=254; 770 wait for 380 ns; low1 <=0; high2 <=128; total3 <=255; 771 wait for 380 ns; low1 <=0; high2 <=129; total3 <=256; 772 wait for 380 ns; low1 <=0; high2 <=130; total3 <=257; 773 wait for 380 ns; low1 <=131; high2 <=258; total3 <=258; 774 wait for 380 ns; low1 <=71; high2 <=193; total3 <=193; 775 wait for 380 ns; low1 <=0; high2 <=71; total3 <=194; 776 wait for 380 ns; low1 <=131; high2 <=259; total3 <=259; 777 wait for 380 ns; low1 <=72; high2 <=195; total3 <=195; 778 wait for 380 ns; low1 <=72; high2 <=196; total3 <=196; 779 wait for 380 ns; low1 <=72; high2 <=197; total3 <=197; 780 wait for 380 ns; low1 <=0; high2 <=72; total3 <=198; 781 wait for 380 ns; low1 <=0; high2 <=131; total3 <=260; 782 wait for 380 ns; low1 <=0; high2 <=132; total3 <=261; 783 wait for 380 ns; low1 <=133; high2 <=262; total3 <=262; 784 wait for 380 ns; low1 <=73; high2 <=199; total3 <=199; 785 wait for 380 ns; low1 <=0; high2 <=73; total3 <=200; 786 wait for 380 ns; low1 <=133; high2 <=263; total3 <=263; 787 wait for 380 ns; low1 <=0; high2 <=74; total3 <=201; 788 wait for 380 ns; low1 <=133; high2 <=264; total3 <=264; 789 wait for 380 ns; low1 <=75; high2 <=202; total3 <=202; 790 wait for 380 ns; low1 <=75; high2 <=203; total3 <=203; 791 wait for 380 ns; low1 <=75; high2 <=204; total3 <=204;

Page 149: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

129

792 wait for 380 ns; low1 <=0; high2 <=75; total3 <=205; 793 wait for 380 ns; low1 <=0; high2 <=133; total3 <=265; 794 wait for 380 ns; low1 <=134; high2 <=266; total3 <=266; 795 wait for 380 ns; low1 <=0; high2 <=76; total3 <=206; 796 wait for 380 ns; low1 <=0; high2 <=134; total3 <=267; 797 wait for 380 ns; low1 <=0; high2 <=135; total3 <=268; 798 wait for 380 ns; low1 <=0; high2 <=136; total3 <=269; 799 wait for 380 ns; low1 <=0; high2 <=137; total3 <=270; 800 wait for 380 ns; low1 <=138; high2 <=271; total3 <=271; 801 wait for 380 ns; low1 <=77; high2 <=207; total3 <=207; 802 wait for 380 ns; low1 <=77; high2 <=208; total3 <=208; 803 wait for 380 ns; low1 <=77; high2 <=209; total3 <=209; 804 wait for 380 ns; low1 <=0; high2 <=77; total3 <=210; 805 wait for 380 ns; low1 <=0; high2 <=138; total3 <=272; 806 wait for 380 ns; low1 <=139; high2 <=273; total3 <=273; 807 wait for 380 ns; low1 <=78; high2 <=211; total3 <=211; 808 wait for 380 ns; low1 <=0; high2 <=78; total3 <=212; 809 wait for 380 ns; low1 <=0; high2 <=139; total3 <=274; 810 wait for 380 ns; low1 <=0; high2 <=140; total3 <=275; 811 wait for 380 ns; low1 <=0; high2 <=141; total3 <=276; 812 wait for 380 ns; low1 <=142; high2 <=277; total3 <=277; 813 wait for 380 ns; low1 <=79; high2 <=213; total3 <=213; 814 wait for 380 ns; low1 <=79; high2 <=214; total3 <=214; 815 wait for 380 ns; low1 <=79; high2 <=215; total3 <=215; 816 wait for 380 ns; low1 <=0; high2 <=79; total3 <=216; 817 wait for 380 ns; low1 <=142; high2 <=278; total3 <=278; 818 wait for 380 ns; low1 <=0; high2 <=80; total3 <=217; 819 wait for 380 ns; low1 <=0; high2 <=142; total3 <=279; 820 wait for 380 ns; low1 <=0; high2 <=143; total3 <=280; 821 wait for 380 ns; low1 <=0; high2 <=144; total3 <=281; 822 wait for 380 ns; low1 <=0; high2 <=145; total3 <=282; 823 wait for 380 ns; low1 <=0; high2 <=146; total3 <=283; 824 wait for 380 ns; low1 <=147; high2 <=284; total3 <=284; 825 wait for 380 ns; low1 <=81; high2 <=218; total3 <=218; 826 wait for 380 ns; low1 <=81; high2 <=219; total3 <=219; 827 wait for 380 ns; low1 <=81; high2 <=220; total3 <=220; 828 wait for 380 ns; low1 <=0; high2 <=81; total3 <=221; 829 wait for 380 ns; low1 <=147; high2 <=285; total3 <=285; 830 wait for 380 ns; low1 <=0; high2 <=82; total3 <=222; 831 wait for 380 ns; low1 <=0; high2 <=147; total3 <=286; 832 wait for 380 ns; low1 <=0; high2 <=148; total3 <=287; 833 wait for 380 ns; low1 <=149; high2 <=288; total3 <=288; 834 wait for 380 ns; low1 <=0; high2 <=83; total3 <=223; 835 wait for 380 ns; low1 <=0; high2 <=149; total3 <=289; 836 wait for 380 ns; low1 <=150; high2 <=290; total3 <=290; 837 wait for 380 ns; low1 <=84; high2 <=224; total3 <=224;

Page 150: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

130

838 wait for 380 ns; low1 <=84; high2 <=225; total3 <=225; 839 wait for 380 ns; low1 <=84; high2 <=226; total3 <=226; 840 wait for 380 ns; low1 <=0; high2 <=84; total3 <=227; 841 wait for 380 ns; low1 <=150; high2 <=291; total3 <=291; 842 wait for 380 ns; low1 <=0; high2 <=85; total3 <=228; 843 wait for 380 ns; low1 <=0; high2 <=150; total3 <=292; 844 wait for 380 ns; low1 <=151; high2 <=293; total3 <=293; 845 wait for 380 ns; low1 <=0; high2 <=86; total3 <=229; 846 wait for 380 ns; low1 <=0; high2 <=151; total3 <=294; 847 wait for 380 ns; low1 <=0; high2 <=152; total3 <=295; 848 wait for 380 ns; low1 <=153; high2 <=296; total3 <=296; 849 wait for 380 ns; low1 <=87; high2 <=230; total3 <=230; 850 wait for 380 ns; low1 <=87; high2 <=231; total3 <=231; 851 wait for 380 ns; low1 <=87; high2 <=232; total3 <=232; 852 wait for 380 ns; low1 <=0; high2 <=87; total3 <=233; 853 wait for 380 ns; low1 <=153; high2 <=297; total3 <=297; 854 wait for 380 ns; low1 <=0; high2 <=88; total3 <=234; 855 wait for 380 ns; low1 <=0; high2 <=153; total3 <=298; 856 wait for 380 ns; low1 <=0; high2 <=154; total3 <=299; 857 wait for 380 ns; low1 <=0; high2 <=155; total3 <=300; 858 wait for 380 ns; low1 <=0; high2 <=156; total3 <=301; 859 wait for 380 ns; low1 <=0; high2 <=157; total3 <=302; 860 wait for 380 ns; low1 <=158; high2 <=303; total3 <=303; 861 wait for 380 ns; low1 <=89; high2 <=235; total3 <=235; 862 wait for 380 ns; low1 <=89; high2 <=236; total3 <=236; 863 wait for 380 ns; low1 <=89; high2 <=237; total3 <=237; 864 wait for 380 ns; low1 <=0; high2 <=89; total3 <=238; 865 wait for 380 ns; low1 <=0; high2 <=158; total3 <=304; 866 wait for 380 ns; low1 <=159; high2 <=305; total3 <=305; 867 wait for 380 ns; low1 <=0; high2 <=90; total3 <=239; 868 wait for 380 ns; low1 <=0; high2 <=159; total3 <=306; 869 wait for 380 ns; low1 <=0; high2 <=160; total3 <=307; 870 wait for 380 ns; low1 <=161; high2 <=308; total3 <=308; 871 wait for 380 ns; low1 <=0; high2 <=91; total3 <=240; 872 wait for 380 ns; low1 <=161; high2 <=309; total3 <=309; 873 wait for 380 ns; low1 <=92; high2 <=241; total3 <=241; 874 wait for 380 ns; low1 <=92; high2 <=242; total3 <=242; 875 wait for 380 ns; low1 <=92; high2 <=243; total3 <=243; 876 wait for 380 ns; low1 <=0; high2 <=92; total3 <=244; 877 wait for 380 ns; low1 <=0; high2 <=161; total3 <=310; 878 wait for 380 ns; low1 <=0; high2 <=162; total3 <=311; 879 wait for 380 ns; low1 <=0; high2 <=163; total3 <=312; 880 wait for 380 ns; low1 <=164; high2 <=313; total3 <=313; 881 wait for 380 ns; low1 <=0; high2 <=93; total3 <=245; 882 wait for 380 ns; low1 <=0; high2 <=164; total3 <=314; 883 wait for 380 ns; low1 <=0; high2 <=165; total3 <=315;

Page 151: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

131

884 wait for 380 ns; low1 <=166; high2 <=316; total3 <=316; 885 wait for 380 ns; low1 <=94; high2 <=246; total3 <=246; 886 wait for 380 ns; low1 <=94; high2 <=247; total3 <=247; 887 wait for 380 ns; low1 <=94; high2 <=248; total3 <=248; 888 wait for 380 ns; low1 <=0; high2 <=94; total3 <=249; 889 wait for 380 ns; low1 <=0; high2 <=166; total3 <=317; 890 wait for 380 ns; low1 <=0; high2 <=167; total3 <=318; 891 wait for 380 ns; low1 <=0; high2 <=168; total3 <=319; 892 wait for 380 ns; low1 <=0; high2 <=169; total3 <=320; 893 wait for 380 ns; low1 <=0; high2 <=170; total3 <=321; 894 wait for 380 ns; low1 <=0; high2 <=171; total3 <=322; 895 wait for 380 ns; low1 <=0; high2 <=172; total3 <=323; 896 wait for 380 ns; low1 <=173; high2 <=324; total3 <=324; 897 wait for 380 ns; low1 <=95; high2 <=250; total3 <=250; 898 wait for 380 ns; low1 <=95; high2 <=251; total3 <=251; 899 wait for 380 ns; low1 <=95; high2 <=252; total3 <=252; 900 wait for 380 ns; low1 <=0; high2 <=95; total3 <=253; 901 wait for 380 ns; low1 <=0; high2 <=173; total3 <=325; 902 wait for 380 ns; low1 <=0; high2 <=174; total3 <=326; 903 wait for 380 ns; low1 <=0; high2 <=175; total3 <=327; 904 wait for 380 ns; low1 <=0; high2 <=176; total3 <=328; 905 wait for 380 ns; low1 <=0; high2 <=177; total3 <=329; 906 wait for 380 ns; low1 <=0; high2 <=178; total3 <=330; 907 wait for 380 ns; low1 <=0; high2 <=179; total3 <=331; 908 wait for 380 ns; low1 <=180; high2 <=332; total3 <=332; 909 wait for 380 ns; low1 <=96; high2 <=254; total3 <=254; 910 wait for 380 ns; low1 <=96; high2 <=255; total3 <=255; 911 wait for 380 ns; low1 <=96; high2 <=256; total3 <=256; 912 wait for 380 ns; low1 <=0; high2 <=96; total3 <=257; 913 wait for 380 ns; low1 <=0; high2 <=180; total3 <=333; 914 wait for 380 ns; low1 <=0; high2 <=181; total3 <=334; 915 wait for 380 ns; low1 <=0; high2 <=182; total3 <=335; 916 wait for 380 ns; low1 <=0; high2 <=183; total3 <=336; 917 wait for 380 ns; low1 <=0; high2 <=184; total3 <=337; 918 wait for 380 ns; low1 <=185; high2 <=338; total3 <=338; 919 wait for 380 ns; low1 <=0; high2 <=97; total3 <=258; 920 wait for 380 ns; low1 <=185; high2 <=339; total3 <=339; 921 wait for 380 ns; low1 <=98; high2 <=259; total3 <=259; 922 wait for 380 ns; low1 <=98; high2 <=260; total3 <=260; 923 wait for 380 ns; low1 <=0; high2 <=98; total3 <=261; 924 wait for 380 ns; low1 <=185; high2 <=340; total3 <=340; 925 wait for 380 ns; low1 <=99; high2 <=262; total3 <=262; 926 wait for 380 ns; low1 <=99; high2 <=263; total3 <=263; 927 wait for 380 ns; low1 <=0; high2 <=99; total3 <=264; 928 wait for 380 ns; low1 <=185; high2 <=341; total3 <=341; 929 wait for 380 ns; low1 <=0; high2 <=100; total3 <=265;

Page 152: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

132

930 wait for 380 ns; low1 <=185; high2 <=342; total3 <=342; 931 wait for 380 ns; low1 <=0; high2 <=101; total3 <=266; 932 wait for 380 ns; low1 <=185; high2 <=343; total3 <=343; 933 wait for 380 ns; low1 <=102; high2 <=267; total3 <=267; 934 wait for 380 ns; low1 <=102; high2 <=268; total3 <=268; 935 wait for 380 ns; low1 <=0; high2 <=102; total3 <=269; 936 wait for 380 ns; low1 <=185; high2 <=344; total3 <=344; 937 wait for 380 ns; low1 <=103; high2 <=270; total3 <=270; 938 wait for 380 ns; low1 <=103; high2 <=271; total3 <=271; 939 wait for 380 ns; low1 <=103; high2 <=272; total3 <=272; 940 wait for 380 ns; low1 <=0; high2 <=103; total3 <=273; 941 wait for 380 ns; low1 <=0; high2 <=185; total3 <=345; 942 wait for 380 ns; low1 <=186; high2 <=346; total3 <=346; 943 wait for 380 ns; low1 <=0; high2 <=104; total3 <=274; 944 wait for 380 ns; low1 <=186; high2 <=347; total3 <=347; 945 wait for 380 ns; low1 <=105; high2 <=275; total3 <=275; 946 wait for 380 ns; low1 <=105; high2 <=276; total3 <=276; 947 wait for 380 ns; low1 <=0; high2 <=105; total3 <=277; 948 wait for 380 ns; low1 <=186; high2 <=348; total3 <=348; 949 wait for 380 ns; low1 <=106; high2 <=278; total3 <=278; 950 wait for 380 ns; low1 <=106; high2 <=279; total3 <=279; 951 wait for 380 ns; low1 <=0; high2 <=106; total3 <=280; 952 wait for 380 ns; low1 <=186; high2 <=349; total3 <=349; 953 wait for 380 ns; low1 <=107; high2 <=281; total3 <=281; 954 wait for 380 ns; low1 <=107; high2 <=282; total3 <=282; 955 wait for 380 ns; low1 <=0; high2 <=107; total3 <=283; 956 wait for 380 ns; low1 <=186; high2 <=350; total3 <=350; 957 wait for 380 ns; low1 <=108; high2 <=284; total3 <=284; 958 wait for 380 ns; low1 <=108; high2 <=285; total3 <=285; 959 wait for 380 ns; low1 <=108; high2 <=286; total3 <=286; 960 wait for 380 ns; low1 <=0; high2 <=108; total3 <=287; 961 wait for 380 ns; low1 <=0; high2 <=186; total3 <=351; 962 wait for 380 ns; low1 <=0; high2 <=187; total3 <=352; 963 wait for 380 ns; low1 <=0; high2 <=188; total3 <=353; 964 wait for 380 ns; low1 <=0; high2 <=189; total3 <=354; 965 wait for 380 ns; low1 <=0; high2 <=190; total3 <=355; 966 wait for 380 ns; low1 <=0; high2 <=191; total3 <=356; 967 wait for 380 ns; low1 <=0; high2 <=192; total3 <=357; 968 wait for 380 ns; low1 <=193; high2 <=358; total3 <=358; 969 wait for 380 ns; low1 <=109; high2 <=288; total3 <=288; 970 wait for 380 ns; low1 <=109; high2 <=289; total3 <=289; 971 wait for 380 ns; low1 <=109; high2 <=290; total3 <=290; 972 wait for 380 ns; low1 <=0; high2 <=109; total3 <=291; 973 wait for 380 ns; low1 <=0; high2 <=193; total3 <=359; 974 wait for 380 ns; low1 <=0; high2 <=194; total3 <=360; 975 wait for 380 ns; low1 <=195; high2 <=361; total3 <=361;

Page 153: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

133

976 wait for 380 ns; low1 <=0; high2 <=110; total3 <=292; 977 wait for 380 ns; low1 <=195; high2 <=362; total3 <=362; 978 wait for 380 ns; low1 <=111; high2 <=293; total3 <=293; 979 wait for 380 ns; low1 <=0; high2 <=111; total3 <=294; 980 wait for 380 ns; low1 <=195; high2 <=363; total3 <=363; 981 wait for 380 ns; low1 <=112; high2 <=295; total3 <=295; 982 wait for 380 ns; low1 <=112; high2 <=296; total3 <=296; 983 wait for 380 ns; low1 <=112; high2 <=297; total3 <=297; 984 wait for 380 ns; low1 <=0; high2 <=112; total3 <=298; 985 wait for 380 ns; low1 <=0; high2 <=195; total3 <=364; 986 wait for 380 ns; low1 <=0; high2 <=196; total3 <=365; 987 wait for 380 ns; low1 <=197; high2 <=366; total3 <=366; 988 wait for 380 ns; low1 <=0; high2 <=113; total3 <=299; 989 wait for 380 ns; low1 <=197; high2 <=367; total3 <=367; 990 wait for 380 ns; low1 <=114; high2 <=300; total3 <=300; 991 wait for 380 ns; low1 <=0; high2 <=114; total3 <=301; 992 wait for 380 ns; low1 <=197; high2 <=368; total3 <=368; 993 wait for 380 ns; low1 <=115; high2 <=302; total3 <=302; 994 wait for 380 ns; low1 <=115; high2 <=303; total3 <=303; 995 wait for 380 ns; low1 <=115; high2 <=304; total3 <=304; 996 wait for 380 ns; low1 <=0; high2 <=115; total3 <=305; 997 wait for 380 ns; low1 <=0; high2 <=197; total3 <=369; 998 wait for 380 ns; low1 <=198; high2 <=370; total3 <=370; 999 wait for 380 ns; low1 <=0; high2 <=116; total3 <=306; 1000 wait for 380 ns; low1 <=0; high2 <=198; total3 <=371; 1001 wait for 380 ns; low1 <=0; high2 <=199; total3 <=372; 1002 wait for 380 ns; low1 <=0; high2 <=100; total3 <=186; 1003 wait for 380 ns; low1 <=0; high2 <=101; total3 <=187; 1004 wait for 380 ns; low1 <=102; high2 <=188; total3 <=188; 1005 wait for 380 ns; low1 <=117; high2 <=307; total3 <=307; 1006 wait for 380 ns; low1 <=117; high2 <=308; total3 <=308; 1007 wait for 380 ns; low1 <=117; high2 <=309; total3 <=309; 1008 wait for 380 ns; low1 <=0; high2 <=117; total3 <=310; 1009 wait for 380 ns; low1 <=0; high2 <=102; total3 <=189; 1010 wait for 380 ns; low1 <=0; high2 <=103; total3 <=190; 1011 wait for 380 ns; low1 <=104; high2 <=191; total3 <=191; 1012 wait for 380 ns; low1 <=118; high2 <=311; total3 <=311; 1013 wait for 380 ns; low1 <=118; high2 <=312; total3 <=312; 1014 wait for 380 ns; low1 <=0; high2 <=118; total3 <=313; 1015 wait for 380 ns; low1 <=0; high2 <=104; total3 <=192; 1016 wait for 380 ns; low1 <=105; high2 <=193; total3 <=193; 1017 wait for 380 ns; low1 <=119; high2 <=314; total3 <=314; 1018 wait for 380 ns; low1 <=119; high2 <=315; total3 <=315; 1019 wait for 380 ns; low1 <=119; high2 <=316; total3 <=316; 1020 wait for 380 ns; low1 <=0; high2 <=119; total3 <=317; 1021 wait for 380 ns; low1 <=0; high2 <=105; total3 <=194;

Page 154: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

134

1022 wait for 380 ns; low1 <=106; high2 <=195; total3 <=195; 1023 wait for 380 ns; low1 <=0; high2 <=120; total3 <=318; 1024 wait for 380 ns; low1 <=0; high2 <=106; total3 <=196; 1025 wait for 380 ns; low1 <=0; high2 <=107; total3 <=197; 1026 wait for 380 ns; low1 <=108; high2 <=198; total3 <=198; 1027 wait for 380 ns; low1 <=0; high2 <=121; total3 <=319; 1028 wait for 380 ns; low1 <=108; high2 <=199; total3 <=199; 1029 wait for 380 ns; low1 <=122; high2 <=320; total3 <=320; 1030 wait for 380 ns; low1 <=122; high2 <=321; total3 <=321; 1031 wait for 380 ns; low1 <=61; high2 <=161; total3 <=161; 1032 wait for 380 ns; low1 <=0; high2 <=61; total3 <=162; 1033 wait for 380 ns; low1 <=0; high2 <=108; total3 <=200; 1034 wait for 380 ns; low1 <=109; high2 <=201; total3 <=201; 1035 wait for 380 ns; low1 <=0; high2 <=62; total3 <=163; 1036 wait for 380 ns; low1 <=0; high2 <=109; total3 <=202; 1037 wait for 380 ns; low1 <=110; high2 <=203; total3 <=203; 1038 wait for 380 ns; low1 <=0; high2 <=63; total3 <=164; 1039 wait for 380 ns; low1 <=0; high2 <=110; total3 <=204; 1040 wait for 380 ns; low1 <=111; high2 <=205; total3 <=205; 1041 wait for 380 ns; low1 <=64; high2 <=165; total3 <=165; 1042 wait for 380 ns; low1 <=64; high2 <=166; total3 <=166; 1043 wait for 380 ns; low1 <=64; high2 <=167; total3 <=167; 1044 wait for 380 ns; low1 <=0; high2 <=64; total3 <=168; 1045 wait for 380 ns; low1 <=0; high2 <=111; total3 <=206; 1046 wait for 380 ns; low1 <=112; high2 <=207; total3 <=207; 1047 wait for 380 ns; low1 <=0; high2 <=65; total3 <=169; 1048 wait for 380 ns; low1 <=112; high2 <=208; total3 <=208; 1049 wait for 380 ns; low1 <=0; high2 <=66; total3 <=170; 1050 wait for 380 ns; low1 <=112; high2 <=209; total3 <=209; 1051 wait for 380 ns; low1 <=0; high2 <=67; total3 <=171; 1052 wait for 380 ns; low1 <=112; high2 <=210; total3 <=210; 1053 wait for 380 ns; low1 <=68; high2 <=172; total3 <=172; 1054 wait for 380 ns; low1 <=68; high2 <=173; total3 <=173; 1055 wait for 380 ns; low1 <=68; high2 <=174; total3 <=174; 1056 wait for 380 ns; low1 <=0; high2 <=68; total3 <=175; 1057 wait for 380 ns; low1 <=0; high2 <=112; total3 <=211; 1058 wait for 380 ns; low1 <=113; high2 <=212; total3 <=212; 1059 wait for 380 ns; low1 <=0; high2 <=69; total3 <=176; 1060 wait for 380 ns; low1 <=0; high2 <=113; total3 <=213; 1061 wait for 380 ns; low1 <=0; high2 <=114; total3 <=214; 1062 wait for 380 ns; low1 <=115; high2 <=215; total3 <=215; 1063 wait for 380 ns; low1 <=0; high2 <=70; total3 <=177; 1064 wait for 380 ns; low1 <=115; high2 <=216; total3 <=216; 1065 wait for 380 ns; low1 <=71; high2 <=178; total3 <=178; 1066 wait for 380 ns; low1 <=71; high2 <=179; total3 <=179; 1067 wait for 380 ns; low1 <=71; high2 <=180; total3 <=180;

Page 155: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

135

1068 wait for 380 ns; low1 <=0; high2 <=71; total3 <=181; 1069 wait for 380 ns; low1 <=0; high2 <=115; total3 <=217; 1070 wait for 380 ns; low1 <=116; high2 <=218; total3 <=218; 1071 wait for 380 ns; low1 <=72; high2 <=182; total3 <=182; 1072 wait for 380 ns; low1 <=0; high2 <=72; total3 <=183; 1073 wait for 380 ns; low1 <=0; high2 <=116; total3 <=219; 1074 wait for 380 ns; low1 <=0; high2 <=117; total3 <=220; 1075 wait for 380 ns; low1 <=0; high2 <=118; total3 <=221; 1076 wait for 380 ns; low1 <=119; high2 <=222; total3 <=222; 1077 wait for 380 ns; low1 <=73; high2 <=184; total3 <=184; 1078 wait for 380 ns; low1 <=73; high2 <=185; total3 <=185; 1079 wait for 380 ns; low1 <=73; high2 <=186; total3 <=186; 1080 wait for 380 ns; low1 <=0; high2 <=73; total3 <=187; 1081 wait for 380 ns; low1 <=0; high2 <=119; total3 <=223; 1082 wait for 380 ns; low1 <=120; high2 <=224; total3 <=224; 1083 wait for 380 ns; low1 <=0; high2 <=74; total3 <=188; 1084 wait for 380 ns; low1 <=0; high2 <=120; total3 <=225; 1085 wait for 380 ns; low1 <=0; high2 <=121; total3 <=226; 1086 wait for 380 ns; low1 <=122; high2 <=227; total3 <=227; 1087 wait for 380 ns; low1 <=0; high2 <=75; total3 <=189; 1088 wait for 380 ns; low1 <=122; high2 <=228; total3 <=228; 1089 wait for 380 ns; low1 <=76; high2 <=190; total3 <=190; 1090 wait for 380 ns; low1 <=76; high2 <=191; total3 <=191; 1091 wait for 380 ns; low1 <=76; high2 <=192; total3 <=192; 1092 wait for 380 ns; low1 <=0; high2 <=76; total3 <=193; 1093 wait for 380 ns; low1 <=0; high2 <=122; total3 <=229; 1094 wait for 380 ns; low1 <=0; high2 <=123; total3 <=230; 1095 wait for 380 ns; low1 <=124; high2 <=231; total3 <=231; 1096 wait for 380 ns; low1 <=0; high2 <=77; total3 <=194; 1097 wait for 380 ns; low1 <=124; high2 <=232; total3 <=232; 1098 wait for 380 ns; low1 <=78; high2 <=195; total3 <=195; 1099 wait for 380 ns; low1 <=0; high2 <=78; total3 <=196; 1100 wait for 380 ns; low1 <=124; high2 <=233; total3 <=233; 1101 wait for 380 ns; low1 <=79; high2 <=197; total3 <=197; 1102 wait for 380 ns; low1 <=79; high2 <=198; total3 <=198; 1103 wait for 380 ns; low1 <=79; high2 <=199; total3 <=199; 1104 wait for 380 ns; low1 <=0; high2 <=79; total3 <=200; 1105 wait for 380 ns; low1 <=0; high2 <=124; total3 <=234; 1106 wait for 380 ns; low1 <=125; high2 <=235; total3 <=235; 1107 wait for 380 ns; low1 <=0; high2 <=80; total3 <=201; 1108 wait for 380 ns; low1 <=125; high2 <=236; total3 <=236; 1109 wait for 380 ns; low1 <=0; high2 <=81; total3 <=202; 1110 wait for 380 ns; low1 <=125; high2 <=237; total3 <=237; 1111 wait for 380 ns; low1 <=0; high2 <=82; total3 <=203; 1112 wait for 380 ns; low1 <=125; high2 <=238; total3 <=238; 1113 wait for 380 ns; low1 <=83; high2 <=204; total3 <=204;

Page 156: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

136

1114 wait for 380 ns; low1 <=83; high2 <=205; total3 <=205; 1115 wait for 380 ns; low1 <=83; high2 <=206; total3 <=206; 1116 wait for 380 ns; low1 <=0; high2 <=83; total3 <=207; 1117 wait for 380 ns; low1 <=0; high2 <=125; total3 <=239; 1118 wait for 380 ns; low1 <=0; high2 <=126; total3 <=240; 1119 wait for 380 ns; low1 <=127; high2 <=241; total3 <=241; 1120 wait for 380 ns; low1 <=84; high2 <=208; total3 <=208; 1121 wait for 380 ns; low1 <=0; high2 <=84; total3 <=209; 1122 wait for 380 ns; low1 <=127; high2 <=242; total3 <=242; 1123 wait for 380 ns; low1 <=0; high2 <=85; total3 <=210; 1124 wait for 380 ns; low1 <=127; high2 <=243; total3 <=243; 1125 wait for 380 ns; low1 <=86; high2 <=211; total3 <=211; 1126 wait for 380 ns; low1 <=86; high2 <=212; total3 <=212; 1127 wait for 380 ns; low1 <=0; high2 <=86; total3 <=213; 1128 wait for 380 ns; low1 <=127; high2 <=244; total3 <=244; 1129 wait for 380 ns; low1 <=87; high2 <=214; total3 <=214; 1130 wait for 380 ns; low1 <=87; high2 <=215; total3 <=215; 1131 wait for 380 ns; low1 <=87; high2 <=216; total3 <=216; 1132 wait for 380 ns; low1 <=87; high2 <=217; total3 <=217; 1133 wait for 380 ns; low1 <=87; high2 <=218; total3 <=218; 1134 wait for 380 ns; low1 <=87; high2 <=219; total3 <=219; 1135 wait for 380 ns; low1 <=0; high2 <=87; total3 <=220; 1136 wait for 380 ns; low1 <=127; high2 <=245; total3 <=245; 1137 wait for 380 ns; low1 <=88; high2 <=221; total3 <=221; 1138 wait for 380 ns; low1 <=88; high2 <=222; total3 <=222; 1139 wait for 380 ns; low1 <=88; high2 <=223; total3 <=223; 1140 wait for 380 ns; low1 <=0; high2 <=88; total3 <=224; 1141 wait for 380 ns; low1 <=0; high2 <=127; total3 <=246; 1142 wait for 380 ns; low1 <=0; high2 <=128; total3 <=247; 1143 wait for 380 ns; low1 <=0; high2 <=129; total3 <=248; 1144 wait for 380 ns; low1 <=0; high2 <=130; total3 <=249; 1145 wait for 380 ns; low1 <=0; high2 <=131; total3 <=250; 1146 wait for 380 ns; low1 <=0; high2 <=132; total3 <=251; 1147 wait for 380 ns; low1 <=0; high2 <=133; total3 <=252; 1148 wait for 380 ns; low1 <=134; high2 <=253; total3 <=253; 1149 wait for 380 ns; low1 <=89; high2 <=225; total3 <=225; 1150 wait for 380 ns; low1 <=89; high2 <=226; total3 <=226; 1151 wait for 380 ns; low1 <=0; high2 <=89; total3 <=227; 1152 wait for 380 ns; low1 <=134; high2 <=254; total3 <=254; 1153 wait for 380 ns; low1 <=90; high2 <=228; total3 <=228; 1154 wait for 380 ns; low1 <=90; high2 <=229; total3 <=229; 1155 wait for 380 ns; low1 <=90; high2 <=230; total3 <=230; 1156 wait for 380 ns; low1 <=0; high2 <=90; total3 <=231; 1157 wait for 380 ns; low1 <=0; high2 <=134; total3 <=255; 1158 wait for 380 ns; low1 <=135; high2 <=256; total3 <=256; 1159 wait for 380 ns; low1 <=0; high2 <=91; total3 <=232;

Page 157: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

137

1160 wait for 380 ns; low1 <=135; high2 <=257; total3 <=257; 1161 wait for 380 ns; low1 <=92; high2 <=233; total3 <=233; 1162 wait for 380 ns; low1 <=92; high2 <=234; total3 <=234; 1163 wait for 380 ns; low1 <=0; high2 <=92; total3 <=235; 1164 wait for 380 ns; low1 <=135; high2 <=258; total3 <=258; 1165 wait for 380 ns; low1 <=93; high2 <=236; total3 <=236; 1166 wait for 380 ns; low1 <=93; high2 <=237; total3 <=237; 1167 wait for 380 ns; low1 <=0; high2 <=93; total3 <=238; 1168 wait for 380 ns; low1 <=0; high2 <=135; total3 <=259; 1169 wait for 380 ns; low1 <=136; high2 <=260; total3 <=260; 1170 wait for 380 ns; low1 <=94; high2 <=239; total3 <=239; 1171 wait for 380 ns; low1 <=0; high2 <=94; total3 <=240; 1172 wait for 380 ns; low1 <=136; high2 <=261; total3 <=261; 1173 wait for 380 ns; low1 <=95; high2 <=241; total3 <=241; 1174 wait for 380 ns; low1 <=95; high2 <=242; total3 <=242; 1175 wait for 380 ns; low1 <=95; high2 <=243; total3 <=243; 1176 wait for 380 ns; low1 <=0; high2 <=95; total3 <=244; 1177 wait for 380 ns; low1 <=0; high2 <=136; total3 <=262; 1178 wait for 380 ns; low1 <=0; high2 <=137; total3 <=263; 1179 wait for 380 ns; low1 <=0; high2 <=138; total3 <=264; 1180 wait for 380 ns; low1 <=139; high2 <=265; total3 <=265; 1181 wait for 380 ns; low1 <=0; high2 <=96; total3 <=245; 1182 wait for 380 ns; low1 <=0; high2 <=139; total3 <=266; 1183 wait for 380 ns; low1 <=0; high2 <=140; total3 <=267; 1184 wait for 380 ns; low1 <=141; high2 <=268; total3 <=268; 1185 wait for 380 ns; low1 <=97; high2 <=246; total3 <=246; 1186 wait for 380 ns; low1 <=97; high2 <=247; total3 <=247; 1187 wait for 380 ns; low1 <=97; high2 <=248; total3 <=248; 1188 wait for 380 ns; low1 <=0; high2 <=97; total3 <=249; 1189 wait for 380 ns; low1 <=0; high2 <=141; total3 <=269; 1190 wait for 380 ns; low1 <=0; high2 <=142; total3 <=270; 1191 wait for 380 ns; low1 <=143; high2 <=271; total3 <=271; 1192 wait for 380 ns; low1 <=0; high2 <=98; total3 <=250; 1193 wait for 380 ns; low1 <=0; high2 <=143; total3 <=272; 1194 wait for 380 ns; low1 <=144; high2 <=273; total3 <=273; 1195 wait for 380 ns; low1 <=0; high2 <=99; total3 <=251; 1196 wait for 380 ns; low1 <=144; high2 <=274; total3 <=274; 1197 wait for 380 ns; low1 <=100; high2 <=252; total3 <=252; 1198 wait for 380 ns; low1 <=100; high2 <=253; total3 <=253; 1199 wait for 380 ns; low1 <=100; high2 <=254; total3 <=254; 1200 wait for 380 ns; low1 <=0; high2 <=100; total3 <=255; 1201 wait for 380 ns; low1 <=0; high2 <=144; total3 <=275; 1202 wait for 380 ns; low1 <=0; high2 <=145; total3 <=276; 1203 wait for 380 ns; low1 <=146; high2 <=277; total3 <=277; 1204 wait for 380 ns; low1 <=101; high2 <=256; total3 <=256; 1205 wait for 380 ns; low1 <=101; high2 <=257; total3 <=257;

Page 158: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

138

1206 wait for 380 ns; low1 <=101; high2 <=258; total3 <=258; 1207 wait for 380 ns; low1 <=0; high2 <=101; total3 <=259; 1208 wait for 380 ns; low1 <=146; high2 <=278; total3 <=278; 1209 wait for 380 ns; low1 <=102; high2 <=260; total3 <=260; 1210 wait for 380 ns; low1 <=102; high2 <=261; total3 <=261; 1211 wait for 380 ns; low1 <=102; high2 <=262; total3 <=262; 1212 wait for 380 ns; low1 <=0; high2 <=102; total3 <=263; 1213 wait for 380 ns; low1 <=0; high2 <=146; total3 <=279; 1214 wait for 380 ns; low1 <=0; high2 <=147; total3 <=280; 1215 wait for 380 ns; low1 <=148; high2 <=281; total3 <=281; 1216 wait for 380 ns; low1 <=103; high2 <=264; total3 <=264; 1217 wait for 380 ns; low1 <=103; high2 <=265; total3 <=265; 1218 wait for 380 ns; low1 <=103; high2 <=266; total3 <=266; 1219 wait for 380 ns; low1 <=0; high2 <=103; total3 <=267; 1220 wait for 380 ns; low1 <=148; high2 <=282; total3 <=282; 1221 wait for 380 ns; low1 <=104; high2 <=268; total3 <=268; 1222 wait for 380 ns; low1 <=104; high2 <=269; total3 <=269; 1223 wait for 380 ns; low1 <=104; high2 <=270; total3 <=270; 1224 wait for 380 ns; low1 <=0; high2 <=104; total3 <=271; 1225 wait for 380 ns; low1 <=0; high2 <=148; total3 <=283; 1226 wait for 380 ns; low1 <=0; high2 <=149; total3 <=284; 1227 wait for 380 ns; low1 <=150; high2 <=285; total3 <=285; 1228 wait for 380 ns; low1 <=105; high2 <=272; total3 <=272; 1229 wait for 380 ns; low1 <=105; high2 <=273; total3 <=273; 1230 wait for 380 ns; low1 <=0; high2 <=105; total3 <=274; 1231 wait for 380 ns; low1 <=0; high2 <=150; total3 <=286; 1232 wait for 380 ns; low1 <=151; high2 <=287; total3 <=287; 1233 wait for 380 ns; low1 <=106; high2 <=275; total3 <=275; 1234 wait for 380 ns; low1 <=106; high2 <=276; total3 <=276; 1235 wait for 380 ns; low1 <=106; high2 <=277; total3 <=277; 1236 wait for 380 ns; low1 <=0; high2 <=106; total3 <=278; 1237 wait for 380 ns; low1 <=0; high2 <=151; total3 <=288; 1238 wait for 380 ns; low1 <=152; high2 <=289; total3 <=289; 1239 wait for 380 ns; low1 <=0; high2 <=107; total3 <=279; 1240 wait for 380 ns; low1 <=0; high2 <=152; total3 <=290; 1241 wait for 380 ns; low1 <=0; high2 <=153; total3 <=291; 1242 wait for 380 ns; low1 <=154; high2 <=292; total3 <=292; 1243 wait for 380 ns; low1 <=0; high2 <=108; total3 <=280; 1244 wait for 380 ns; low1 <=154; high2 <=293; total3 <=293; 1245 wait for 380 ns; low1 <=109; high2 <=281; total3 <=281; 1246 wait for 380 ns; low1 <=109; high2 <=282; total3 <=282; 1247 wait for 380 ns; low1 <=109; high2 <=283; total3 <=283; 1248 wait for 380 ns; low1 <=0; high2 <=109; total3 <=284; 1249 wait for 380 ns; low1 <=0; high2 <=154; total3 <=294; 1250 wait for 380 ns; low1 <=0; high2 <=155; total3 <=295; 1251 wait for 380 ns; low1 <=156; high2 <=296; total3 <=296;

Page 159: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

139

1252 wait for 380 ns; low1 <=110; high2 <=285; total3 <=285; 1253 wait for 380 ns; low1 <=110; high2 <=286; total3 <=286; 1254 wait for 380 ns; low1 <=110; high2 <=287; total3 <=287; 1255 wait for 380 ns; low1 <=0; high2 <=110; total3 <=288; 1256 wait for 380 ns; low1 <=156; high2 <=297; total3 <=297; 1257 wait for 380 ns; low1 <=111; high2 <=289; total3 <=289; 1258 wait for 380 ns; low1 <=111; high2 <=290; total3 <=290; 1259 wait for 380 ns; low1 <=111; high2 <=291; total3 <=291; 1260 wait for 380 ns; low1 <=0; high2 <=111; total3 <=292; 1261 wait for 380 ns; low1 <=0; high2 <=156; total3 <=298; 1262 wait for 380 ns; low1 <=157; high2 <=299; total3 <=299; 1263 wait for 380 ns; low1 <=112; high2 <=293; total3 <=293; 1264 wait for 380 ns; low1 <=0; high2 <=112; total3 <=294; 1265 wait for 380 ns; low1 <=0; high2 <=157; total3 <=300; 1266 wait for 380 ns; low1 <=158; high2 <=301; total3 <=301; 1267 wait for 380 ns; low1 <=0; high2 <=113; total3 <=295; 1268 wait for 380 ns; low1 <=158; high2 <=302; total3 <=302; 1269 wait for 380 ns; low1 <=114; high2 <=296; total3 <=296; 1270 wait for 380 ns; low1 <=114; high2 <=297; total3 <=297; 1271 wait for 380 ns; low1 <=114; high2 <=298; total3 <=298; 1272 wait for 380 ns; low1 <=0; high2 <=114; total3 <=299; 1273 wait for 380 ns; low1 <=0; high2 <=158; total3 <=303; 1274 wait for 380 ns; low1 <=159; high2 <=304; total3 <=304; 1275 wait for 380 ns; low1 <=115; high2 <=300; total3 <=300; 1276 wait for 380 ns; low1 <=0; high2 <=115; total3 <=301; 1277 wait for 380 ns; low1 <=159; high2 <=305; total3 <=305; 1278 wait for 380 ns; low1 <=116; high2 <=302; total3 <=302; 1279 wait for 380 ns; low1 <=0; high2 <=116; total3 <=303; 1280 wait for 380 ns; low1 <=159; high2 <=306; total3 <=306; 1281 wait for 380 ns; low1 <=117; high2 <=304; total3 <=304; 1282 wait for 380 ns; low1 <=117; high2 <=305; total3 <=305; 1283 wait for 380 ns; low1 <=117; high2 <=306; total3 <=306; 1284 wait for 380 ns; low1 <=0; high2 <=117; total3 <=307; 1285 wait for 380 ns; low1 <=0; high2 <=159; total3 <=307; 1286 wait for 380 ns; low1 <=160; high2 <=308; total3 <=308; 1287 wait for 380 ns; low1 <=118; high2 <=308; total3 <=308; 1288 wait for 380 ns; low1 <=0; high2 <=118; total3 <=309; 1289 wait for 380 ns; low1 <=0; high2 <=160; total3 <=309; 1290 wait for 380 ns; low1 <=0; high2 <=161; total3 <=310; 1291 wait for 380 ns; low1 <=0; high2 <=162; total3 <=311; 1292 wait for 380 ns; low1 <=163; high2 <=312; total3 <=312; 1293 wait for 380 ns; low1 <=119; high2 <=310; total3 <=310; 1294 wait for 380 ns; low1 <=119; high2 <=311; total3 <=311; 1295 wait for 380 ns; low1 <=119; high2 <=312; total3 <=312; 1296 wait for 380 ns; low1 <=0; high2 <=119; total3 <=313; 1297 wait for 380 ns; low1 <=0; high2 <=163; total3 <=313;

Page 160: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

140

1298 wait for 380 ns; low1 <=164; high2 <=314; total3 <=314; 1299 wait for 380 ns; low1 <=0; high2 <=120; total3 <=314; 1300 wait for 380 ns; low1 <=164; high2 <=315; total3 <=315; 1301 wait for 380 ns; low1 <=0; high2 <=121; total3 <=315; 1302 wait for 380 ns; low1 <=0; high2 <=164; total3 <=316; 1303 wait for 380 ns; low1 <=0; high2 <=165; total3 <=317; 1304 wait for 380 ns; low1 <=166; high2 <=318; total3 <=318; 1305 wait for 380 ns; low1 <=122; high2 <=316; total3 <=316; 1306 wait for 380 ns; low1 <=122; high2 <=317; total3 <=317; 1307 wait for 380 ns; low1 <=122; high2 <=318; total3 <=318; 1308 wait for 380 ns; low1 <=0; high2 <=122; total3 <=319; 1309 wait for 380 ns; low1 <=0; high2 <=166; total3 <=319; 1310 wait for 380 ns; low1 <=167; high2 <=320; total3 <=320; 1311 wait for 380 ns; low1 <=0; high2 <=123; total3 <=320; 1312 wait for 380 ns; low1 <=0; high2 <=167; total3 <=321; 1313 wait for 380 ns; low1 <=0; high2 <=168; total3 <=322; 1314 wait for 380 ns; low1 <=169; high2 <=323; total3 <=323; 1315 wait for 380 ns; low1 <=0; high2 <=124; total3 <=321; 1316 wait for 380 ns; low1 <=169; high2 <=324; total3 <=324; 1317 wait for 380 ns; low1 <=125; high2 <=322; total3 <=322; 1318 wait for 380 ns; low1 <=125; high2 <=323; total3 <=323; 1319 wait for 380 ns; low1 <=125; high2 <=324; total3 <=324; 1320 wait for 380 ns; low1 <=0; high2 <=62; total3 <=162; 1321 wait for 380 ns; low1 <=0; high2 <=169; total3 <=325; 1322 wait for 380 ns; low1 <=0; high2 <=170; total3 <=326; 1323 wait for 380 ns; low1 <=171; high2 <=327; total3 <=327; 1324 wait for 380 ns; low1 <=0; high2 <=63; total3 <=163; 1325 wait for 380 ns; low1 <=0; high2 <=171; total3 <=328; 1326 wait for 380 ns; low1 <=0; high2 <=172; total3 <=329; 1327 wait for 380 ns; low1 <=0; high2 <=173; total3 <=330; 1328 wait for 380 ns; low1 <=174; high2 <=331; total3 <=331; 1329 wait for 380 ns; low1 <=64; high2 <=164; total3 <=164; 1330 wait for 380 ns; low1 <=64; high2 <=165; total3 <=165; 1331 wait for 380 ns; low1 <=64; high2 <=166; total3 <=166; 1332 wait for 380 ns; low1 <=0; high2 <=64; total3 <=167; 1333 wait for 380 ns; low1 <=0; high2 <=174; total3 <=332; 1334 wait for 380 ns; low1 <=0; high2 <=175; total3 <=333; 1335 wait for 380 ns; low1 <=0; high2 <=176; total3 <=334; 1336 wait for 380 ns; low1 <=177; high2 <=335; total3 <=335; 1337 wait for 380 ns; low1 <=65; high2 <=168; total3 <=168; 1338 wait for 380 ns; low1 <=0; high2 <=65; total3 <=169; 1339 wait for 380 ns; low1 <=0; high2 <=177; total3 <=336; 1340 wait for 380 ns; low1 <=178; high2 <=337; total3 <=337; 1341 wait for 380 ns; low1 <=66; high2 <=170; total3 <=170; 1342 wait for 380 ns; low1 <=66; high2 <=171; total3 <=171; 1343 wait for 380 ns; low1 <=0; high2 <=66; total3 <=172;

Page 161: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

141

1344 wait for 380 ns; low1 <=178; high2 <=338; total3 <=338; 1345 wait for 380 ns; low1 <=67; high2 <=173; total3 <=173; 1346 wait for 380 ns; low1 <=67; high2 <=174; total3 <=174; 1347 wait for 380 ns; low1 <=67; high2 <=175; total3 <=175; 1348 wait for 380 ns; low1 <=67; high2 <=176; total3 <=176; 1349 wait for 380 ns; low1 <=67; high2 <=177; total3 <=177; 1350 wait for 380 ns; low1 <=0; high2 <=67; total3 <=178; 1351 wait for 380 ns; low1 <=0; high2 <=178; total3 <=339; 1352 wait for 380 ns; low1 <=179; high2 <=340; total3 <=340; 1353 wait for 380 ns; low1 <=68; high2 <=179; total3 <=179; 1354 wait for 380 ns; low1 <=68; high2 <=180; total3 <=180; 1355 wait for 380 ns; low1 <=0; high2 <=68; total3 <=181; 1356 wait for 380 ns; low1 <=179; high2 <=341; total3 <=341; 1357 wait for 380 ns; low1 <=69; high2 <=182; total3 <=182; 1358 wait for 380 ns; low1 <=69; high2 <=183; total3 <=183; 1359 wait for 380 ns; low1 <=69; high2 <=184; total3 <=184; 1360 wait for 380 ns; low1 <=69; high2 <=185; total3 <=185; 1361 wait for 380 ns; low1 <=69; high2 <=186; total3 <=186; 1362 wait for 380 ns; low1 <=69; high2 <=187; total3 <=187; 1363 wait for 380 ns; low1 <=0; high2 <=69; total3 <=188; 1364 wait for 380 ns; low1 <=179; high2 <=342; total3 <=342; 1365 wait for 380 ns; low1 <=70; high2 <=189; total3 <=189; 1366 wait for 380 ns; low1 <=70; high2 <=190; total3 <=190; 1367 wait for 380 ns; low1 <=70; high2 <=191; total3 <=191; 1368 wait for 380 ns; low1 <=0; high2 <=70; total3 <=192; 1369 wait for 380 ns; low1 <=0; high2 <=179; total3 <=343; 1370 wait for 380 ns; low1 <=0; high2 <=180; total3 <=344; 1371 wait for 380 ns; low1 <=181; high2 <=345; total3 <=345; 1372 wait for 380 ns; low1 <=0; high2 <=71; total3 <=193; 1373 wait for 380 ns; low1 <=181; high2 <=346; total3 <=346; 1374 wait for 380 ns; low1 <=72; high2 <=194; total3 <=194; 1375 wait for 380 ns; low1 <=0; high2 <=72; total3 <=195; 1376 wait for 380 ns; low1 <=181; high2 <=347; total3 <=347; 1377 wait for 380 ns; low1 <=73; high2 <=196; total3 <=196; 1378 wait for 380 ns; low1 <=73; high2 <=197; total3 <=197; 1379 wait for 380 ns; low1 <=73; high2 <=198; total3 <=198; 1380 wait for 380 ns; low1 <=0; high2 <=73; total3 <=199; 1381 wait for 380 ns; low1 <=0; high2 <=181; total3 <=348; 1382 wait for 380 ns; low1 <=182; high2 <=349; total3 <=349; 1383 wait for 380 ns; low1 <=0; high2 <=74; total3 <=200; 1384 wait for 380 ns; low1 <=182; high2 <=350; total3 <=350; 1385 wait for 380 ns; low1 <=75; high2 <=201; total3 <=201; 1386 wait for 380 ns; low1 <=75; high2 <=202; total3 <=202; 1387 wait for 380 ns; low1 <=0; high2 <=75; total3 <=203; 1388 wait for 380 ns; low1 <=182; high2 <=351; total3 <=351; 1389 wait for 380 ns; low1 <=76; high2 <=204; total3 <=204;

Page 162: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

142

1390 wait for 380 ns; low1 <=76; high2 <=205; total3 <=205; 1391 wait for 380 ns; low1 <=76; high2 <=206; total3 <=206; 1392 wait for 380 ns; low1 <=0; high2 <=76; total3 <=207; 1393 wait for 380 ns; low1 <=0; high2 <=182; total3 <=352; 1394 wait for 380 ns; low1 <=183; high2 <=353; total3 <=353; 1395 wait for 380 ns; low1 <=77; high2 <=208; total3 <=208; 1396 wait for 380 ns; low1 <=0; high2 <=77; total3 <=209; 1397 wait for 380 ns; low1 <=183; high2 <=354; total3 <=354; 1398 wait for 380 ns; low1 <=0; high2 <=78; total3 <=210; 1399 wait for 380 ns; low1 <=0; high2 <=183; total3 <=355; 1400 wait for 380 ns; low1 <=184; high2 <=356; total3 <=356; 1401 wait for 380 ns; low1 <=79; high2 <=211; total3 <=211; 1402 wait for 380 ns; low1 <=79; high2 <=212; total3 <=212; 1403 wait for 380 ns; low1 <=79; high2 <=213; total3 <=213; 1404 wait for 380 ns; low1 <=0; high2 <=79; total3 <=214; 1405 wait for 380 ns; low1 <=0; high2 <=184; total3 <=357; 1406 wait for 380 ns; low1 <=185; high2 <=358; total3 <=358; 1407 wait for 380 ns; low1 <=80; high2 <=215; total3 <=215; 1408 wait for 380 ns; low1 <=0; high2 <=80; total3 <=216; 1409 wait for 380 ns; low1 <=185; high2 <=359; total3 <=359; 1410 wait for 380 ns; low1 <=81; high2 <=217; total3 <=217; 1411 wait for 380 ns; low1 <=0; high2 <=81; total3 <=218; 1412 wait for 380 ns; low1 <=185; high2 <=360; total3 <=360; 1413 wait for 380 ns; low1 <=82; high2 <=219; total3 <=219; 1414 wait for 380 ns; low1 <=82; high2 <=220; total3 <=220; 1415 wait for 380 ns; low1 <=82; high2 <=221; total3 <=221; 1416 wait for 380 ns; low1 <=0; high2 <=82; total3 <=222; 1417 wait for 380 ns; low1 <=0; high2 <=185; total3 <=361; 1418 wait for 380 ns; low1 <=186; high2 <=362; total3 <=362; 1419 wait for 380 ns; low1 <=83; high2 <=223; total3 <=223; 1420 wait for 380 ns; low1 <=0; high2 <=83; total3 <=224; 1421 wait for 380 ns; low1 <=186; high2 <=363; total3 <=363; 1422 wait for 380 ns; low1 <=84; high2 <=225; total3 <=225; 1423 wait for 380 ns; low1 <=0; high2 <=84; total3 <=226; 1424 wait for 380 ns; low1 <=186; high2 <=364; total3 <=364; 1425 wait for 380 ns; low1 <=85; high2 <=227; total3 <=227; 1426 wait for 380 ns; low1 <=85; high2 <=228; total3 <=228; 1427 wait for 380 ns; low1 <=85; high2 <=229; total3 <=229; 1428 wait for 380 ns; low1 <=0; high2 <=85; total3 <=230; 1429 wait for 380 ns; low1 <=186; high2 <=365; total3 <=365; 1430 wait for 380 ns; low1 <=0; high2 <=86; total3 <=231; 1431 wait for 380 ns; low1 <=0; high2 <=186; total3 <=366; 1432 wait for 380 ns; low1 <=0; high2 <=187; total3 <=367; 1433 wait for 380 ns; low1 <=0; high2 <=188; total3 <=368; 1434 wait for 380 ns; low1 <=189; high2 <=369; total3 <=369; 1435 wait for 380 ns; low1 <=0; high2 <=87; total3 <=232;

Page 163: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

143

1436 wait for 380 ns; low1 <=189; high2 <=370; total3 <=370; 1437 wait for 380 ns; low1 <=88; high2 <=233; total3 <=233; 1438 wait for 380 ns; low1 <=88; high2 <=234; total3 <=234; 1439 wait for 380 ns; low1 <=88; high2 <=235; total3 <=235; 1440 wait for 380 ns; low1 <=0; high2 <=88; total3 <=236; 1441 wait for 380 ns; low1 <=189; high2 <=371; total3 <=371; 1442 wait for 380 ns; low1 <=0; high2 <=89; total3 <=237; 1443 wait for 380 ns; low1 <=0; high2 <=189; total3 <=372; 1444 wait for 380 ns; low1 <=0; high2 <=190; total3 <=373; 1445 wait for 380 ns; low1 <=0; high2 <=191; total3 <=374; 1446 wait for 380 ns; low1 <=192; high2 <=375; total3 <=375; 1447 wait for 380 ns; low1 <=0; high2 <=90; total3 <=238; 1448 wait for 380 ns; low1 <=192; high2 <=376; total3 <=376; 1449 wait for 380 ns; low1 <=91; high2 <=239; total3 <=239; 1450 wait for 380 ns; low1 <=91; high2 <=240; total3 <=240; 1451 wait for 380 ns; low1 <=91; high2 <=241; total3 <=241; 1452 wait for 380 ns; low1 <=0; high2 <=91; total3 <=242; 1453 wait for 380 ns; low1 <=192; high2 <=377; total3 <=377; 1454 wait for 380 ns; low1 <=0; high2 <=92; total3 <=243; 1455 wait for 380 ns; low1 <=192; high2 <=378; total3 <=378; 1456 wait for 380 ns; low1 <=0; high2 <=93; total3 <=244; 1457 wait for 380 ns; low1 <=0; high2 <=192; total3 <=379; 1458 wait for 380 ns; low1 <=0; high2 <=193; total3 <=380; 1459 wait for 380 ns; low1 <=0; high2 <=194; total3 <=381; 1460 wait for 380 ns; low1 <=195; high2 <=382; total3 <=382; 1461 wait for 380 ns; low1 <=94; high2 <=245; total3 <=245; 1462 wait for 380 ns; low1 <=94; high2 <=246; total3 <=246; 1463 wait for 380 ns; low1 <=94; high2 <=247; total3 <=247; 1464 wait for 380 ns; low1 <=0; high2 <=94; total3 <=248; 1465 wait for 380 ns; low1 <=195; high2 <=383; total3 <=383; 1466 wait for 380 ns; low1 <=0; high2 <=95; total3 <=249; 1467 wait for 380 ns; low1 <=0; high2 <=195; total3 <=384; 1468 wait for 380 ns; low1 <=0; high2 <=196; total3 <=385; 1469 wait for 380 ns; low1 <=0; high2 <=197; total3 <=386; 1470 wait for 380 ns; low1 <=0; high2 <=198; total3 <=387; 1471 wait for 380 ns; low1 <=0; high2 <=199; total3 <=388; 1472 wait for 380 ns; low1 <=100; high2 <=194; total3 <=194; 1473 wait for 380 ns; low1 <=96; high2 <=250; total3 <=250; 1474 wait for 380 ns; low1 <=96; high2 <=251; total3 <=251; 1475 wait for 380 ns; low1 <=96; high2 <=252; total3 <=252; 1476 wait for 380 ns; low1 <=0; high2 <=96; total3 <=253; 1477 wait for 380 ns; low1 <=0; high2 <=100; total3 <=195; 1478 wait for 380 ns; low1 <=101; high2 <=196; total3 <=196; 1479 wait for 380 ns; low1 <=97; high2 <=254; total3 <=254; 1480 wait for 380 ns; low1 <=0; high2 <=97; total3 <=255; 1481 wait for 380 ns; low1 <=0; high2 <=101; total3 <=197;

Page 164: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

144

1482 wait for 380 ns; low1 <=102; high2 <=198; total3 <=198; 1483 wait for 380 ns; low1 <=0; high2 <=98; total3 <=256; 1484 wait for 380 ns; low1 <=102; high2 <=199; total3 <=199; 1485 wait for 380 ns; low1 <=99; high2 <=257; total3 <=257; 1486 wait for 380 ns; low1 <=99; high2 <=258; total3 <=258; 1487 wait for 380 ns; low1 <=99; high2 <=259; total3 <=259; 1488 wait for 380 ns; low1 <=0; high2 <=99; total3 <=260; 1489 wait for 380 ns; low1 <=0; high2 <=102; total3 <=200; 1490 wait for 380 ns; low1 <=103; high2 <=201; total3 <=201; 1491 wait for 380 ns; low1 <=100; high2 <=261; total3 <=261; 1492 wait for 380 ns; low1 <=0; high2 <=100; total3 <=262; 1493 wait for 380 ns; low1 <=0; high2 <=103; total3 <=202; 1494 wait for 380 ns; low1 <=0; high2 <=104; total3 <=203; 1495 wait for 380 ns; low1 <=0; high2 <=105; total3 <=204; 1496 wait for 380 ns; low1 <=106; high2 <=205; total3 <=205; 1497 wait for 380 ns; low1 <=101; high2 <=263; total3 <=263; 1498 wait for 380 ns; low1 <=101; high2 <=264; total3 <=264; 1499 wait for 380 ns; low1 <=101; high2 <=265; total3 <=265; 1500 wait for 380 ns; low1 <=0; high2 <=101; total3 <=266; 1501 wait for 380 ns; low1 <=0; high2 <=106; total3 <=206; 1502 wait for 380 ns; low1 <=107; high2 <=207; total3 <=207; 1503 wait for 380 ns; low1 <=102; high2 <=267; total3 <=267; 1504 wait for 380 ns; low1 <=0; high2 <=102; total3 <=268; 1505 wait for 380 ns; low1 <=0; high2 <=107; total3 <=208; 1506 wait for 380 ns; low1 <=0; high2 <=108; total3 <=209; 1507 wait for 380 ns; low1 <=0; high2 <=109; total3 <=210; 1508 wait for 380 ns; low1 <=110; high2 <=211; total3 <=211; 1509 wait for 380 ns; low1 <=103; high2 <=269; total3 <=269; 1510 wait for 380 ns; low1 <=103; high2 <=270; total3 <=270; 1511 wait for 380 ns; low1 <=103; high2 <=271; total3 <=271; 1512 wait for 380 ns; low1 <=0; high2 <=103; total3 <=272; 1513 wait for 380 ns; low1 <=0; high2 <=110; total3 <=212; 1514 wait for 380 ns; low1 <=111; high2 <=213; total3 <=213; 1515 wait for 380 ns; low1 <=0; high2 <=104; total3 <=273; 1516 wait for 380 ns; low1 <=0; high2 <=111; total3 <=214; 1517 wait for 380 ns; low1 <=0; high2 <=112; total3 <=215; 1518 wait for 380 ns; low1 <=0; high2 <=113; total3 <=216; 1519 wait for 380 ns; low1 <=0; high2 <=114; total3 <=217; 1520 wait for 380 ns; low1 <=115; high2 <=218; total3 <=218; 1521 wait for 380 ns; low1 <=105; high2 <=274; total3 <=274; 1522 wait for 380 ns; low1 <=105; high2 <=275; total3 <=275; 1523 wait for 380 ns; low1 <=105; high2 <=276; total3 <=276; 1524 wait for 380 ns; low1 <=0; high2 <=105; total3 <=277; 1525 wait for 380 ns; low1 <=0; high2 <=115; total3 <=219; 1526 wait for 380 ns; low1 <=0; high2 <=116; total3 <=220; 1527 wait for 380 ns; low1 <=0; high2 <=117; total3 <=221;

Page 165: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

145

1528 wait for 380 ns; low1 <=0; high2 <=118; total3 <=222; 1529 wait for 380 ns; low1 <=119; high2 <=223; total3 <=223; 1530 wait for 380 ns; low1 <=106; high2 <=278; total3 <=278; 1531 wait for 380 ns; low1 <=0; high2 <=106; total3 <=279; 1532 wait for 380 ns; low1 <=119; high2 <=224; total3 <=224; 1533 wait for 380 ns; low1 <=107; high2 <=280; total3 <=280; 1534 wait for 380 ns; low1 <=107; high2 <=281; total3 <=281; 1535 wait for 380 ns; low1 <=0; high2 <=107; total3 <=282; 1536 wait for 380 ns; low1 <=119; high2 <=225; total3 <=225; 1537 wait for 380 ns; low1 <=108; high2 <=283; total3 <=283; 1538 wait for 380 ns; low1 <=108; high2 <=284; total3 <=284; 1539 wait for 380 ns; low1 <=108; high2 <=285; total3 <=285; 1540 wait for 380 ns; low1 <=108; high2 <=286; total3 <=286; 1541 wait for 380 ns; low1 <=108; high2 <=287; total3 <=287; 1542 wait for 380 ns; low1 <=108; high2 <=288; total3 <=288; 1543 wait for 380 ns; low1 <=0; high2 <=108; total3 <=289; 1544 wait for 380 ns; low1 <=119; high2 <=226; total3 <=226; 1545 wait for 380 ns; low1 <=109; high2 <=290; total3 <=290; 1546 wait for 380 ns; low1 <=109; high2 <=291; total3 <=291; 1547 wait for 380 ns; low1 <=0; high2 <=109; total3 <=292; 1548 wait for 380 ns; low1 <=119; high2 <=227; total3 <=227; 1549 wait for 380 ns; low1 <=110; high2 <=293; total3 <=293; 1550 wait for 380 ns; low1 <=110; high2 <=294; total3 <=294; 1551 wait for 380 ns; low1 <=110; high2 <=295; total3 <=295; 1552 wait for 380 ns; low1 <=110; high2 <=296; total3 <=296; 1553 wait for 380 ns; low1 <=110; high2 <=297; total3 <=297; 1554 wait for 380 ns; low1 <=110; high2 <=298; total3 <=298; 1555 wait for 380 ns; low1 <=0; high2 <=110; total3 <=299; 1556 wait for 380 ns; low1 <=119; high2 <=228; total3 <=228; 1557 wait for 380 ns; low1 <=111; high2 <=300; total3 <=300; 1558 wait for 380 ns; low1 <=111; high2 <=301; total3 <=301; 1559 wait for 380 ns; low1 <=0; high2 <=111; total3 <=302; 1560 wait for 380 ns; low1 <=119; high2 <=229; total3 <=229; 1561 wait for 380 ns; low1 <=112; high2 <=303; total3 <=303; 1562 wait for 380 ns; low1 <=112; high2 <=304; total3 <=304; 1563 wait for 380 ns; low1 <=112; high2 <=305; total3 <=305; 1564 wait for 380 ns; low1 <=112; high2 <=306; total3 <=306; 1565 wait for 380 ns; low1 <=112; high2 <=307; total3 <=307; 1566 wait for 380 ns; low1 <=112; high2 <=308; total3 <=308; 1567 wait for 380 ns; low1 <=0; high2 <=112; total3 <=309; 1568 wait for 380 ns; low1 <=119; high2 <=230; total3 <=230; 1569 wait for 380 ns; low1 <=113; high2 <=310; total3 <=310; 1570 wait for 380 ns; low1 <=113; high2 <=311; total3 <=311; 1571 wait for 380 ns; low1 <=113; high2 <=312; total3 <=312; 1572 wait for 380 ns; low1 <=0; high2 <=56; total3 <=156; 1573 wait for 380 ns; low1 <=0; high2 <=119; total3 <=231;

Page 166: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

146

1574 wait for 380 ns; low1 <=0; high2 <=120; total3 <=232; 1575 wait for 380 ns; low1 <=121; high2 <=233; total3 <=233; 1576 wait for 380 ns; low1 <=0; high2 <=57; total3 <=157; 1577 wait for 380 ns; low1 <=0; high2 <=121; total3 <=234; 1578 wait for 380 ns; low1 <=122; high2 <=235; total3 <=235; 1579 wait for 380 ns; low1 <=0; high2 <=58; total3 <=158; 1580 wait for 380 ns; low1 <=122; high2 <=236; total3 <=236; 1581 wait for 380 ns; low1 <=59; high2 <=159; total3 <=159; 1582 wait for 380 ns; low1 <=59; high2 <=160; total3 <=160; 1583 wait for 380 ns; low1 <=59; high2 <=161; total3 <=161; 1584 wait for 380 ns; low1 <=0; high2 <=59; total3 <=162; 1585 wait for 380 ns; low1 <=0; high2 <=122; total3 <=237; 1586 wait for 380 ns; low1 <=123; high2 <=238; total3 <=238; 1587 wait for 380 ns; low1 <=0; high2 <=60; total3 <=163; 1588 wait for 380 ns; low1 <=0; high2 <=123; total3 <=239; 1589 wait for 380 ns; low1 <=0; high2 <=124; total3 <=240; 1590 wait for 380 ns; low1 <=125; high2 <=241; total3 <=241; 1591 wait for 380 ns; low1 <=0; high2 <=61; total3 <=164; 1592 wait for 380 ns; low1 <=125; high2 <=242; total3 <=242; 1593 wait for 380 ns; low1 <=62; high2 <=165; total3 <=165; 1594 wait for 380 ns; low1 <=62; high2 <=166; total3 <=166; 1595 wait for 380 ns; low1 <=62; high2 <=167; total3 <=167; 1596 wait for 380 ns; low1 <=0; high2 <=62; total3 <=168; 1597 wait for 380 ns; low1 <=0; high2 <=125; total3 <=243; 1598 wait for 380 ns; low1 <=126; high2 <=244; total3 <=244; 1599 wait for 380 ns; low1 <=0; high2 <=63; total3 <=169; 1600 wait for 380 ns; low1 <=0; high2 <=126; total3 <=245; 1601 wait for 380 ns; low1 <=127; high2 <=246; total3 <=246; 1602 wait for 380 ns; low1 <=64; high2 <=170; total3 <=170; 1603 wait for 380 ns; low1 <=0; high2 <=64; total3 <=171; 1604 wait for 380 ns; low1 <=127; high2 <=247; total3 <=247; 1605 wait for 380 ns; low1 <=65; high2 <=172; total3 <=172; 1606 wait for 380 ns; low1 <=65; high2 <=173; total3 <=173; 1607 wait for 380 ns; low1 <=65; high2 <=174; total3 <=174; 1608 wait for 380 ns; low1 <=0; high2 <=65; total3 <=175; 1609 wait for 380 ns; low1 <=0; high2 <=127; total3 <=248; 1610 wait for 380 ns; low1 <=128; high2 <=249; total3 <=249; 1611 wait for 380 ns; low1 <=0; high2 <=66; total3 <=176; 1612 wait for 380 ns; low1 <=0; high2 <=128; total3 <=250; 1613 wait for 380 ns; low1 <=0; high2 <=129; total3 <=251; 1614 wait for 380 ns; low1 <=130; high2 <=252; total3 <=252; 1615 wait for 380 ns; low1 <=0; high2 <=67; total3 <=177; 1616 wait for 380 ns; low1 <=130; high2 <=253; total3 <=253; 1617 wait for 380 ns; low1 <=68; high2 <=178; total3 <=178; 1618 wait for 380 ns; low1 <=68; high2 <=179; total3 <=179; 1619 wait for 380 ns; low1 <=68; high2 <=180; total3 <=180;

Page 167: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

147

1620 wait for 380 ns; low1 <=0; high2 <=68; total3 <=181; 1621 wait for 380 ns; low1 <=0; high2 <=130; total3 <=254; 1622 wait for 380 ns; low1 <=131; high2 <=255; total3 <=255; 1623 wait for 380 ns; low1 <=69; high2 <=182; total3 <=182; 1624 wait for 380 ns; low1 <=69; high2 <=183; total3 <=183; 1625 wait for 380 ns; low1 <=0; high2 <=69; total3 <=184; 1626 wait for 380 ns; low1 <=0; high2 <=131; total3 <=256; 1627 wait for 380 ns; low1 <=0; high2 <=132; total3 <=257; 1628 wait for 380 ns; low1 <=133; high2 <=258; total3 <=258; 1629 wait for 380 ns; low1 <=70; high2 <=185; total3 <=185; 1630 wait for 380 ns; low1 <=70; high2 <=186; total3 <=186; 1631 wait for 380 ns; low1 <=70; high2 <=187; total3 <=187; 1632 wait for 380 ns; low1 <=0; high2 <=70; total3 <=188; 1633 wait for 380 ns; low1 <=0; high2 <=133; total3 <=259; 1634 wait for 380 ns; low1 <=134; high2 <=260; total3 <=260; 1635 wait for 380 ns; low1 <=71; high2 <=189; total3 <=189; 1636 wait for 380 ns; low1 <=71; high2 <=190; total3 <=190; 1637 wait for 380 ns; low1 <=71; high2 <=191; total3 <=191; 1638 wait for 380 ns; low1 <=71; high2 <=192; total3 <=192; 1639 wait for 380 ns; low1 <=0; high2 <=71; total3 <=193; 1640 wait for 380 ns; low1 <=134; high2 <=261; total3 <=261; 1641 wait for 380 ns; low1 <=72; high2 <=194; total3 <=194; 1642 wait for 380 ns; low1 <=72; high2 <=195; total3 <=195; 1643 wait for 380 ns; low1 <=72; high2 <=196; total3 <=196; 1644 wait for 380 ns; low1 <=0; high2 <=72; total3 <=197; 1645 wait for 380 ns; low1 <=0; high2 <=134; total3 <=262; 1646 wait for 380 ns; low1 <=135; high2 <=263; total3 <=263; 1647 wait for 380 ns; low1 <=73; high2 <=198; total3 <=198; 1648 wait for 380 ns; low1 <=73; high2 <=199; total3 <=199; 1649 wait for 380 ns; low1 <=73; high2 <=200; total3 <=200; 1650 wait for 380 ns; low1 <=73; high2 <=201; total3 <=201; 1651 wait for 380 ns; low1 <=0; high2 <=73; total3 <=202; 1652 wait for 380 ns; low1 <=135; high2 <=264; total3 <=264; 1653 wait for 380 ns; low1 <=74; high2 <=203; total3 <=203; 1654 wait for 380 ns; low1 <=74; high2 <=204; total3 <=204; 1655 wait for 380 ns; low1 <=74; high2 <=205; total3 <=205; 1656 wait for 380 ns; low1 <=0; high2 <=74; total3 <=206; 1657 wait for 380 ns; low1 <=135; high2 <=265; total3 <=265; 1658 wait for 380 ns; low1 <=0; high2 <=75; total3 <=207; 1659 wait for 380 ns; low1 <=0; high2 <=135; total3 <=266; 1660 wait for 380 ns; low1 <=0; high2 <=136; total3 <=267; 1661 wait for 380 ns; low1 <=137; high2 <=268; total3 <=268; 1662 wait for 380 ns; low1 <=76; high2 <=208; total3 <=208; 1663 wait for 380 ns; low1 <=0; high2 <=76; total3 <=209; 1664 wait for 380 ns; low1 <=137; high2 <=269; total3 <=269; 1665 wait for 380 ns; low1 <=77; high2 <=210; total3 <=210;

Page 168: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

148

1666 wait for 380 ns; low1 <=77; high2 <=211; total3 <=211; 1667 wait for 380 ns; low1 <=77; high2 <=212; total3 <=212; 1668 wait for 380 ns; low1 <=0; high2 <=77; total3 <=213; 1669 wait for 380 ns; low1 <=0; high2 <=137; total3 <=270; 1670 wait for 380 ns; low1 <=138; high2 <=271; total3 <=271; 1671 wait for 380 ns; low1 <=78; high2 <=214; total3 <=214; 1672 wait for 380 ns; low1 <=78; high2 <=215; total3 <=215; 1673 wait for 380 ns; low1 <=78; high2 <=216; total3 <=216; 1674 wait for 380 ns; low1 <=78; high2 <=217; total3 <=217; 1675 wait for 380 ns; low1 <=0; high2 <=78; total3 <=218; 1676 wait for 380 ns; low1 <=138; high2 <=272; total3 <=272; 1677 wait for 380 ns; low1 <=79; high2 <=219; total3 <=219; 1678 wait for 380 ns; low1 <=79; high2 <=220; total3 <=220; 1679 wait for 380 ns; low1 <=79; high2 <=221; total3 <=221; 1680 wait for 380 ns; low1 <=0; high2 <=79; total3 <=222; 1681 wait for 380 ns; low1 <=0; high2 <=138; total3 <=273; 1682 wait for 380 ns; low1 <=0; high2 <=139; total3 <=274; 1683 wait for 380 ns; low1 <=140; high2 <=275; total3 <=275; 1684 wait for 380 ns; low1 <=80; high2 <=223; total3 <=223; 1685 wait for 380 ns; low1 <=80; high2 <=224; total3 <=224; 1686 wait for 380 ns; low1 <=80; high2 <=225; total3 <=225; 1687 wait for 380 ns; low1 <=0; high2 <=80; total3 <=226; 1688 wait for 380 ns; low1 <=140; high2 <=276; total3 <=276; 1689 wait for 380 ns; low1 <=81; high2 <=227; total3 <=227; 1690 wait for 380 ns; low1 <=81; high2 <=228; total3 <=228; 1691 wait for 380 ns; low1 <=81; high2 <=229; total3 <=229; 1692 wait for 380 ns; low1 <=0; high2 <=81; total3 <=230; 1693 wait for 380 ns; low1 <=0; high2 <=140; total3 <=277; 1694 wait for 380 ns; low1 <=0; high2 <=141; total3 <=278; 1695 wait for 380 ns; low1 <=142; high2 <=279; total3 <=279; 1696 wait for 380 ns; low1 <=82; high2 <=231; total3 <=231; 1697 wait for 380 ns; low1 <=82; high2 <=232; total3 <=232; 1698 wait for 380 ns; low1 <=82; high2 <=233; total3 <=233; 1699 wait for 380 ns; low1 <=0; high2 <=82; total3 <=234; 1700 wait for 380 ns; low1 <=142; high2 <=280; total3 <=280; 1701 wait for 380 ns; low1 <=83; high2 <=235; total3 <=235; 1702 wait for 380 ns; low1 <=83; high2 <=236; total3 <=236; 1703 wait for 380 ns; low1 <=83; high2 <=237; total3 <=237; 1704 wait for 380 ns; low1 <=0; high2 <=83; total3 <=238; 1705 wait for 380 ns; low1 <=0; high2 <=142; total3 <=281; 1706 wait for 380 ns; low1 <=143; high2 <=282; total3 <=282; 1707 wait for 380 ns; low1 <=0; high2 <=84; total3 <=239; 1708 wait for 380 ns; low1 <=0; high2 <=143; total3 <=283; 1709 wait for 380 ns; low1 <=144; high2 <=284; total3 <=284; 1710 wait for 380 ns; low1 <=85; high2 <=240; total3 <=240; 1711 wait for 380 ns; low1 <=0; high2 <=85; total3 <=241;

Page 169: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

149

1712 wait for 380 ns; low1 <=144; high2 <=285; total3 <=285; 1713 wait for 380 ns; low1 <=86; high2 <=242; total3 <=242; 1714 wait for 380 ns; low1 <=86; high2 <=243; total3 <=243; 1715 wait for 380 ns; low1 <=86; high2 <=244; total3 <=244; 1716 wait for 380 ns; low1 <=0; high2 <=86; total3 <=245; 1717 wait for 380 ns; low1 <=0; high2 <=144; total3 <=286; 1718 wait for 380 ns; low1 <=145; high2 <=287; total3 <=287; 1719 wait for 380 ns; low1 <=0; high2 <=87; total3 <=246; 1720 wait for 380 ns; low1 <=0; high2 <=145; total3 <=288; 1721 wait for 380 ns; low1 <=146; high2 <=289; total3 <=289; 1722 wait for 380 ns; low1 <=88; high2 <=247; total3 <=247; 1723 wait for 380 ns; low1 <=0; high2 <=88; total3 <=248; 1724 wait for 380 ns; low1 <=146; high2 <=290; total3 <=290; 1725 wait for 380 ns; low1 <=89; high2 <=249; total3 <=249; 1726 wait for 380 ns; low1 <=89; high2 <=250; total3 <=250; 1727 wait for 380 ns; low1 <=89; high2 <=251; total3 <=251; 1728 wait for 380 ns; low1 <=0; high2 <=89; total3 <=252; 1729 wait for 380 ns; low1 <=0; high2 <=146; total3 <=291; 1730 wait for 380 ns; low1 <=0; high2 <=147; total3 <=292; 1731 wait for 380 ns; low1 <=148; high2 <=293; total3 <=293; 1732 wait for 380 ns; low1 <=0; high2 <=90; total3 <=253; 1733 wait for 380 ns; low1 <=148; high2 <=294; total3 <=294; 1734 wait for 380 ns; low1 <=91; high2 <=254; total3 <=254; 1735 wait for 380 ns; low1 <=0; high2 <=91; total3 <=255; 1736 wait for 380 ns; low1 <=148; high2 <=295; total3 <=295; 1737 wait for 380 ns; low1 <=92; high2 <=256; total3 <=256; 1738 wait for 380 ns; low1 <=92; high2 <=257; total3 <=257; 1739 wait for 380 ns; low1 <=92; high2 <=258; total3 <=258; 1740 wait for 380 ns; low1 <=0; high2 <=92; total3 <=259; 1741 wait for 380 ns; low1 <=0; high2 <=148; total3 <=296; 1742 wait for 380 ns; low1 <=149; high2 <=297; total3 <=297; 1743 wait for 380 ns; low1 <=93; high2 <=260; total3 <=260; 1744 wait for 380 ns; low1 <=0; high2 <=93; total3 <=261; 1745 wait for 380 ns; low1 <=0; high2 <=149; total3 <=298; 1746 wait for 380 ns; low1 <=0; high2 <=150; total3 <=299; 1747 wait for 380 ns; low1 <=0; high2 <=151; total3 <=300; 1748 wait for 380 ns; low1 <=152; high2 <=301; total3 <=301; 1749 wait for 380 ns; low1 <=94; high2 <=262; total3 <=262; 1750 wait for 380 ns; low1 <=94; high2 <=263; total3 <=263; 1751 wait for 380 ns; low1 <=94; high2 <=264; total3 <=264; 1752 wait for 380 ns; low1 <=0; high2 <=94; total3 <=265; 1753 wait for 380 ns; low1 <=0; high2 <=152; total3 <=302; 1754 wait for 380 ns; low1 <=153; high2 <=303; total3 <=303; 1755 wait for 380 ns; low1 <=0; high2 <=95; total3 <=266; 1756 wait for 380 ns; low1 <=0; high2 <=153; total3 <=304; 1757 wait for 380 ns; low1 <=0; high2 <=154; total3 <=305;

Page 170: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

150

1758 wait for 380 ns; low1 <=0; high2 <=155; total3 <=306; 1759 wait for 380 ns; low1 <=0; high2 <=156; total3 <=307; 1760 wait for 380 ns; low1 <=157; high2 <=308; total3 <=308; 1761 wait for 380 ns; low1 <=96; high2 <=267; total3 <=267; 1762 wait for 380 ns; low1 <=96; high2 <=268; total3 <=268; 1763 wait for 380 ns; low1 <=96; high2 <=269; total3 <=269; 1764 wait for 380 ns; low1 <=0; high2 <=96; total3 <=270; 1765 wait for 380 ns; low1 <=0; high2 <=157; total3 <=309; 1766 wait for 380 ns; low1 <=0; high2 <=158; total3 <=310; 1767 wait for 380 ns; low1 <=0; high2 <=159; total3 <=311; 1768 wait for 380 ns; low1 <=0; high2 <=160; total3 <=312; 1769 wait for 380 ns; low1 <=0; high2 <=161; total3 <=313; 1770 wait for 380 ns; low1 <=0; high2 <=162; total3 <=314; 1771 wait for 380 ns; low1 <=0; high2 <=163; total3 <=315; 1772 wait for 380 ns; low1 <=164; high2 <=316; total3 <=316; 1773 wait for 380 ns; low1 <=97; high2 <=271; total3 <=271; 1774 wait for 380 ns; low1 <=97; high2 <=272; total3 <=272; 1775 wait for 380 ns; low1 <=97; high2 <=273; total3 <=273; 1776 wait for 380 ns; low1 <=0; high2 <=97; total3 <=274; 1777 wait for 380 ns; low1 <=0; high2 <=164; total3 <=317; 1778 wait for 380 ns; low1 <=0; high2 <=165; total3 <=318; 1779 wait for 380 ns; low1 <=166; high2 <=319; total3 <=319; 1780 wait for 380 ns; low1 <=0; high2 <=98; total3 <=275; 1781 wait for 380 ns; low1 <=0; high2 <=166; total3 <=320; 1782 wait for 380 ns; low1 <=0; high2 <=167; total3 <=321; 1783 wait for 380 ns; low1 <=0; high2 <=168; total3 <=322; 1784 wait for 380 ns; low1 <=169; high2 <=323; total3 <=323; 1785 wait for 380 ns; low1 <=99; high2 <=276; total3 <=276; 1786 wait for 380 ns; low1 <=99; high2 <=277; total3 <=277; 1787 wait for 380 ns; low1 <=99; high2 <=278; total3 <=278; 1788 wait for 380 ns; low1 <=0; high2 <=99; total3 <=279; 1789 wait for 380 ns; low1 <=0; high2 <=169; total3 <=324; 1790 wait for 380 ns; low1 <=0; high2 <=170; total3 <=325; 1791 wait for 380 ns; low1 <=171; high2 <=326; total3 <=326; 1792 wait for 380 ns; low1 <=0; high2 <=100; total3 <=280; 1793 wait for 380 ns; low1 <=0; high2 <=171; total3 <=327; 1794 wait for 380 ns; low1 <=0; high2 <=172; total3 <=328; 1795 wait for 380 ns; low1 <=0; high2 <=173; total3 <=329; 1796 wait for 380 ns; low1 <=174; high2 <=330; total3 <=330; 1797 wait for 380 ns; low1 <=101; high2 <=281; total3 <=281; 1798 wait for 380 ns; low1 <=101; high2 <=282; total3 <=282; 1799 wait for 380 ns; low1 <=101; high2 <=283; total3 <=283; 1800 wait for 380 ns; low1 <=0; high2 <=101; total3 <=284; 1801 wait for 380 ns; low1 <=0; high2 <=174; total3 <=331; 1802 wait for 380 ns; low1 <=0; high2 <=175; total3 <=332; 1803 wait for 380 ns; low1 <=176; high2 <=333; total3 <=333;

Page 171: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

151

1804 wait for 380 ns; low1 <=102; high2 <=285; total3 <=285; 1805 wait for 380 ns; low1 <=0; high2 <=102; total3 <=286; 1806 wait for 380 ns; low1 <=0; high2 <=176; total3 <=334; 1807 wait for 380 ns; low1 <=0; high2 <=177; total3 <=335; 1808 wait for 380 ns; low1 <=178; high2 <=336; total3 <=336; 1809 wait for 380 ns; low1 <=103; high2 <=287; total3 <=287; 1810 wait for 380 ns; low1 <=103; high2 <=288; total3 <=288; 1811 wait for 380 ns; low1 <=103; high2 <=289; total3 <=289; 1812 wait for 380 ns; low1 <=0; high2 <=103; total3 <=290; 1813 wait for 380 ns; low1 <=0; high2 <=178; total3 <=337; 1814 wait for 380 ns; low1 <=179; high2 <=338; total3 <=338; 1815 wait for 380 ns; low1 <=0; high2 <=104; total3 <=291; 1816 wait for 380 ns; low1 <=179; high2 <=339; total3 <=339; 1817 wait for 380 ns; low1 <=0; high2 <=105; total3 <=292; 1818 wait for 380 ns; low1 <=0; high2 <=179; total3 <=340; 1819 wait for 380 ns; low1 <=0; high2 <=180; total3 <=341; 1820 wait for 380 ns; low1 <=181; high2 <=342; total3 <=342; 1821 wait for 380 ns; low1 <=106; high2 <=293; total3 <=293; 1822 wait for 380 ns; low1 <=106; high2 <=294; total3 <=294; 1823 wait for 380 ns; low1 <=106; high2 <=295; total3 <=295; 1824 wait for 380 ns; low1 <=0; high2 <=106; total3 <=296; 1825 wait for 380 ns; low1 <=0; high2 <=181; total3 <=343; 1826 wait for 380 ns; low1 <=182; high2 <=344; total3 <=344; 1827 wait for 380 ns; low1 <=107; high2 <=297; total3 <=297; 1828 wait for 380 ns; low1 <=107; high2 <=298; total3 <=298; 1829 wait for 380 ns; low1 <=107; high2 <=299; total3 <=299; 1830 wait for 380 ns; low1 <=107; high2 <=300; total3 <=300; 1831 wait for 380 ns; low1 <=0; high2 <=107; total3 <=301; 1832 wait for 380 ns; low1 <=182; high2 <=345; total3 <=345; 1833 wait for 380 ns; low1 <=108; high2 <=302; total3 <=302; 1834 wait for 380 ns; low1 <=108; high2 <=303; total3 <=303; 1835 wait for 380 ns; low1 <=108; high2 <=304; total3 <=304; 1836 wait for 380 ns; low1 <=0; high2 <=108; total3 <=305; 1837 wait for 380 ns; low1 <=182; high2 <=346; total3 <=346; 1838 wait for 380 ns; low1 <=0; high2 <=109; total3 <=306; 1839 wait for 380 ns; low1 <=0; high2 <=182; total3 <=347; 1840 wait for 380 ns; low1 <=183; high2 <=348; total3 <=348; 1841 wait for 380 ns; low1 <=110; high2 <=307; total3 <=307; 1842 wait for 380 ns; low1 <=0; high2 <=110; total3 <=308; 1843 wait for 380 ns; low1 <=0; high2 <=183; total3 <=349; 1844 wait for 380 ns; low1 <=184; high2 <=350; total3 <=350; 1845 wait for 380 ns; low1 <=111; high2 <=309; total3 <=309; 1846 wait for 380 ns; low1 <=111; high2 <=310; total3 <=310; 1847 wait for 380 ns; low1 <=55; high2 <=155; total3 <=155; 1848 wait for 380 ns; low1 <=0; high2 <=55; total3 <=156; 1849 wait for 380 ns; low1 <=184; high2 <=351; total3 <=351;

Page 172: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

152

1850 wait for 380 ns; low1 <=0; high2 <=56; total3 <=157; 1851 wait for 380 ns; low1 <=0; high2 <=184; total3 <=352; 1852 wait for 380 ns; low1 <=0; high2 <=185; total3 <=353; 1853 wait for 380 ns; low1 <=186; high2 <=354; total3 <=354; 1854 wait for 380 ns; low1 <=0; high2 <=57; total3 <=158; 1855 wait for 380 ns; low1 <=0; high2 <=186; total3 <=355; 1856 wait for 380 ns; low1 <=187; high2 <=356; total3 <=356; 1857 wait for 380 ns; low1 <=58; high2 <=159; total3 <=159; 1858 wait for 380 ns; low1 <=58; high2 <=160; total3 <=160; 1859 wait for 380 ns; low1 <=58; high2 <=161; total3 <=161; 1860 wait for 380 ns; low1 <=0; high2 <=58; total3 <=162; 1861 wait for 380 ns; low1 <=187; high2 <=357; total3 <=357; 1862 wait for 380 ns; low1 <=0; high2 <=59; total3 <=163; 1863 wait for 380 ns; low1 <=0; high2 <=187; total3 <=358; 1864 wait for 380 ns; low1 <=0; high2 <=188; total3 <=359; 1865 wait for 380 ns; low1 <=189; high2 <=360; total3 <=360; 1866 wait for 380 ns; low1 <=0; high2 <=60; total3 <=164; 1867 wait for 380 ns; low1 <=0; high2 <=189; total3 <=361; 1868 wait for 380 ns; low1 <=190; high2 <=362; total3 <=362; 1869 wait for 380 ns; low1 <=61; high2 <=165; total3 <=165; 1870 wait for 380 ns; low1 <=61; high2 <=166; total3 <=166; 1871 wait for 380 ns; low1 <=61; high2 <=167; total3 <=167; 1872 wait for 380 ns; low1 <=0; high2 <=61; total3 <=168; 1873 wait for 380 ns; low1 <=0; high2 <=190; total3 <=363; 1874 wait for 380 ns; low1 <=191; high2 <=364; total3 <=364; 1875 wait for 380 ns; low1 <=62; high2 <=169; total3 <=169; 1876 wait for 380 ns; low1 <=0; high2 <=62; total3 <=170; 1877 wait for 380 ns; low1 <=191; high2 <=365; total3 <=365; 1878 wait for 380 ns; low1 <=63; high2 <=171; total3 <=171; 1879 wait for 380 ns; low1 <=0; high2 <=63; total3 <=172; 1880 wait for 380 ns; low1 <=191; high2 <=366; total3 <=366; 1881 wait for 380 ns; low1 <=64; high2 <=173; total3 <=173; 1882 wait for 380 ns; low1 <=64; high2 <=174; total3 <=174; 1883 wait for 380 ns; low1 <=64; high2 <=175; total3 <=175; 1884 wait for 380 ns; low1 <=0; high2 <=64; total3 <=176; 1885 wait for 380 ns; low1 <=0; high2 <=191; total3 <=367; 1886 wait for 380 ns; low1 <=192; high2 <=368; total3 <=368; 1887 wait for 380 ns; low1 <=65; high2 <=177; total3 <=177; 1888 wait for 380 ns; low1 <=0; high2 <=65; total3 <=178; 1889 wait for 380 ns; low1 <=192; high2 <=369; total3 <=369; 1890 wait for 380 ns; low1 <=66; high2 <=179; total3 <=179; 1891 wait for 380 ns; low1 <=0; high2 <=66; total3 <=180; 1892 wait for 380 ns; low1 <=192; high2 <=370; total3 <=370; 1893 wait for 380 ns; low1 <=67; high2 <=181; total3 <=181; 1894 wait for 380 ns; low1 <=67; high2 <=182; total3 <=182; 1895 wait for 380 ns; low1 <=67; high2 <=183; total3 <=183;

Page 173: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

153

1896 wait for 380 ns; low1 <=0; high2 <=67; total3 <=184; 1897 wait for 380 ns; low1 <=0; high2 <=192; total3 <=371; 1898 wait for 380 ns; low1 <=193; high2 <=372; total3 <=372; 1899 wait for 380 ns; low1 <=68; high2 <=185; total3 <=185; 1900 wait for 380 ns; low1 <=0; high2 <=68; total3 <=186; 1901 wait for 380 ns; low1 <=0; high2 <=193; total3 <=373; 1902 wait for 380 ns; low1 <=0; high2 <=194; total3 <=374; 1903 wait for 380 ns; low1 <=0; high2 <=195; total3 <=375; 1904 wait for 380 ns; low1 <=196; high2 <=376; total3 <=376; 1905 wait for 380 ns; low1 <=69; high2 <=187; total3 <=187; 1906 wait for 380 ns; low1 <=69; high2 <=188; total3 <=188; 1907 wait for 380 ns; low1 <=69; high2 <=189; total3 <=189; 1908 wait for 380 ns; low1 <=0; high2 <=69; total3 <=190; 1909 wait for 380 ns; low1 <=0; high2 <=196; total3 <=377; 1910 wait for 380 ns; low1 <=197; high2 <=378; total3 <=378; 1911 wait for 380 ns; low1 <=0; high2 <=70; total3 <=191; 1912 wait for 380 ns; low1 <=0; high2 <=197; total3 <=379; 1913 wait for 380 ns; low1 <=198; high2 <=380; total3 <=380; 1914 wait for 380 ns; low1 <=71; high2 <=192; total3 <=192; 1915 wait for 380 ns; low1 <=0; high2 <=71; total3 <=193; 1916 wait for 380 ns; low1 <=198; high2 <=381; total3 <=381; 1917 wait for 380 ns; low1 <=72; high2 <=194; total3 <=194; 1918 wait for 380 ns; low1 <=72; high2 <=195; total3 <=195; 1919 wait for 380 ns; low1 <=72; high2 <=196; total3 <=196; 1920 wait for 380 ns; low1 <=0; high2 <=72; total3 <=197; 1921 wait for 380 ns; low1 <=0; high2 <=198; total3 <=382; 1922 wait for 380 ns; low1 <=199; high2 <=383; total3 <=383; 1923 wait for 380 ns; low1 <=0; high2 <=73; total3 <=198; 1924 wait for 380 ns; low1 <=0; high2 <=199; total3 <=384; 1925 wait for 380 ns; low1 <=100; high2 <=192; total3 <=192; 1926 wait for 380 ns; low1 <=0; high2 <=74; total3 <=199; 1927 wait for 380 ns; low1 <=0; high2 <=100; total3 <=193; 1928 wait for 380 ns; low1 <=101; high2 <=194; total3 <=194; 1929 wait for 380 ns; low1 <=75; high2 <=200; total3 <=200; 1930 wait for 380 ns; low1 <=75; high2 <=201; total3 <=201; 1931 wait for 380 ns; low1 <=75; high2 <=202; total3 <=202; 1932 wait for 380 ns; low1 <=0; high2 <=75; total3 <=203; 1933 wait for 380 ns; low1 <=0; high2 <=101; total3 <=195; 1934 wait for 380 ns; low1 <=102; high2 <=196; total3 <=196; 1935 wait for 380 ns; low1 <=0; high2 <=76; total3 <=204; 1936 wait for 380 ns; low1 <=0; high2 <=102; total3 <=197; 1937 wait for 380 ns; low1 <=103; high2 <=198; total3 <=198; 1938 wait for 380 ns; low1 <=77; high2 <=205; total3 <=205; 1939 wait for 380 ns; low1 <=0; high2 <=77; total3 <=206; 1940 wait for 380 ns; low1 <=103; high2 <=199; total3 <=199; 1941 wait for 380 ns; low1 <=78; high2 <=207; total3 <=207;

Page 174: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

154

1942 wait for 380 ns; low1 <=78; high2 <=208; total3 <=208; 1943 wait for 380 ns; low1 <=78; high2 <=209; total3 <=209; 1944 wait for 380 ns; low1 <=0; high2 <=78; total3 <=210; 1945 wait for 380 ns; low1 <=0; high2 <=103; total3 <=200; 1946 wait for 380 ns; low1 <=104; high2 <=201; total3 <=201; 1947 wait for 380 ns; low1 <=79; high2 <=211; total3 <=211; 1948 wait for 380 ns; low1 <=0; high2 <=79; total3 <=212; 1949 wait for 380 ns; low1 <=104; high2 <=202; total3 <=202; 1950 wait for 380 ns; low1 <=0; high2 <=80; total3 <=213; 1951 wait for 380 ns; low1 <=0; high2 <=104; total3 <=203; 1952 wait for 380 ns; low1 <=105; high2 <=204; total3 <=204; 1953 wait for 380 ns; low1 <=81; high2 <=214; total3 <=214; 1954 wait for 380 ns; low1 <=81; high2 <=215; total3 <=215; 1955 wait for 380 ns; low1 <=81; high2 <=216; total3 <=216; 1956 wait for 380 ns; low1 <=0; high2 <=81; total3 <=217; 1957 wait for 380 ns; low1 <=0; high2 <=105; total3 <=205; 1958 wait for 380 ns; low1 <=106; high2 <=206; total3 <=206; 1959 wait for 380 ns; low1 <=0; high2 <=82; total3 <=218; 1960 wait for 380 ns; low1 <=0; high2 <=106; total3 <=207; 1961 wait for 380 ns; low1 <=107; high2 <=208; total3 <=208; 1962 wait for 380 ns; low1 <=83; high2 <=219; total3 <=219; 1963 wait for 380 ns; low1 <=0; high2 <=83; total3 <=220; 1964 wait for 380 ns; low1 <=107; high2 <=209; total3 <=209; 1965 wait for 380 ns; low1 <=84; high2 <=221; total3 <=221; 1966 wait for 380 ns; low1 <=84; high2 <=222; total3 <=222; 1967 wait for 380 ns; low1 <=84; high2 <=223; total3 <=223; 1968 wait for 380 ns; low1 <=0; high2 <=84; total3 <=224; 1969 wait for 380 ns; low1 <=0; high2 <=107; total3 <=210; 1970 wait for 380 ns; low1 <=0; high2 <=108; total3 <=211; 1971 wait for 380 ns; low1 <=109; high2 <=212; total3 <=212; 1972 wait for 380 ns; low1 <=85; high2 <=225; total3 <=225; 1973 wait for 380 ns; low1 <=0; high2 <=85; total3 <=226; 1974 wait for 380 ns; low1 <=0; high2 <=109; total3 <=213; 1975 wait for 380 ns; low1 <=0; high2 <=110; total3 <=214; 1976 wait for 380 ns; low1 <=111; high2 <=215; total3 <=215; 1977 wait for 380 ns; low1 <=86; high2 <=227; total3 <=227; 1978 wait for 380 ns; low1 <=86; high2 <=228; total3 <=228; 1979 wait for 380 ns; low1 <=86; high2 <=229; total3 <=229; 1980 wait for 380 ns; low1 <=0; high2 <=86; total3 <=230; 1981 wait for 380 ns; low1 <=0; high2 <=111; total3 <=216; 1982 wait for 380 ns; low1 <=112; high2 <=217; total3 <=217; 1983 wait for 380 ns; low1 <=0; high2 <=87; total3 <=231; 1984 wait for 380 ns; low1 <=0; high2 <=112; total3 <=218; 1985 wait for 380 ns; low1 <=0; high2 <=113; total3 <=219; 1986 wait for 380 ns; low1 <=114; high2 <=220; total3 <=220; 1987 wait for 380 ns; low1 <=0; high2 <=88; total3 <=232;

Page 175: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

155

1988 wait for 380 ns; low1 <=114; high2 <=221; total3 <=221; 1989 wait for 380 ns; low1 <=89; high2 <=233; total3 <=233; 1990 wait for 380 ns; low1 <=89; high2 <=234; total3 <=234; 1991 wait for 380 ns; low1 <=89; high2 <=235; total3 <=235; 1992 wait for 380 ns; low1 <=0; high2 <=89; total3 <=236; 1993 wait for 380 ns; low1 <=0; high2 <=114; total3 <=222; 1994 wait for 380 ns; low1 <=115; high2 <=223; total3 <=223; 1995 wait for 380 ns; low1 <=0; high2 <=90; total3 <=237; 1996 wait for 380 ns; low1 <=115; high2 <=224; total3 <=224; 1997 wait for 380 ns; low1 <=91; high2 <=238; total3 <=238; 1998 wait for 380 ns; low1 <=0; high2 <=91; total3 <=239; 1999 wait for 380 ns; low1 <=0; high2 <=115; total3 <=225; 2000 wait for 380 ns; low1 <=116; high2 <=226; total3 <=226; 2001 wait for 380 ns; low1 <=92; high2 <=240; total3 <=240; 2002 wait for 380 ns; low1 <=92; high2 <=241; total3 <=241; 2003 wait for 380 ns; low1 <=92; high2 <=242; total3 <=242; 2004 wait for 380 ns; low1 <=0; high2 <=92; total3 <=243; 2005 wait for 380 ns; low1 <=0; high2 <=116; total3 <=227; 2006 wait for 380 ns; low1 <=117; high2 <=228; total3 <=228; 2007 wait for 380 ns; low1 <=93; high2 <=244; total3 <=244; 2008 wait for 380 ns; low1 <=0; high2 <=93; total3 <=245; 2009 2010 2011 wait for 380 ns; arithClose <='1'; 2012 wait for 1390 ns; arithEnable <='0'; 2013 wait; 2014 end PROCESS stimulus; 2015 2016 end only; 2017

2018

Page 176: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

156

Apêndice C - Testbench Compressor PPM Binário e Cód.Aritmético

2019 library IEEE; 2020 use ieee.std_logic_1164.all; 2021 use IEEE.std_logic_arith.all; 2022 use ieee.std_logic_unsigned.all; 2023 USE STD.TEXTIO.ALL;-- versao VHDL-1993 2024 2025 entity tBcompressor_ppm_arith_estrutural is 2026 PORT ( 2027 saidaAtiva : buffer std_logic; 2028 saida2Ativa : buffer std_logic; 2029 saida3Ativa : buffer std_logic; 2030 saida : buffer std_logic_vector(8 downto 1); 2031 saida2 : buffer std_logic_vector(8 downto 1); 2032 saida3 : buffer std_logic_vector(8 downto 1); 2033 --dado2 : inout std_logic_vector(8 downto 1); 2034 --dd : out character; 2035 dado : OUT CHARACTER 2036 ); 2037 end; 2038 2039 architecture only of tBcompressor_ppm_arith_estrutural is 2040 2041 COMPONENT compressor_ppm_arith_estrutural 2042 PORT ( 2043 clk : IN STD_LOGIC; 2044 ppmEnable : IN STD_LOGIC; 2045 encoderClose : IN STD_LOGIC; 2046 bitin : IN STD_LOGIC; 2047 saidaAtiva : buffer std_logic; 2048 saida2Ativa : buffer std_logic; 2049 saida3Ativa : buffer std_logic; 2050 saida : buffer std_logic_vector( 8 downto 1); 2051 saida2 : buffer std_logic_vector( 8 downto 1); 2052 saida3 : buffer std_logic_vector( 8 downto 1) 2053 ); 2054 END COMPONENT ; 2055 FILE arq_wr_rd : TEXT; 2056 FILE arq_wr_rd_s : TEXT; 2057 SIGNAL clk : STD_LOGIC := '0'; 2058 SIGNAL ppmEnable : STD_LOGIC := '0'; 2059 SIGNAL encoderClose : STD_LOGIC := '0'; 2060 SIGNAL bitin : STD_LOGIC := '0'; 2061 --signal saida2_int : std_logic_vector(8 downto 1):="00000000"; 2062

Page 177: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

157

2063 begin 2064 2065 dut : compressor_ppm_arith_estrutural 2066 PORT MAP ( 2067 2068 clk => clk, 2069 ppmEnable => ppmEnable, 2070 encoderClose => encoderClose, 2071 bitin => bitin, 2072 saidaAtiva => saidaAtiva, 2073 saida2Ativa => saida2Ativa, 2074 saida3Ativa => saida3Ativa, 2075 saida => saida, 2076 saida2 => saida2, 2077 saida3 => saida3 2078 ); 2079 2080 2081 clock : PROCESS 2082 VARIABLE linhaWR : LINE; -- objeto tipo LINE para armazenar texto 2083 --VARIABLE leitura_okWR : BOOLEAN := TRUE; -- verificacao do procedimento READ 2084 VARIABLE valorWR : CHARACTER; -- dado recuperado no arquivo 2085 VARIABLE TESTE : INTEGER; 2086 begin 2087 FILE_OPEN(arq_wr_rd_s, "dado_s1.txt",Append_Mode); 2088 2089 wait for 80 ns; clk <= not clk; 2090 if (saidaAtiva ='1') then 2091 2092 TESTE := conv_integer(saida); 2093 WRITE(linhaWR, TESTE ); 2094 WRITELINE (arq_wr_rd_s, linhaWR); 2095 --se teve saida sencundaria do writebittrue or false no mesmo ciclo de clock 2096 if (saida2Ativa='1') then 2097 TESTE := conv_integer(saida2); 2098 WRITE(linhaWR, TESTE ); 2099 WRITELINE (arq_wr_rd_s, linhaWR); 2100 end if; --saida2Ativa 2101 2102 if (saida3Ativa='1') then 2103 TESTE := conv_integer(saida3); 2104 WRITE(linhaWR, TESTE ); 2105 WRITELINE (arq_wr_rd_s, linhaWR); 2106 end if; --saida2Ativa 2107

Page 178: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

158

2108 --FOR i IN 8 DOWNTO 1 LOOP 2109 -- if (saida(i)='0') then 2110 -- valorWR := '0'; 2111 -- WRITE(linhaWR, valorWR ); 2112 --elsif (saida(i)='1') then 2113 -- valorWR := '1'; 2114 -- WRITE(linhaWR, valorWR ); 2115 --end if; 2116 --END LOOP; 2117 --WRITELINE (arq_wr_rd_s, linhaWR); 2118 2119 --dd <= 'X';--else dd <= 'y'; 2120 end if; 2121 FILE_CLOSE(arq_wr_rd_s); 2122 end PROCESS clock; 2123 2124 stimulus : PROCESS 2125 VARIABLE linha : LINE; -- objeto tipo LINE para armazenar texto 2126 VARIABLE leitura_ok : BOOLEAN := TRUE; -- verificacao do procedimento READ 2127 VARIABLE valor : CHARACTER; 2128 2129 begin 2130 2131 ppmEnable <='1'; 2132 encoderClose <='0'; 2133 2134 2135 FILE_OPEN(arq_wr_rd, "dado_e1.txt",Read_Mode); 2136 READLINE (arq_wr_rd, linha); -- leitura de uma linha 2137 WHILE leitura_ok LOOP 2138 READ (linha, valor, leitura_ok); -- leitura dos dados de uma linha 2139 dado <= valor; 2140 --dado2 <= saida; 2141 2142 if (valor = '0') then 2143 bitin <='0'; 2144 elsif (valor = '1') then 2145 bitin <='1'; 2146 elsif (valor = 'f') then 2147 --bitin <='1'; 2148 wait for 160 ns;encoderClose <='1'; 2149 2150 2151 exit; 2152 end if; 2153 WAIT FOR 160 ns;

Page 179: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

159

2154 -- dado2 <= saida;-- temporizacao para mostra "dado" no simulador 2155 END LOOP; 2156 2157 wait for 260 ns; ppmEnable<='0'; --arithEnable<='0'; 2158 wait; 2159 FILE_CLOSE(arq_wr_rd); 2160 2161 end PROCESS stimulus; 2162 2163 escreve:process 2164 begin 2165 2166 2167 wait; 2168 END PROCESS escreve; 2169 end only; 2170 2171

Page 180: DESENVOLVIMENTO E IMPLEMENTAÇÃO EM FPGA DE · PDF filefoi desenvolvido um compressor em tempo real utilizando o Prediction by Partial Matching ... 2.4.2 VHDL - VHSIC Hardware Description

Dissertação de Mestrado– LASID - PPGI/DI UFPB

160