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
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
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
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.
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
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
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
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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,
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].
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
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.
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
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].
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.
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
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.
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
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:
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.
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.
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”.
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
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.
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.
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.
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).
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
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].
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
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
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.
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:
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).
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.
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.
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
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.
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].
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
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
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.
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
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
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].
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].
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.
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].
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.
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].
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:
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
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].
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.
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].
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.
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].
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)
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].
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
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].
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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#
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].
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].
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;
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
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.
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.
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
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.
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.
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.
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.
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
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.
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.
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, é
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.
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
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.
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
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.
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’.
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.
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
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.
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
Dissertação de Mestrado– LASID - PPGI/DI UFPB
93
FLEX10K
EPF10K10LC84-3
MAX7000B
EPM7256BTC100-5
MAX7000S
EPM 7128SLC84-7
Dissertação de Mestrado– LASID - PPGI/DI UFPB
94
CICLONE
EP1C3T100C6
CICLONE II
EP2C5T144C6
STRATIX
EP1S10F484C5
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
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
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.
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.
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
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
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.
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.
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Ê.
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:
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.
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.
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/
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.
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.
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 );
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';
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';
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
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,
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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
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
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
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;
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
Dissertação de Mestrado– LASID - PPGI/DI UFPB
160
Top Related