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
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
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
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
III
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.
IV
FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA CENTRAL DA UFPB
S555d
2008
Souza, André Ricardo Ciraulo de
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
V
“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
VI
“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
VII
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.
VIII
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.
IX
À 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.
X
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.
XI
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.
XII
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
1
INTRODUÇÃO
1.1
Motivação
3
1.2
Objetivos
4
1.3
Organização do Trabalho
4
CAPÍTULO 2
6
2
6
REVISÃO LITERÁRIA
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
2.1.5
Plano Frontal – Derivações Clássicas dos Membros .......................................... 10
Derivação I ................................................................................................. 10
2.1.6
2.1.7
Derivação I I ............................................................................................... 10
Derivação I I I ............................................................................................. 10
2.1.8
2.1.9
Plano Frontal – Derivações Unipolares Aumentadas dos Membros...................... 11
Plano Horizontal – Derivações Precordiais ....................................................... 12
2.1.10
Morfologia de um sinal de ECG normal........................................................ 13
XIII
2.2
Processamento Digital de Sinais
15
2.2.1 Amostragem................................................................................................ 15
2.2.2
2.3
Quantização ................................................................................................ 16
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
2.4.1
26
Dispositivos Lógicos Programáveis ................................................................. 26
2.4.1.1
2.4.1.2
2.4.2
Arranjo Lógico Programável....................................................................... 27
Arranjos de Portas Programáveis................................................................ 28
VHDL - VHSIC Hardware Description Language ............................................... 32
2.4.2.1
História ................................................................................................... 32
2.4.2.2
Definição................................................................................................. 33
2.4.2.3
2.4.2.4
Vantagens e desvantagens ........................................................................ 33
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
58
SISTEMA PROPOSTO
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
XIV
3.7.1.2
3.7.1.3
Segmentação em plano de bits .................................................................. 77
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
81
RESULTADOS OBTIDOS
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
XV
Í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
XVI
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
XVII
Í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
XVIII
Í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
XIX
LISTA DE ABREVIATURAS E SIGLAS
A/D
ADC
ALU
API
CLB
CPLD
D/A
DSP
DUV
DVD
ECG
ECGs
FIFO
FPGA
GPP
HDL
HLA
IOB
IP Core
MIT-BIH
NoC
OCP-IP
PC
PDA
PDSV
PPM
RAM
ROM
RTL
RTOS
SoC
SRAM
TCL
VHDL
VHSIC
USB
Analógico/Digital
Conversor Analógico/Digital
Aritmetic Logic Unit
Application Programming Interface
Configurable Logic Block
Complex Programmable Logic Device
Digital/Analógico
Digital Signal Processor
Design Under Verification
Digital Versatile Disc
Eletrocardiograma
Eletrocardiogramas
First In First Out
Field-Programmable Gate Array
General Purpose Processor
Hardware Description Language
High Level Architecture
Input Output Block
Intellectual Property Core
Massachussetts Institute of Technology – Beth Israel Hospital (Instituto de
Tecnologia de Massachussets – Hospital Israelita Beth)
Network-on-chip
Open Core Protocol – International Partnership
Personal Computer
Personal Digital Assistant
Processamento Digital de Sinais de Voz
Prediction by Partial Matching
Random Access Memory
Read Only Memory
Register Transfer Level
Real Time Operation System
System-On-Chip
Static Random Access Memory
Tool Command Language
VHSIC Hardware Description Language
Very High Speed Integrated Circuits
Universal Serial Bus
XX
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
1
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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, procurandose 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,
2
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
3
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
4
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
5
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
6
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
7
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
repolarizada
(Ativa)
(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.
8
Dissertação de Mestrado– LASID - PPGI/DI UFPB
DESPOLARIZAÇÃO
REPOLARIZAÇÃO
-+++++++
----------------
+-----------
+++++++
+-----------
+++++++
-+++++++
-----------
(INÍCIO)
(FIM)
(INÍCIO)
(FIM)
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].
-
+
dipolo
-
+
vetor
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
9
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
10
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
D1 = D 2 + D3
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
11
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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:
12
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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]:
Complexo
QRS
R
Segmento PQ
P
Onda T
Segmento ST
Onda P
Onda U
T
U
Q S
Intervalo
Intervalo QT
PQ ou PR
Intervalo QU
2.7 – Morfologia de um ciclo típico de um sinal de ECG.
13
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
14
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
Sinal
Analógico
Amostragem
Sinal
Amostrado
Quantização
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”.
15
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Fam > 2F max
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).
Instantes de amostragem
Sinal
analógico
Sinal
amostrado
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
16
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
17
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
18
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
19
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
2.3.3
Business. Fonte [52].
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-tomarket).
20
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
Especificação
Projeto
Arquitetural
Construção de
modelos RTL
Verificação
Funcional
Síntese
Cosimulação
Prototipaçã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
21
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
22
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
23
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
Valores para
o teste
Valores de
referência
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 macroarquitetura, 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, pinoa-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
24
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
25
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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:
26
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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)
PLD
PLA
SPLDs
PLDs Simples
HCPLDS
PLDs de alta capacidade
Arranjos
Lógicos
Programáveis
Arranjos
de Portas
Programáveis
PAL
PROM
FPGAs
CPLDs
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).
27
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
28
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
29
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Rede de Interconexão
Programável
IOB (Input/Output Block)
CLB (Configurable Logic
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
30
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
31
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
32
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
33
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
34
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
35
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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:
RC =
n
m
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
36
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 autoinformação, I(ai), associada à ocorrência do símbolo ai como[58]:
I (a i ) = log 2
1
bits
P( x = ai )
2.3
Caso x0 x1... xN-1 sejam elementos gerados por S, a entropia da fonte é definida como segue:
H ( S ) = lim
N →∞
1
GN bits/símbolo
N
2.4
Onde;
M −1 M −1
M −1
i0 = 0 i1 = 0
i n −1 = 0
G N = − ∑ ∑L
∑
P( x0 = ai 0 , x1 = ai1 ,..., x n −1 = aiN −1 ) log 2 P( x 0 = ai0 , x1 = ai1 ,..., x n −1 = aiN −1 )
2.5
37
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
M −1
H ( S ) = − ∑ P( x = ai ) log 2 P( x = ai ) bits/símbolo
2.6
i0 = 0
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].
38
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
39
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
40
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
0
101
100
111
1101
1100
Palavra código de comprimento variável
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].
41
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1)
2)
f:5
e:9
c:12 b:13 d:16 a:45
c:12 b:13
0
f:5
3)
f:5
1
e:9
d:16
14
0
d:16 a:45
14
1
e:9
a:45
25
0
1
c:12 b:13
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.
42
Dissertação de Mestrado– LASID - PPGI/DI UFPB
4)
25
0
1
0
c:12 b:13
1
d:16
14
0
1
f:5
5)
a:45
30
e:9
a:45
55
0
1
25
0
30
1
0
c:12 b:13
d:16
14
0
1
f:5
6)
1
e:9
100
0
1
a:45
55
0
1
25
0
30
1
0
c:12 b:13
1
d:16
14
0
f:5
1
e:9
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].
43
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 n / m 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], considerese 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
log 2 m 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:
44
Dissertação de Mestrado– LASID - PPGI/DI UFPB
P( x = n) = (1 − p ) p n
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:
n=0
1
2
3
4
5
6
7
8
9
:
2.5.7
m=1
m=2
m=3
m=4
m=5
0
10
110
1110
11110
111110
:
:
:
:
:
00
01
100
101
1100
1101
11100
11101
111100
111101
:
00
010
011
100
1010
1011
1100
11010
11011
11100
:
000
001
010
011
1000
1001
1010
1011
11000
11001
:
000
001
010
0110
0111
1000
1001
1010
10110
10111
:
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
45
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 log 2 D  ou com log 2 D  -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].
46
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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, subdividese o intervalo atual em sub-intervalos proporcionais às probabilidades dos símbolos, e encontrase 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.
47
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
48
Dissertação de Mestrado– LASID - PPGI/DI UFPB
À 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.
49
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1.0
0.5
0.0
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
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
1.0
0.5
0.5
0.6
0.4
0.3
0.2
0.0
0.0
2.26 – Exemplo de half point zooming. Fonte [67].
50
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
1.0
1.0
0.9
0.75
0.75
0.6
0.7
0.5
0.5
0.75
0.5
0.4
0.25
0.25
0.0
0.0
0.3
0.25
0.0
0.1
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)
51
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 QMcoder é 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 ⋅ (1 − Qe) [67].
A+C
LPS
A Qe
C+A-Qe A
MPS
A (1-Qe)
C
2.28 – Subdivisão interna do intervalo no QM-coder. Fonte [67].
52
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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:
Compression
with QM-coder
Modelling:
Processing
the image
Determining
the context
Determining
the prob.
distribution
Arithmetic
Coding
Processing
the image
QM-coder:
Determining
the prob.
distribution
Determining
the context
Updating
model
Arithmetic
Coding
Updating
model
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
53
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
54
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
55
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
56
Dissertação de Mestrado– LASID - PPGI/DI UFPB
(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.
57
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
58
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
59
Dissertação de Mestrado– LASID - PPGI/DI UFPB
2,5
k0
k1
2
k2
k3
1,5
k4
k5
1
k6
k7
0,5
k8
k9
0
Compressão / Médias de k´s
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
60
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
61
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
Sistema Portátil
Microcontrolador
+
Compressor
Memória
3.3 - Arquitetura do Projeto.
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
62
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
63
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
software
Conversor AD
Interface USB
hardware
Controle
Protocolo
Visualização
On line
Tempo real
Validação
e
Tratamento
Controle
de
Armazenamento
Controle
TEMPO
Visualização
Off line
Dados
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
64
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
65
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
66
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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#
67
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
68
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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].
69
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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;
70
Dissertação de Mestrado– LASID - PPGI/DI UFPB
•
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
71
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
K= 0
K= 1
Contexto 0
Cont 0
Cont 1
Cont 0
Cont 1
K= 2
Contexto 1
Cont 0
Cont 1
...
Contexto 00
Cont 0
Cont 1
3.12 - Estrutura da memória.
72
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
0
1
2
3
4
5
6
7
Binário
000
001
010
011
100
101
110
111
Gray
000
001
011
010
110
111
101
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.
73
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Amostra 1
Amostra 2
Amostra 3
Amostra 4
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
0
1
1
1
0
1
0
0
1
...
S10
...
S1 S0
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.
ARQUIVO
ORIGINAL
CÓDIGO
GRAY
DECOMPOSIÇÃO
EM BITS
PPM + ARITIMÉTICO
(COMPRESSOR)
ARQUIVO
COMPRIMIDO
3.14 - Diagrama em blocos do compressor proposto
74
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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,
ARQUIVO
ORIGINAL
CÓDIGO
GRAY
Segmentação em plano de bits
Compressor
PPM Bin
Modelo S0
PPM Bin
Modelo S1
PPM Bin
Modelo S2
PPM Bin
Modelo S3
PPM Bin
Modelo S4
PPM Bin
Modelo S5
PPM Bin
Modelo S6
PPM Bin
Modelo S7
PPM Bin
Modelo S8
PPM Bin
Modelo S9
PPM Bin
Modelo S10
PPM Bin
Modelo S11
ArithEncoder
BitOutput
ARQUIVO
COMPRIMIDO
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.
75
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
76
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
G(i) = B(i + 1) xor B(i)
3.2
3.2 – Código Gray para 4 bits.
3.7.1.2
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);
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.
77
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Stream de bits
Saida (Low,High,Total)
PPM Bin
Modelo PPM
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).
Entrada
(Low, ,High, Total)
Saída seq. inteiros
ArithEncoder
BitOutput
3.18 – Codificador Aritmético.
78
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
Stream de bits
(Low,High,Total)
PPM Bin
Modelo PPM
ArithEncoder
BitOutput
ARQUIVO
COMPRIMIDO
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
79
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
80
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
81
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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, é
82
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
83
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
84
Dissertação de Mestrado– LASID - PPGI/DI UFPB
criado, este agora para validar o modelo em hardware contendo um modelo PPM, apresentado
na Figura 4.5.
Modelo Alto nível - JAVA
ENTRADA
A
PPM Bin
ArithEncoder
SAÍDA
Modelo PPM
PPM
BitOutput
J
Codificador Aritmético
Modelo Baixo nível - VHDL
ENTRADA
A
PPM Bin
ArithEncoder
SAÍDA
Modelo PPM
PPM
BitOutput
V
Codificador Aritmético
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 MITBIH, e colhidos 16 arquivos comprimidos como saída, para servirem de comparação com os
resultado apresentados no item 4.2.3.
85
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 de projeto para o Teste
Driver
Checker
Arquivos
de
entrada
Arquivos
de
saída
Entidade Sob Teste
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
86
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
87
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 de projeto para o Teste
Driver
Checker
Arquivos
de
entrada
Arquivos
de
saída
Entidade Sob Teste
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’.
88
Dissertação de Mestrado– LASID - PPGI/DI UFPB
É 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.
89
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
Entidade de projeto para o Teste
Driver
Checker
Arquivos
de
entrada
Arquivos
de
saída
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
90
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
91
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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/
Resumo
Dispositivo
MAX
EPM240T100C3
92
Dissertação de Mestrado– LASID - PPGI/DI UFPB
FLEX10K
EPF10K10LC84-3
MAX7000B
EPM7256BTC100-5
MAX7000S
EPM 7128SLC84-7
93
Dissertação de Mestrado– LASID - PPGI/DI UFPB
CICLONE
EP1C3T100C6
CICLONE II
EP2C5T144C6
STRATIX
EP1S10F484C5
94
Dissertação de Mestrado– LASID - PPGI/DI UFPB
STRATIX II
EP2S15F484C3
4.2 – Síntese do módulo PPM.
PPM
Família/
Resumo
Dispositivo
CICLONE
EP1C12Q240C6
95
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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/
Resumo
Dispositivo
CICLONE II
EP2C50F484C6
96
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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/
Resumo
Dispositivo
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.
97
Dissertação de Mestrado– LASID - PPGI/DI UFPB
4.5 – Síntese do Compressor com 12 modelos.
COMPRESSOR COM DOZE MODELOS PPM E
UM CODIFICADOR ARITIMÉTICO
Família/
Resumo
Dispositivo
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.
98
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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/
Resumo
Dispositivo
STRATIX II
EP2S180F1020C3
99
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
100
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
101
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
102
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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. 127134.
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. 2333.
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.
16.
ANALOG DEVICES. AD574A User Manual.
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Ê.
103
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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:
104
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Acessos em: fevereiro de 2008.
39.
40.
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
RAMOS, Ângela Patrícia, SOUZA, Bolívar Saldanha. Eletrocardiograma: princípios, conceitos e aplicações.
Centro de Estudos de Fisiologia do Exercício, 2007
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
41.
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/jornal21/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
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.
SUPORTE
AO
PROJETO
DE
SISTEMAS
105
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
106
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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/
107
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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.
108
Dissertação de Mestrado– LASID - PPGI/DI UFPB
•
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.
109
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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 );
110
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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';
111
Dissertação de Mestrado– LASID - PPGI/DI UFPB
87
88
89
90
91
92
93
94
95
96
97
98
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 <='0';
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 <='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';
112
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
113
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Apêndice B - Testbench do Codificador Aritmético
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
library IEEE;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity test_arithen is
PORT ( saida : OUT std_logic_vector( 8 downto 1);
saida2 : OUT std_logic_vector( 8 downto 1);
saida3 : OUT std_logic_vector( 8 downto 1);
saidaAtiva : OUT STD_LOGIC;
saida2Ativa : OUT STD_LOGIC;
saida3Ativa : OUT STD_LOGIC
);-- BUFFER bit_vector(8 downto 1)
end;
architecture only of test_arithen is
COMPONENT arithen
PORT (
clk : IN STD_LOGIC;
arithEnable : IN STD_LOGIC;
arithClose : IN STD_LOGIC;
low1,high2,total3 : IN integer range 0 to 512;
saidaAtiva : OUT STD_LOGIC;
saida2Ativa : OUT STD_LOGIC;
saida3Ativa : OUT STD_LOGIC;
saida : OUT std_logic_vector( 8 downto 1);
saida2 : OUT std_logic_vector( 8 downto 1);
saida3 : OUT std_logic_vector( 8 downto 1)
);
END COMPONENT ;
SIGNAL clk : STD_LOGIC := '0';
SIGNAL arithEnable : STD_LOGIC := '1';
SIGNAL arithClose : STD_LOGIC := '0';
SIGNAL low1, high2, total3 : integer range 0 to 512 := 0;
begin
dut : arithen
PORT MAP (
clk => clk,
arithEnable => arithEnable,
arithClose => arithClose,
low1 => low1,
high2 => high2,
114
Dissertação de Mestrado– LASID - PPGI/DI UFPB
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
total3 => total3,
saidaAtiva => saidaAtiva,
saida2Ativa => saida2Ativa,
saida3Ativa => saida3Ativa,
saida => saida,
saida2 => saida2,
saida3 => saida3
);
clock : PROCESS
begin
wait for 190 ns; clk <= not clk;
end PROCESS clock;
stimulus : PROCESS
begin
arithEnable<='1';
low1 <=0; high2 <= 1; total3 <= 2;
wait for 220 ns; low1 <=1; high2 <= 2; total3 <= 2;
wait for 380 ns; low1 <=1; high2 <=3; total3 <=3;
wait for 380 ns; low1 <=1; high2 <=2; total3 <=2;
wait for 380 ns; low1 <=0; high2 <=1; total3 <=2;
wait for 380 ns; low1 <=1; high2 <=2; total3 <=2;
wait for 380 ns; low1 <=2; high2 <=3; total3 <=3;
wait for 380 ns; low1 <=2; high2 <=4; total3 <=4;
wait for 380 ns; low1 <=0; high2 <=2; total3 <=5;
wait for 380 ns; low1 <=1; high2 <=2; total3 <=2;
wait for 380 ns; low1 <=3; high2 <=6; total3 <=6;
wait for 380 ns; low1 <=3; high2 <=7; total3 <=7;
wait for 380 ns; low1 <=0; high2 <=3; total3 <=8;
wait for 380 ns; low1 <=1; high2 <=3; total3 <=3;
wait for 380 ns; low1 <=4; high2 <=9; total3 <=9;
wait for 380 ns; low1 <=4; high2 <=10; total3 <=10;
wait for 380 ns; low1 <=4; high2 <=11; total3 <=11;
wait for 380 ns; low1 <=0; high2 <=4; total3 <=12;
wait for 380 ns; low1 <=0; high2 <=1; total3 <=4;
wait for 380 ns; low1 <=0; high2 <=2; total3 <=5;
wait for 380 ns; low1 <=0; high2 <=3; total3 <=6;
wait for 380 ns; low1 <=4; high2 <=7; total3 <=7;
wait for 380 ns; low1 <=5; high2 <=13; total3 <=13;
wait for 380 ns; low1 <=0; high2 <=5; total3 <=14;
wait for 380 ns; low1 <=0; high2 <=4; total3 <=8;
wait for 380 ns; low1 <=5; high2 <=9; total3 <=9;
wait for 380 ns; low1 <=6; high2 <=15; total3 <=15;
wait for 380 ns; low1 <=6; high2 <=16; total3 <=16;
wait for 380 ns; low1 <=6; high2 <=17; total3 <=17;
wait for 380 ns; low1 <=0; high2 <=6; total3 <=18;
wait for 380 ns; low1 <=0; high2 <=5; total3 <=10;
115
Dissertação de Mestrado– LASID - PPGI/DI UFPB
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
wait for 380 ns; low1 <=0; high2 <=6; total3 <=11;
wait for 380 ns; low1 <=0; high2 <=7; total3 <=12;
wait for 380 ns; low1 <=0; high2 <=8; total3 <=13;
wait for 380 ns; low1 <=9; high2 <=14; total3 <=14;
wait for 380 ns; low1 <=7; high2 <=19; total3 <=19;
wait for 380 ns; low1 <=0; high2 <=7; total3 <=20;
wait for 380 ns; low1 <=9; high2 <=15; total3 <=15;
wait for 380 ns; low1 <=8; high2 <=21; total3 <=21;
wait for 380 ns; low1 <=8; high2 <=22; total3 <=22;
wait for 380 ns; low1 <=8; high2 <=23; total3 <=23;
wait for 380 ns; low1 <=0; high2 <=8; total3 <=24;
wait for 380 ns; low1 <=0; high2 <=9; total3 <=16;
wait for 380 ns; low1 <=0; high2 <=10; total3 <=17;
wait for 380 ns; low1 <=0; high2 <=11; total3 <=18;
wait for 380 ns; low1 <=12; high2 <=19; total3 <=19;
wait for 380 ns; low1 <=9; high2 <=25; total3 <=25;
wait for 380 ns; low1 <=9; high2 <=26; total3 <=26;
wait for 380 ns; low1 <=0; high2 <=9; total3 <=27;
wait for 380 ns; low1 <=12; high2 <=20; total3 <=20;
wait for 380 ns; low1 <=10; high2 <=28; total3 <=28;
wait for 380 ns; low1 <=10; high2 <=29; total3 <=29;
wait for 380 ns; low1 <=10; high2 <=30; total3 <=30;
wait for 380 ns; low1 <=0; high2 <=10; total3 <=31;
wait for 380 ns; low1 <=0; high2 <=12; total3 <=21;
wait for 380 ns; low1 <=0; high2 <=13; total3 <=22;
wait for 380 ns; low1 <=14; high2 <=23; total3 <=23;
wait for 380 ns; low1 <=0; high2 <=11; total3 <=32;
wait for 380 ns; low1 <=0; high2 <=14; total3 <=24;
wait for 380 ns; low1 <=15; high2 <=25; total3 <=25;
wait for 380 ns; low1 <=0; high2 <=12; total3 <=33;
wait for 380 ns; low1 <=15; high2 <=26; total3 <=26;
wait for 380 ns; low1 <=13; high2 <=34; total3 <=34;
wait for 380 ns; low1 <=13; high2 <=35; total3 <=35;
wait for 380 ns; low1 <=13; high2 <=36; total3 <=36;
wait for 380 ns; low1 <=0; high2 <=13; total3 <=37;
wait for 380 ns; low1 <=0; high2 <=15; total3 <=27;
wait for 380 ns; low1 <=16; high2 <=28; total3 <=28;
wait for 380 ns; low1 <=0; high2 <=14; total3 <=38;
wait for 380 ns; low1 <=16; high2 <=29; total3 <=29;
wait for 380 ns; low1 <=15; high2 <=39; total3 <=39;
wait for 380 ns; low1 <=0; high2 <=15; total3 <=40;
wait for 380 ns; low1 <=0; high2 <=16; total3 <=30;
wait for 380 ns; low1 <=17; high2 <=31; total3 <=31;
wait for 380 ns; low1 <=16; high2 <=41; total3 <=41;
wait for 380 ns; low1 <=16; high2 <=42; total3 <=42;
wait for 380 ns; low1 <=16; high2 <=43; total3 <=43;
116
Dissertação de Mestrado– LASID - PPGI/DI UFPB
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
wait for 380 ns; low1 <=0; high2 <=16; total3 <=44;
wait for 380 ns; low1 <=0; high2 <=17; total3 <=32;
wait for 380 ns; low1 <=18; high2 <=33; total3 <=33;
wait for 380 ns; low1 <=0; high2 <=17; total3 <=45;
wait for 380 ns; low1 <=0; high2 <=18; total3 <=34;
wait for 380 ns; low1 <=0; high2 <=19; total3 <=35;
wait for 380 ns; low1 <=20; high2 <=36; total3 <=36;
wait for 380 ns; low1 <=0; high2 <=18; total3 <=46;
wait for 380 ns; low1 <=20; high2 <=37; total3 <=37;
wait for 380 ns; low1 <=19; high2 <=47; total3 <=47;
wait for 380 ns; low1 <=19; high2 <=48; total3 <=48;
wait for 380 ns; low1 <=19; high2 <=49; total3 <=49;
wait for 380 ns; low1 <=0; high2 <=19; total3 <=50;
wait for 380 ns; low1 <=0; high2 <=20; total3 <=38;
wait for 380 ns; low1 <=0; high2 <=21; total3 <=39;
wait for 380 ns; low1 <=22; high2 <=40; total3 <=40;
wait for 380 ns; low1 <=20; high2 <=51; total3 <=51;
wait for 380 ns; low1 <=20; high2 <=52; total3 <=52;
wait for 380 ns; low1 <=20; high2 <=53; total3 <=53;
wait for 380 ns; low1 <=0; high2 <=20; total3 <=54;
wait for 380 ns; low1 <=22; high2 <=41; total3 <=41;
wait for 380 ns; low1 <=21; high2 <=55; total3 <=55;
wait for 380 ns; low1 <=21; high2 <=56; total3 <=56;
wait for 380 ns; low1 <=21; high2 <=57; total3 <=57;
wait for 380 ns; low1 <=0; high2 <=21; total3 <=58;
wait for 380 ns; low1 <=0; high2 <=22; total3 <=42;
wait for 380 ns; low1 <=0; high2 <=23; total3 <=43;
wait for 380 ns; low1 <=24; high2 <=44; total3 <=44;
wait for 380 ns; low1 <=0; high2 <=22; total3 <=59;
wait for 380 ns; low1 <=0; high2 <=24; total3 <=45;
wait for 380 ns; low1 <=25; high2 <=46; total3 <=46;
wait for 380 ns; low1 <=0; high2 <=23; total3 <=60;
wait for 380 ns; low1 <=25; high2 <=47; total3 <=47;
wait for 380 ns; low1 <=24; high2 <=61; total3 <=61;
wait for 380 ns; low1 <=24; high2 <=62; total3 <=62;
wait for 380 ns; low1 <=24; high2 <=63; total3 <=63;
wait for 380 ns; low1 <=0; high2 <=24; total3 <=64;
wait for 380 ns; low1 <=0; high2 <=25; total3 <=48;
wait for 380 ns; low1 <=0; high2 <=26; total3 <=49;
wait for 380 ns; low1 <=0; high2 <=27; total3 <=50;
wait for 380 ns; low1 <=28; high2 <=51; total3 <=51;
wait for 380 ns; low1 <=0; high2 <=25; total3 <=65;
wait for 380 ns; low1 <=0; high2 <=28; total3 <=52;
wait for 380 ns; low1 <=0; high2 <=29; total3 <=53;
wait for 380 ns; low1 <=30; high2 <=54; total3 <=54;
wait for 380 ns; low1 <=26; high2 <=66; total3 <=66;
117
Dissertação de Mestrado– LASID - PPGI/DI UFPB
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
wait for 380 ns; low1 <=26; high2 <=67; total3 <=67;
wait for 380 ns; low1 <=26; high2 <=68; total3 <=68;
wait for 380 ns; low1 <=0; high2 <=26; total3 <=69;
wait for 380 ns; low1 <=0; high2 <=30; total3 <=55;
wait for 380 ns; low1 <=0; high2 <=31; total3 <=56;
wait for 380 ns; low1 <=0; high2 <=32; total3 <=57;
wait for 380 ns; low1 <=33; high2 <=58; total3 <=58;
wait for 380 ns; low1 <=0; high2 <=27; total3 <=70;
wait for 380 ns; low1 <=0; high2 <=33; total3 <=59;
wait for 380 ns; low1 <=0; high2 <=34; total3 <=60;
wait for 380 ns; low1 <=35; high2 <=61; total3 <=61;
wait for 380 ns; low1 <=28; high2 <=71; total3 <=71;
wait for 380 ns; low1 <=28; high2 <=72; total3 <=72;
wait for 380 ns; low1 <=0; high2 <=28; total3 <=73;
wait for 380 ns; low1 <=35; high2 <=62; total3 <=62;
wait for 380 ns; low1 <=29; high2 <=74; total3 <=74;
wait for 380 ns; low1 <=29; high2 <=75; total3 <=75;
wait for 380 ns; low1 <=29; high2 <=76; total3 <=76;
wait for 380 ns; low1 <=0; high2 <=29; total3 <=77;
wait for 380 ns; low1 <=0; high2 <=35; total3 <=63;
wait for 380 ns; low1 <=36; high2 <=64; total3 <=64;
wait for 380 ns; low1 <=0; high2 <=30; total3 <=78;
wait for 380 ns; low1 <=36; high2 <=65; total3 <=65;
wait for 380 ns; low1 <=31; high2 <=79; total3 <=79;
wait for 380 ns; low1 <=31; high2 <=80; total3 <=80;
wait for 380 ns; low1 <=31; high2 <=81; total3 <=81;
wait for 380 ns; low1 <=0; high2 <=31; total3 <=82;
wait for 380 ns; low1 <=0; high2 <=36; total3 <=66;
wait for 380 ns; low1 <=0; high2 <=37; total3 <=67;
wait for 380 ns; low1 <=0; high2 <=38; total3 <=68;
wait for 380 ns; low1 <=0; high2 <=39; total3 <=69;
wait for 380 ns; low1 <=0; high2 <=40; total3 <=70;
wait for 380 ns; low1 <=0; high2 <=41; total3 <=71;
wait for 380 ns; low1 <=0; high2 <=42; total3 <=72;
wait for 380 ns; low1 <=43; high2 <=73; total3 <=73;
wait for 380 ns; low1 <=32; high2 <=83; total3 <=83;
wait for 380 ns; low1 <=32; high2 <=84; total3 <=84;
wait for 380 ns; low1 <=0; high2 <=32; total3 <=85;
wait for 380 ns; low1 <=43; high2 <=74; total3 <=74;
wait for 380 ns; low1 <=33; high2 <=86; total3 <=86;
wait for 380 ns; low1 <=33; high2 <=87; total3 <=87;
wait for 380 ns; low1 <=0; high2 <=33; total3 <=88;
wait for 380 ns; low1 <=43; high2 <=75; total3 <=75;
wait for 380 ns; low1 <=0; high2 <=34; total3 <=89;
wait for 380 ns; low1 <=0; high2 <=43; total3 <=76;
wait for 380 ns; low1 <=0; high2 <=44; total3 <=77;
118
Dissertação de Mestrado– LASID - PPGI/DI UFPB
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
wait for 380 ns; low1 <=45; high2 <=78; total3 <=78;
wait for 380 ns; low1 <=35; high2 <=90; total3 <=90;
wait for 380 ns; low1 <=35; high2 <=91; total3 <=91;
wait for 380 ns; low1 <=0; high2 <=35; total3 <=92;
wait for 380 ns; low1 <=45; high2 <=79; total3 <=79;
wait for 380 ns; low1 <=36; high2 <=93; total3 <=93;
wait for 380 ns; low1 <=36; high2 <=94; total3 <=94;
wait for 380 ns; low1 <=0; high2 <=36; total3 <=95;
wait for 380 ns; low1 <=0; high2 <=45; total3 <=80;
wait for 380 ns; low1 <=46; high2 <=81; total3 <=81;
wait for 380 ns; low1 <=37; high2 <=96; total3 <=96;
wait for 380 ns; low1 <=0; high2 <=37; total3 <=97;
wait for 380 ns; low1 <=46; high2 <=82; total3 <=82;
wait for 380 ns; low1 <=38; high2 <=98; total3 <=98;
wait for 380 ns; low1 <=38; high2 <=99; total3 <=99;
wait for 380 ns; low1 <=0; high2 <=38; total3 <=100;
wait for 380 ns; low1 <=46; high2 <=83; total3 <=83;
wait for 380 ns; low1 <=39; high2 <=101; total3 <=101;
wait for 380 ns; low1 <=39; high2 <=102; total3 <=102;
wait for 380 ns; low1 <=39; high2 <=103; total3 <=103;
wait for 380 ns; low1 <=0; high2 <=39; total3 <=104;
wait for 380 ns; low1 <=0; high2 <=46; total3 <=84;
wait for 380 ns; low1 <=0; high2 <=47; total3 <=85;
wait for 380 ns; low1 <=0; high2 <=48; total3 <=86;
wait for 380 ns; low1 <=49; high2 <=87; total3 <=87;
wait for 380 ns; low1 <=40; high2 <=105; total3 <=105;
wait for 380 ns; low1 <=40; high2 <=106; total3 <=106;
wait for 380 ns; low1 <=40; high2 <=107; total3 <=107;
wait for 380 ns; low1 <=0; high2 <=40; total3 <=108;
wait for 380 ns; low1 <=0; high2 <=49; total3 <=88;
wait for 380 ns; low1 <=0; high2 <=50; total3 <=89;
wait for 380 ns; low1 <=0; high2 <=51; total3 <=90;
wait for 380 ns; low1 <=0; high2 <=52; total3 <=91;
wait for 380 ns; low1 <=0; high2 <=53; total3 <=92;
wait for 380 ns; low1 <=54; high2 <=93; total3 <=93;
wait for 380 ns; low1 <=0; high2 <=41; total3 <=109;
wait for 380 ns; low1 <=54; high2 <=94; total3 <=94;
wait for 380 ns; low1 <=42; high2 <=110; total3 <=110;
wait for 380 ns; low1 <=42; high2 <=111; total3 <=111;
wait for 380 ns; low1 <=42; high2 <=112; total3 <=112;
wait for 380 ns; low1 <=0; high2 <=42; total3 <=113;
wait for 380 ns; low1 <=0; high2 <=54; total3 <=95;
wait for 380 ns; low1 <=0; high2 <=55; total3 <=96;
wait for 380 ns; low1 <=56; high2 <=97; total3 <=97;
wait for 380 ns; low1 <=0; high2 <=43; total3 <=114;
wait for 380 ns; low1 <=56; high2 <=98; total3 <=98;
119
Dissertação de Mestrado– LASID - PPGI/DI UFPB
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
wait for 380 ns; low1 <=44; high2 <=115; total3 <=115;
wait for 380 ns; low1 <=0; high2 <=44; total3 <=116;
wait for 380 ns; low1 <=56; high2 <=99; total3 <=99;
wait for 380 ns; low1 <=45; high2 <=117; total3 <=117;
wait for 380 ns; low1 <=45; high2 <=118; total3 <=118;
wait for 380 ns; low1 <=45; high2 <=119; total3 <=119;
wait for 380 ns; low1 <=0; high2 <=45; total3 <=120;
wait for 380 ns; low1 <=0; high2 <=56; total3 <=100;
wait for 380 ns; low1 <=0; high2 <=57; total3 <=101;
wait for 380 ns; low1 <=58; high2 <=102; total3 <=102;
wait for 380 ns; low1 <=46; high2 <=121; total3 <=121;
wait for 380 ns; low1 <=46; high2 <=122; total3 <=122;
wait for 380 ns; low1 <=46; high2 <=123; total3 <=123;
wait for 380 ns; low1 <=0; high2 <=46; total3 <=124;
wait for 380 ns; low1 <=58; high2 <=103; total3 <=103;
wait for 380 ns; low1 <=47; high2 <=125; total3 <=125;
wait for 380 ns; low1 <=47; high2 <=126; total3 <=126;
wait for 380 ns; low1 <=47; high2 <=127; total3 <=127;
wait for 380 ns; low1 <=0; high2 <=47; total3 <=128;
wait for 380 ns; low1 <=0; high2 <=58; total3 <=104;
wait for 380 ns; low1 <=59; high2 <=105; total3 <=105;
wait for 380 ns; low1 <=0; high2 <=48; total3 <=129;
wait for 380 ns; low1 <=59; high2 <=106; total3 <=106;
wait for 380 ns; low1 <=49; high2 <=130; total3 <=130;
wait for 380 ns; low1 <=49; high2 <=131; total3 <=131;
wait for 380 ns; low1 <=0; high2 <=49; total3 <=132;
wait for 380 ns; low1 <=59; high2 <=107; total3 <=107;
wait for 380 ns; low1 <=50; high2 <=133; total3 <=133;
wait for 380 ns; low1 <=50; high2 <=134; total3 <=134;
wait for 380 ns; low1 <=50; high2 <=135; total3 <=135;
wait for 380 ns; low1 <=0; high2 <=50; total3 <=136;
wait for 380 ns; low1 <=0; high2 <=59; total3 <=108;
wait for 380 ns; low1 <=60; high2 <=109; total3 <=109;
wait for 380 ns; low1 <=0; high2 <=51; total3 <=137;
wait for 380 ns; low1 <=0; high2 <=60; total3 <=110;
wait for 380 ns; low1 <=61; high2 <=111; total3 <=111;
wait for 380 ns; low1 <=52; high2 <=138; total3 <=138;
wait for 380 ns; low1 <=0; high2 <=52; total3 <=139;
wait for 380 ns; low1 <=61; high2 <=112; total3 <=112;
wait for 380 ns; low1 <=53; high2 <=140; total3 <=140;
wait for 380 ns; low1 <=53; high2 <=141; total3 <=141;
wait for 380 ns; low1 <=53; high2 <=142; total3 <=142;
wait for 380 ns; low1 <=0; high2 <=53; total3 <=143;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=113;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=114;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=115;
120
Dissertação de Mestrado– LASID - PPGI/DI UFPB
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
wait for 380 ns; low1 <=0; high2 <=64; total3 <=116;
wait for 380 ns; low1 <=65; high2 <=117; total3 <=117;
wait for 380 ns; low1 <=54; high2 <=144; total3 <=144;
wait for 380 ns; low1 <=0; high2 <=54; total3 <=145;
wait for 380 ns; low1 <=65; high2 <=118; total3 <=118;
wait for 380 ns; low1 <=55; high2 <=146; total3 <=146;
wait for 380 ns; low1 <=55; high2 <=147; total3 <=147;
wait for 380 ns; low1 <=55; high2 <=148; total3 <=148;
wait for 380 ns; low1 <=0; high2 <=55; total3 <=149;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=119;
wait for 380 ns; low1 <=66; high2 <=120; total3 <=120;
wait for 380 ns; low1 <=0; high2 <=56; total3 <=150;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=121;
wait for 380 ns; low1 <=67; high2 <=122; total3 <=122;
wait for 380 ns; low1 <=57; high2 <=151; total3 <=151;
wait for 380 ns; low1 <=0; high2 <=57; total3 <=152;
wait for 380 ns; low1 <=67; high2 <=123; total3 <=123;
wait for 380 ns; low1 <=58; high2 <=153; total3 <=153;
wait for 380 ns; low1 <=58; high2 <=154; total3 <=154;
wait for 380 ns; low1 <=58; high2 <=155; total3 <=155;
wait for 380 ns; low1 <=0; high2 <=58; total3 <=156;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=124;
wait for 380 ns; low1 <=68; high2 <=125; total3 <=125;
wait for 380 ns; low1 <=59; high2 <=157; total3 <=157;
wait for 380 ns; low1 <=59; high2 <=158; total3 <=158;
wait for 380 ns; low1 <=0; high2 <=59; total3 <=159;
wait for 380 ns; low1 <=68; high2 <=126; total3 <=126;
wait for 380 ns; low1 <=0; high2 <=60; total3 <=160;
wait for 380 ns; low1 <=68; high2 <=127; total3 <=127;
wait for 380 ns; low1 <=61; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=61; high2 <=162; total3 <=162;
wait for 380 ns; low1 <=61; high2 <=163; total3 <=163;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=164;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=128;
wait for 380 ns; low1 <=69; high2 <=129; total3 <=129;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=165;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=130;
wait for 380 ns; low1 <=70; high2 <=131; total3 <=131;
wait for 380 ns; low1 <=63; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=167;
wait for 380 ns; low1 <=70; high2 <=132; total3 <=132;
wait for 380 ns; low1 <=64; high2 <=168; total3 <=168;
wait for 380 ns; low1 <=64; high2 <=169; total3 <=169;
wait for 380 ns; low1 <=64; high2 <=170; total3 <=170;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=171;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=133;
121
Dissertação de Mestrado– LASID - PPGI/DI UFPB
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
wait for 380 ns; low1 <=0; high2 <=71; total3 <=134;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=135;
wait for 380 ns; low1 <=73; high2 <=136; total3 <=136;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=172;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=137;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=138;
wait for 380 ns; low1 <=75; high2 <=139; total3 <=139;
wait for 380 ns; low1 <=66; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=66; high2 <=174; total3 <=174;
wait for 380 ns; low1 <=66; high2 <=175; total3 <=175;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=176;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=140;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=141;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=142;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=143;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=144;
wait for 380 ns; low1 <=80; high2 <=145; total3 <=145;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=177;
wait for 380 ns; low1 <=80; high2 <=146; total3 <=146;
wait for 380 ns; low1 <=68; high2 <=178; total3 <=178;
wait for 380 ns; low1 <=68; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=68; high2 <=180; total3 <=180;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=181;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=147;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=148;
wait for 380 ns; low1 <=82; high2 <=149; total3 <=149;
wait for 380 ns; low1 <=69; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=183;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=150;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=151;
wait for 380 ns; low1 <=84; high2 <=152; total3 <=152;
wait for 380 ns; low1 <=70; high2 <=184; total3 <=184;
wait for 380 ns; low1 <=70; high2 <=185; total3 <=185;
wait for 380 ns; low1 <=70; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=187;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=153;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=154;
wait for 380 ns; low1 <=86; high2 <=155; total3 <=155;
wait for 380 ns; low1 <=71; high2 <=188; total3 <=188;
wait for 380 ns; low1 <=71; high2 <=189; total3 <=189;
wait for 380 ns; low1 <=0; high2 <=71; total3 <=190;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=156;
wait for 380 ns; low1 <=87; high2 <=157; total3 <=157;
wait for 380 ns; low1 <=72; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=72; high2 <=192; total3 <=192;
wait for 380 ns; low1 <=72; high2 <=193; total3 <=193;
122
Dissertação de Mestrado– LASID - PPGI/DI UFPB
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
wait for 380 ns; low1 <=0; high2 <=72; total3 <=194;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=158;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=159;
wait for 380 ns; low1 <=89; high2 <=160; total3 <=160;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=195;
wait for 380 ns; low1 <=89; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=196;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=162;
wait for 380 ns; low1 <=90; high2 <=163; total3 <=163;
wait for 380 ns; low1 <=75; high2 <=197; total3 <=197;
wait for 380 ns; low1 <=75; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=199;
wait for 380 ns; low1 <=90; high2 <=164; total3 <=164;
wait for 380 ns; low1 <=76; high2 <=200; total3 <=200;
wait for 380 ns; low1 <=76; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=76; high2 <=202; total3 <=202;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=203;
wait for 380 ns; low1 <=90; high2 <=165; total3 <=165;
wait for 380 ns; low1 <=77; high2 <=204; total3 <=204;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=205;
wait for 380 ns; low1 <=90; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=78; high2 <=206; total3 <=206;
wait for 380 ns; low1 <=78; high2 <=207; total3 <=207;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=208;
wait for 380 ns; low1 <=90; high2 <=167; total3 <=167;
wait for 380 ns; low1 <=79; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=79; high2 <=210; total3 <=210;
wait for 380 ns; low1 <=79; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=79; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=79; high2 <=213; total3 <=213;
wait for 380 ns; low1 <=79; high2 <=214; total3 <=214;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=215;
wait for 380 ns; low1 <=90; high2 <=168; total3 <=168;
wait for 380 ns; low1 <=80; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=80; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=218;
wait for 380 ns; low1 <=90; high2 <=169; total3 <=169;
wait for 380 ns; low1 <=81; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=81; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=81; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=222;
wait for 380 ns; low1 <=90; high2 <=170; total3 <=170;
wait for 380 ns; low1 <=82; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=224;
wait for 380 ns; low1 <=90; high2 <=171; total3 <=171;
wait for 380 ns; low1 <=83; high2 <=225; total3 <=225;
123
Dissertação de Mestrado– LASID - PPGI/DI UFPB
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
wait for 380 ns; low1 <=83; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=227;
wait for 380 ns; low1 <=90; high2 <=172; total3 <=172;
wait for 380 ns; low1 <=84; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=84; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=84; high2 <=230; total3 <=230;
wait for 380 ns; low1 <=84; high2 <=231; total3 <=231;
wait for 380 ns; low1 <=84; high2 <=232; total3 <=232;
wait for 380 ns; low1 <=84; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=234;
wait for 380 ns; low1 <=90; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=85; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=85; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=85; high2 <=237; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=174;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=175;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=176;
wait for 380 ns; low1 <=93; high2 <=177; total3 <=177;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=239;
wait for 380 ns; low1 <=93; high2 <=178; total3 <=178;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=240;
wait for 380 ns; low1 <=93; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=88; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=88; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=88; high2 <=243; total3 <=243;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=180;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=181;
wait for 380 ns; low1 <=95; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=89; high2 <=245; total3 <=245;
wait for 380 ns; low1 <=89; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=247;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=183;
wait for 380 ns; low1 <=96; high2 <=184; total3 <=184;
wait for 380 ns; low1 <=90; high2 <=248; total3 <=248;
wait for 380 ns; low1 <=90; high2 <=249; total3 <=249;
wait for 380 ns; low1 <=90; high2 <=250; total3 <=250;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=251;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=185;
wait for 380 ns; low1 <=97; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=252;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=187;
wait for 380 ns; low1 <=98; high2 <=188; total3 <=188;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=253;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=189;
124
Dissertação de Mestrado– LASID - PPGI/DI UFPB
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
wait for 380 ns; low1 <=99; high2 <=190; total3 <=190;
wait for 380 ns; low1 <=93; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=93; high2 <=255; total3 <=255;
wait for 380 ns; low1 <=93; high2 <=256; total3 <=256;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=257;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=191;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=192;
wait for 380 ns; low1 <=101; high2 <=193; total3 <=193;
wait for 380 ns; low1 <=94; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=259;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=194;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=195;
wait for 380 ns; low1 <=103; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=95; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=95; high2 <=261; total3 <=261;
wait for 380 ns; low1 <=95; high2 <=262; total3 <=262;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=263;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=197;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=198;
wait for 380 ns; low1 <=105; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=264;
wait for 380 ns; low1 <=105; high2 <=200; total3 <=200;
wait for 380 ns; low1 <=97; high2 <=265; total3 <=265;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=266;
wait for 380 ns; low1 <=105; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=98; high2 <=267; total3 <=267;
wait for 380 ns; low1 <=98; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=98; high2 <=269; total3 <=269;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=270;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=202;
wait for 380 ns; low1 <=106; high2 <=203; total3 <=203;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=271;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=204;
wait for 380 ns; low1 <=107; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=272;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=206;
wait for 380 ns; low1 <=108; high2 <=207; total3 <=207;
wait for 380 ns; low1 <=101; high2 <=273; total3 <=273;
wait for 380 ns; low1 <=101; high2 <=274; total3 <=274;
wait for 380 ns; low1 <=101; high2 <=275; total3 <=275;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=276;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=208;
wait for 380 ns; low1 <=109; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=277;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=210;
wait for 380 ns; low1 <=110; high2 <=211; total3 <=211;
125
Dissertação de Mestrado– LASID - PPGI/DI UFPB
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
wait for 380 ns; low1 <=0; high2 <=103; total3 <=278;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=212;
wait for 380 ns; low1 <=111; high2 <=213; total3 <=213;
wait for 380 ns; low1 <=104; high2 <=279; total3 <=279;
wait for 380 ns; low1 <=104; high2 <=280; total3 <=280;
wait for 380 ns; low1 <=104; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=282;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=214;
wait for 380 ns; low1 <=112; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=283;
wait for 380 ns; low1 <=112; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=106; high2 <=284; total3 <=284;
wait for 380 ns; low1 <=106; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=286;
wait for 380 ns; low1 <=112; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=107; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=107; high2 <=288; total3 <=288;
wait for 380 ns; low1 <=107; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=290;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=218;
wait for 380 ns; low1 <=113; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=291;
wait for 380 ns; low1 <=113; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=109; high2 <=292; total3 <=292;
wait for 380 ns; low1 <=109; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=294;
wait for 380 ns; low1 <=113; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=110; high2 <=295; total3 <=295;
wait for 380 ns; low1 <=110; high2 <=296; total3 <=296;
wait for 380 ns; low1 <=110; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=222;
wait for 380 ns; low1 <=114; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=111; high2 <=299; total3 <=299;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=300;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=224;
wait for 380 ns; low1 <=115; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=301;
wait for 380 ns; low1 <=115; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=113; high2 <=302; total3 <=302;
wait for 380 ns; low1 <=113; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=113; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=305;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=227;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=228;
wait for 380 ns; low1 <=0; high2 <=117; total3 <=229;
126
Dissertação de Mestrado– LASID - PPGI/DI UFPB
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
wait for 380 ns; low1 <=118; high2 <=230; total3 <=230;
wait for 380 ns; low1 <=114; high2 <=306; total3 <=306;
wait for 380 ns; low1 <=114; high2 <=307; total3 <=307;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=308;
wait for 380 ns; low1 <=118; high2 <=231; total3 <=231;
wait for 380 ns; low1 <=115; high2 <=309; total3 <=309;
wait for 380 ns; low1 <=115; high2 <=310; total3 <=310;
wait for 380 ns; low1 <=115; high2 <=311; total3 <=311;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=312;
wait for 380 ns; low1 <=0; high2 <=118; total3 <=232;
wait for 380 ns; low1 <=0; high2 <=119; total3 <=233;
wait for 380 ns; low1 <=120; high2 <=234; total3 <=234;
wait for 380 ns; low1 <=116; high2 <=313; total3 <=313;
wait for 380 ns; low1 <=116; high2 <=314; total3 <=314;
wait for 380 ns; low1 <=116; high2 <=315; total3 <=315;
wait for 380 ns; low1 <=0; high2 <=58; total3 <=158;
wait for 380 ns; low1 <=120; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=59; high2 <=159; total3 <=159;
wait for 380 ns; low1 <=59; high2 <=160; total3 <=160;
wait for 380 ns; low1 <=59; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=0; high2 <=59; total3 <=162;
wait for 380 ns; low1 <=0; high2 <=120; total3 <=236;
wait for 380 ns; low1 <=0; high2 <=121; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=122; total3 <=238;
wait for 380 ns; low1 <=123; high2 <=239; total3 <=239;
wait for 380 ns; low1 <=60; high2 <=163; total3 <=163;
wait for 380 ns; low1 <=60; high2 <=164; total3 <=164;
wait for 380 ns; low1 <=0; high2 <=60; total3 <=165;
wait for 380 ns; low1 <=123; high2 <=240; total3 <=240;
wait for 380 ns; low1 <=61; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=61; high2 <=167; total3 <=167;
wait for 380 ns; low1 <=61; high2 <=168; total3 <=168;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=169;
wait for 380 ns; low1 <=0; high2 <=123; total3 <=241;
wait for 380 ns; low1 <=0; high2 <=124; total3 <=242;
wait for 380 ns; low1 <=0; high2 <=125; total3 <=243;
wait for 380 ns; low1 <=126; high2 <=244; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=170;
wait for 380 ns; low1 <=126; high2 <=245; total3 <=245;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=171;
wait for 380 ns; low1 <=126; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=64; high2 <=172; total3 <=172;
wait for 380 ns; low1 <=64; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=174;
wait for 380 ns; low1 <=126; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=65; high2 <=175; total3 <=175;
127
Dissertação de Mestrado– LASID - PPGI/DI UFPB
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
wait for 380 ns; low1 <=65; high2 <=176; total3 <=176;
wait for 380 ns; low1 <=65; high2 <=177; total3 <=177;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=178;
wait for 380 ns; low1 <=0; high2 <=126; total3 <=248;
wait for 380 ns; low1 <=127; high2 <=249; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=179;
wait for 380 ns; low1 <=127; high2 <=250; total3 <=250;
wait for 380 ns; low1 <=67; high2 <=180; total3 <=180;
wait for 380 ns; low1 <=67; high2 <=181; total3 <=181;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=182;
wait for 380 ns; low1 <=127; high2 <=251; total3 <=251;
wait for 380 ns; low1 <=68; high2 <=183; total3 <=183;
wait for 380 ns; low1 <=68; high2 <=184; total3 <=184;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=185;
wait for 380 ns; low1 <=127; high2 <=252; total3 <=252;
wait for 380 ns; low1 <=69; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=69; high2 <=187; total3 <=187;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=188;
wait for 380 ns; low1 <=127; high2 <=253; total3 <=253;
wait for 380 ns; low1 <=70; high2 <=189; total3 <=189;
wait for 380 ns; low1 <=70; high2 <=190; total3 <=190;
wait for 380 ns; low1 <=70; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=127; total3 <=254;
wait for 380 ns; low1 <=0; high2 <=128; total3 <=255;
wait for 380 ns; low1 <=0; high2 <=129; total3 <=256;
wait for 380 ns; low1 <=0; high2 <=130; total3 <=257;
wait for 380 ns; low1 <=131; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=71; high2 <=193; total3 <=193;
wait for 380 ns; low1 <=0; high2 <=71; total3 <=194;
wait for 380 ns; low1 <=131; high2 <=259; total3 <=259;
wait for 380 ns; low1 <=72; high2 <=195; total3 <=195;
wait for 380 ns; low1 <=72; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=72; high2 <=197; total3 <=197;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=131; total3 <=260;
wait for 380 ns; low1 <=0; high2 <=132; total3 <=261;
wait for 380 ns; low1 <=133; high2 <=262; total3 <=262;
wait for 380 ns; low1 <=73; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=200;
wait for 380 ns; low1 <=133; high2 <=263; total3 <=263;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=201;
wait for 380 ns; low1 <=133; high2 <=264; total3 <=264;
wait for 380 ns; low1 <=75; high2 <=202; total3 <=202;
wait for 380 ns; low1 <=75; high2 <=203; total3 <=203;
wait for 380 ns; low1 <=75; high2 <=204; total3 <=204;
128
Dissertação de Mestrado– LASID - PPGI/DI UFPB
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
wait for 380 ns; low1 <=0; high2 <=75; total3 <=205;
wait for 380 ns; low1 <=0; high2 <=133; total3 <=265;
wait for 380 ns; low1 <=134; high2 <=266; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=206;
wait for 380 ns; low1 <=0; high2 <=134; total3 <=267;
wait for 380 ns; low1 <=0; high2 <=135; total3 <=268;
wait for 380 ns; low1 <=0; high2 <=136; total3 <=269;
wait for 380 ns; low1 <=0; high2 <=137; total3 <=270;
wait for 380 ns; low1 <=138; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=77; high2 <=207; total3 <=207;
wait for 380 ns; low1 <=77; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=77; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=210;
wait for 380 ns; low1 <=0; high2 <=138; total3 <=272;
wait for 380 ns; low1 <=139; high2 <=273; total3 <=273;
wait for 380 ns; low1 <=78; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=212;
wait for 380 ns; low1 <=0; high2 <=139; total3 <=274;
wait for 380 ns; low1 <=0; high2 <=140; total3 <=275;
wait for 380 ns; low1 <=0; high2 <=141; total3 <=276;
wait for 380 ns; low1 <=142; high2 <=277; total3 <=277;
wait for 380 ns; low1 <=79; high2 <=213; total3 <=213;
wait for 380 ns; low1 <=79; high2 <=214; total3 <=214;
wait for 380 ns; low1 <=79; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=216;
wait for 380 ns; low1 <=142; high2 <=278; total3 <=278;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=142; total3 <=279;
wait for 380 ns; low1 <=0; high2 <=143; total3 <=280;
wait for 380 ns; low1 <=0; high2 <=144; total3 <=281;
wait for 380 ns; low1 <=0; high2 <=145; total3 <=282;
wait for 380 ns; low1 <=0; high2 <=146; total3 <=283;
wait for 380 ns; low1 <=147; high2 <=284; total3 <=284;
wait for 380 ns; low1 <=81; high2 <=218; total3 <=218;
wait for 380 ns; low1 <=81; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=81; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=221;
wait for 380 ns; low1 <=147; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=222;
wait for 380 ns; low1 <=0; high2 <=147; total3 <=286;
wait for 380 ns; low1 <=0; high2 <=148; total3 <=287;
wait for 380 ns; low1 <=149; high2 <=288; total3 <=288;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=149; total3 <=289;
wait for 380 ns; low1 <=150; high2 <=290; total3 <=290;
wait for 380 ns; low1 <=84; high2 <=224; total3 <=224;
129
Dissertação de Mestrado– LASID - PPGI/DI UFPB
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
wait for 380 ns; low1 <=84; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=84; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=227;
wait for 380 ns; low1 <=150; high2 <=291; total3 <=291;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=228;
wait for 380 ns; low1 <=0; high2 <=150; total3 <=292;
wait for 380 ns; low1 <=151; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=229;
wait for 380 ns; low1 <=0; high2 <=151; total3 <=294;
wait for 380 ns; low1 <=0; high2 <=152; total3 <=295;
wait for 380 ns; low1 <=153; high2 <=296; total3 <=296;
wait for 380 ns; low1 <=87; high2 <=230; total3 <=230;
wait for 380 ns; low1 <=87; high2 <=231; total3 <=231;
wait for 380 ns; low1 <=87; high2 <=232; total3 <=232;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=233;
wait for 380 ns; low1 <=153; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=234;
wait for 380 ns; low1 <=0; high2 <=153; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=154; total3 <=299;
wait for 380 ns; low1 <=0; high2 <=155; total3 <=300;
wait for 380 ns; low1 <=0; high2 <=156; total3 <=301;
wait for 380 ns; low1 <=0; high2 <=157; total3 <=302;
wait for 380 ns; low1 <=158; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=89; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=89; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=89; high2 <=237; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=158; total3 <=304;
wait for 380 ns; low1 <=159; high2 <=305; total3 <=305;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=159; total3 <=306;
wait for 380 ns; low1 <=0; high2 <=160; total3 <=307;
wait for 380 ns; low1 <=161; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=240;
wait for 380 ns; low1 <=161; high2 <=309; total3 <=309;
wait for 380 ns; low1 <=92; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=92; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=92; high2 <=243; total3 <=243;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=161; total3 <=310;
wait for 380 ns; low1 <=0; high2 <=162; total3 <=311;
wait for 380 ns; low1 <=0; high2 <=163; total3 <=312;
wait for 380 ns; low1 <=164; high2 <=313; total3 <=313;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=245;
wait for 380 ns; low1 <=0; high2 <=164; total3 <=314;
wait for 380 ns; low1 <=0; high2 <=165; total3 <=315;
130
Dissertação de Mestrado– LASID - PPGI/DI UFPB
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
wait for 380 ns; low1 <=166; high2 <=316; total3 <=316;
wait for 380 ns; low1 <=94; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=94; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=94; high2 <=248; total3 <=248;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=166; total3 <=317;
wait for 380 ns; low1 <=0; high2 <=167; total3 <=318;
wait for 380 ns; low1 <=0; high2 <=168; total3 <=319;
wait for 380 ns; low1 <=0; high2 <=169; total3 <=320;
wait for 380 ns; low1 <=0; high2 <=170; total3 <=321;
wait for 380 ns; low1 <=0; high2 <=171; total3 <=322;
wait for 380 ns; low1 <=0; high2 <=172; total3 <=323;
wait for 380 ns; low1 <=173; high2 <=324; total3 <=324;
wait for 380 ns; low1 <=95; high2 <=250; total3 <=250;
wait for 380 ns; low1 <=95; high2 <=251; total3 <=251;
wait for 380 ns; low1 <=95; high2 <=252; total3 <=252;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=253;
wait for 380 ns; low1 <=0; high2 <=173; total3 <=325;
wait for 380 ns; low1 <=0; high2 <=174; total3 <=326;
wait for 380 ns; low1 <=0; high2 <=175; total3 <=327;
wait for 380 ns; low1 <=0; high2 <=176; total3 <=328;
wait for 380 ns; low1 <=0; high2 <=177; total3 <=329;
wait for 380 ns; low1 <=0; high2 <=178; total3 <=330;
wait for 380 ns; low1 <=0; high2 <=179; total3 <=331;
wait for 380 ns; low1 <=180; high2 <=332; total3 <=332;
wait for 380 ns; low1 <=96; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=96; high2 <=255; total3 <=255;
wait for 380 ns; low1 <=96; high2 <=256; total3 <=256;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=257;
wait for 380 ns; low1 <=0; high2 <=180; total3 <=333;
wait for 380 ns; low1 <=0; high2 <=181; total3 <=334;
wait for 380 ns; low1 <=0; high2 <=182; total3 <=335;
wait for 380 ns; low1 <=0; high2 <=183; total3 <=336;
wait for 380 ns; low1 <=0; high2 <=184; total3 <=337;
wait for 380 ns; low1 <=185; high2 <=338; total3 <=338;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=258;
wait for 380 ns; low1 <=185; high2 <=339; total3 <=339;
wait for 380 ns; low1 <=98; high2 <=259; total3 <=259;
wait for 380 ns; low1 <=98; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=261;
wait for 380 ns; low1 <=185; high2 <=340; total3 <=340;
wait for 380 ns; low1 <=99; high2 <=262; total3 <=262;
wait for 380 ns; low1 <=99; high2 <=263; total3 <=263;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=264;
wait for 380 ns; low1 <=185; high2 <=341; total3 <=341;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=265;
131
Dissertação de Mestrado– LASID - PPGI/DI UFPB
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
wait for 380 ns; low1 <=185; high2 <=342; total3 <=342;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=266;
wait for 380 ns; low1 <=185; high2 <=343; total3 <=343;
wait for 380 ns; low1 <=102; high2 <=267; total3 <=267;
wait for 380 ns; low1 <=102; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=269;
wait for 380 ns; low1 <=185; high2 <=344; total3 <=344;
wait for 380 ns; low1 <=103; high2 <=270; total3 <=270;
wait for 380 ns; low1 <=103; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=103; high2 <=272; total3 <=272;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=185; total3 <=345;
wait for 380 ns; low1 <=186; high2 <=346; total3 <=346;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=274;
wait for 380 ns; low1 <=186; high2 <=347; total3 <=347;
wait for 380 ns; low1 <=105; high2 <=275; total3 <=275;
wait for 380 ns; low1 <=105; high2 <=276; total3 <=276;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=277;
wait for 380 ns; low1 <=186; high2 <=348; total3 <=348;
wait for 380 ns; low1 <=106; high2 <=278; total3 <=278;
wait for 380 ns; low1 <=106; high2 <=279; total3 <=279;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=280;
wait for 380 ns; low1 <=186; high2 <=349; total3 <=349;
wait for 380 ns; low1 <=107; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=107; high2 <=282; total3 <=282;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=283;
wait for 380 ns; low1 <=186; high2 <=350; total3 <=350;
wait for 380 ns; low1 <=108; high2 <=284; total3 <=284;
wait for 380 ns; low1 <=108; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=108; high2 <=286; total3 <=286;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=287;
wait for 380 ns; low1 <=0; high2 <=186; total3 <=351;
wait for 380 ns; low1 <=0; high2 <=187; total3 <=352;
wait for 380 ns; low1 <=0; high2 <=188; total3 <=353;
wait for 380 ns; low1 <=0; high2 <=189; total3 <=354;
wait for 380 ns; low1 <=0; high2 <=190; total3 <=355;
wait for 380 ns; low1 <=0; high2 <=191; total3 <=356;
wait for 380 ns; low1 <=0; high2 <=192; total3 <=357;
wait for 380 ns; low1 <=193; high2 <=358; total3 <=358;
wait for 380 ns; low1 <=109; high2 <=288; total3 <=288;
wait for 380 ns; low1 <=109; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=109; high2 <=290; total3 <=290;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=291;
wait for 380 ns; low1 <=0; high2 <=193; total3 <=359;
wait for 380 ns; low1 <=0; high2 <=194; total3 <=360;
wait for 380 ns; low1 <=195; high2 <=361; total3 <=361;
132
Dissertação de Mestrado– LASID - PPGI/DI UFPB
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
wait for 380 ns; low1 <=0; high2 <=110; total3 <=292;
wait for 380 ns; low1 <=195; high2 <=362; total3 <=362;
wait for 380 ns; low1 <=111; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=294;
wait for 380 ns; low1 <=195; high2 <=363; total3 <=363;
wait for 380 ns; low1 <=112; high2 <=295; total3 <=295;
wait for 380 ns; low1 <=112; high2 <=296; total3 <=296;
wait for 380 ns; low1 <=112; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=195; total3 <=364;
wait for 380 ns; low1 <=0; high2 <=196; total3 <=365;
wait for 380 ns; low1 <=197; high2 <=366; total3 <=366;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=299;
wait for 380 ns; low1 <=197; high2 <=367; total3 <=367;
wait for 380 ns; low1 <=114; high2 <=300; total3 <=300;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=301;
wait for 380 ns; low1 <=197; high2 <=368; total3 <=368;
wait for 380 ns; low1 <=115; high2 <=302; total3 <=302;
wait for 380 ns; low1 <=115; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=115; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=305;
wait for 380 ns; low1 <=0; high2 <=197; total3 <=369;
wait for 380 ns; low1 <=198; high2 <=370; total3 <=370;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=306;
wait for 380 ns; low1 <=0; high2 <=198; total3 <=371;
wait for 380 ns; low1 <=0; high2 <=199; total3 <=372;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=186;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=187;
wait for 380 ns; low1 <=102; high2 <=188; total3 <=188;
wait for 380 ns; low1 <=117; high2 <=307; total3 <=307;
wait for 380 ns; low1 <=117; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=117; high2 <=309; total3 <=309;
wait for 380 ns; low1 <=0; high2 <=117; total3 <=310;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=189;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=190;
wait for 380 ns; low1 <=104; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=118; high2 <=311; total3 <=311;
wait for 380 ns; low1 <=118; high2 <=312; total3 <=312;
wait for 380 ns; low1 <=0; high2 <=118; total3 <=313;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=192;
wait for 380 ns; low1 <=105; high2 <=193; total3 <=193;
wait for 380 ns; low1 <=119; high2 <=314; total3 <=314;
wait for 380 ns; low1 <=119; high2 <=315; total3 <=315;
wait for 380 ns; low1 <=119; high2 <=316; total3 <=316;
wait for 380 ns; low1 <=0; high2 <=119; total3 <=317;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=194;
133
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
wait for 380 ns; low1 <=106; high2 <=195; total3 <=195;
wait for 380 ns; low1 <=0; high2 <=120; total3 <=318;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=196;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=197;
wait for 380 ns; low1 <=108; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=121; total3 <=319;
wait for 380 ns; low1 <=108; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=122; high2 <=320; total3 <=320;
wait for 380 ns; low1 <=122; high2 <=321; total3 <=321;
wait for 380 ns; low1 <=61; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=162;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=200;
wait for 380 ns; low1 <=109; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=163;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=202;
wait for 380 ns; low1 <=110; high2 <=203; total3 <=203;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=164;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=204;
wait for 380 ns; low1 <=111; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=64; high2 <=165; total3 <=165;
wait for 380 ns; low1 <=64; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=64; high2 <=167; total3 <=167;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=168;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=206;
wait for 380 ns; low1 <=112; high2 <=207; total3 <=207;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=169;
wait for 380 ns; low1 <=112; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=170;
wait for 380 ns; low1 <=112; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=171;
wait for 380 ns; low1 <=112; high2 <=210; total3 <=210;
wait for 380 ns; low1 <=68; high2 <=172; total3 <=172;
wait for 380 ns; low1 <=68; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=68; high2 <=174; total3 <=174;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=175;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=211;
wait for 380 ns; low1 <=113; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=176;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=214;
wait for 380 ns; low1 <=115; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=177;
wait for 380 ns; low1 <=115; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=71; high2 <=178; total3 <=178;
wait for 380 ns; low1 <=71; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=71; high2 <=180; total3 <=180;
134
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
wait for 380 ns; low1 <=0; high2 <=71; total3 <=181;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=217;
wait for 380 ns; low1 <=116; high2 <=218; total3 <=218;
wait for 380 ns; low1 <=72; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=183;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=219;
wait for 380 ns; low1 <=0; high2 <=117; total3 <=220;
wait for 380 ns; low1 <=0; high2 <=118; total3 <=221;
wait for 380 ns; low1 <=119; high2 <=222; total3 <=222;
wait for 380 ns; low1 <=73; high2 <=184; total3 <=184;
wait for 380 ns; low1 <=73; high2 <=185; total3 <=185;
wait for 380 ns; low1 <=73; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=187;
wait for 380 ns; low1 <=0; high2 <=119; total3 <=223;
wait for 380 ns; low1 <=120; high2 <=224; total3 <=224;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=188;
wait for 380 ns; low1 <=0; high2 <=120; total3 <=225;
wait for 380 ns; low1 <=0; high2 <=121; total3 <=226;
wait for 380 ns; low1 <=122; high2 <=227; total3 <=227;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=189;
wait for 380 ns; low1 <=122; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=76; high2 <=190; total3 <=190;
wait for 380 ns; low1 <=76; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=76; high2 <=192; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=193;
wait for 380 ns; low1 <=0; high2 <=122; total3 <=229;
wait for 380 ns; low1 <=0; high2 <=123; total3 <=230;
wait for 380 ns; low1 <=124; high2 <=231; total3 <=231;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=194;
wait for 380 ns; low1 <=124; high2 <=232; total3 <=232;
wait for 380 ns; low1 <=78; high2 <=195; total3 <=195;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=196;
wait for 380 ns; low1 <=124; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=79; high2 <=197; total3 <=197;
wait for 380 ns; low1 <=79; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=79; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=200;
wait for 380 ns; low1 <=0; high2 <=124; total3 <=234;
wait for 380 ns; low1 <=125; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=201;
wait for 380 ns; low1 <=125; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=202;
wait for 380 ns; low1 <=125; high2 <=237; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=203;
wait for 380 ns; low1 <=125; high2 <=238; total3 <=238;
wait for 380 ns; low1 <=83; high2 <=204; total3 <=204;
135
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
wait for 380 ns; low1 <=83; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=83; high2 <=206; total3 <=206;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=207;
wait for 380 ns; low1 <=0; high2 <=125; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=126; total3 <=240;
wait for 380 ns; low1 <=127; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=84; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=209;
wait for 380 ns; low1 <=127; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=210;
wait for 380 ns; low1 <=127; high2 <=243; total3 <=243;
wait for 380 ns; low1 <=86; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=86; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=213;
wait for 380 ns; low1 <=127; high2 <=244; total3 <=244;
wait for 380 ns; low1 <=87; high2 <=214; total3 <=214;
wait for 380 ns; low1 <=87; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=87; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=87; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=87; high2 <=218; total3 <=218;
wait for 380 ns; low1 <=87; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=220;
wait for 380 ns; low1 <=127; high2 <=245; total3 <=245;
wait for 380 ns; low1 <=88; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=88; high2 <=222; total3 <=222;
wait for 380 ns; low1 <=88; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=224;
wait for 380 ns; low1 <=0; high2 <=127; total3 <=246;
wait for 380 ns; low1 <=0; high2 <=128; total3 <=247;
wait for 380 ns; low1 <=0; high2 <=129; total3 <=248;
wait for 380 ns; low1 <=0; high2 <=130; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=131; total3 <=250;
wait for 380 ns; low1 <=0; high2 <=132; total3 <=251;
wait for 380 ns; low1 <=0; high2 <=133; total3 <=252;
wait for 380 ns; low1 <=134; high2 <=253; total3 <=253;
wait for 380 ns; low1 <=89; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=89; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=227;
wait for 380 ns; low1 <=134; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=90; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=90; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=90; high2 <=230; total3 <=230;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=231;
wait for 380 ns; low1 <=0; high2 <=134; total3 <=255;
wait for 380 ns; low1 <=135; high2 <=256; total3 <=256;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=232;
136
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
wait for 380 ns; low1 <=135; high2 <=257; total3 <=257;
wait for 380 ns; low1 <=92; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=92; high2 <=234; total3 <=234;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=235;
wait for 380 ns; low1 <=135; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=93; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=93; high2 <=237; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=135; total3 <=259;
wait for 380 ns; low1 <=136; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=94; high2 <=239; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=240;
wait for 380 ns; low1 <=136; high2 <=261; total3 <=261;
wait for 380 ns; low1 <=95; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=95; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=95; high2 <=243; total3 <=243;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=136; total3 <=262;
wait for 380 ns; low1 <=0; high2 <=137; total3 <=263;
wait for 380 ns; low1 <=0; high2 <=138; total3 <=264;
wait for 380 ns; low1 <=139; high2 <=265; total3 <=265;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=245;
wait for 380 ns; low1 <=0; high2 <=139; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=140; total3 <=267;
wait for 380 ns; low1 <=141; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=97; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=97; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=97; high2 <=248; total3 <=248;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=141; total3 <=269;
wait for 380 ns; low1 <=0; high2 <=142; total3 <=270;
wait for 380 ns; low1 <=143; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=250;
wait for 380 ns; low1 <=0; high2 <=143; total3 <=272;
wait for 380 ns; low1 <=144; high2 <=273; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=251;
wait for 380 ns; low1 <=144; high2 <=274; total3 <=274;
wait for 380 ns; low1 <=100; high2 <=252; total3 <=252;
wait for 380 ns; low1 <=100; high2 <=253; total3 <=253;
wait for 380 ns; low1 <=100; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=255;
wait for 380 ns; low1 <=0; high2 <=144; total3 <=275;
wait for 380 ns; low1 <=0; high2 <=145; total3 <=276;
wait for 380 ns; low1 <=146; high2 <=277; total3 <=277;
wait for 380 ns; low1 <=101; high2 <=256; total3 <=256;
wait for 380 ns; low1 <=101; high2 <=257; total3 <=257;
137
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
wait for 380 ns; low1 <=101; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=259;
wait for 380 ns; low1 <=146; high2 <=278; total3 <=278;
wait for 380 ns; low1 <=102; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=102; high2 <=261; total3 <=261;
wait for 380 ns; low1 <=102; high2 <=262; total3 <=262;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=263;
wait for 380 ns; low1 <=0; high2 <=146; total3 <=279;
wait for 380 ns; low1 <=0; high2 <=147; total3 <=280;
wait for 380 ns; low1 <=148; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=103; high2 <=264; total3 <=264;
wait for 380 ns; low1 <=103; high2 <=265; total3 <=265;
wait for 380 ns; low1 <=103; high2 <=266; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=267;
wait for 380 ns; low1 <=148; high2 <=282; total3 <=282;
wait for 380 ns; low1 <=104; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=104; high2 <=269; total3 <=269;
wait for 380 ns; low1 <=104; high2 <=270; total3 <=270;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=271;
wait for 380 ns; low1 <=0; high2 <=148; total3 <=283;
wait for 380 ns; low1 <=0; high2 <=149; total3 <=284;
wait for 380 ns; low1 <=150; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=105; high2 <=272; total3 <=272;
wait for 380 ns; low1 <=105; high2 <=273; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=274;
wait for 380 ns; low1 <=0; high2 <=150; total3 <=286;
wait for 380 ns; low1 <=151; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=106; high2 <=275; total3 <=275;
wait for 380 ns; low1 <=106; high2 <=276; total3 <=276;
wait for 380 ns; low1 <=106; high2 <=277; total3 <=277;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=278;
wait for 380 ns; low1 <=0; high2 <=151; total3 <=288;
wait for 380 ns; low1 <=152; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=279;
wait for 380 ns; low1 <=0; high2 <=152; total3 <=290;
wait for 380 ns; low1 <=0; high2 <=153; total3 <=291;
wait for 380 ns; low1 <=154; high2 <=292; total3 <=292;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=280;
wait for 380 ns; low1 <=154; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=109; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=109; high2 <=282; total3 <=282;
wait for 380 ns; low1 <=109; high2 <=283; total3 <=283;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=284;
wait for 380 ns; low1 <=0; high2 <=154; total3 <=294;
wait for 380 ns; low1 <=0; high2 <=155; total3 <=295;
wait for 380 ns; low1 <=156; high2 <=296; total3 <=296;
138
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
wait for 380 ns; low1 <=110; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=110; high2 <=286; total3 <=286;
wait for 380 ns; low1 <=110; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=288;
wait for 380 ns; low1 <=156; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=111; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=111; high2 <=290; total3 <=290;
wait for 380 ns; low1 <=111; high2 <=291; total3 <=291;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=292;
wait for 380 ns; low1 <=0; high2 <=156; total3 <=298;
wait for 380 ns; low1 <=157; high2 <=299; total3 <=299;
wait for 380 ns; low1 <=112; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=294;
wait for 380 ns; low1 <=0; high2 <=157; total3 <=300;
wait for 380 ns; low1 <=158; high2 <=301; total3 <=301;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=295;
wait for 380 ns; low1 <=158; high2 <=302; total3 <=302;
wait for 380 ns; low1 <=114; high2 <=296; total3 <=296;
wait for 380 ns; low1 <=114; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=114; high2 <=298; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=299;
wait for 380 ns; low1 <=0; high2 <=158; total3 <=303;
wait for 380 ns; low1 <=159; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=115; high2 <=300; total3 <=300;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=301;
wait for 380 ns; low1 <=159; high2 <=305; total3 <=305;
wait for 380 ns; low1 <=116; high2 <=302; total3 <=302;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=303;
wait for 380 ns; low1 <=159; high2 <=306; total3 <=306;
wait for 380 ns; low1 <=117; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=117; high2 <=305; total3 <=305;
wait for 380 ns; low1 <=117; high2 <=306; total3 <=306;
wait for 380 ns; low1 <=0; high2 <=117; total3 <=307;
wait for 380 ns; low1 <=0; high2 <=159; total3 <=307;
wait for 380 ns; low1 <=160; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=118; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=0; high2 <=118; total3 <=309;
wait for 380 ns; low1 <=0; high2 <=160; total3 <=309;
wait for 380 ns; low1 <=0; high2 <=161; total3 <=310;
wait for 380 ns; low1 <=0; high2 <=162; total3 <=311;
wait for 380 ns; low1 <=163; high2 <=312; total3 <=312;
wait for 380 ns; low1 <=119; high2 <=310; total3 <=310;
wait for 380 ns; low1 <=119; high2 <=311; total3 <=311;
wait for 380 ns; low1 <=119; high2 <=312; total3 <=312;
wait for 380 ns; low1 <=0; high2 <=119; total3 <=313;
wait for 380 ns; low1 <=0; high2 <=163; total3 <=313;
139
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
wait for 380 ns; low1 <=164; high2 <=314; total3 <=314;
wait for 380 ns; low1 <=0; high2 <=120; total3 <=314;
wait for 380 ns; low1 <=164; high2 <=315; total3 <=315;
wait for 380 ns; low1 <=0; high2 <=121; total3 <=315;
wait for 380 ns; low1 <=0; high2 <=164; total3 <=316;
wait for 380 ns; low1 <=0; high2 <=165; total3 <=317;
wait for 380 ns; low1 <=166; high2 <=318; total3 <=318;
wait for 380 ns; low1 <=122; high2 <=316; total3 <=316;
wait for 380 ns; low1 <=122; high2 <=317; total3 <=317;
wait for 380 ns; low1 <=122; high2 <=318; total3 <=318;
wait for 380 ns; low1 <=0; high2 <=122; total3 <=319;
wait for 380 ns; low1 <=0; high2 <=166; total3 <=319;
wait for 380 ns; low1 <=167; high2 <=320; total3 <=320;
wait for 380 ns; low1 <=0; high2 <=123; total3 <=320;
wait for 380 ns; low1 <=0; high2 <=167; total3 <=321;
wait for 380 ns; low1 <=0; high2 <=168; total3 <=322;
wait for 380 ns; low1 <=169; high2 <=323; total3 <=323;
wait for 380 ns; low1 <=0; high2 <=124; total3 <=321;
wait for 380 ns; low1 <=169; high2 <=324; total3 <=324;
wait for 380 ns; low1 <=125; high2 <=322; total3 <=322;
wait for 380 ns; low1 <=125; high2 <=323; total3 <=323;
wait for 380 ns; low1 <=125; high2 <=324; total3 <=324;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=162;
wait for 380 ns; low1 <=0; high2 <=169; total3 <=325;
wait for 380 ns; low1 <=0; high2 <=170; total3 <=326;
wait for 380 ns; low1 <=171; high2 <=327; total3 <=327;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=163;
wait for 380 ns; low1 <=0; high2 <=171; total3 <=328;
wait for 380 ns; low1 <=0; high2 <=172; total3 <=329;
wait for 380 ns; low1 <=0; high2 <=173; total3 <=330;
wait for 380 ns; low1 <=174; high2 <=331; total3 <=331;
wait for 380 ns; low1 <=64; high2 <=164; total3 <=164;
wait for 380 ns; low1 <=64; high2 <=165; total3 <=165;
wait for 380 ns; low1 <=64; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=167;
wait for 380 ns; low1 <=0; high2 <=174; total3 <=332;
wait for 380 ns; low1 <=0; high2 <=175; total3 <=333;
wait for 380 ns; low1 <=0; high2 <=176; total3 <=334;
wait for 380 ns; low1 <=177; high2 <=335; total3 <=335;
wait for 380 ns; low1 <=65; high2 <=168; total3 <=168;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=169;
wait for 380 ns; low1 <=0; high2 <=177; total3 <=336;
wait for 380 ns; low1 <=178; high2 <=337; total3 <=337;
wait for 380 ns; low1 <=66; high2 <=170; total3 <=170;
wait for 380 ns; low1 <=66; high2 <=171; total3 <=171;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=172;
140
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
wait for 380 ns; low1 <=178; high2 <=338; total3 <=338;
wait for 380 ns; low1 <=67; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=67; high2 <=174; total3 <=174;
wait for 380 ns; low1 <=67; high2 <=175; total3 <=175;
wait for 380 ns; low1 <=67; high2 <=176; total3 <=176;
wait for 380 ns; low1 <=67; high2 <=177; total3 <=177;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=178;
wait for 380 ns; low1 <=0; high2 <=178; total3 <=339;
wait for 380 ns; low1 <=179; high2 <=340; total3 <=340;
wait for 380 ns; low1 <=68; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=68; high2 <=180; total3 <=180;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=181;
wait for 380 ns; low1 <=179; high2 <=341; total3 <=341;
wait for 380 ns; low1 <=69; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=69; high2 <=183; total3 <=183;
wait for 380 ns; low1 <=69; high2 <=184; total3 <=184;
wait for 380 ns; low1 <=69; high2 <=185; total3 <=185;
wait for 380 ns; low1 <=69; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=69; high2 <=187; total3 <=187;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=188;
wait for 380 ns; low1 <=179; high2 <=342; total3 <=342;
wait for 380 ns; low1 <=70; high2 <=189; total3 <=189;
wait for 380 ns; low1 <=70; high2 <=190; total3 <=190;
wait for 380 ns; low1 <=70; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=179; total3 <=343;
wait for 380 ns; low1 <=0; high2 <=180; total3 <=344;
wait for 380 ns; low1 <=181; high2 <=345; total3 <=345;
wait for 380 ns; low1 <=0; high2 <=71; total3 <=193;
wait for 380 ns; low1 <=181; high2 <=346; total3 <=346;
wait for 380 ns; low1 <=72; high2 <=194; total3 <=194;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=195;
wait for 380 ns; low1 <=181; high2 <=347; total3 <=347;
wait for 380 ns; low1 <=73; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=73; high2 <=197; total3 <=197;
wait for 380 ns; low1 <=73; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=199;
wait for 380 ns; low1 <=0; high2 <=181; total3 <=348;
wait for 380 ns; low1 <=182; high2 <=349; total3 <=349;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=200;
wait for 380 ns; low1 <=182; high2 <=350; total3 <=350;
wait for 380 ns; low1 <=75; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=75; high2 <=202; total3 <=202;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=203;
wait for 380 ns; low1 <=182; high2 <=351; total3 <=351;
wait for 380 ns; low1 <=76; high2 <=204; total3 <=204;
141
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
wait for 380 ns; low1 <=76; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=76; high2 <=206; total3 <=206;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=207;
wait for 380 ns; low1 <=0; high2 <=182; total3 <=352;
wait for 380 ns; low1 <=183; high2 <=353; total3 <=353;
wait for 380 ns; low1 <=77; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=209;
wait for 380 ns; low1 <=183; high2 <=354; total3 <=354;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=210;
wait for 380 ns; low1 <=0; high2 <=183; total3 <=355;
wait for 380 ns; low1 <=184; high2 <=356; total3 <=356;
wait for 380 ns; low1 <=79; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=79; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=79; high2 <=213; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=214;
wait for 380 ns; low1 <=0; high2 <=184; total3 <=357;
wait for 380 ns; low1 <=185; high2 <=358; total3 <=358;
wait for 380 ns; low1 <=80; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=216;
wait for 380 ns; low1 <=185; high2 <=359; total3 <=359;
wait for 380 ns; low1 <=81; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=218;
wait for 380 ns; low1 <=185; high2 <=360; total3 <=360;
wait for 380 ns; low1 <=82; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=82; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=82; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=222;
wait for 380 ns; low1 <=0; high2 <=185; total3 <=361;
wait for 380 ns; low1 <=186; high2 <=362; total3 <=362;
wait for 380 ns; low1 <=83; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=224;
wait for 380 ns; low1 <=186; high2 <=363; total3 <=363;
wait for 380 ns; low1 <=84; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=226;
wait for 380 ns; low1 <=186; high2 <=364; total3 <=364;
wait for 380 ns; low1 <=85; high2 <=227; total3 <=227;
wait for 380 ns; low1 <=85; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=85; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=230;
wait for 380 ns; low1 <=186; high2 <=365; total3 <=365;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=231;
wait for 380 ns; low1 <=0; high2 <=186; total3 <=366;
wait for 380 ns; low1 <=0; high2 <=187; total3 <=367;
wait for 380 ns; low1 <=0; high2 <=188; total3 <=368;
wait for 380 ns; low1 <=189; high2 <=369; total3 <=369;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=232;
142
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
wait for 380 ns; low1 <=189; high2 <=370; total3 <=370;
wait for 380 ns; low1 <=88; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=88; high2 <=234; total3 <=234;
wait for 380 ns; low1 <=88; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=236;
wait for 380 ns; low1 <=189; high2 <=371; total3 <=371;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=189; total3 <=372;
wait for 380 ns; low1 <=0; high2 <=190; total3 <=373;
wait for 380 ns; low1 <=0; high2 <=191; total3 <=374;
wait for 380 ns; low1 <=192; high2 <=375; total3 <=375;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=238;
wait for 380 ns; low1 <=192; high2 <=376; total3 <=376;
wait for 380 ns; low1 <=91; high2 <=239; total3 <=239;
wait for 380 ns; low1 <=91; high2 <=240; total3 <=240;
wait for 380 ns; low1 <=91; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=242;
wait for 380 ns; low1 <=192; high2 <=377; total3 <=377;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=243;
wait for 380 ns; low1 <=192; high2 <=378; total3 <=378;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=192; total3 <=379;
wait for 380 ns; low1 <=0; high2 <=193; total3 <=380;
wait for 380 ns; low1 <=0; high2 <=194; total3 <=381;
wait for 380 ns; low1 <=195; high2 <=382; total3 <=382;
wait for 380 ns; low1 <=94; high2 <=245; total3 <=245;
wait for 380 ns; low1 <=94; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=94; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=248;
wait for 380 ns; low1 <=195; high2 <=383; total3 <=383;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=195; total3 <=384;
wait for 380 ns; low1 <=0; high2 <=196; total3 <=385;
wait for 380 ns; low1 <=0; high2 <=197; total3 <=386;
wait for 380 ns; low1 <=0; high2 <=198; total3 <=387;
wait for 380 ns; low1 <=0; high2 <=199; total3 <=388;
wait for 380 ns; low1 <=100; high2 <=194; total3 <=194;
wait for 380 ns; low1 <=96; high2 <=250; total3 <=250;
wait for 380 ns; low1 <=96; high2 <=251; total3 <=251;
wait for 380 ns; low1 <=96; high2 <=252; total3 <=252;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=253;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=195;
wait for 380 ns; low1 <=101; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=97; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=255;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=197;
143
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
wait for 380 ns; low1 <=102; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=256;
wait for 380 ns; low1 <=102; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=99; high2 <=257; total3 <=257;
wait for 380 ns; low1 <=99; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=99; high2 <=259; total3 <=259;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=260;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=200;
wait for 380 ns; low1 <=103; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=100; high2 <=261; total3 <=261;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=262;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=202;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=203;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=204;
wait for 380 ns; low1 <=106; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=101; high2 <=263; total3 <=263;
wait for 380 ns; low1 <=101; high2 <=264; total3 <=264;
wait for 380 ns; low1 <=101; high2 <=265; total3 <=265;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=206;
wait for 380 ns; low1 <=107; high2 <=207; total3 <=207;
wait for 380 ns; low1 <=102; high2 <=267; total3 <=267;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=268;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=208;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=209;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=210;
wait for 380 ns; low1 <=110; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=103; high2 <=269; total3 <=269;
wait for 380 ns; low1 <=103; high2 <=270; total3 <=270;
wait for 380 ns; low1 <=103; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=272;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=212;
wait for 380 ns; low1 <=111; high2 <=213; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=214;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=215;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=216;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=217;
wait for 380 ns; low1 <=115; high2 <=218; total3 <=218;
wait for 380 ns; low1 <=105; high2 <=274; total3 <=274;
wait for 380 ns; low1 <=105; high2 <=275; total3 <=275;
wait for 380 ns; low1 <=105; high2 <=276; total3 <=276;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=277;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=219;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=220;
wait for 380 ns; low1 <=0; high2 <=117; total3 <=221;
144
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
wait for 380 ns; low1 <=0; high2 <=118; total3 <=222;
wait for 380 ns; low1 <=119; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=106; high2 <=278; total3 <=278;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=279;
wait for 380 ns; low1 <=119; high2 <=224; total3 <=224;
wait for 380 ns; low1 <=107; high2 <=280; total3 <=280;
wait for 380 ns; low1 <=107; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=282;
wait for 380 ns; low1 <=119; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=108; high2 <=283; total3 <=283;
wait for 380 ns; low1 <=108; high2 <=284; total3 <=284;
wait for 380 ns; low1 <=108; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=108; high2 <=286; total3 <=286;
wait for 380 ns; low1 <=108; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=108; high2 <=288; total3 <=288;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=289;
wait for 380 ns; low1 <=119; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=109; high2 <=290; total3 <=290;
wait for 380 ns; low1 <=109; high2 <=291; total3 <=291;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=292;
wait for 380 ns; low1 <=119; high2 <=227; total3 <=227;
wait for 380 ns; low1 <=110; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=110; high2 <=294; total3 <=294;
wait for 380 ns; low1 <=110; high2 <=295; total3 <=295;
wait for 380 ns; low1 <=110; high2 <=296; total3 <=296;
wait for 380 ns; low1 <=110; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=110; high2 <=298; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=299;
wait for 380 ns; low1 <=119; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=111; high2 <=300; total3 <=300;
wait for 380 ns; low1 <=111; high2 <=301; total3 <=301;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=302;
wait for 380 ns; low1 <=119; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=112; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=112; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=112; high2 <=305; total3 <=305;
wait for 380 ns; low1 <=112; high2 <=306; total3 <=306;
wait for 380 ns; low1 <=112; high2 <=307; total3 <=307;
wait for 380 ns; low1 <=112; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=309;
wait for 380 ns; low1 <=119; high2 <=230; total3 <=230;
wait for 380 ns; low1 <=113; high2 <=310; total3 <=310;
wait for 380 ns; low1 <=113; high2 <=311; total3 <=311;
wait for 380 ns; low1 <=113; high2 <=312; total3 <=312;
wait for 380 ns; low1 <=0; high2 <=56; total3 <=156;
wait for 380 ns; low1 <=0; high2 <=119; total3 <=231;
145
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
wait for 380 ns; low1 <=0; high2 <=120; total3 <=232;
wait for 380 ns; low1 <=121; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=0; high2 <=57; total3 <=157;
wait for 380 ns; low1 <=0; high2 <=121; total3 <=234;
wait for 380 ns; low1 <=122; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=0; high2 <=58; total3 <=158;
wait for 380 ns; low1 <=122; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=59; high2 <=159; total3 <=159;
wait for 380 ns; low1 <=59; high2 <=160; total3 <=160;
wait for 380 ns; low1 <=59; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=0; high2 <=59; total3 <=162;
wait for 380 ns; low1 <=0; high2 <=122; total3 <=237;
wait for 380 ns; low1 <=123; high2 <=238; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=60; total3 <=163;
wait for 380 ns; low1 <=0; high2 <=123; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=124; total3 <=240;
wait for 380 ns; low1 <=125; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=164;
wait for 380 ns; low1 <=125; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=62; high2 <=165; total3 <=165;
wait for 380 ns; low1 <=62; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=62; high2 <=167; total3 <=167;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=168;
wait for 380 ns; low1 <=0; high2 <=125; total3 <=243;
wait for 380 ns; low1 <=126; high2 <=244; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=169;
wait for 380 ns; low1 <=0; high2 <=126; total3 <=245;
wait for 380 ns; low1 <=127; high2 <=246; total3 <=246;
wait for 380 ns; low1 <=64; high2 <=170; total3 <=170;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=171;
wait for 380 ns; low1 <=127; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=65; high2 <=172; total3 <=172;
wait for 380 ns; low1 <=65; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=65; high2 <=174; total3 <=174;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=175;
wait for 380 ns; low1 <=0; high2 <=127; total3 <=248;
wait for 380 ns; low1 <=128; high2 <=249; total3 <=249;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=176;
wait for 380 ns; low1 <=0; high2 <=128; total3 <=250;
wait for 380 ns; low1 <=0; high2 <=129; total3 <=251;
wait for 380 ns; low1 <=130; high2 <=252; total3 <=252;
wait for 380 ns; low1 <=0; high2 <=67; total3 <=177;
wait for 380 ns; low1 <=130; high2 <=253; total3 <=253;
wait for 380 ns; low1 <=68; high2 <=178; total3 <=178;
wait for 380 ns; low1 <=68; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=68; high2 <=180; total3 <=180;
146
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
wait for 380 ns; low1 <=0; high2 <=68; total3 <=181;
wait for 380 ns; low1 <=0; high2 <=130; total3 <=254;
wait for 380 ns; low1 <=131; high2 <=255; total3 <=255;
wait for 380 ns; low1 <=69; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=69; high2 <=183; total3 <=183;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=184;
wait for 380 ns; low1 <=0; high2 <=131; total3 <=256;
wait for 380 ns; low1 <=0; high2 <=132; total3 <=257;
wait for 380 ns; low1 <=133; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=70; high2 <=185; total3 <=185;
wait for 380 ns; low1 <=70; high2 <=186; total3 <=186;
wait for 380 ns; low1 <=70; high2 <=187; total3 <=187;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=188;
wait for 380 ns; low1 <=0; high2 <=133; total3 <=259;
wait for 380 ns; low1 <=134; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=71; high2 <=189; total3 <=189;
wait for 380 ns; low1 <=71; high2 <=190; total3 <=190;
wait for 380 ns; low1 <=71; high2 <=191; total3 <=191;
wait for 380 ns; low1 <=71; high2 <=192; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=71; total3 <=193;
wait for 380 ns; low1 <=134; high2 <=261; total3 <=261;
wait for 380 ns; low1 <=72; high2 <=194; total3 <=194;
wait for 380 ns; low1 <=72; high2 <=195; total3 <=195;
wait for 380 ns; low1 <=72; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=197;
wait for 380 ns; low1 <=0; high2 <=134; total3 <=262;
wait for 380 ns; low1 <=135; high2 <=263; total3 <=263;
wait for 380 ns; low1 <=73; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=73; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=73; high2 <=200; total3 <=200;
wait for 380 ns; low1 <=73; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=202;
wait for 380 ns; low1 <=135; high2 <=264; total3 <=264;
wait for 380 ns; low1 <=74; high2 <=203; total3 <=203;
wait for 380 ns; low1 <=74; high2 <=204; total3 <=204;
wait for 380 ns; low1 <=74; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=206;
wait for 380 ns; low1 <=135; high2 <=265; total3 <=265;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=207;
wait for 380 ns; low1 <=0; high2 <=135; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=136; total3 <=267;
wait for 380 ns; low1 <=137; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=76; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=209;
wait for 380 ns; low1 <=137; high2 <=269; total3 <=269;
wait for 380 ns; low1 <=77; high2 <=210; total3 <=210;
147
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
wait for 380 ns; low1 <=77; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=77; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=137; total3 <=270;
wait for 380 ns; low1 <=138; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=78; high2 <=214; total3 <=214;
wait for 380 ns; low1 <=78; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=78; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=78; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=218;
wait for 380 ns; low1 <=138; high2 <=272; total3 <=272;
wait for 380 ns; low1 <=79; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=79; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=79; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=222;
wait for 380 ns; low1 <=0; high2 <=138; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=139; total3 <=274;
wait for 380 ns; low1 <=140; high2 <=275; total3 <=275;
wait for 380 ns; low1 <=80; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=80; high2 <=224; total3 <=224;
wait for 380 ns; low1 <=80; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=226;
wait for 380 ns; low1 <=140; high2 <=276; total3 <=276;
wait for 380 ns; low1 <=81; high2 <=227; total3 <=227;
wait for 380 ns; low1 <=81; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=81; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=230;
wait for 380 ns; low1 <=0; high2 <=140; total3 <=277;
wait for 380 ns; low1 <=0; high2 <=141; total3 <=278;
wait for 380 ns; low1 <=142; high2 <=279; total3 <=279;
wait for 380 ns; low1 <=82; high2 <=231; total3 <=231;
wait for 380 ns; low1 <=82; high2 <=232; total3 <=232;
wait for 380 ns; low1 <=82; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=234;
wait for 380 ns; low1 <=142; high2 <=280; total3 <=280;
wait for 380 ns; low1 <=83; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=83; high2 <=236; total3 <=236;
wait for 380 ns; low1 <=83; high2 <=237; total3 <=237;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=142; total3 <=281;
wait for 380 ns; low1 <=143; high2 <=282; total3 <=282;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=143; total3 <=283;
wait for 380 ns; low1 <=144; high2 <=284; total3 <=284;
wait for 380 ns; low1 <=85; high2 <=240; total3 <=240;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=241;
148
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
wait for 380 ns; low1 <=144; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=86; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=86; high2 <=243; total3 <=243;
wait for 380 ns; low1 <=86; high2 <=244; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=245;
wait for 380 ns; low1 <=0; high2 <=144; total3 <=286;
wait for 380 ns; low1 <=145; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=246;
wait for 380 ns; low1 <=0; high2 <=145; total3 <=288;
wait for 380 ns; low1 <=146; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=88; high2 <=247; total3 <=247;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=248;
wait for 380 ns; low1 <=146; high2 <=290; total3 <=290;
wait for 380 ns; low1 <=89; high2 <=249; total3 <=249;
wait for 380 ns; low1 <=89; high2 <=250; total3 <=250;
wait for 380 ns; low1 <=89; high2 <=251; total3 <=251;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=252;
wait for 380 ns; low1 <=0; high2 <=146; total3 <=291;
wait for 380 ns; low1 <=0; high2 <=147; total3 <=292;
wait for 380 ns; low1 <=148; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=253;
wait for 380 ns; low1 <=148; high2 <=294; total3 <=294;
wait for 380 ns; low1 <=91; high2 <=254; total3 <=254;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=255;
wait for 380 ns; low1 <=148; high2 <=295; total3 <=295;
wait for 380 ns; low1 <=92; high2 <=256; total3 <=256;
wait for 380 ns; low1 <=92; high2 <=257; total3 <=257;
wait for 380 ns; low1 <=92; high2 <=258; total3 <=258;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=259;
wait for 380 ns; low1 <=0; high2 <=148; total3 <=296;
wait for 380 ns; low1 <=149; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=93; high2 <=260; total3 <=260;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=261;
wait for 380 ns; low1 <=0; high2 <=149; total3 <=298;
wait for 380 ns; low1 <=0; high2 <=150; total3 <=299;
wait for 380 ns; low1 <=0; high2 <=151; total3 <=300;
wait for 380 ns; low1 <=152; high2 <=301; total3 <=301;
wait for 380 ns; low1 <=94; high2 <=262; total3 <=262;
wait for 380 ns; low1 <=94; high2 <=263; total3 <=263;
wait for 380 ns; low1 <=94; high2 <=264; total3 <=264;
wait for 380 ns; low1 <=0; high2 <=94; total3 <=265;
wait for 380 ns; low1 <=0; high2 <=152; total3 <=302;
wait for 380 ns; low1 <=153; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=0; high2 <=95; total3 <=266;
wait for 380 ns; low1 <=0; high2 <=153; total3 <=304;
wait for 380 ns; low1 <=0; high2 <=154; total3 <=305;
149
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
wait for 380 ns; low1 <=0; high2 <=155; total3 <=306;
wait for 380 ns; low1 <=0; high2 <=156; total3 <=307;
wait for 380 ns; low1 <=157; high2 <=308; total3 <=308;
wait for 380 ns; low1 <=96; high2 <=267; total3 <=267;
wait for 380 ns; low1 <=96; high2 <=268; total3 <=268;
wait for 380 ns; low1 <=96; high2 <=269; total3 <=269;
wait for 380 ns; low1 <=0; high2 <=96; total3 <=270;
wait for 380 ns; low1 <=0; high2 <=157; total3 <=309;
wait for 380 ns; low1 <=0; high2 <=158; total3 <=310;
wait for 380 ns; low1 <=0; high2 <=159; total3 <=311;
wait for 380 ns; low1 <=0; high2 <=160; total3 <=312;
wait for 380 ns; low1 <=0; high2 <=161; total3 <=313;
wait for 380 ns; low1 <=0; high2 <=162; total3 <=314;
wait for 380 ns; low1 <=0; high2 <=163; total3 <=315;
wait for 380 ns; low1 <=164; high2 <=316; total3 <=316;
wait for 380 ns; low1 <=97; high2 <=271; total3 <=271;
wait for 380 ns; low1 <=97; high2 <=272; total3 <=272;
wait for 380 ns; low1 <=97; high2 <=273; total3 <=273;
wait for 380 ns; low1 <=0; high2 <=97; total3 <=274;
wait for 380 ns; low1 <=0; high2 <=164; total3 <=317;
wait for 380 ns; low1 <=0; high2 <=165; total3 <=318;
wait for 380 ns; low1 <=166; high2 <=319; total3 <=319;
wait for 380 ns; low1 <=0; high2 <=98; total3 <=275;
wait for 380 ns; low1 <=0; high2 <=166; total3 <=320;
wait for 380 ns; low1 <=0; high2 <=167; total3 <=321;
wait for 380 ns; low1 <=0; high2 <=168; total3 <=322;
wait for 380 ns; low1 <=169; high2 <=323; total3 <=323;
wait for 380 ns; low1 <=99; high2 <=276; total3 <=276;
wait for 380 ns; low1 <=99; high2 <=277; total3 <=277;
wait for 380 ns; low1 <=99; high2 <=278; total3 <=278;
wait for 380 ns; low1 <=0; high2 <=99; total3 <=279;
wait for 380 ns; low1 <=0; high2 <=169; total3 <=324;
wait for 380 ns; low1 <=0; high2 <=170; total3 <=325;
wait for 380 ns; low1 <=171; high2 <=326; total3 <=326;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=280;
wait for 380 ns; low1 <=0; high2 <=171; total3 <=327;
wait for 380 ns; low1 <=0; high2 <=172; total3 <=328;
wait for 380 ns; low1 <=0; high2 <=173; total3 <=329;
wait for 380 ns; low1 <=174; high2 <=330; total3 <=330;
wait for 380 ns; low1 <=101; high2 <=281; total3 <=281;
wait for 380 ns; low1 <=101; high2 <=282; total3 <=282;
wait for 380 ns; low1 <=101; high2 <=283; total3 <=283;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=284;
wait for 380 ns; low1 <=0; high2 <=174; total3 <=331;
wait for 380 ns; low1 <=0; high2 <=175; total3 <=332;
wait for 380 ns; low1 <=176; high2 <=333; total3 <=333;
150
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
wait for 380 ns; low1 <=102; high2 <=285; total3 <=285;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=286;
wait for 380 ns; low1 <=0; high2 <=176; total3 <=334;
wait for 380 ns; low1 <=0; high2 <=177; total3 <=335;
wait for 380 ns; low1 <=178; high2 <=336; total3 <=336;
wait for 380 ns; low1 <=103; high2 <=287; total3 <=287;
wait for 380 ns; low1 <=103; high2 <=288; total3 <=288;
wait for 380 ns; low1 <=103; high2 <=289; total3 <=289;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=290;
wait for 380 ns; low1 <=0; high2 <=178; total3 <=337;
wait for 380 ns; low1 <=179; high2 <=338; total3 <=338;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=291;
wait for 380 ns; low1 <=179; high2 <=339; total3 <=339;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=292;
wait for 380 ns; low1 <=0; high2 <=179; total3 <=340;
wait for 380 ns; low1 <=0; high2 <=180; total3 <=341;
wait for 380 ns; low1 <=181; high2 <=342; total3 <=342;
wait for 380 ns; low1 <=106; high2 <=293; total3 <=293;
wait for 380 ns; low1 <=106; high2 <=294; total3 <=294;
wait for 380 ns; low1 <=106; high2 <=295; total3 <=295;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=296;
wait for 380 ns; low1 <=0; high2 <=181; total3 <=343;
wait for 380 ns; low1 <=182; high2 <=344; total3 <=344;
wait for 380 ns; low1 <=107; high2 <=297; total3 <=297;
wait for 380 ns; low1 <=107; high2 <=298; total3 <=298;
wait for 380 ns; low1 <=107; high2 <=299; total3 <=299;
wait for 380 ns; low1 <=107; high2 <=300; total3 <=300;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=301;
wait for 380 ns; low1 <=182; high2 <=345; total3 <=345;
wait for 380 ns; low1 <=108; high2 <=302; total3 <=302;
wait for 380 ns; low1 <=108; high2 <=303; total3 <=303;
wait for 380 ns; low1 <=108; high2 <=304; total3 <=304;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=305;
wait for 380 ns; low1 <=182; high2 <=346; total3 <=346;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=306;
wait for 380 ns; low1 <=0; high2 <=182; total3 <=347;
wait for 380 ns; low1 <=183; high2 <=348; total3 <=348;
wait for 380 ns; low1 <=110; high2 <=307; total3 <=307;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=308;
wait for 380 ns; low1 <=0; high2 <=183; total3 <=349;
wait for 380 ns; low1 <=184; high2 <=350; total3 <=350;
wait for 380 ns; low1 <=111; high2 <=309; total3 <=309;
wait for 380 ns; low1 <=111; high2 <=310; total3 <=310;
wait for 380 ns; low1 <=55; high2 <=155; total3 <=155;
wait for 380 ns; low1 <=0; high2 <=55; total3 <=156;
wait for 380 ns; low1 <=184; high2 <=351; total3 <=351;
151
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
wait for 380 ns; low1 <=0; high2 <=56; total3 <=157;
wait for 380 ns; low1 <=0; high2 <=184; total3 <=352;
wait for 380 ns; low1 <=0; high2 <=185; total3 <=353;
wait for 380 ns; low1 <=186; high2 <=354; total3 <=354;
wait for 380 ns; low1 <=0; high2 <=57; total3 <=158;
wait for 380 ns; low1 <=0; high2 <=186; total3 <=355;
wait for 380 ns; low1 <=187; high2 <=356; total3 <=356;
wait for 380 ns; low1 <=58; high2 <=159; total3 <=159;
wait for 380 ns; low1 <=58; high2 <=160; total3 <=160;
wait for 380 ns; low1 <=58; high2 <=161; total3 <=161;
wait for 380 ns; low1 <=0; high2 <=58; total3 <=162;
wait for 380 ns; low1 <=187; high2 <=357; total3 <=357;
wait for 380 ns; low1 <=0; high2 <=59; total3 <=163;
wait for 380 ns; low1 <=0; high2 <=187; total3 <=358;
wait for 380 ns; low1 <=0; high2 <=188; total3 <=359;
wait for 380 ns; low1 <=189; high2 <=360; total3 <=360;
wait for 380 ns; low1 <=0; high2 <=60; total3 <=164;
wait for 380 ns; low1 <=0; high2 <=189; total3 <=361;
wait for 380 ns; low1 <=190; high2 <=362; total3 <=362;
wait for 380 ns; low1 <=61; high2 <=165; total3 <=165;
wait for 380 ns; low1 <=61; high2 <=166; total3 <=166;
wait for 380 ns; low1 <=61; high2 <=167; total3 <=167;
wait for 380 ns; low1 <=0; high2 <=61; total3 <=168;
wait for 380 ns; low1 <=0; high2 <=190; total3 <=363;
wait for 380 ns; low1 <=191; high2 <=364; total3 <=364;
wait for 380 ns; low1 <=62; high2 <=169; total3 <=169;
wait for 380 ns; low1 <=0; high2 <=62; total3 <=170;
wait for 380 ns; low1 <=191; high2 <=365; total3 <=365;
wait for 380 ns; low1 <=63; high2 <=171; total3 <=171;
wait for 380 ns; low1 <=0; high2 <=63; total3 <=172;
wait for 380 ns; low1 <=191; high2 <=366; total3 <=366;
wait for 380 ns; low1 <=64; high2 <=173; total3 <=173;
wait for 380 ns; low1 <=64; high2 <=174; total3 <=174;
wait for 380 ns; low1 <=64; high2 <=175; total3 <=175;
wait for 380 ns; low1 <=0; high2 <=64; total3 <=176;
wait for 380 ns; low1 <=0; high2 <=191; total3 <=367;
wait for 380 ns; low1 <=192; high2 <=368; total3 <=368;
wait for 380 ns; low1 <=65; high2 <=177; total3 <=177;
wait for 380 ns; low1 <=0; high2 <=65; total3 <=178;
wait for 380 ns; low1 <=192; high2 <=369; total3 <=369;
wait for 380 ns; low1 <=66; high2 <=179; total3 <=179;
wait for 380 ns; low1 <=0; high2 <=66; total3 <=180;
wait for 380 ns; low1 <=192; high2 <=370; total3 <=370;
wait for 380 ns; low1 <=67; high2 <=181; total3 <=181;
wait for 380 ns; low1 <=67; high2 <=182; total3 <=182;
wait for 380 ns; low1 <=67; high2 <=183; total3 <=183;
152
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
wait for 380 ns; low1 <=0; high2 <=67; total3 <=184;
wait for 380 ns; low1 <=0; high2 <=192; total3 <=371;
wait for 380 ns; low1 <=193; high2 <=372; total3 <=372;
wait for 380 ns; low1 <=68; high2 <=185; total3 <=185;
wait for 380 ns; low1 <=0; high2 <=68; total3 <=186;
wait for 380 ns; low1 <=0; high2 <=193; total3 <=373;
wait for 380 ns; low1 <=0; high2 <=194; total3 <=374;
wait for 380 ns; low1 <=0; high2 <=195; total3 <=375;
wait for 380 ns; low1 <=196; high2 <=376; total3 <=376;
wait for 380 ns; low1 <=69; high2 <=187; total3 <=187;
wait for 380 ns; low1 <=69; high2 <=188; total3 <=188;
wait for 380 ns; low1 <=69; high2 <=189; total3 <=189;
wait for 380 ns; low1 <=0; high2 <=69; total3 <=190;
wait for 380 ns; low1 <=0; high2 <=196; total3 <=377;
wait for 380 ns; low1 <=197; high2 <=378; total3 <=378;
wait for 380 ns; low1 <=0; high2 <=70; total3 <=191;
wait for 380 ns; low1 <=0; high2 <=197; total3 <=379;
wait for 380 ns; low1 <=198; high2 <=380; total3 <=380;
wait for 380 ns; low1 <=71; high2 <=192; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=71; total3 <=193;
wait for 380 ns; low1 <=198; high2 <=381; total3 <=381;
wait for 380 ns; low1 <=72; high2 <=194; total3 <=194;
wait for 380 ns; low1 <=72; high2 <=195; total3 <=195;
wait for 380 ns; low1 <=72; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=0; high2 <=72; total3 <=197;
wait for 380 ns; low1 <=0; high2 <=198; total3 <=382;
wait for 380 ns; low1 <=199; high2 <=383; total3 <=383;
wait for 380 ns; low1 <=0; high2 <=73; total3 <=198;
wait for 380 ns; low1 <=0; high2 <=199; total3 <=384;
wait for 380 ns; low1 <=100; high2 <=192; total3 <=192;
wait for 380 ns; low1 <=0; high2 <=74; total3 <=199;
wait for 380 ns; low1 <=0; high2 <=100; total3 <=193;
wait for 380 ns; low1 <=101; high2 <=194; total3 <=194;
wait for 380 ns; low1 <=75; high2 <=200; total3 <=200;
wait for 380 ns; low1 <=75; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=75; high2 <=202; total3 <=202;
wait for 380 ns; low1 <=0; high2 <=75; total3 <=203;
wait for 380 ns; low1 <=0; high2 <=101; total3 <=195;
wait for 380 ns; low1 <=102; high2 <=196; total3 <=196;
wait for 380 ns; low1 <=0; high2 <=76; total3 <=204;
wait for 380 ns; low1 <=0; high2 <=102; total3 <=197;
wait for 380 ns; low1 <=103; high2 <=198; total3 <=198;
wait for 380 ns; low1 <=77; high2 <=205; total3 <=205;
wait for 380 ns; low1 <=0; high2 <=77; total3 <=206;
wait for 380 ns; low1 <=103; high2 <=199; total3 <=199;
wait for 380 ns; low1 <=78; high2 <=207; total3 <=207;
153
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
wait for 380 ns; low1 <=78; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=78; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=0; high2 <=78; total3 <=210;
wait for 380 ns; low1 <=0; high2 <=103; total3 <=200;
wait for 380 ns; low1 <=104; high2 <=201; total3 <=201;
wait for 380 ns; low1 <=79; high2 <=211; total3 <=211;
wait for 380 ns; low1 <=0; high2 <=79; total3 <=212;
wait for 380 ns; low1 <=104; high2 <=202; total3 <=202;
wait for 380 ns; low1 <=0; high2 <=80; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=104; total3 <=203;
wait for 380 ns; low1 <=105; high2 <=204; total3 <=204;
wait for 380 ns; low1 <=81; high2 <=214; total3 <=214;
wait for 380 ns; low1 <=81; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=81; high2 <=216; total3 <=216;
wait for 380 ns; low1 <=0; high2 <=81; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=105; total3 <=205;
wait for 380 ns; low1 <=106; high2 <=206; total3 <=206;
wait for 380 ns; low1 <=0; high2 <=82; total3 <=218;
wait for 380 ns; low1 <=0; high2 <=106; total3 <=207;
wait for 380 ns; low1 <=107; high2 <=208; total3 <=208;
wait for 380 ns; low1 <=83; high2 <=219; total3 <=219;
wait for 380 ns; low1 <=0; high2 <=83; total3 <=220;
wait for 380 ns; low1 <=107; high2 <=209; total3 <=209;
wait for 380 ns; low1 <=84; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=84; high2 <=222; total3 <=222;
wait for 380 ns; low1 <=84; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=84; total3 <=224;
wait for 380 ns; low1 <=0; high2 <=107; total3 <=210;
wait for 380 ns; low1 <=0; high2 <=108; total3 <=211;
wait for 380 ns; low1 <=109; high2 <=212; total3 <=212;
wait for 380 ns; low1 <=85; high2 <=225; total3 <=225;
wait for 380 ns; low1 <=0; high2 <=85; total3 <=226;
wait for 380 ns; low1 <=0; high2 <=109; total3 <=213;
wait for 380 ns; low1 <=0; high2 <=110; total3 <=214;
wait for 380 ns; low1 <=111; high2 <=215; total3 <=215;
wait for 380 ns; low1 <=86; high2 <=227; total3 <=227;
wait for 380 ns; low1 <=86; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=86; high2 <=229; total3 <=229;
wait for 380 ns; low1 <=0; high2 <=86; total3 <=230;
wait for 380 ns; low1 <=0; high2 <=111; total3 <=216;
wait for 380 ns; low1 <=112; high2 <=217; total3 <=217;
wait for 380 ns; low1 <=0; high2 <=87; total3 <=231;
wait for 380 ns; low1 <=0; high2 <=112; total3 <=218;
wait for 380 ns; low1 <=0; high2 <=113; total3 <=219;
wait for 380 ns; low1 <=114; high2 <=220; total3 <=220;
wait for 380 ns; low1 <=0; high2 <=88; total3 <=232;
154
Dissertação de Mestrado– LASID - PPGI/DI UFPB
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
wait for 380 ns; low1 <=114; high2 <=221; total3 <=221;
wait for 380 ns; low1 <=89; high2 <=233; total3 <=233;
wait for 380 ns; low1 <=89; high2 <=234; total3 <=234;
wait for 380 ns; low1 <=89; high2 <=235; total3 <=235;
wait for 380 ns; low1 <=0; high2 <=89; total3 <=236;
wait for 380 ns; low1 <=0; high2 <=114; total3 <=222;
wait for 380 ns; low1 <=115; high2 <=223; total3 <=223;
wait for 380 ns; low1 <=0; high2 <=90; total3 <=237;
wait for 380 ns; low1 <=115; high2 <=224; total3 <=224;
wait for 380 ns; low1 <=91; high2 <=238; total3 <=238;
wait for 380 ns; low1 <=0; high2 <=91; total3 <=239;
wait for 380 ns; low1 <=0; high2 <=115; total3 <=225;
wait for 380 ns; low1 <=116; high2 <=226; total3 <=226;
wait for 380 ns; low1 <=92; high2 <=240; total3 <=240;
wait for 380 ns; low1 <=92; high2 <=241; total3 <=241;
wait for 380 ns; low1 <=92; high2 <=242; total3 <=242;
wait for 380 ns; low1 <=0; high2 <=92; total3 <=243;
wait for 380 ns; low1 <=0; high2 <=116; total3 <=227;
wait for 380 ns; low1 <=117; high2 <=228; total3 <=228;
wait for 380 ns; low1 <=93; high2 <=244; total3 <=244;
wait for 380 ns; low1 <=0; high2 <=93; total3 <=245;
wait for 380 ns; arithClose <='1';
wait for 1390 ns; arithEnable <='0';
wait;
end PROCESS stimulus;
end only;
2018
155
Dissertação de Mestrado– LASID - PPGI/DI UFPB
Apêndice C - Testbench Compressor PPM Binário e Cód.Aritmético
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
library IEEE;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
USE STD.TEXTIO.ALL;-- versao VHDL-1993
entity tBcompressor_ppm_arith_estrutural is
PORT (
saidaAtiva : buffer std_logic;
saida2Ativa : buffer std_logic;
saida3Ativa : buffer std_logic;
saida : buffer std_logic_vector(8 downto 1);
saida2 : buffer std_logic_vector(8 downto 1);
saida3 : buffer std_logic_vector(8 downto 1);
--dado2 : inout std_logic_vector(8 downto 1);
--dd : out character;
dado : OUT CHARACTER
);
end;
architecture only of tBcompressor_ppm_arith_estrutural is
COMPONENT compressor_ppm_arith_estrutural
PORT (
clk
: IN STD_LOGIC;
ppmEnable : IN STD_LOGIC;
encoderClose : IN STD_LOGIC;
bitin : IN STD_LOGIC;
saidaAtiva : buffer std_logic;
saida2Ativa : buffer std_logic;
saida3Ativa : buffer std_logic;
saida : buffer std_logic_vector( 8 downto 1);
saida2 : buffer std_logic_vector( 8 downto 1);
saida3 : buffer std_logic_vector( 8 downto 1)
);
END COMPONENT ;
FILE arq_wr_rd : TEXT;
FILE arq_wr_rd_s : TEXT;
SIGNAL clk : STD_LOGIC := '0';
SIGNAL ppmEnable : STD_LOGIC := '0';
SIGNAL encoderClose : STD_LOGIC := '0';
SIGNAL bitin : STD_LOGIC := '0';
--signal saida2_int : std_logic_vector(8 downto 1):="00000000";
156
Dissertação de Mestrado– LASID - PPGI/DI UFPB
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
157
Dissertação de Mestrado– LASID - PPGI/DI UFPB
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
--FOR i IN 8 DOWNTO 1 LOOP
-- if (saida(i)='0') then
-- valorWR := '0';
-- WRITE(linhaWR, valorWR );
--elsif (saida(i)='1') then
-- valorWR := '1';
-- WRITE(linhaWR, valorWR );
--end if;
--END LOOP;
--WRITELINE (arq_wr_rd_s, linhaWR);
--dd <= 'X';--else dd <= 'y';
end if;
FILE_CLOSE(arq_wr_rd_s);
end PROCESS clock;
stimulus : PROCESS
VARIABLE linha : LINE;
-- objeto tipo LINE para armazenar texto
VARIABLE leitura_ok : BOOLEAN := TRUE; -- verificacao do procedimento READ
VARIABLE valor
: CHARACTER;
begin
ppmEnable <='1';
encoderClose <='0';
FILE_OPEN(arq_wr_rd, "dado_e1.txt",Read_Mode);
READLINE (arq_wr_rd, linha);
-- leitura de uma linha
WHILE leitura_ok LOOP
READ (linha, valor, leitura_ok); -- leitura dos dados de uma linha
dado <= valor;
--dado2 <= saida;
if (valor = '0') then
bitin <='0';
elsif (valor = '1') then
bitin <='1';
elsif (valor = 'f') then
--bitin <='1';
wait for 160 ns;encoderClose <='1';
exit;
end if;
WAIT FOR 160 ns;
158
Dissertação de Mestrado– LASID - PPGI/DI UFPB
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
-- dado2 <= saida;-- temporizacao para mostra "dado" no simulador
END LOOP;
wait for 260 ns; ppmEnable<='0'; --arithEnable<='0';
wait;
FILE_CLOSE(arq_wr_rd);
end PROCESS stimulus;
escreve:process
begin
wait;
END PROCESS escreve;
end only;
159
Dissertação de Mestrado– LASID - PPGI/DI UFPB
160
Download

- PPGI - Universidade Federal da Paraíba