Sie sind auf Seite 1von 181

RESUMO

Nesta dissertao de mestrado desenvolvido um sistema de replicao de


circuitos integrados digitais (combinatrios e sequenciais), por observao do seu
normal funcionamento.
O sistema desenvolvido carateriza-se pela capacidade de extrair e descrever na
linguagem VHDL o comportamento de um circuito integrado digital em funcionamento,
utilizando tcnicas no invasivas e automatizadas, suportado por um vasto conjunto de
algoritmos de aquisio e anlise de dados.
O sistema desenvolvido assenta em dois mdulos principais: um mdulo de
software que consiste numa plataforma de algoritmos de anlise, controlo e gesto do
sistema (alojada num computador) e um mdulo de aquisio de dados (hardware) que
consiste num circuito capaz de realizar as medies necessrias para o funcionamento
do sistema, comandado pelo mdulo de software. A comunicao entre os dois mdulos
efetuada via porta srie.
Os algoritmos desenvolvidos realizam uma anlise da correspondncia entre
entradas e sadas procurando aplicar uma aproximao a um circuito combinatrio se
possvel, caso contrrio so utilizados mtodos heursticos para efetuar uma
aproximao a um circuito sequencial atravs de uma mquina de estados. Entradas ou
sadas constantes so previamente identificados e excludos do processo de anlise,
para efeitos de simplificao.
Os resultados obtidos demonstram que possvel replicar o comportamento
observado em circuitos digitais (combinatrios e sequenciais) desde que o nmero de
amostras recolhidas seja adequado. Verifica-se ainda que o mtodo desenvolvido
replica a funcionalidade do circuito integrado nas condies onde o circuito est inserido.

Palavras-Chave:
Engenharia inversa, replicao de circuitos, aquisio no invasiva, correspondncia
entrada-sada, aproximao heurstica.

ABSTRACT
In this master thesis, is developed a system to replicate digital integrated circuits
(combinational and sequential), by observing the normal operation.
The developed system is characterized by the capacity to extract and describe
the behaviour of a digital integrated circuit in VHDL language, during its normal
operation, using non-invasive and automated techniques, supported by algorithms for
data acquisition and analysis.
The developed system is based on two main modules: a software module which
contains analysis and control algorithms and also makes the management of the system
(hosted on a computer) and a data acquisition module (hardware) consisting of a circuit
able to realize the measurements required for system operation, commanded by the
software module. Communication between two modules is made via serial port.
The developed algorithms perform a input-output correspondence analysis,
seeking to apply an approach to a combinatorial circuit if possible. Otherwise, heuristic
methods are used to do an approach to a sequential circuit, by description of a
equivalente state machine. Constants inputs or outputs are previously identified and
excluded from the analysis process, for simplification purposes.
The results demonstrate that it is possible to replicate the observed behavior in
digital circuits (combinational and sequential) since the number of samples collected is
adequate. It is also observed that the developed method replicates the functionality of
the integrated circuit under conditions where the circuit is inserted.

Keywords:
Reverse engineering, circuits replication, non-invasive acquisition, input-output
correspondence, heuristic approach.

ii

AGRADECIMENTOS
Em primeiro lugar quero agradecer ao meu orientador, o Prof. Dionsio Barros,
por todo o tempo despendido na orientao deste trabalho, pelo apoio prestado e ideias
sugeridas que contriburam para a concluso com sucesso deste projeto e todo o
conhecimento que me transmitiu ao longo do meu percurso acadmico.
Quero igualmente agradecer ao Prof. Elias Rodrigues, co-orientador desta
dissertao, pelos diferentes pontos de vista que proporcionou, muito teis em diversas
situaes bem como pelo apoio e disponibilidade manifestados ao longo da realizao
ao longo do projeto.
minha famlia, em particular aos meus pais, pela oportunidade que me
concederam de ter um curso superior e uma esperana de um futuro melhor.
Ao Ricardo Sousa pelas trocas de ideias construtivas partilhadas ao longo do
trabalho e aos colegas com quem tive a honra de partilhar o laboratrio ao longo do
trabalho e que me proporcionaram momentos inesquecveis.
Ao engenheiro Filipe Santos pelo apoio prestado no laboratrio ao longo do
projeto.
Um agradecimento especial Andreia Correia que me proporcionou as energias
necessrias para a realizao deste trabalho.
A todos os que de alguma forma contriburam para a concluso com sucesso
desta dissertao, o meu obrigado.

iii

LISTA DE ABREVIATURAS
ADC Conversor de analgico para digital (Analog to Digital Converter)
ALU Unidade Lgica e Aritmtica (Arithmetic Logic Unit)
ASIC Application-Specific Integrated Circuit
AVMG Automatic Verilog Model Generator
BCD Codificao binria decimal (Binary-Coded Decimal)
CAD Desennho assistido por computador (Computer Aided Design)
CMOS Complementary Metal-Oxide Semiconductor
COM Component Object Model
CPLD Complex Programmable Logic Device
DAC Conversor de analgico para digital (Digital to Analog Converter)
EEPROM Electrically-Erasable Programmable Read-Only Memory
EI Engenharia Inversa
FPGA Field-Programmable Gate Array
FSM Mquina de estados finita (Finite State Machine)
GND Ground
HDL Linguagem de descrio de hardware (Hardware Description Language)
IC Integrated Circuit
LED Dodo emissor de luz (Light Emitting Diode)
LUT Look Up Table
OCR Reconhecimento tico de carateres (Optical Character Recognition)
PCB Placa de circuito impresso (Printed Circuit Board)
PLD Dispositivo Lgico programvel (Programmable Logic Device)
RAM Random Access Memory
RTL Register Transfer Level
SEM Scanning Eletron Microscope
TBJ Transstor Bipolar de Juno
TTL Transstor-Transistor Logic

iv

VCC Voltage Common Colector


VHDL VHSIC Hardware Description Language
VHSIC Circuito Integrado de Muito Alta Velocidade (Very High Speed Integrated
Circuit)

NDICE
Resumo ......................................................................................................................... i
Abstract ........................................................................................................................ ii
Agradecimentos ............................................................................................................iii
Lista de abreviaturas.................................................................................................... iv
ndicevi
1. Introduo ................................................................................................................. 1
1.1. Motivao ........................................................................................................... 1
1.2. Objetivos ............................................................................................................ 2
1.3. Organizao e contedos ................................................................................... 3
2. Estado da arte .......................................................................................................... 4
2.1. Introduo .......................................................................................................... 4
2.2. Engenharia inversa............................................................................................. 4
2.2.1. Aplicaes da engenharia inversa ................................................................ 4
2.2.2. Tcnicas de engenharia inversa ................................................................... 6
2.3. Sintetizao de circuitos digitais ....................................................................... 28
3. Arquitetura do sistema e algoritmos de replicao de circuitos digitais ................... 29
3.1. Introduo ........................................................................................................ 29
3.2. Funcionamento geral e arquitetura do sistema ................................................. 29
3.3. Parmetros de configurao inicial do sistema ................................................. 32
3.4. Algoritmos de identificao dos pinos destinados a alimentao ...................... 32
3.4.1. Funo do algoritmo................................................................................... 32
3.4.2. Dados requeridos pelo algoritmo ................................................................ 33
3.4.3. Gerao de instrues para aquisio de medies diferenciais analgicas
............................................................................................................................. 33
3.4.4. Anlise e processamento dos dados .......................................................... 35
3.4.5. Sensibilidade a erros .................................................................................. 38
3.5. Algoritmos de identificao de sinais analgicos .............................................. 39
3.5.1. Funo do algoritmo................................................................................... 39
3.5.2. Dados requeridos pelo algoritmo ................................................................ 39
3.5.3. Gerao de instrues para aquisio de medies analgicas
referenciadas ....................................................................................................... 40
3.5.4. Anlise e processamento dos dados .......................................................... 41

vi

3.6. Algoritmos de anlise de circuitos combinatrios.............................................. 44


3.6.1. Funo do algoritmo................................................................................... 44
3.6.2. Dados requeridos pelo algoritmo ................................................................ 44
3.6.3. Gerao de instrues para aquisio de medies digitais no
sincronizadas ....................................................................................................... 45
3.6.4. Anlise e processamento dos dados .......................................................... 46
3.6.5. Estrutura do cdigo (linguagem VHDL) da rplica ...................................... 49
3.6.6. Taxa de sucesso da rplica obtida ............................................................. 50
3.7. Algoritmos de deteo do sinal de relgio ........................................................ 50
3.7.1. Funo do algoritmo................................................................................... 50
3.7.2. Dados requeridos pelo algoritmo ................................................................ 51
3.7.3. Gerao de instrues para deteo de sinais peridicos .......................... 51
3.7.4. Anlise e processamento dos dados .......................................................... 52
3.8. Algoritmos de deteo do sinal de reset ........................................................... 54
3.8.1. Funo do algoritmo................................................................................... 54
3.8.2. Dados requeridos pelo algoritmo ................................................................ 54
3.8.3. Gerao de instrues para aquisio de medies digitais sincronizadas 54
3.8.4. Anlise e processamento dos dados .......................................................... 55
3.9. Algoritmo de anlise de circuitos sequenciais ................................................... 58
3.9.1. Funo do algoritmo e dados requeridos ................................................... 58
3.9.2. Aproximao de um circuito sequencial a uma mquina de estados
desenvolvida, atravs de mtodos heursticos ..................................................... 58
3.9.3. Configuraes iniciais para anlise de circuitos sequenciais ...................... 61
3.9.4. Anlise e processamento ........................................................................... 61
3.9.5. Taxa de sucesso da rplica obtida ............................................................. 64
3.10. Mdulo de comunicao ................................................................................. 64
3.11. Mdulo de interface e coordenao ................................................................ 65
3.12. Anlise matemtica da probabilidade de observar o comportamento completo
de um circuito .......................................................................................................... 65
4. Sistema de aquisio de dados .............................................................................. 67
4.1. Introduo ........................................................................................................ 67
4.2. Critrios de escolha de componentes ............................................................... 67
4.3. Arquitetura do sistema de aquisio de dados ................................................. 68
4.4. Implementao do sistema de aquisio de dados ........................................... 69

vii

4.4.1. Mdulo de encaminhamento ...................................................................... 69


4.4.2. Mdulo de isolamento ................................................................................ 71
4.4.3. Mdulo de aquisio .................................................................................. 74
4.4.4. Mdulo de controlo ..................................................................................... 77
4.5. Consideraes para operao em alta frequncia ............................................ 85
5. Resultados .............................................................................................................. 86
5.1. Introduo ........................................................................................................ 86
5.2. Resultados obtidos para circuitos combinatrios .............................................. 86
5.2.1. Anlise do impacto do nmero de amostras recolhidas .............................. 86
5.2.2. Anlise das rplicas obtidas ....................................................................... 87
5.3. Resultados obtidos para circuitos sequenciais ................................................. 89
5.3.1. Anlise do impacto do nmero de amostras recolhidas .............................. 89
5.3.2. Caratersticas do prottipo desenvolvido .................................................... 89
5.3.3. Anlise das rplicas obtidas ....................................................................... 90
5.4. Anlise comparativa entre resultados obtidos para circuitos combinatrios e
sequenciais ............................................................................................................. 97
6. Concluses ............................................................................................................. 98
6.1. Concluses gerais ............................................................................................ 98
6.2. Trabalhos futuros.............................................................................................. 99
Referncias .............................................................................................................. 101
ANEXOS................................................................................................................... 107
A.

Tcnicas de defesa contra a engenharia inversa ........................................... 108

B.

Lei da propriedade industrial .......................................................................... 109

C. Sintetizao de circuitos ....................................................................................... 110


C.1. Introduo sntese de hardware .................................................................. 110
C.2. FPGAs e ASICs ............................................................................................. 110
C.3. Linguagens e metodologias de descrio de hardware .................................. 111
C.3.1. Recomendaes para modelao de circuitos sintetizveis .................... 112
C.3.2. Sntese de circuitos sem memria (combinatrios) .................................. 113
C.3.3. Sntese de mquinas de estados finitos................................................... 114
D. Algoritmos implementados ................................................................................... 116
D.1. Inicializaes ................................................................................................. 116
D.2. Adaptao a circuitos com nmero de pinos inferior ao mximo suportado pelo
sistema de aquisio de dados ............................................................................. 118

viii

D.3. Geradores de instrues para medies analgicas ...................................... 119


D.4. Algoritmo de anlise dos pinos destinados a alimentao ............................. 121
D.5. Algoritmo de despiste de sinais analgicos .................................................... 124
D.6. Gerador de instrues para aquisio de medies digitais ........................... 126
D.7. Algoritmo de anlise combinatria ................................................................. 129
D.8. Gerador de instrues para deteo de sinais peridicos .............................. 131
D.9. Algoritmo de deteo do sinal de relgio ....................................................... 132
D.10. Algoritmo de deteo do sinal de reset ........................................................ 133
D.11. Algoritmo de aproximao de circuitos sequenciais a uma mquina de estados
.............................................................................................................................. 135
D.12. Mdulo de comunicao .............................................................................. 137
D.13. Mdulo de coordenao e interface ............................................................. 139
E. Utilizao da interface grfica do sistema desenvolvido ....................................... 140
F. Sistema de aquisio de dados ............................................................................ 143
F.1. Circuito de aquisio sinais analgicos .......................................................... 143
F.2. Circuito de aquisio de sinais digitais ........................................................... 144
F.3. Esquema eltrico do de aquisio de dados .................................................. 145
F.4. Cdigo fonte do microcontrolador do sistema de aquisio de dados ............ 146
F.5. Circuito de deteo de transies .................................................................. 152
G. Esquema de montagem ....................................................................................... 154
H. Resultados experimentais obtidos para circuitos combinatrios ........................... 155
H.1. Anlise do impacto do nmero de amostras recolhidas ................................. 155
H.2. Esquemas lgicos obtidos pela sintetizao do cdigo VHDL gerado pelo
sistema de replicao ............................................................................................ 156
H.3. Simulaes efetuadas s rplicas obtidas...................................................... 159
F.

Resultados experimentais obtidos para circuitos sequenciais ............................ 161


I.1. Impacto da ocorrncia de situao de reset .................................................... 161
I.2. Esquema lgico das rplicas obtidas ............................................................... 165

J. Artigo Cientfico aceite para publicao na 11th International Conference Applied


Computing ................................................................................................................ 168

ix

1. Introduo
1.1. Motivao
Atualmente os circuitos eletrnicos so fundamentais no suporte da tecnologia
tal como a conhecemos. Os circuitos integrados esto presentes em quase todos os
aparelhos que utilizamos, tendo crescido exponencialmente nas ltimas dcadas e com
previso de crescimento nas prximas dcadas [1].
A substituio de um circuito integrado (IC Integrated Circuit) um
procedimento simples quando o mesmo se encontra perfeitamente identificado ou o seu
funcionamento conhecido. No entanto, quando no existe conhecimento do IC
avariado (por estratgia do fabricante, degradao do encapsulamento, ) nem do seu
funcionamento a substituio do mesmo assume contornos difceis.
A abordagem que fundamenta esta dissertao assenta no princpio que o
componente que substitui o IC avariado no necessita de ser exatamente igual, mas
sim um componente que realize as mesmas funcionalidades. Assim sendo, se as
funcionalidades de um determinado IC forem observadas durante o seu funcionamento
normal, possvel construir um componente alternativo com funcionalidades
semelhantes, capaz de substituir o IC observado, no sistema em que se encontra
inserido (ou num sistema igual).
A engenharia inversa de circuitos eletrnicos j utilizada h algumas dcadas,
no entanto a maioria dessas tcnicas baseiam-se em anlises estruturais, manuais e
so invasivas, ou seja, inutilizam o IC alvo de engenharia inversa [2]. Mais recentemente
a investigao nesta rea est direcionada para a automatizao destes processos bem
como o desenvolvimento de tcnicas no invasivas [2].
As razes mencionadas motivaram ao desenvolvimento de algoritmos capazes
de extrair o comportamento de circuitos integrados digitais e replic-los (obter esquema
de um circuito capaz de realizar as mesmas funes), de uma forma automatizada e
no invasiva, baseado num sistema de aquisio de dados compatvel.
Desta forma pretendido contribuir para o conhecimento nesta rea e aplicar o
contedo desta dissertao a situaes reais, tais como:

Recuperao de circuitos: quando um circuito integrado se encontra


danificado e no existe informao disponvel sobre o mesmo ou o
circuito onde se encontra inserido, a recuperao do circuito pode ser
conseguida atravs da extrao do comportamento de um circuito
integrado igual em funcionamento num meio idntico;
Deteo de anomalias: quando um circuito de funcionamento bem
conhecido se encontra a operar incorretamente a aplicao de
engenharia inversa comportamental aos componentes desse circuito

pode permitir encontrar


funcionamento deficiente;

componente

que

se

encontra

em

Atualizao de tecnologia: quando um circuito submetido ao processo


de engenharia inversa comportamental, a tecnologia de construo da
rplica pretende-se que seja recente. Assim sendo, o sistema de
replicao de circuitos integrados pode ser utilizado para atualizar a
tecnologia de circuitos mais antigos.

Em suma, as caratersticas e possveis aplicaes de um sistema de replicao


de circuitos integrados acima enunciadas motivaram a realizao desta dissertao.

1.2. Objetivos
A aplicao de engenharia inversa ao nvel estrutural, por vezes, j no
corresponde ao paradigma atual onde se pretende a reduo da componente manual
(automatizao) e a migrao para novas tecnologias, nomeadamente as linguagens de
descrio de hardware. Assim sendo, a evoluo para uma anlise comportamental
automatizada e replicao numa linguagem de descrio de hardware permite a
realizao de manuteno de um circuito eletrnico sem conhecimento do circuito ou do
sistema onde se encontra inserido, bem como inferir a contribuio de um IC num
sistema para anlise e possvel melhoramento.
Neste mbito, os objetivos a concretizar nesta dissertao so:
1)
2)

3)
4)
5)

Reviso das tcnicas de engenharia inversa atualmente existentes para


circuitos eletrnicos;
Desenvolvimento de algoritmos capazes de, a partir de um conjunto de
medies, extrair o comportamento do circuito e descrever esse
comportamento em linguagem VHDL, numa estrutura sintetizvel;
Projeto de um sistema no invasivo de aquisio de dados compatvel com
os algoritmos desenvolvidos;
Criao de um prottipo do sistema completo capaz de replicar circuitos
integrados digitais de uma forma maioritariamente automatizada;
Anlise da capacidade de replicao obtida, bem como identificao das
limitaes e possibilidades de expanso do sistema.

Os algoritmos desenvolvidos e o sistema de aquisio de dados projetado devem


ter em conta as tcnicas de defesa contra a engenharia inversa atualmente utilizadas
(ver Anexo A) e operar de forma a possuir o maior grau de imunidade possvel s
referidas tcnicas.

1.3. Organizao e contedos


Esta dissertao encontra-se organizada em seis captulos: Introduo, Estado
de arte, Arquitetura do sistema e algoritmos de replicao de circuitos digitais, Sistema
de aquisio de dados, Resultados e Concluses. No final da dissertao encontramse as Referncias e Anexos.
No Captulo 1, Introduo, foram apresentadas as motivaes para realizao
deste projeto e objetivos a atingir. Neste captulo tambm apresentada a estruturao
da tese.
No Captulo 2, Estado de arte, realizada uma abordagem s aplicaes da
engenharia inversa de diferentes tipos de circuitos e por diferentes mtodos. Na parte
final do captulo efetuada uma pequena reviso sobre a sintetizao de hardware.
No Captulo 3, Arquitetura do sistema e algoritmos de replicao de circuitos
digitais, realizada uma descrio da arquitetura geral do sistema, bem como detalhada
a implementao dos algoritmos desenvolvidos para replicao do comportamento de
circuitos digitais por observao do funcionamento.
No Captulo 4, Sistema de aquisio de dados, descrito todo o sistema de
aquisio de dados que iro suportar e fornecer as medies necessrias aos
algoritmos de replicao, sendo detalhadas as opes de encaminhamento dos sinais
a medir bem como o respetivo isolamento.
No Captulo 5, Resultados, avaliado o comportamento do sistema perante
vrios circuitos de teste e realizado um estudo estatstico do desempenho do sistema.
No Captulo 6, Concluses, so inferidas as concluses mais relevantes desta
dissertao e sugeridas algumas ideias para realizao de trabalhos futuros, que
consistem essencialmente na otimizao e expanso do sistema desenvolvido

2. Estado da arte
2.1. Introduo
O funcionamento de um circuito pode ser facilmente compreendido se existir
documentao sobre o mesmo. Porm quando no existe qualquer documentao ou
essa documentao no est disponibilizada ao pblico, h um ramo de engenharia que
estuda a recuperao ou duplicao de circuitos: a engenharia inversa [3]. Neste
captulo sero descritas tcnicas utilizadas para realizao de engenharia inversa.
O conhecimento sobre o funcionamento dos circuitos digitais (combinatrios e
sequenciais) necessrio para compreenso de algumas tcnicas descritas nas
subsees seguintes existindo vasta documentao nessa rea, como so exemplos
[4], [1], [5] e [6].

2.2. Engenharia inversa


A engenharia inversa (EI) consiste em extrair o conhecimento ou esquema de
qualquer coisa feita pelo Homem. A EI comeou por ser uma atividade amadora que
surgiu com a eletrnica moderna, quando as pessoas impressionadas com os aparelhos
(rdio, televiso,) os desmontavam para compreender o seu interior [7].
A EI geralmente conduzida de forma a obter conhecimento em falta, ideias e
filosofias de design, quando tal informao no est disponvel, ou quando a informao
propriedade de algum que no est disposto a compartilh-la ou quando
simplesmente a informao foi perdida ou destruda [7].

2.2.1. Aplicaes da engenharia inversa


Especialistas na rea da EI defendem que enquanto a Lei de Moore [5] provocar
a diminuio do tamanho dos transstores abaixo dos 30 nm os desafios enfrentados
pela EI sero cada vez maiores e as tcnicas cada vez mais aperfeioadas, para que a
EI possa continuar a ser aplicada nas reas descritas nas subsees seguintes [8].

2.2.1.1. Fins militares e de segurana

As unidades militares de um pas so um ponto sensvel onde fugas de


informao podem comprometer seriamente a segurana dos militares e inclusive da
nao. Por isso, alguns pases como os Estados Unidos da Amrica ou com capacidade

militar semelhante, utilizam a EI para verificar o contedo dos circuitos eletrnicos


presentes em todas as viaturas militares e aparelhos de comunicao, de modo a
detetar eventuais escutas ou dispositivos dissimulados capazes de armazenar e/ou
transmitir informao para o inimigo [9].
A agncia americana DARPA (Defense Advanced Research Projects Agency)
tem vindo a estudar tcnicas de engenharia inversa baseada em algoritmos, atravs do
programa IRIS (Integrity and Reliability of Integrated Circuits) [9].

2.2.1.2. Recuperao de circuitos obsoletos

A perda ou ausncia de informao sobre um determinado circuito um


problema que pode ser solucionado pela engenharia inversa, principalmente quando [3]:

O fabricante original j no existe ou j no fabrica o produto por ser


obsoleto, no entanto o circuito fundamental num equipamento de longa
vida ou de elevado custo;
A documentao original nunca foi divulgada pelo fabricante ou foi
perdida;
Extrao de dados do circuito quando no existe nenhum desenho
assistido por computador do circuito.

Este tipo de recuperao de circuitos para substituio mais comum em avies,


navios e submarinos que se encontram ao servio h anos suficiente para o hardware
se tornar obsoleto, no entanto abaixo do tempo de vida til do aparelho [3], [10].

2.2.1.3. Controlo de qualidade e/ou inspeo

A EI pode ser utilizada para verificar se o produto est de acordo com a descrio
dada pelo fabricante atravs da comparao com o esquema ou por comparao com
um circuito standard. Esta aplicao da EI pode ser realizada pelo prprio fabricante no
sentido de garantir a qualidade do seu produto ou por uma entidade fiscalizadora no
sentido de defender os consumidores [3].

2.2.1.4. Competio inteligente

A EI uma tcnica que pode tambm ser utilizada para descobrir segredos e
tcnicas de concorrentes e utilizar os dados extrados para analisar as ideias contidas
no circuito concorrente e realizar melhorias sem ter de percorrer todo o caminho de
conceo realizado pelos competidores [10].

As tcnicas de EI podem permitir identificar pontos fracos do circuito, como por


exemplo pontos de maior desgaste, sendo uma ferramenta tima de otimizao de
circuitos [3].
A competio inteligente pode no entanto assumir contornos de pirataria
comercial, quando violadas as leis de propriedade intelectual [10] (ver Anexo B).

2.2.2. Tcnicas de engenharia inversa


A EI um ramo da engenharia praticado j h muito tempo, no entanto ainda
um processo sobretudo manual, sendo que o desafio para o futuro a automatizao
da EI [11].
Para efeitos de anlise vamos agrupar as diversas tcnicas de EI para hardware
em cinco mtodos:

Desassemblagem do produto;
Anlise manual do sistema;
Engenharia inversa de circuitos integrados;
Engenharia inversa de placas de circuito impresso;
Engenharia inversa baseada em algoritmos para
comportamento.

extrao do

As quatro primeiras tcnicas enunciadas podem considerar-se tcnicas manuais


(ou com uma forte componente manual) orientadas para a compreenso do hardware,
ao passo que as tcnicas baseadas em algoritmos tendem a reduzir a componente
manual e aumentar a automatizao (no implica que algumas tcnicas baseadas em
algoritmos no necessitem de etapas manuais), sendo principalmente orientadas para
o comportamento do circuito.
Nas subseces seguintes cada um dos mtodos enunciados ser descrito com
maior detalhe.

2.2.2.1. Engenharia inversa por desassemblagem do produto

Esta tcnica uma das tcnicas mais simples na rea da EI de hardware.


Consiste meramente na desmontagem do produto, onde os componentes, placas e
subconjuntos so fotografados e posteriormente inventariados [10], [12].
Esta tcnica til quando apenas pretendido conhecer os componentes que
se encontram no dispositivo/circuito e compor uma lista de materiais necessrios para
o fabrico do mesmo, permitindo ainda a elaborao de uma estimativa do custo de
produo do circuito em funo dos componentes [10], [12].

2.2.2.2. Engenharia inversa por anlise manual do sistema

Existe uma grande diversidade de circuitos eletrnicos (podem consistir em


hardware, software, firmware, comunicao, transdutores, etc) e, consequentemente,
vrios mtodos de anlise [10], [12].
A EI por anlise do sistema pode ser considerada um melhoramento da tcnica
anterior, pois numa fase inicial segue o mesmo procedimento. No entanto esta tcnica
mais completa pois contempla ainda a anlise de operaes, caminhos de sinal,
interconexes bem como examina a estrutura e a constituio dos materiais. Existem
trs formas de anlise: por obteno do esquema eltrico, anlise funcional e/ou anlise
de software [10], [12].

A. Obteno do esquema eltrico


A primeira fase desta tcnica assemelha-se tcnica descrita na seco 2.2.2.1
(engenharia inversa por desassemblagem do produto), onde todos os componentes so
identificados. Posteriormente o circuito fotografado e so anotadas todas as ligaes
entre componentes/subsistemas (em casos de sistemas com vrias camadas, todas as
camadas so separadas e as conexes entre camadas registadas). Por fim todos os
componentes so catalogados e seletivamente removidos [10], [12].
Por fim reconstitudo o esquema eltrico (manualmente ou com recurso a
software de desenho/simulao de circuitos) baseado nos componentes e ligaes
entre componentes. Em alternativa, ou para melhor preciso, podem ser utilizadas
pontas de prova de um medidor de grandezas eltricas para encontrar conexes entre
mdulos [10], [12].
Em suma, uma vez obtido o esquema eltrico possvel inferir o funcionamento
do mesmo e efetuar uma cpia do circuito em anlise.

B. Anlise funcional
A anlise funcional consiste em monitorizar o sistema durante o seu
funcionamento. Esta tcnica consiste em colocar pontas de prova em pontos
estratgicos do circuito e analisar o sistema com base na visualizao e anlise dos
sinais medidos [10], [12].
Para auxiliar a anlise podem ser aplicados estmulos ao circuito de forma a
observar o circuito em diferentes modos de funcionamento (quando o circuito j
parcialmente conhecido). A utilizao de geradores de sinais, osciloscpios e
analisadores lgicos so muito usuais neste tipo de tcnica [10], [12].
Esta tcnica pode ser aplicada com complemento tcnica de desassemblagem
do produto, principalmente em sistemas multicamada, sendo nesse caso realizada a

separao de camadas mantendo (ou reconstruindo) as ligaes eltricas entre


camadas e utilizando posteriormente pontas de prova para medir e analisar o sistema
[10], [12].
A anlise funcional descrita anteriormente baseia-se na anlise manual por
visualizao dos sinais em pontos estratgicos do circuito, no entanto este tipo de
anlise pode ser muito mais vasta e efetuar uma anlise comportamental do sistema,
muito til na engenharia inversa baseada em algoritmos. Outras formas de anlise
funcional sero descritas em sees seguintes.

C. Engenharia inversa de software1


Tal como o hardware tambm o software pode ser revertido, isto , em
dispositivos programveis existem processos para converter o cdigo de mquina numa
forma estruturada e legvel, de forma a compreender o comportamento do dispositivo
[10], [12].
Uma tarefa tpica consiste na extrao cdigo incorporado numa memria.
Existem vrias tcnicas praticadas, como por exemplo, a monitorizao dos sinais
utilizados para programar o dispositivo durante o upload do cdigo. Existem
mecanismos de segurana tais como encriptao dos dados, segurana baseada em
hardware ou bloqueio da leitura do chip, que necessitam de ser considerados. Em casos
de cdigo encriptado necessria uma anlise da encriptao e desencriptao da
informao [10], [12].
Em alternativa, quando fisicamente possvel, os dispositivos podem ser
reprogramados de forma a realizarem as mesmas tarefas que o dispositivo original
sendo no entanto uma tarefa muito especializada, realizada maioritariamente por
programadores de memrias EEPROM2 [10], [12].
A engenharia inversa de software uma vasta rea da engenharia inversa, no
entanto com tcnicas e processos distintos da engenharia inversa de hardware. A
engenharia inversa de software e hardware podem ser complementares (principalmente
em circuitos eletrnicos com dispositivos programveis embebidos), no entanto a
recuperao de cdigo fonte no o objetivo principal do caso em estudo. Tcnicas e
processos acerca de engenharia inversa de software esto descritos em [13],[14],
[15],[16] e [17]. [18], [19]

No ramo da engenharia inversa a investigao e literatura sobre engenharia inversa de


sotftware (obteno de cdigo de alto nvel a partir de cdigo de baixo nvel) so muito mais
abundantes que no caso da engenharia inversa de hardware (ou engenharia inversa de
eletrnica) [18].
2 EEPROM (Electrically-Erasable Programmable Read-Only Memory) uma memria de
armazenamento no voltil que permite que a memria seja eletricamente reprogramada ou
ainda atualizao de palavra(s) de dados sem necessidade de reprogramao total [19].

2.2.2.3. Engenharia inversa de circuitos integrados (ICs)

A engenharia inversa de um circuito integrado por vezes denominada de


tcnica de extrao do circuito e inclui um conjunto de tcnicas usualmente aplicadas
para recuperar o esquema eltrico/lgico do IC. As tcnicas habituais de extrao do
esquema eltrico/lgico de um IC seguem vrias etapas: desencapsulamento do IC,
separao das camadas (layers), recolha de imagens, deteo/anotao dos
componentes e interconexes, obteno do esquema eltrico/lgico e por fim a
verificao e anlise do circuito obtido [10], [12], [20].
As metodologias mais comuns aplicadas na engenharia inversa de ICs
geralmente baseiam-se em processos altamente invasivos que tornam o IC analisado
em estado no funcional (muitas vezes so necessrios vrios ICs iguais para se obter
o esquema eltrico/lgico). Atualmente, investigadores procuram desenvolver tcnicas
no invasivas de efetuar engenharia inversa em ICs [2].

A. Desencapsulamento e separao das camadas


A primeira etapa do processo de extrao do circuito de um IC o seu
desencapsulamento, isto , a remoo da camada exterior do IC para um acesso mais
fcil as camadas onde esto os semicondutores (camadas de interesse). A forma mais
comum de remoo da camada exterior a imerso do IC numa soluo cida que
dissolve o invlucro mas no danifica o material semicondutor ou dieltrico. Circuitos
com encapsulamento cermico ou hermtico podem necessitar de tcnicas diferentes,
tais como tratamento mecnico e/ou trmico ou at mesmo o polimento da camada de
cermica [10], [12].
A separao das camadas do circuito (camadas na ordem dos m) feita na
maioria dos casos com recurso a um dos seguintes mtodos: decapagem a seco
(corroso), decapagem hmida e polimento. Em ICs desconhecidos ou pouco habituais
um corte transversal pode ser til numa primeira anlise, pois permitir obter informao
sobre a composio e espessura das camadas [10], [12]. As metodologias mecnicas
(polimento, por exemplo) apresentam o inconveniente de suscitar irregularidades nas
camadas, devido a zonas mais polidas que outras. Esta no uniformidade, entre outros
fatores, podem acentuar erros na etapa de recolha de imagens [20].

B. Recolha de imagens
O processo de recolha de imagens tem por objetivo a sua ampliao para que
possa ser analisada (manualmente ou atravs de software especializado) e recuperado
o circuito do IC, tendo sido os sensores ticos os primeiros a ser utilizados para captura
de imagens. A captura das imagens pode ser efetuada de forma manual ou automtica,
embora para os atuais ICs o mtodo manual j no seja indicado [10], [12].

Em paralelo com a evoluo dos ICs tambm o tamanho dos componentes


tornou-se significativamente menor que o comprimento de onda tpico da luz utilizada
pelos sensores ticos [21]. Para contornar este problema podem ser utilizadas tcnicas
de melhoramento da resoluo [21] ou utilizados microscpios [10], [12]. Para
semicondutores de dimenses inferiores a 0,18 m os sensores ticos j no possuem
resoluo suficiente e necessrio utilizar um microscpio eletrnico de varrimento
(SEM Scanning Eletron Microscopes) 3 ou outros tipos de microscpios de alta
resoluo [10], [12] e [22].

C. Deteo/anotao dos componentes e interconexes e obteno do esquema


eltrico
Com as imagens recolhidas e alinhadas a etapa seguinte identificar todos os
componentes (transstores, condensadores, dodos, portas lgicas, etc) e todas as
ligaes entre componentes e entre camadas [10], [12]. A tarefa de identificar os
componentes pode ser feita manualmente por engenheiro especializado, porm em
circuitos com dezenas de milhar de componentes considerando a carga de trabalho a
que seria sujeito o engenheiro a automatizao quase uma obrigao, com impacto
muito significativo na reduo do tempo de anlise [20].
Para realizar esta etapa automaticamente as empresas especializadas na rea da
EI possuem software personalizado para efetuar estes procedimentos e ainda exportar
o esquema eltrico/lgico, como exemplo o Chipworks ICWorks Tool Suite [23].
Projetos recentes conduziram a novos algoritmos para localizar e reconhecer portas
lgicas [20]. A localizao pode ser realizada atravs de um algoritmo que se baseia no
gradiente (variao) do nvel energia da imagem, para encontrar regies que
provavelmente contm portas lgicas, de acordo com a Figura 2.1. Como o background
de cada camada homogneo, a variao do nvel de energia da imagem baixo, logo
as zonas sem componentes so interpretadas pelo algoritmo como zonas sem interesse
[20].

Figura 2.1 Regio com portas lgicas e sua energia [20].

Aps a localizao a etapa seguinte efetuar o reconhecimento de padres que


correspondam a portas lgicas nas regies previamente definidas na etapa de
3

Os microscpios SEM utilizam um feixe focalizado de eletres de alta energia para gerar uma
variedade de sinais na superfcie das amostras slidas, que permitem determinar a morfologia
externa, composio qumica/estrutura cristalina e orientao dos materiais que a compem [22].

10

localizao. Quando encontrados os padres comparada a sua semelhana com o


padro tpico recorrendo correlao de Pearson4 [24]. Alguns erros nesta fase podem
advir da irregularidade da superfcie provocada na separao de camadas [20].
Neste ltimo mtodo descrito a obteno do esquema eltrico/lgico obtida em
dois passos: navegao e definio de ns [20]. A navegao consiste na utilizao de
um algoritmo de alinhamento de camadas adjacentes para formar um mdulo
tridimensional. Devido ao ampliamento, as dimenses das imagens aumentam e o custo
computacional deste algoritmo elevado. A funo de alinhamento utiliza pontos ncora
definidos pelo utilizador para facilitar procedimentos de deslocao das camadas
durante o processo de alinhamento [20]. A definio de ns realizada para definir as
ligaes entre componentes do IC e baseiam-se na identificao de quatro tipos de ns
diferentes [20]:

Beginning: ponto utilizado para uma sada de uma porta lgica;


Corner: utilizados para unir duas pistas condutoras;
Divergent: utilizados para unir mais de duas pistas condutoras;
Terminal: onde o n termina, usualmente numa entrada de uma porta lgica.

Uma vez encontradas todas as conexes, o esquema eltrico/lgico gerado


automaticamente num formato profissional, como por exemplo Verilog [20].

D. Verificao e anlise do circuito obtido


A etapa final do processo de recuperao do circuito interno de um IC a verificao
e anlise do circuito obtido. A verificao consiste em detetar curto-circuitos, portas
flutuantes, circuitos sem entradas ou sadas, entre outras violaes das regras dos
circuitos eltricos. A organizao dos esquema eltrico/lgico pode ser importante para
que o circuito fique compreensvel, pois mesmo para engenheiros com experincia na
rea pode ser difcil compreender um esquema eltrico/lgico com os componentes
distribudos de forma pouco usual [10], [12].
A anlise pode ser feita baseada no design tpico dos ICs (j existem ferramentas
de software capazes e detetar pares diferenciais ou espelhos de corrente) e o resultado
final pode ser apresentado de diversas formas: folha de caractersticas (datasheet),
artigos tcnicos, patentes, entre outros. No resultado final ainda podem ser includos
contedos como diagrama de blocos, diagramas temporais e as equaes do circuito
[10], [12].

O coeficiente de correlao de Pearson varia no intervalo [1,1] e uma medida de


dependncia linear entre duas variveis aleatrias de valores reais. Historicamente a primeira
medida de correlao e ainda uma das mais utilizadas [24].

11

E. Tcnica no-invasiva de reconhecimento de elementos de um circuito integrado


Como j referido anteriormente neste documento as tcnicas tradicionais de EI so
altamente invasivas e destrutivas. Recentemente foi desenvolvida uma tcnica no
invasiva para detetar os componentes de um IC, baseada numa varredura com um
microscpio de varrimento laser (resoluo limite inferior a 0,065 m) do IC e numa
aproximao apoiada num algoritmo de aprendizagem, de acordo com a Figura 2.2 [2].

Figura 2.2 Diagrama geral do funcionamento de um mtodo no invasivo [2].

Apesar de inovador, este mtodo ainda possui uma limitao tcnica importante:
necessrio um conhecimento prvio do IC, nomeadamente do layout, para que a
navegao e interrogao do IC tenha sucesso. Assim sendo, nos casos onde essa
informao no est disponvel, necessria a utilizao das tcnicas tradicionais da
EI (tcnicas invasivas) [2].
O reconhecimento de componentes pode ser realizado em dois modos: janela
deslizante ou deteo de componentes. No caso da janela deslizante o reconhecimento
envolve a digitalizao densa do IC e localizao dos pontos de interesse, ao passo que
no modo de deteo de componentes realizada uma primeira varredura para deteo
de pontos de interesse e posteriormente realizada uma digitalizao densa das reas
de interesse, poupando assim recursos de memria [2].
A aprendizagem consiste num detetor treinado de exemplos positivos (aqueles que
geralmente correspondem a um ponto de interesse) e exemplos negativos (aqueles que
geralmente no correspondem a um ponto de interesse). O detetor ao longo da sua
operao pode memorizar mais exemplos positivos e negativos, aumentando assim o
seu conhecimento [2].
Este mtodo ainda apresenta as suas limitaes, no entanto um passo importante
no estudo de mtodos no invasivos na engenharia inversa de IC, que permitir que o
IC analisado se mantenha funcional aps sujeito a anlise [2].

2.2.2.4. Engenharia inversa de placas de circuito impresso


A engenharia inversa de placas de circuito impresso (PCB Printed Circuit
Board) uma atividade j praticada h algumas dcadas, sendo um tipo de circuito onde
as tcnicas manuais so mais simples de executar. No entanto, do ponto de vista da
engenharia, o objetivo automatizar os processos e j existem processos automticos
(ou semi-automticos) associados a programas CAD (Computer Aided Design) para

12

obteno do circuito de uma PCB. Os mtodos mais comuns so para PCBs com cobre
em uma ou duas camadas e so compostos pelas seguintes etapas (Figura 2.3) [25],
[26]:

Aquisio de dados e digitalizao da imagem da PCB;


Processamento da imagem e vectorizao para utilizao em programas
CAD;
Deteo de ligaes e componentes;
Gerao do esquema eltrico;
Unio dos dados das camadas (caso a PCB tenha camada de cobre em
ambos os lados)
Fabricao, teste e anlise ao circuito.

Figura 2.3 Etapas para extrao do circuito de uma camada de uma PCB atravs de tcnicas
automticas de EI [26].

Existem ainda mtodos para obter o circuito de uma PCB e converter para
Verilog HDL (Hardware Description Language) baseado num gerador automtico de um
modelo de Verilog HDL (AVMG Automatic Verilog HDL Model Generator) [27].

A. Aquisio de dados e digitalizao da imagem da PCB


A primeira fase da recuperao de um circuito de uma PCB consiste na preparao
e varrimento com sensor tico da PCB para obteno de uma imagem de cada camada
no formato digital.
A preparao consiste em colocar a placa pronta a ser digitalizada, existindo duas
variantes do mesmo mtodo: digitalizao da PCB com todos os componentes [25] ou
remoo dos componentes e limpeza da solda aps primeira digitalizao detalhada
para localizao e recolha de informao sobre os componentes [26]. A ltima etapa da
preparao consiste em colocar a PCB sobre um fundo preto, de forma a evitar reflexes
de luz [26] e permitir distinguir com facilidade os furos da PCB, atravs da diferena de
cor entre o fundo preto e o cobre [25].
A digitalizao da PCB (com ou sem componentes) efetuada geralmente com
sensores ticos (no necessrio resoluo to alta como no caso dos circuitos
integrados) embora as imagens recolhidas sejam de alta resoluo (por exemplo em

13

[26] referida a utilizao de um scanner com resoluo de 3200x6400 DPI e


profundidade de cor de 48 bits, permitindo 281 trilies de cores possveis) [25], [26].

B. Processamento de imagem e edio em programas CAD


Tal como no caso dos circuitos integrados, a etapa de processamento de imagem
fundamental na extrao do circuito. No caso da EI para recuperao de circuitos de
PCB existem trs passos importantes: converso da imagem da cor real para escala de
cinzentos, filtro de rudo e deteo de bordas [26].
A converso 5 para uma escala de cinzentos consiste, como o nome indica, na
converso de cada pixel colorido para uma tonalidade de cinzento, reduzindo de um
conjunto de cores para um valor de intensidade numa escala nica (escala de cinzentos)
[25], [26].
A filtragem de rudo um processo preliminar em qualquer aplicao de
processamento de imagem e visa corrigir alguns defeitos ocorridos na recolha de
imagem, usualmente devido a perda de dados durante a transmisso, reflexo imprpria
ou absoro da luz em superfcies irregulares ou onduladas [26].
Aps a filtragem a etapa seguinte a deteo de bordas (traduo da expresso
inglesa edge detection) que consiste na deteo de variaes bruscas na intensidade
da imagem e essencial na deteo de pistas e buracos [25]. O software MatLab [28]
uma ferramenta importante e poderosa para a deteo de bordas6 [25].
A vectorizao das imagens processadas uma transformao importante para
efetuar posteriormente o reconhecimento de pistas e/ou componentes. A vectorizao
das imagens fundamental ainda para futuras anlises ou compatibilidade com
programas CAD [26]. [29][34]

C. Deteo de ligaes e componentes

Esta etapa apenas significativa no mtodo onde os componentes no so


removidos.
As ligaes so detetadas de forma quase instantnea, isto , correspondem s
zonas onde existe cobre. Os componentes so encontrados por comparao da
pegada de um componente com uma biblioteca de componentes padro (por vezes
existem algoritmos de rotao para permitir maior eficcia na comparao).
igualmente importante que as duas imagens do componente a ser comparadas tenham
5

Na converso comum ser utilizado o algoritmo K-means [29] para realizar a converso para
escala de cinzentos e o mtodo de Otsu [29] para estabelecer um limiar que permita classificar
cada pixel como cobre ou substrato (material no condutor) [25].
6
Os mtodos mais utilizados para deteo de bordas so: aproximao de Sobel [30],
aproximao de Prewitt [31], aproximao de Robert [32], mtodo de Canny [33] e o Laplaciano
do mtodo Gaussiano [34].

14

a mesma luminosidade, situao que implica que s vezes sejam adicionados pixis
pretos a uma das imagens [25].

D. Gerao do esquema eltrico


No mtodo onde os componentes so removidos, o resultado do processamento
de imagem em escala de cinzentos consiste na melhor aproximao ao circuito contido
na PCB, dado que os componentes so removidos e adicionados manualmente nas
novas cpias do circuito analisado [26].
No caso onde os componentes no so removidos o esquema eltrico gerado
aps a identificao dos componentes e ligao de cada pino pista condutora
correspondente [25]. Em alguns casos o resultado final pode ser apresentado na forma
apresentada na Figura 2.4

Figura 2.4 Formato possvel de sada de dados [25].

Uma sada de dados na forma de esquema eltrico pode igualmente ser


possvel, dependendo das caractersticas do software utilizado.

E. Unio das camadas


Esta etapa exclusiva para as PCBs com duas camadas de material condutor.
Tendo sido obtido, de forma independente, o esquema eltrico de cada camada,
a relao entre duas camadas da mesma PCB encontrada atravs dos furos presentes
no esquema eltrico de cada camada, atravs de quatro etapas [25]:

Encontrar na camada superior a pista que contem o furo;


Encontrar o furo correspondente na camada inferior;
Encontrar na camada inferior a pista que contem o furo;
Mover para a camada superior a(s) pista(s) conectada(s) ao furo, de forma
a formar um esquema eltrico nico.

Nos casos onde um furo no tem correspondncia na outra camada,


usualmente assumido que a deteo do furo foi falsa e ignorada essa informao [25].

F. Fabricao, teste e anlise ao circuito


Esta etapa a etapa final no processo de engenharia inversa de uma PCB. O
fabrico de uma cpia da placa analisada pode ser realizado utilizando mtodos comuns
de fabrico em funo do resultado final fornecido pelo software utilizado. Se o resultado

15

final for o circuito eltrico de uma forma grfica o circuito transferido para a nova PCB
com recurso a tcnicas de remoo do material condutor, baseadas no uso de persulfato
de amnio ((4 )2 2 8 ) e cloreto de ferro (2 ) [26]. Caso o formato de sada seja
um ficheiro do tipo GERBER7 ento o fabrico ser automtico, sendo apenas necessrio
transferir o ficheiro para a mquina de fabrico [26].
No processo de fabrico importante garantir que os componentes utilizados
possuem todos os requisitos dos componentes originais. Aps o fabrico testada a
funcionalidade do circuito para verificar se o circuito cpia opera da mesma forma que
o circuito original. Se o resultado do teste for positivo ento pode considerar-se que o
circuito foi copiado com sucesso, caso contrrio devem ser repetidos os passos
descritos desde o ponto B desta seco [26].

G. Transformao do circuito de uma PCB em linguagem HDL


Atualmente existem tcnicas para transformar um circuito contido numa PCB em
cdigo Verilog HDL baseado num gerador automtico de modelo Verilog HDL, ou seja,
consiste numa metodologia para converter dados para um formato tecnolgico mais
recente [27].
Em [27] so referidos dois mtodos para efetuar esta converso: converso direta
para a nova tecnologia (HDL) do circuito existente ou para recuperao do esquema
eltrico e funcionamento do circuito atravs de tcnicas de EI anlise e melhoramento
do circuito antes da converso para a linguagem de descrio de hardware
(reengenharia). A Tabela 2.1 apresenta de forma mais detalhada os requerimentos
necessrios para cada um dos mtodos. [35], [36]

MTODO I

MTODO II

Resumo

Consiste numa converso


automtica para a nova
tecnologia (HDL)

Realizada engenharia inversa e


reengenharia antes da migrao para
HDL

Requerimentos

Tabela 2.1 Mtodos de converso/migrao para Verilog HDL [27].

- Informao tcnica completa


necessria (esquemtico requerido);
- Ligaes ou cdigo ABEL 8
necessrios;
- Converso a partir de TTL ou PLD

- Nenhuma informao tcnica requerida


(esquemtico no requerido);
- Informao incompleta, sistemas
modificados ou reparados no so um
problema;
- Converso a partir de TTL

O formato GERBER [35] um formato standard e contm dados sobre a informao a ser
transferida para uma PCB baseado num sistema de coordenadas. Toda a informao relativa
forma e tamanho das pistas, furos e outras caratersticas est contida no ficheiro GERBER.
8 A linguagem de descrio de hardware ABEL permite escrever projetos digitais com equaes,
tabelas de verdade, diagramas de estado, ou qualquer combinao dos trs, otimizar e simular
o projeto sem especificar um dispositivo ou a atribuio de pinos [36].

16

A Figura 2.5 apresenta a grande diferena entre os mtodos I e II sob a forma


de diagrama de blocos.

Figura 2.5 Diagrama de blocos da converso para linguagem HDL [27].

Um sistema AVMG (Automatic Verilog Model Generator) constitudo


basicamente por quatro subsistemas (ver Figura 2.6) [27]:

Anlise de imagem;
Gerador grfico;
Gerador de ligaes;
Gerador de cdigo HDL.

Nesta tcnica assumido que a PCB sobre anlise apenas possui camada
condutora de um ou dois lados e nunca PCBs do tipo waffer [27].

Figura 2.6 Arquitetura de um gerador automtico de modelo Verilog HDL (AVMG) [27]

As tcnicas de aquisio, processamento e anlise de imagem utilizadas num


AVMG so as tcnicas tradicionais, j anteriormente descritas, exceo da anlise
dos ICs contidos na PCB. Este sistema possui uma base de dados com informao de
uma vasta gama de ICs e bibliotecas TTL. O sistema utiliza um software de
reconhecimento de carateres (OCR Optical Character Recognition) para identificar o
nmero, tipo e/ou famlia de cada IC, sendo auxiliado por fontes externas de
identificao em casos de maior dificuldade [27].
O gerador grfico sintetiza de forma grfica a informao extrada da anlise da
imagem (essencialmente as ligaes), formando um circuito primitivo [27].

17

Aps um circuito primitivo definido, o gerador de ligaes elabora um relatrio


onde descreve todas as ligaes do sistema, como exemplificado na Figura 2.7 a), tendo
j nesta fase a capacidade de transformar os dados contidos no grfico num formato
GERBER [27].
A gerao do cdigo feita em duas etapas: a reunio das informaes
necessrias (relatrio de ligaes e informao dos ICs) e a converso para cdigo
Verilog HDL, como apresentado na Figura 2.7 b) [27].

Figura 2.7 Gerador de cdigo Verilog HDL: a) Gerador de ligaes b) Gerador de cdigo
HDL [27].

No produto final so utilizadas variveis globais de controlo do tempo de


simulao, includas no Verilog, de forma a que tempos de atraso interno dos ICs sejam
tidos em conta [27].

2.2.2.5. Engenharia inversa baseada em algoritmos para extrao do


comportamento

A EI baseada em algoritmos uma tcnica que favorece a automatizao e


menos invasiva que a maioria das tcnicas descritas anteriormente. A bibliografia
existente nesta rea de estudo mostra que as tcnicas de EI baseadas em algoritmos
destinam-se atualmente a circuitos digitais [9], [11], [37].
As tcnicas de EI baseadas em algoritmos, de uma forma geral, utilizam trs
mtodos de reproduo do circuito original: descrio do circuito numa linguagem de
descrio de hardware formando componentes de alto nvel [11], comparao com
biblioteca de circuitos tpicos [9] e converso do circuito numa mquina de estados
finitos (FSM Finite State Machine) [11], [37].
A abordagem para circuitos digitais combinatrios e sequenciais difere, sendo
seguidamente apresentados mtodos para os dois tipos de circuitos. No entanto alguns
algoritmos descritos na seo dos circuitos sequenciais podem ser aplicados tambm a
circuitos combinatrios, dado que possvel transformar um circuito combinatrio num
circuito sequencial (quando a tabela de verdade do circuito de atribuio de estados
igual tabela de verdade de atribuio das sadas) [38].

18

A. Circuitos digitais combinatrios


a. Algoritmo I: identificao de sub-circuitos
Um dos mtodos utilizados atualmente para identificao de circuitos
combinatrios a aproximao por correspondncia funcional e consiste numa primeira
fase em identificar os ns do circuito (sub-circuitos) que coincidem com componentes
de uma biblioteca de circuitos conhecidos [9]. Por exemplo se em um determinado n
for encontrada a funo (, , ) = + + , que corresponde a um somador
completo, pode indicar a existncia de somadores multibit [9]. A anlise da funo lgica
(anlise comportamental) em detrimento da anlise estrutural do circuito representa
uma diferena significativa relativamente a outros mtodos apresentados anteriormente.
A tcnica descrita em [9] utiliza tcnicas de corte9 e correspondncia booleana
(Boolean matching) inicialmente utilizadas em tecnologias de mapeamento. Para que a
tcnica cut-enumeration seja eficiente, um sub-circuito (cut) diz-se -vivel (-feasible)
quando o nmero de inputs por porta lgica inferior a [39]. Esta tcnica eficiente
para < 6 , sendo uma limitao desta tcnica, embora circuitos mais complexos
possam ser usualmente decompostos em sub-circuitos com menos de 6 inputs. Uma
vez dividido em sub-circuitos os circuitos so agrupados em classes equivalentes
utilizando correspondncia booleana por permutao independente. Por exemplo, o(s)
n(s) que correspondem funo (, , ) = + e o(s) n(s) que correspondem
funo (, , ) = + , podem ser agrupados na mesma classe equivalente. Cada
classe equivalente pode corresponder a um circuito conhecido existente na biblioteca
[9].

b. Algoritmo II: agregao multi-bit


Tendo as funes de cada n conhecidas, a etapa seguinte utilizar um
algoritmo para identificar ns com interligaes especficas entre si, nomeadamente:
agrupar sub-circuitos com sinal de seleo comum ou agrupar sub-circuitos onde a
sada a entrada de outro sub-circuito e assim sucessivamente. Estes dois tipos de
anlises permitem identificar multiplexers/desmultiplexers ou rvores de paridade,
respetivamente [9]. [40], [41]
A agregao de ns com funes desconhecidas, mas com sinais comuns,
podem ser classificados como mdulos desconhecidos e posteriormente sujeitos a
outros algoritmos ou anlise por especialista humano [9].

Os algoritmos de corte (cut-enumeration) so, de uma forma genrica, algoritmos que dividem
circuitos mais complexos em sub-circuitos mais simples baseados numa filosofia dividir e
conquistar [40]. Este tipo de algoritmos tambm utilizado por grande parte das FPGAs para
sintetizao de hardware [41].

19

c. Algoritmo III: identificao e propagao de palavras

A agregao de ns que operam simultaneamente pode indicar a existncia de


uma palavra (dados multibit de tamanho fixo). Uma vez encontrada uma palavra, mais
palavras podem ser geradas por propagao da mesma pelas portas lgicas, ou seja,
sendo conhecida uma palavra possvel encontrar as condies para que o contedo
de seja propagado numa nova palavra , para todos os valores de [9]. O circuito
da Figura 2.8 mostra um exemplo de propagao de uma palavra.

Figura 2.8 Exemplo de propagao de palavra [9].

O circuito da Figura 2.8 consiste num seletor controlado pelo sinal , onde a
negao dos valores de 1 e 2 propagada para as sadas 1 e 2 (respetivamente)
quando = 0, caso contrrio a negao dos valores de 1 e 2 propagada para as
sadas 1 e 2 . Este tipo de propagao o objeto de anlise dos algoritmos de
propagao de palavra [9].
O algoritmo de anlise de propagao de palavra segue uma aproximao do tipo
previso e verificao. Considerando uma palavra inicial a etapa de previso
consiste em encontrar um conjunto formado pelas potenciais palavras propagadas,
atravs do agrupamento das sadas das portas acionadas por . De seguida, para cada
nova palavra ( ) existe um conjunto de sinais de controlo, que so
processados, e conectados s entradas (para um nmero pequeno de entradas) para
os quais a sada corresponde a [9].
A etapa de verificao consiste na realizao de simulao simblica10 de um
sub-circuito relevante para a propagao que est a ser analisada. Para efeitos de
simulao as entradas do sub-circuito so inicializados da seguinte forma [9]:

Cada bit de convertido para um valor simblico ;


Para cada combinao de interesse entre os sinais de controlo, todos os
valores binrios so avaliados;
As restantes entradas do sub-circuito so consideradas sem interesse
(atribudo ).

Uma simulao com um valor particular ( ) atribudo aos sinais de controlo


. Nesse caso,
considerado bem-sucedida se foi propagado para a sada ou
propaga quando a combinao ocorre, permitindo que seja testado em futuras

10

Por razes de eficincia utilizada a representao simblica onde as portas lgicas operam
, }, onde representa um valor do conjunto {0,1},
a negao de e
no domnio {0,1, ,
representa um valor desconhecido [9].

20

propagaes. Uma aproximao anloga pode ser efetuada no sentido inverso, isto ,
conhecida a palavra determinar qual a palavra e a combinao que a originaram,
permitindo assim testar propagao no sentido inverso [9].

d. Algoritmo IV: Identificao e correspondncia de mdulos


Os algoritmos baseados em diviso por sub-circuitos e anlise dos ns possuam
duas limitaes principais: cada n estava limitado a um mximo de seis entradas e a
dificuldade de identificar estruturas sem um padro interno de interconexes. O
algoritmo IV que ser descrito ultrapassa as limitaes dos algoritmos referidos
anteriormente, pois baseado numa aproximao atravs da construo de mdulos e
posteriormente relacionamento com componentes conhecidos de uma biblioteca [9].
Este algoritmo baseia-se na premissa que um circuito combinatrio opera de tal
forma que para cada palavra de entrada corresponde uma palavra de sada. Desta
forma, se for descartado todo o circuito intermdio a identificao de mdulos pode ser
efetuada com recurso a um algoritmo que efetua a comparao da palavra de entrada
e verifica a palavra de sada comparando com uma referncia predefinida existente
numa biblioteca de circuitos, averiguando se o mdulo desconhecido e o mdulo
referncia efetuam a mesma operao lgica (), de acordo com a Figura 2.9 [9].

Figura 2.9 Algoritmo de identificao e correspondncia de mdulos [9].

Este algoritmo til na deteo de somadores, subtratores, operaes booleanas


e deslocao/rotao de bits [9].

e. Algoritmo V: Anlise baseada em suporte comum


Este algoritmo deteta mdulos que no tm necessariamente entradas ou sadas
de palavras ou consistam de pequenos sub-circuitos replicados. Esta tcnica de anlise
pode ser utilizada para detetar combinaes de mdulos com uma propriedade
especfica: cada uma das sadas do mdulo depende do mesmo conjunto de entradas,
como apresentado na Figura 2.10.

Figura 2.10 Circuito tpico para aplicao do algoritmo baseado em suporte comum [9].

21

A identificao de ns de sada com suportes idnticos comea com o


agrupamento dos mesmos em classes equivalentes, agrupando dois (ou mais) ns de
sada se e s se as todas as entradas lgicas que influenciam os ns agrupados forem
as mesmas. Um algoritmo para encontrar ns aplicado aos ns da mesma classe e
origina um mdulo candidato, que posteriormente comparado com os componentes
existentes na biblioteca [9].
Este tipo de algoritmo permite detetar descodificadores, desmultiplexers e/ou
contadores, visto que em cada um dos casos as diferentes sadas dependem do mesmo
conjunto de entradas [9].

f.

Algoritmo VI: Ps-processamento de mdulos combinatrios

O algoritmo de ps-processamento tem por objetivo fundir vrios mdulos


combinatrios encontrados por outros algoritmos, formando mdulo maiores, com nvel
de abstrao maior. Os mdulos resultantes da fuso so armazenados na biblioteca
de componentes para futuras comparaes (tal como os componentes constituintes da
fuso) [9].
Um caso onde este algoritmo pode ser aplicado com sucesso quando as sadas
de um descodificador so as entradas de seleo de um multiplexer, ento ambos os
mdulos podem ser agrupados, formando um mdulo de roteamento de sinal [9].

B. Circuitos digitais sequenciais


a. Algoritmo I: identificao de contadores, registos de deslocamento e
memrias RAM
Em circuitos digitais sequenciais existem trs tipos de circuitos muito comuns:
contadores, registos de deslocamento e memrias RAM. A identificao deste tipo de
circuitos pode ser importante pois cobre uma quantidade significativa de circuitos
existentes e baseia-se em primeiro lugar numa anlise topolgica e posteriormente em
algoritmos de verificao comportamental [9].
Para que possam ser aplicados os algoritmos descritos nesta seco
necessrio um conhecimento prvio de uma descrio de alto-nvel do circuito e
interface de entradas e sadas [9].
A identificao de contadores realizada em duas etapas: numa primeira fase
aplicado um algoritmo que efetua uma anlise topolgica e identifica conjunto de latches
que cuja topologia pode corresponder a de um contador. Em segundo lugar um
algoritmo de anlise baseada numa anlise SAT (satisfatibilidade booleana) aplicado
para verificar se funcionalmente o mdulo candidato a contador cumpre as duas
condies seguintes [9]:

22

um bit transita para o nvel alto quando todos os bits de ordem inferior
se encontram no nvel alto (contador crescente) ou transita para o nvel
baixo quando todos os bits menos significativos esto no nvel baixo
(contador decrescente);

os sinais de controlo do contador (habilitao e reset) so os mesmos


para todos os bits do contador;

De uma forma analtica cada bit de um contador, representado por , tem de


satisfazer as condies lgicas da equao [9]
=

(1 2 1 )
(1 2 1 )

(2.1)

onde 1 , 2 , , 1 representam as latches do contador e os sinais , e representam


os sinais de reset, preset e habilitao, respetivamente. Pela anlise da equao (2.1)
verifica-se que cada bit do contador encontra-se no estado ativo se o algoritmo de
anlise funcional detetar uma das seguintes condies [9]:

Sinal de reset inativo, sinal de habilitao ativo, todos os bits de ordem


inferior a esto no nvel alto e o bit de ordem est no nvel baixo;
Sinal de reset inativo, sinal de habilitao ativo, algum bit de ordem
inferior a est no nvel baixo e o bit de ordem est no nvel alto;
Sinal de reset inativo, sinal de habilitao inativo e o bit de ordem est
no nvel alto;
Sinal de preset ativo.

Algoritmicamente so processados, para cada bit do contador, os cofatores11


de acordo com a equao
= ( , 1 1 ) ,
= ( , 1 1 ) ,
= ( , (1 1 ) )

(2.2)

onde pode constatar-se que e representam as situaes onde houve a alterao e


manuteno do valor de , respetivamente [9].
Pela relao entre as expresses definidas em (2.1) e (2.2) , e podem ser
reduzidos equao [9].
= ( ) ,
= ( ) ,
= .

11

(2.3)

Dadas as funes booleanas e , (, ) a funo obtida quando avaliado


sobre um domnio especificado por = 1.

23

Os sinais , e devem ser comuns a todos os bits, logo as funes , e


devem ser equivalentes. Assim sendo, o algoritmo que implementa uma anlise
topolgica pode determinar que um conjunto de latches no formam um contador se as
funes , e no forem equivalentes para todos os -bites [9].
Os algoritmos de identificao de registos de deslocamento seguem um
procedimento igual ao utilizado para deteo de contadores, diferindo apenas nas
condies. No caso de um registo de deslocamento, o estado seguinte de cada bit, ,
definido pelas condies da equao [9]
=

( 1 )

(2.4)

onde 1 representa as latches associada ao bit de ordem anterior e os sinais , e


representam os sinais de reset, preset e habilitao, respetivamente. Pela anlise da
equao (2.4) um bit de um registo de deslocamento encontra-se no nvel alto quando
se verifica uma das seguintes condies: [9]

Sinal de reset inativo, sinal de habilitao ativo e bit anterior ( 1) no


estado alto;
Sinal de reset inativo, sinal de habilitao inativo e bit no estado alto;
Sinal preset ativo.

No caso dos registos de deslocamento os cofatores so dados pela equao


= ( , 1 ),
= ( , 1 )

(2.5)

onde pode constatar-se que e representam as situaes onde houve ou no


deslocamento, respetivamente [9].
Pela relao entre as expresses definidas em (2.4) e (2.5) ento e podem
ser reduzidos equao (2.6) [9].
= ,
= .

(2.6)

De forma semelhante ao descrito relativamente aos contadores, o algoritmo


verifica se as funes e so iguais para cada bit do candidato a registo de
deslocamento.
Por fim, existe mais um circuito comum em circuitos digitais sequenciais:
memrias RAM. A identificao de memrias RAM baseia-se na deteo de latches/flipflops associados numa lgica de leitura e escrita [9].
A tcnica de identificao de memrias RAM baseada no facto de uma memria
RAM ter uma estrutura anloga a uma rvore onde as clulas de memria so as folhas
e os outputs so as razes. O algoritmo de identificao de lgica de leitura efetua a
marcao das latches/flip-flops que satisfaam as duas condies que se seguem: pelo

24

menos uma das portas se encontra marcada e a porta apenas possui uma sada [9].
Aps o algoritmo efetuar a marcao, realizada uma anlise funcional. Considerando
que as latches representadas por e correspondem s latches de armazenamento
da informao e endereo, respetivamente, identificada lgica de leitura numa
memria RAM se forem verificadas as condies [9]:

Se = (1 , , , 1 , , ) ento = ou = para qualquer valor


de ( {1, , }). Por outras palavras para cada sinal de seleo
apenas uma latch de dados ( ) propagada para a sada;
Todas as latches so propagadas para a sada ( = ou = ) para
todos os valores de apropriados.

A identificao de lgica de escrita baseia-se na estrutura apresentada na Figura


2.11 baseada num multiplexer 2:1 que em funo do sinal de habilitao de escrita
guarda o ltimo valor ou associa um novo valor [9].

Figura 2.11 Lgica de escrita de memria RAM, onde e representam a habilitao


de escrita e dados para escrita, respetivamente [9].

Um algoritmo utilizado para identificao de lgica de escrita que verifica as


seguintes propriedades [9]:

Todos os sinais de habilitao de escrita podem ser ativados: 0;


Para dois sinais de habilitao de escrita da mesma memria RAM no
existem dois sinais diferentes, isto , necessrio verificar que =
0 = 0, .

Se as duas condies anteriores forem verificadas, identificada lgica de escrita


de memrias RAM. Note-se que neste caso foi considerado que a escrita era efetuada
quando o sinal de habilitao de escrita se encontra no nvel alto, no entanto o algoritmo
pode ser adaptado para a situao inversa [9].

b. Algoritmo II: Algoritmo de comparao de padres


O algoritmo descrito nesta seco possui algumas tcnicas semelhantes ao
Algoritmo I descrito na seco de circuitos combinatrios. Considerando um circuito
desconhecido = (, , ) onde , e representam as entradas (inputs), sadas
(outputs) e a definio formal do comportamento do circuito, respetivamente, e uma
biblioteca de componentes abstratos = {1 , 2 , , } . O objetivo encontrar um

25

circuito = (, , ) onde equivalente a e os componentes abstratos de . A


aplicao deste algoritmo requer vrias etapas [11]:

Definio da biblioteca: construo de uma biblioteca de componentes


abstratos ;
Identificao de blocos funcionais: Diviso de um circuito desconhecido
em blocos funcionais (sub-circuitos) 1 , 2 , , , onde cada um
candidato para comparao com os componentes da biblioteca ;
Comparao com a biblioteca de componentes: dado um bloco funcional
candidato determinar se existe em um componente que ultrapasse
com sucesso uma das verificaes descritas em seguida.

Uma das verificaes que realizada consiste em analisar se todas as entradas


e sadas de um componente abstrato se encontram na especificao do circuito
desconhecido . Se essa correspondncia existir efetuada a verificao se satisfaz
e caso a verificao seja concluda com sucesso reportada a correspondncia entre
e , caso contrrio prosseguida comparao com outro componente da
biblioteca [11].
Em alguns casos o nmero de entradas e sadas pode diferir entre e , no
entanto podem realizar a mesma funo lgica, sendo utilizado ento um procedimento
heurstico. Considerando que os eventos ,, , provocam a alternncia entre
estados de funcionamento (Figura 2.12 a)) por testes aos nvel do hardware possvel
extrair o padro de respostas a diferentes eventos, contruindo um grfico de padro do
circuito, como apresentado na Figura 2.12 b) [11]. [42], [43]

Figura 2.12 Diagramas de transies e padres [11].

A comparao com os componentes abstratos passa a ser realizada ao nvel


dos grficos de padro que no caso dos componentes da biblioteca podero ser
obtidos por software de simulao ou j se encontrarem armazenados de comparaes
prvias. Assim sendo quando o circuito desconhecido e o componente abstrato
possuem o mesmo grfico de padro, mesmo que o nmero de entrada e sadas no
seja idntico, considerado que corresponde a 12 [11].

12

Mais informao sobre diferentes formas de construo grficos padro e compatibilidade


entre diferentes grficos padro podem ser consultadas em [11], [42], [43].

26

c. Algoritmo III: Algoritmo de extrao de mquina de estados de um circuito


O algoritmo de extrao de uma mquina de estados finitos de um circuito baseiase na aplicao de seis sub-algoritmos distintos, que operam em duas estratgias
distintas de anlise: identificao da propagao dos sinais de habilitao e identificao
de componentes fortemente conectados [37].
A funo de cada sub-algoritmo encontra-se na Tabela 2.2:
Tabela 2.2 Sub-algoritmos para extrao de mquina de estados finita [37].

ALGORITMO
FUNO
1
Identifica potenciais registos de estado
Distino entre os registos de estado reais dos potenciais registos de
2
estados
Agrupamento de registos de acordo com a partilha de sinais de
3
habilitao
4
Agrupa registos de estado de acordo com os grupos identificados
Identifica circuitos de lgica combinatria que formam realimentao
5
dos registos de estado
6
Anlise de componentes fortemente conectados
O algoritmo geral pode ser mais bem compreendido pelo fluxograma da Figura 2.13.

Figura 2.13 Funcionamento do algoritmo de extrao de mquinas de estado finitas [37].

A identificao de potenciais registos de estado e distino entre registos de


estado reais de registo de estados potenciais (Algoritmos 1 e 2) baseia-se nos registos
onde a sada retorna a entrada atravs de circuitos combinatrios (realimentao) [37].
No entanto, nem todos os registos realimentados devem ser considerados
registos de estado uma vez que existem circuitos tais como acumuladores que
estruturalmente so realimentados, no entanto tm funes distintas de uma mquina
de estados finita [37]. Assim sendo, aplicado um algoritmo de eliminao de potenciais
registos de estado (Algoritmo 2) baseado nas aplicaes tpicas de uma mquina de
estados finita (controlo de circuitos). O Algoritmo 2 examina cada potencial registo de
estado assinalado pelo Algoritmo 1 e identifica quais os registos que se encontram
conectados a um (ou mais) sinal de controlo de um circuito e declarando-os como
registos de estado e eliminando os que no satisfazem a referida verificao [37].
O Algoritmo 3 identifica quais os registos que so controlados pelo mesmo sinal
de habilitao, agrupando os registos que partilham o mesmo sinal de habilitao e

27

identificando os registos restantes como solos. No contexto da extrao de uma


mquina de estados finita, pouco provvel que registos controlados por sinais de
habilitao diferentes pertenam mesma mquina de estados [37].
O Algoritmo 4 intersecta os registos de estado identificados de formas distintas
pelos Algoritmos 2 e 3, de forma a separar registos de estados de mquinas de estados
finitas distintas (cruzamento de informao dos dois algoritmos permite maior fiabilidade
na distino) separando novamente em grupos de registos de estado e registo no
agrupados [37].
O Algoritmo 5 identifica a lgica combinatria com realimentao presente no
circuito, de forma a inferir de que as diferentes combinaes iro influenciar a sada da
mquina de estados finita [37].
O Algoritmo 6 deteta componentes fortemente conectados (Figura 2.14)
permitindo identificar registos da mesma mquina de estados que no tinham sido
identificados nas etapas anteriores [37].

Figura 2.14 Dispositivos fortemente conectados [37].

Se dois registos so afetados pelo mesmo circuito combinatrio ento os dois


registos podem ser agrupados como pertencentes mesma mquina de estados finita
[37]. Pela anlise da Figura 2.14 possvel constatar que o registo R1 realimentado
pelo circuito combinatrio que contm as portas G1 e G2 e o registo R2 realimentado
pelo circuito combinatrio que contm as portas G2 e G3, isto , a porta G2 comum
ao circuito de ambos os registos, logo so considerados componentes fortemente
conectado e por conseguinte R1 e R2 so agrupados como pertencentes mesma
mquina de estados finita [37].

2.3. Sintetizao de circuitos digitais


A estrutura do cdigo em linguagem de descrio de hardware tem influncia na
obteno de um esquema lgico que reproduza o comportamento descrito no cdigo
(sintetizao).
A reviso das ferramentas j existentes para sintetizao de circuitos atravs de
cdigo VHDL e as estruturas de cdigo mais indicadas para diferentes situaes, podem
ser consultadas no Anexo C deste documento.

28

3. Arquitetura do sistema e algoritmos de


replicao de circuitos digitais
3.1. Introduo
Neste captulo ser apresentada a arquitetura do sistema desenvolvido bem
como descritos os algoritmos desenvolvidos desde a aquisio e processamento dos
dados (medies ao circuito sob anlise) at obteno da rplica.
O circuito, a descrever, deve encontrar-se em funcionamento durante o processo
de anlise e descrio, sendo replicadas unicamente as funcionalidades observadas,
ou seja, este sistema apenas garante uma rplica capaz de substituir o circuito analisado
para operao num sistema igual ao aquele onde foi analisado.
Os algoritmos desenvolvidos no utilizam qualquer biblioteca de circuitos
conhecidos ou registo de circuitos previamente analisados, visto que nos moldes de
operao do sistema (dependncia do ambiente onde est inserido o circuito a replicar)
o mesmo circuito integrado pode originar diferentes rplicas. A no utilizao de
bibliotecas tambm a inovao que se pretende introduzir comparativamente a
sistemas de engenharia inversa baseados em algoritmos existentes, desenvolvendo um
sistema com maior capacidade de anlise ao invs de comparao.

3.2. Funcionamento geral e arquitetura do sistema


Atualmente, existe uma grande variedade de circuitos integrados, pelo que o
sistema de replicao dever efetuar operaes de triagem e anlise. De uma forma
genrica, o sistema executa sequencialmente as seguintes aes:

Identificao dos pinos destinados a alimentao: identifica os pinos


destinados a alimentao do circuito e sinais constantes, excluindo-os da
restante anlise e determinando uma referncia para as medies;
Despiste de sinais analgicos: executa uma procura por sinais analgicos
de forma a garantir que no est a replicar circuitos para os quais no foi
projetado. Quando encontrados sinais analgicos a execuo enviado
um aviso ao utilizador (no entanto a replicao prossegue sem garantias
de sucesso);
Anlise de circuitos digitais combinatrios: efetua uma anlise para
verificar se o circuito sob anlise combinatrio. Em caso afirmativo
aplica algoritmos de anlise combinatria, caso contrrio inicia
procedimentos de replicao de circuitos sequenciais;
Deteo do sinal de relgio: Aplicvel apenas a circuitos sequenciais
sncronos, esta etapa destina-se a descobrir o pino do sinal de relgio;
Deteo do sinal de reset: Aplicvel apenas a circuitos sequenciais, esta
etapa destina-se a descobrir o pino do sinal de reset;
Anlise de circuitos digitais sequenciais: Aplicvel apenas a circuitos
sequenciais, esta etapa destina-se execuo de algoritmos de anlise
sequencial;

29

Escrita do ficheiro VHDL: aps determinado o comportamento do circuito


escrito um ficheiro de descrio do circuito na linguagem VHDL.
O funcionamento genrico do sistema sintetizado pelo fluxograma da Figura
3.1.

Figura 3.1 Funcionamento geral do sistema de replicao de circuitos integrados digitais.

Pela observao do fluxograma verifica-se que numa primeira fase so


efetuadas aes de triagem sendo apenas aplicados os algoritmos de anlise aps
identificado o tipo de circuito, agilizando o processo de anlise desta forma.
O sistema desenvolvido assenta numa estrutura modular, onde cada mdulo
desempenha uma funo especfica. Os diferentes mdulos so independentes e
apenas partilham a estrutura de dados existindo um mdulo responsvel por realizar a
gesto de todos os mdulos durante a execuo dos algoritmos, garantindo a
sequencialidade pretendida para as operaes e o acesso coordenado estrutura de
dados.
O armazenamento dos dados realizado em ficheiros de texto, com estrutura e
organizao dos dados definidas, de tal forma que os diferentes mdulos realizam a
leitura e escrita dos dados baseados exclusivamente na organizao definida. Em
alternativa os dados poderiam ser guardados numa base de dados. No entanto como
os dados recolhidos tm um interesse apenas temporrio (durante a execuo) e
destinam-se a uso local exclusivamente o armazenamento em ficheiros uma soluo
que satisfaz as necessidades do sistema.
A estrutura modular implementada consiste em diferentes ficheiros executveis
(um para cada mdulo). A utilizao de uma estrutura modular permite o sistema
beneficiar de algumas vantagens, tais como:

Concebido para fcil otimizao: o sistema pode ser otimizado


substituindo apenas um mdulo por um outro que execute a mesma
funo. Para o efeito no necessrio qualquer conhecimento do cdigo
fonte do mdulo a otimizar, apenas necessrio conhecimento da
estrutura de dados e funo desempenhada pelo mdulo;
Versatilidade de conceo: Cada mdulo pode ser programado na
linguagem mais adequada funo de cada mdulo, dado que no existe
partilha de variveis entre mdulos e do ponto de vista do coordenador
do sistema apenas o ficheiro executvel relevante ao processo;
Controlo do fluxo de dados: Mdulos mais pequenos permitem melhor
controlo do fluxo de dados;

30

Facilidade de anlise e evoluo: a implementao modular facilita a


anlise e compreenso do sistema, fator importante na otimizao. A
incluso de novas funcionalidades no sistema evoluo pode ser
efetuada atravs da juno de novos mdulos e adaptao do mdulo
coordenador.
Na Figura 3.2 encontra-se apresentada a estrutura modular do sistema
implementado.

Figura 3.2 Arquitetura modular do sistema de replicao de circuitos integrados digitais.

Nos mdulos de interface com o utilizador e implementao de funcionalidades


de comunicao com o sistema de aquisio de dados a linguagem utilizada foi o C# (C
Sharp) de forma a beneficiar da orientao a objetos que esta linguagem disponibiliza.
Nos mdulos de anlise e processamento massivo de dados foi utilizada a linguagem
C, dado que o baixo nvel de implementao utilizado nesta linguagem permite um
controlo e gesto mais precisos, nomeadamente na gesto da memria.
A comunicao entre o software e o hardware realizada via porta COM
(tambm designada de porta srie) e foram desenvolvidos algoritmos para envio e
receo de dados.
Nas subsees seguintes deste captulo sero descritos os algoritmos
implementados (software). No captulo 4 ser descrito o sistema de aquisio de dados
(hardware).

31

3.3. Parmetros de configurao inicial do sistema


O sistema implementado possui a capacidade de identificar e ajustar
automaticamente vrios parmetros de operao sem interveno do utilizador, no
entanto existem parmetros que tm necessariamente de ser definidos pelo utilizador
no incio do processo de replicao. Na Tabela 3.1 encontram-se apresentados e
descritos os parmetros configurveis pelo utilizador.
Tabela 3.1 Parmetros de configurao inicial do sistema.

Parmetro
Diretoria de destino
Nome do ficheiro
Nmero de pinos
Tolerncia (V)
Nmero de amostras
digitais
Nmero de amostras
analgicas
Porta COM

Descrio
Define a diretoria onde sero armazenados todos os
ficheiros contendo dados temporrios gerados pelo
sistema, bem como a localizao do ficheiro VHDL gerado.
Define o nome do ficheiro VHDL.
Define o nmero de pinos do circuito a analisar.
Define a tolerncia mxima admissvel em torno de uma
medio (vlido para medies analgicas).
Define o nmero de amostras a realizar em cada medio
digital.
Define o nmero de amostras a realizar em cada medio
analgica.
No caso da existncia de vrios dispositivos ligados ao
computador via porta COM o utilizador deve especificar
qual das portas se encontra conectada ao sistema de
aquisio de dados.

Estes dados so armazenados num ficheiro de configuraes onde todos os


mdulos podem aceder e extrair as configuraes necessrias para o seu
funcionamento. A implementao das inicializaes pode ser consultada no Anexo D
(seo D.1).

3.4. Algoritmos de identificao dos pinos destinados a


alimentao
3.4.1. Funo do algoritmo
A primeira etapa do processo de replicao de um circuito integrado digital
detetar pinos cuja tenso seja sempre constante o que ir permitir determinar o pino que
ser utilizado como referncia (GND) e remover os pinos com comportamento constante
do restante processo de anlise.
A tenso nos pinos destinados a alimentao carateriza-se por ser constante
(desprezando as pequenas variaes) e no tem influncia no comportamento lgico do
circuito. Da mesma forma, infere-se que os pinos onde a tenso sempre constante,
mesmo no sendo pinos destinados alimentao do circuito, no interferem no
comportamento lgico do circuito. Baseado neste princpio, os algoritmos desenvolvidos

32

nesta etapa classificam todos os pinos onde a tenso constante como pinos de
alimentao, ou seja, um pino de tenso constante no destinado a alimentao
classificado como pino de alimentao mesmo no o sendo no circuito em anlise, pois
a sua influncia no comportamento lgico similar a um pino de alimentao. Ao(s)
pino(s) com a tenso(es) constante(s) mais baixa(s) atribuda a designao de
referncia GND.
Para deteo dos pinos destinados a alimentao so utilizados dois mdulos
de software, de entre os mdulos apresentados na Figura 3.2:

Mdulo gerador de instrues para aquisio de medies diferenciais


analgicas;
Mdulo de algoritmos de identificao de alimentaes.

3.4.2. Dados requeridos pelo algoritmo


A deteo dos pinos destinados a alimentao efetuada com base na anlise
entre a relao da tenso entre cada par de pinos do circuito integrado sob anlise
(medies diferenciais). Considerando que a cada pino o circuito sob teste atribudo
um nmero e a tenso diferencial dada por
=

(3.1)

onde e representam dois pinos do circuito sob teste, e sabendo que


=

(3.2)

ento para a execuo do algoritmo de deteo de tenses constantes necessrio


conhecer todas as tenses para todos os valores de e que respeitem as
condies
1 2 > ( 1)

(3.3)

onde representa o nmero de pinos do circuito integrado.


As condies definidas em (3.3) representam todas as combinaes dos valores
de e para os quais se obtm todas as tenses diferenciais entre cada par possvel
de pinos, com o mnimo de combinaes. O algoritmo utiliza sempre o menor nmero
de combinaes possveis que garantam toda a informao, logo o nmero de medies
necessrias para execuo dos algoritmos de deteo de alimentaes dado por
1

(3.4)

=1

onde e representam o nmero de amostras por cada par de pinos e o nmero de


pinos do circuito, respetivamente.

3.4.3. Gerao de instrues para aquisio de medies diferenciais


analgicas

33

O mdulo gerador de instrues para aquisio de medies diferenciais


analgicas o primeiro a ser executado e tem por objetivo analisar as configuraes
iniciais e converter essa informao em instrues formatadas de forma que o mdulo
de comunicao seja capaz enviar essas mesmas instrues ao sistema de aquisio
de dados e assim sejam obtidas as medies descritas na subseco 3.4.2. Este mdulo
possui ainda a funo de converter os dados recebidos do sistema de aquisio de
dados e efetuar uma converso para que as medies fiquem com uma organizao
compatvel com as requeridas pelos algoritmos de identificao de alimentaes. O
fluxograma da Figura 3.3 ilustra o funcionamento geral deste mdulo.

Figura 3.3 Funcionamento do mdulo gerador de instrues para aquisio de medies


diferenciais analgicas.

A converso dos valores recebidos ( ) consiste em aplicar um fator de


correo de forma a recuperar o valor real da medio, , de acordo com a
expresso (3.5) e ajustes no encaminhamento do sinal detalhados no Anexo D (seo
D.2).
= ( + )

(3.5)

onde , e representam o fator de ajuste, fator de correo do conversor


analgico para digital e fator aplicado pelo circuito de aquisio de dados13. As medies
so armazenadas em ficheiros cujo nome reflete a combinao de pinos das medies
nele contidas (measurementsPXPY.med). O mdulo dos algoritmos para deteo de
alimentaes utiliza a mesma metodologia para selecionar os ficheiros que contm os
dados pretendidos, isto , o nome completo do ficheiro o fator identificativo que permite
os mdulos envolvidos na identificao de pinos de alimentao comunicar atravs de
uma estrutura de dados vasta e baseada em ficheiros.
Em suma, o gerador de instrues para aquisio de medies diferenciais
analgicas (desenvolvido na linguagem C#) um mdulo de ligao entre um mdulo
de anlise e processamento (algoritmos de identificao de pinos com tenso constante)
e o sistema de aquisio de dados. Este mdulo foi desenvolvido na linguagem C# e o
cdigo fonte encontra-se disponvel no Anexo D (seo D.3).

13

No sistema implementado tm-se que = 2,5, = 5/1024 e = 6. Mais detalhes


sobre os fatores de converso sero apresentados no captulo 4 deste documento.

34

3.4.4. Anlise e processamento dos dados


O princpio utilizado para detetar tenses constantes baseia-se no valor mdio
da diferena de tenso entre pinos, e na distribuio das amostras recolhidas durante o
processo de medio. A Figura 3.4 mostra a distribuio tpica das amostras em funo
de diferentes combinaes de pinos.

Figura 3.4 Distribuio tpica das amostras analgicas diferenciais para diferentes pares de
pinos.

Pela anlise da Figura 3.4 possvel verificar que quando so efetuadas


medies a um par de pinos destinados alimentao do circuito a concentrao de
amostras em torno de um nico valor (VCC), ou seja, nesta situao temos

(3.6)

onde representa o valor mdio das amostras recolhidas para a combinao de


pinos em anlise. Se considerarmos o caso onde pelo menos um dos pinos da
combinao medida no se destina a alimentao (ou no for constante), ento o valor
mdio das amostras dado por.

2
considerando que o circuito analisado digital.

(3.7)

Pelas anlises que conduziram s equaes (3.6) e (3.7) possvel inferir que
perante medies de combinaes de pinos destinados a alimentao (ou constantes)
as amostras se localizam em torno do valor mdio da diferena de tenso entre os pinos.
Assim sendo, para que uma combinao de pinos seja classificada pelo algoritmo como
pinos destinados a alimentao, todas as amostras da medio devem respeitar a
condio
+ ,

= {0, 1, , }

(3.8)

onde representa a diferena de tenso mdia entre o par de pinos em anlise,


o desvio mximo permitido e o nmero de amostras disponveis, ou seja, quando

35

analisados dois pinos destinados a alimentao todas as amostras devem estar contidas
no intervalo .
O desvio mximo permitido, , definido pelo utilizador (parmetro Tolerncia
da Tabela 3.1) e guardado nas configuraes iniciais. Para que o algoritmo funcione
corretamente, o valor de definido pelo utilizador deve respeitar a expresso

(3.9)
|
2
para um bom funcionamento do algoritmo e considerando valor tpicos para o VCC.
< |

O algoritmo desenvolvido aplica o princpio de funcionamento descrito nesta


seo: calcula o valor mdio das amostras da combinao de pinos em anlise e
compara com o intervalo . O algoritmo determina ainda qual a tolerncia
mnima que pode ser utilizada sem afetao dos resultados (para utilizao futura) bem
como normaliza os resultados no final do procedimento. O fluxograma da Figura 3.5
sintetiza o funcionamento do algoritmo de deteo de alimentaes implementado.

Figura 3.5 Funcionamento geral do algoritmo de deteo de pinos destinados alimentao


do circuito ou de tenso constante.

As inicializaes efetuadas pelo algoritmo consistem na leitura das


configuraes iniciais estabelecidas pelo utilizador, de forma a conhecer que tipo de
informao deve procurar na estrutura de dados para anlise.
O clculo do valor mdio realizado para cada combinao de pinos, aps a
leitura das medies de um ficheiro, correspondente respetiva combinao. O clculo
do valor mdio para cada combinao de pinos realizado de acordo com a expresso

1
=

=1

36

(3.10)

onde e representam o nmero de amostras e o valor da amostra obtida em gsimo lugar, respetivamente.
As amostras so armazenadas num vetor, calculado o valor mdio das amostras
e posteriormente verificado se cada amostra pertence ao intervalo . Quando
todas as amostras se encontram nesse intervalo, podem ocorrer as situaes
apresentadas na Tabela 3.2, considerando que os pinos denominados por e
originam a medio descrita na equao (3.1).
Tabela 3.2 Classificao dos pinos em funo do valor mdio.

<

>

Situao
A tenso no pino superior tenso no pino . Os pinos e podem
ser classificados como GND e VCC, respetivamente, ou em alternativa
VCC e GND14, respetivamente.
A tenso nos pinos e so aproximadamente iguais, isto ,
correspondem ao mesmo sinal. Assim sendo, se algum dos pinos j foi
previamente classificado como VCC ou GND essa classificao
estendida ao pino no classificado, caso contrrio nada se pode concluir
e nenhuma classificao efetuada.
A tenso no pino superior tenso no pino . Os pinos e podem
ser classificados como VCC e GND, respetivamente, ou em alternativa
GND e VCC14, respetivamente.

O processo repetido para diferentes valores de , comeando num valor


prximo de zero e que progressivamente incrementado at ao valor mximo definido
pelo utilizador. Quando verificado que para um valor diferente de obtido um maior
nmero de pinos com tenso constante os dados anteriores so descartados e
armazenado o novo resultado. Quando o valor mximo de atingido e a respetiva
anlise efetuada procurado o menor valor de para o qual se obtm resultados
iguais aos obtidos com mximo, sendo esse o valor mnimo de para o qual os
resultados so fiveis. Essa informao adicionada ao ficheiro de configuraes para
utilizao futura.
Durante o processo de anlise cada pino analisado vrias vezes, devido
comparao com diferentes pinos, de forma que a ordem de anlise pode influenciar o
resultado, pois quando um pino definido como GND toda a anlise posterior
referenciada ao GND previamente detetado. Acontece que em circuitos com mltiplas
tenses constantes (vamos considerar 1 e 2 , sempre com 2 > 1 > ) se uma
primeira anlise coincidir com a anlise da relao entre 1 e 2 ento 1 ser
considerado com GND e posteriormente quando o GND for analisado ser definido
como uma tenso constante negativa (-VCC). De forma a uniformizar o resultado obtido
no final da anlise realizada uma normalizao dos resultados, que consiste em
encontrar a mdia mais baixa das tenses constantes e adicionar esse valor mdia
das restantes tenses constantes, ou seja, transformar a tenso constante mais baixa
no GND, garantindo assim a operao na gama das tenses positivas.
Em suma, o resultado final obtido ao nvel de pinos com tenses constantes e a
respetiva atribuio da classificao VCC e GND pode no ser igual estipulada pelo

14

Esta classificao alternativa apenas atribuda se em alguma anlise anterior o pino de maior
tenso da anlise atual j tenha sido classificado como GND.

37

fabricante do circuito integrado em anlise, mas equivalente e capaz de fornecer a


referncia para o sistema de replicao poder progredir para as etapas seguintes.
O cdigo fonte (linguagem C) utilizado para implementar os algoritmos de
deteo de pinos destinados a alimentao encontra-se listado no Anexo D (seo D.4).

3.4.5. Sensibilidade a erros


Durante a implementao dos algoritmos para identificao de pinos com
tenses constantes ou dedicadas alimentao necessrio ter em conta a
sensibilidade a erros, nomeadamente erros de medio.
Um pino que classificado como destinado alimentao ignorado por todas
as etapas de anlise consequentes. Assim sendo, uma classificao errada nesta fase
pode implicar uma replicao incorreta do circuito integrado em anlise, pelo que a
gesto de possveis erros de medio deve ser realizada cautelosamente.
Neste mdulo, existem duas formas de gerir os possveis erros de medio:

Eliminao das amostras consideradas como erros de medio atravs


de anlise estatstica (distribuio de frequncia) [44];
Diminuir a sensibilidade do algoritmo de forma a integrar medies
menos precisas sem afetar a anlise do algoritmo.
A eliminao de amostras consideradas como erros de medio atravs de uma
funo de densidade de probabilidade permitiria identificar as medies que tem uma
ocorrncia residual em relao s restantes amostras e descart-las da anlise.
Considerando que possvel que existam pinos que se encontram maioritariamente
num estado e com variaes espordicas para um outro estado durante um perodo
curto de tempo, como por exemplo um sinal de reset; a aplicao deste mtodo de
gesto de erros de medio poderia conduzir identificao de falsos erros de medio
em algumas amostras, que sendo descartadas originariam a classificao incorreta de
pinos destinados alimentao.
Consequentemente, a forma mais vivel de despistar erros de medio
diminuir a sensibilidade do algoritmo atravs do aumento da tolerncia mxima, . Esta
tcnica no evita que erros de medio superiores tolerncia mxima provoquem erros
na anlise. No entanto, enquanto na aplicao de uma funo de densidade de
probabilidade amostras duvidosas seriam ignoradas e mais pinos com tenso constante
iriam ser erradamente detetados (podendo provocar a perda do sinal de reset, por
exemplo), ao diminuir a sensibilidade ir ocorrer a situao inversa, isto , menos pinos
com tenso constante sero detetados. Porm, nesta ltima situao desde que existam
outros pinos com tenses constantes o algoritmo seria capaz de definir outra referncia
(GND) para o circuito e continuar sem afetar a possibilidade de um resultado
equivalente, pois em fases mais avanadas novas medies sero recolhidas e o(s)
erro(s) de medio nesta fase no sero crticos. Tendo em conta as implicaes de
cada um dos dois mtodos de gesto de erros apresentados, conclui-se que neste
mdulo a diminuio da sensibilidade a forma mais adequada de efetuar o despiste
de erros de medio sem afetao significativa do resultado final.
Quando um circuito integrado analgico submetido a anlise os pinos de
alimentao sero igualmente identificados, pois respeitam a distribuio apresentada

38

na Figura 3.4. Os pinos analgicos no destinados a alimentao como no apresentam


distribuio uniforme em torno de um valor mdio no seriam identificados como pinos
destinados a alimentao, semelhana do que acontece com circuitos digitais, sendo
analisados em etapas seguintes para extrao do comportamento do circuito. Em suma,
este mdulo capaz de detetar pinos com tenso constante em qualquer circuito
integrado, analgico ou digital.

3.5. Algoritmos de identificao de sinais analgicos


3.5.1. Funo do algoritmo
O mdulo de identificao de sinais analgicos tm por objetivo verificar se existe
algum sinal analgico em algum dos pinos do circuito integrado, isto , se algum dos
sinais de entrada ou sada do circuito sob anlise apresenta mais do que dois nveis de
tenso distintos. Em caso de ser detetado um sinal analgico, o utilizador recebe uma
mensagem informativa que o circuito a replicar apresenta um sinal analgico em algum
dos pinos de entrada ou sada, e ir efetuar uma aproximao a um sistema digital.
Como o sistema de replicao de circuitos implementado foi concebido para circuitos
puramente digitais, quando a mensagem de deteo de sinal analgico apresentada
o utilizador informado que o resultado da replicao obtida uma aproximao e no
garante fiabilidade. A replicao no interrompida quando detetado um sinal
analgico, porque os parmetros de configurao iniciais inseridos pelo utilizador
influenciam esta etapa e em caso de insero de parmetros inadequados o sistema
pode reajustar automaticamente os parmetros e obter uma rplica digital. Porm, a
avaliao da fiabilidade da rplica obtida aps mensagem informativa de deteo de
sinais analgicos sempre da responsabilidade do utilizador.
Esta etapa do circuito pode ser considerada como uma etapa de triagem, no
entanto no uma etapa impeditiva da continuao do algoritmo em caso de deteo
de sinal analgico. Nessas situaes o resultado final no tem fiabilidade garantida,
sendo da responsabilidade do utilizador a avaliao da rplica obtida. Para deteo de
sinais analgicos so utilizados dois mdulos de software de entre os mdulos
apresentados na Figura 3.2:

Mdulo gerador de instrues para aquisio de medies analgicas


referenciadas;
Mdulo de algoritmos de despiste de sinais analgicos.

3.5.2. Dados requeridos pelo algoritmo


A deteo de sinais analgicos realizada com base em medies analgicas
de cada pino onde a referncia das medies o pino definido como referncia (GND)
pelo algoritmo de deteo de sinais destinados a alimentao. As medies necessrias
para execuo deste algoritmo podem ser descritas pela expresso
= ,

39

(3.11)

onde , e representam o nmero atribudo ao pino, o nmero de pinos do circuito


integrado e a tenso no pino de referncia, respetivamente.
Para esta etapa o nmero de medies necessrias dado por

(3.12)

=1

onde , e representam o nmero de pinos, o nmero de amostras por cada pino e


o nmero de pinos destinados a alimentao, respetivamente.

3.5.3. Gerao de instrues para aquisio de medies analgicas


referenciadas
O mdulo gerador de instrues para aquisio de medies analgicas
referenciadas tem por objetivo analisar as configuraes iniciais e classificao atribuda
pelo algoritmo de deteo de sinais destinados a alimentao e converter essa
informao em instrues formatadas de forma que o mdulo de comunicao seja
capaz enviar essas mesmas instrues ao sistema de aquisio de dados e assim sejam
obtidas as medies descritas na subseco 3.5.2. semelhana do mdulo definido
na subseo 3.4.3 este mdulo possui ainda o funo de converter os dados recebidos
do sistema de aquisio de dados e efetuar uma converso para que as medies
fiquem com uma organizao compatvel com as requeridas pelos algoritmos de
despiste de sinais analgicos. O fluxograma da Figura 3.6 ilustra o funcionamento geral
deste mdulo.

Figura 3.6 Funcionamento do mdulo gerador de instrues para aquisio de medies


analgicas referenciadas.

Este mdulo muito similar ao mdulo gerador de instrues para a aquisio


de medidas analgicas diferenciais, diferindo unicamente no facto deste mdulo definir
automaticamente a referncia, ou seja, este mdulo compe instrues para realizao
de medies diferenciais entre dois pinos onde um dos pinos sempre o pino de
referncia (na etapa anterior ambos os pinos eram variveis), sendo proveniente desse
facto a designao de medies analgicas referenciadas. A utilizao de um mdulo
independente ao invs do reaproveitamento do mdulo gerador de instrues para

40

medies analgicas j existente tem por objetivo diminuir a dependncia de diferentes


mdulos em torno de um nico mdulo, de forma a facilitar uma futura
alterao/otimizao na forma de detetar sinais analgicos, reaproveitando a arquitetura
j implementada.
Considerando que o sistema de aquisio de dados utilizado o mesmo que na
etapa anterior, o fator de converso das medies obtidas igualmente definido pela
equao (3.5). As medies so igualmente armazenadas em ficheiros cujo nome
reflete o pino das medies nele contidas (measurementsPX.med) e o nome do ficheiro
o fator identificativo na estrutura de dados baseada em ficheiros, semelhana da
descrio apresentada na subseo 3.4.3.
Em suma, o gerador de instrues para aquisio de medies analgicas
referenciadas um mdulo de ligao entre um mdulo de anlise e processamento
(algoritmos de despiste de sinais analgicos) e o sistema de aquisio de dados. Este
mdulo foi desenvolvido na linguagem C# e o cdigo fonte encontra-se disponvel no
Anexo D (seo D.3).

3.5.4. Anlise e processamento dos dados


A anlise dos nveis de tenso em cada pino consiste de forma genrica na
verificao se todas possuem no mximo dois nveis de tenso. Em funo dessa
anlise possvel inferir se o circuito completamente digital/analgico ou misto. O
funcionamento geral do algoritmo encontra-se sintetizado no fluxograma da Figura 3.7.

Figura 3.7 - Funcionamento geral do algoritmo de anlise dos nveis de tenso em cada pino.

O fluxograma apresentado na Figura 3.7 representa um funcionamento geral de


coordenao e deciso, sendo a real anlise dos nveis efetuada num sub-algoritmo.
Durante a execuo dos algoritmos para despiste de sinais analgicos aplicada uma
anlise estatstica (funo de distribuio de frequncia [44]) de forma a detetar
eventuais erros de medio que possam originar falsos nveis.

41

A anlise do nmero de nveis consiste em percorrer todas as amostras


recolhidas para um pino e detetar vrios conjuntos de amostras agrupados em intervalos
do tipo () perfeitamente definidos, onde () representa o valor mdio
da tenso do nvel e representa o desvio mximo permitido (igual ao desvio mximo
utilizado na deteo de pinos destinados a alimentao). Para cada pino so
armazenados os valores mdios de cada nvel e o nmero de amostras encontrado para
cada nvel e sendo utilizado o nmero de amostras contabilizado para inferir da
fiabilidade do nvel. O sub-algoritmo que realiza a anlise do nmero de nveis de cada
pino pode ser sintetizado pelo fluxograma da Figura 3.8:

Figura 3.8 Funcionamento do sub-algoritmo de anlise dos nveis de tenso em cada pino.

A deteo de nveis realizada baseado no princpio do agrupamento em torno


de um valor mdio. No entanto, a abordagem a utilizar nesta etapa tem de ser diferente
da utilizada na deteo de tenses constantes pois nesta fase pretende-se determinar
de vrios nveis de tenso em vez de um nico valor constante. Nesta etapa quando o
algoritmo analisa as amostras relativas a um novo pino efetua os seguintes
procedimentos: atribui o valor da primeira amostra ao valor mdio do primeiro nvel e
posteriormente compara as amostras com os nveis j identificados anteriormente; caso
a amostra em anlise se enquadre no intervalo () de algum dos nveis
j identificados a amostra agrupada a esse nvel, caso contrrio designado um novo
nvel a cujo valor mdio atribudo o valor da amostra em anlise. Quando uma nova
amostra associada a um nvel j existente efetuada uma atualizao do valor mdio
e da contagem de amostras associadas a esse nvel.
Ao valor mdio das amostras associadas a um nvel inicialmente atribudo o
valor da primeira amostra e atualizado cada vez que uma nova amostra agrupada
ao nvel, de forma que a influncia da ordem de anlise das amostras seja minimizada.
A atualizao do valor mdio de um nvel calculado a partir da expresso

1 ( 1) +

42

(3.13)

onde representa o nmero de amostras associado ao nvel, a ltima amostra

associada ao nvel,
1 e representam a mdia antes e aps a associao da ltima
amostra, respetivamente.
O despiste de falsos nveis de tenso devido a possveis erros de medio
realizado atravs da aplicao de uma funo de distribuio de frequncia que pode
ser representada por [44]

( , )

(3.14)

=1

onde , e representam o nmero de pinos sujeitos a anlise, o valor mdio do nvel


e o nmero de amostras associadas ao nvel , respetivamente. definido um nmero
mnimo de amostras (em funo do nmero total de amostras) associadas a um nvel,
que deve ser atingido, caso contrrio esse nvel considerado um falso nvel. Foi
aplicada uma anlise de frequncia em termos absolutos pois o nmero de clculos
necessrios era menor comparativamente a uma anlise em termos relativos, sem
prejuzo dos resultados obtidos. Assim sendo, um nvel considerado falso quando

(3.15)
,
(0 < < 100)
100
sendo um valor percentual e o nmero total de amostras associadas ao pino em
anlise15. Na Figura 3.9 encontra-se ilustrado um exemplo da distribuio de frequncia
associado a um pino, onde pode ser constatada a existncia de dois falsos nveis (X2 e
X3) dado que se encontram abaixo do limiar (a tracejado) definido pela equao (3.15).
<

Figura 3.9 Exemplo de distribuio de frequncia associado a um pino.

Aplicada a anlise da distribuio de frequncia o algoritmo j dispe de


informao sobre os nveis associados a cada pino, nomeadamente o nmero total de
nveis e falsos nveis. Assim sendo, o nmero provvel de nveis reais, , dado por
(3.16)
=
sendo e o nmero de total de nveis e o nmero de falsos nveis, respetivamente.

Na implementao do algoritmo utilizado o valor = 10, ou seja, um nvel considerado falso


quando tem associadas menos de 10% das amostras relativas ao pino em anlise.
15

43

Com o nmero de nveis provveis para cada pino o algoritmo atribui ao circuito
integrado em anlise uma das seguintes classificaes:

Circuito puramente digital, se nenhum pino possuir mais do que dois


nveis de tenso;
Circuito analgico, se todos os pinos analisados possurem mais do que
dois nveis tenso;
Circuito misto, se alguns pinos com mais e menos do que dois nveis de
tenso, simultaneamente.
Quando o circuito sob anlise classificado pelo algoritmo como analgico ou
misto enviado ao utilizador uma mensagem informativa que o circuito em anlise no
completamente digital, e o resultado produzido pelo sistema ser uma aproximao a
um circuito digital, que pode no corresponder ao circuito integrado analisado.
O cdigo fonte utilizado para implementao dos algoritmos de despiste de sinais
analgicos encontra-se listado no Anexo D (seo D.5).

3.6. Algoritmos de anlise de circuitos combinatrios


3.6.1. Funo do algoritmo
Aps detetados os pinos com tenso constante e realizado o despiste de sinais
analgicos a etapa seguinte consiste na aquisio de dados e anlise dos mesmos para
efeitos de extrao do comportamento do circuito integrado em anlise.
Os algoritmos de anlise de circuitos combinatrios realizam uma primeira
anlise com o objetivo de verificar se uma abordagem combinatria permite obter uma
boa aproximao ao circuito sob teste. Se os algoritmos inferirem que uma anlise
combinatria permite descrever o comportamento do circuito ento, com os resultados
da anlise efetuada, ser automaticamente gerado um ficheiro na linguagem VHDL com
a descrio comportamental do circuito e o processo de replicao termina, caso
contrrio retornada a indicao que necessria uma nova abordagem (abordagem
sequencial) e o processo de replicao prossegue para as etapas subsequentes.
Para anlise combinatria do circuito sob teste so utilizados dois mdulos de
software de entre os mdulos apresentados na Figura 3.2:

Mdulo gerador de instrues para aquisio de medies digitais no


sincronizadas;
Mdulo de algoritmos de anlise de circuitos combinatrios.

3.6.2. Dados requeridos pelo algoritmo


A anlise combinatria executada com base em medies da tenso dos pinos
que influenciam o comportamento do circuito, ou seja, os pinos de tenso no constante.
Nesta etapa as medies so requeridas num formato digital (0/1) ao invs do formato
analgico, uma vez que num circuito digital combinatrio apenas so considerados dois
nveis de tenso.

44

Para um correto funcionamento do algoritmo de anlise, essencial que as


medies utilizadas na anlise sejam referentes ao mesmo instante temporal, isto , os
dados requeridos pelo algoritmo de anlise combinatria consistem nas tenses de
todos os pinos de interesse nos instantes 1 , 2 , 3 , , onde representa o nmero
de amostras definidas pelo utilizador. A preciso do algoritmo severamente afetada
se os dados para anlise no respeitarem a condio temporal, pois o algoritmo ir
considerar, erradamente, relaes entre entradas e sadas que podem no estar
relacionadas devido a um desfasamento temporal. As medies nesta fase so
realizadas assincronamente de forma a evitar a medies que permitam anlises
incorretas de sinais peridicos e visam obter todas as combinaes ao longo do tempo.
O nmero de medies necessrias para a execuo deste algoritmo dada por

(3.17)

=1

onde , e representam o nmero de pinos, o nmero de amostras por cada pino e


o nmero de pinos destinados a alimentao, respetivamente.

3.6.3. Gerao de instrues para aquisio de medies digitais no


sincronizadas
O mdulo gerador de instrues para aquisio de medies digitais no
sincronizadas tem por objetivo analisar as configuraes iniciais e classificao
atribuda pelo algoritmo de deteo de sinais destinados a alimentao e converter essa
informao em instrues formatadas de forma que o mdulo de comunicao seja
capaz de enviar essas mesmas instrues ao sistema de aquisio de dados e assim
sejam obtidas as medies descritas na subseco 3.6.2. semelhana dos mdulos
definidos nas subsees 3.4.3 e 3.5.3, este mdulo possui ainda a funo de converter
os dados recebidos para que as medies fiquem com uma organizao compatvel
com as requeridas pelos algoritmos de anlise combinatria. O fluxograma da Figura
3.10 ilustra o funcionamento geral deste mdulo.

Figura 3.10 Funcionamento do mdulo gerador de instrues para aquisio de medies


digitais no sincronizadas.

De forma a minimizar o nmero de comunicaes entre o mdulo de


comunicao e o sistema de aquisio de dados, este mdulo encontra-se preparado
para receber as medies de todos os pinos, referentes ao mesmo instante temporal,

45

numa nica palavra contendo a sequncia ordenada de zeros e uns, correspondentes


ordem de leitura dos pinos. A converso aplicada pelo mdulo consiste em separar da
palavra recebida o valor correspondente a cada pino e acrescentando-o no ficheiro de
dados correspondentes a cada um dos pinos. Aps a converso da palavra recebida
para um valor inteiro equivalente, o valor de cada pino obtido atravs da expresso

1
= ( ( ) 1 ) , 1
10
10

(3.18)

onde , , e representam o nmero de pinos, o nmero do pino, a tenso no pino


e valor inteiro equivalente palavra recebida, respetivamente. As funes () e
() representam o valor inteiro e resto de uma diviso, respetivamente.
Para melhor compreenso da aplicao da equao (3.18) no processo de
converso, na Tabela 3.3 encontra-se exemplificado um caso de converso de palavras
recebidas de um sistema com trs pinos.
Tabela 3.3 Exemplo de converso de dados recebidos de um sistema com trs pinos.

Equivalente inteiro
0
1
10
11
100
101
110
111

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

Os valores convertidos encontram-se no formato requerido pelos algoritmos de


anlise combinatria e so armazenados em ficheiros. Quando o nmero de pinos do
circuito integrado em anlise inferior ao nmero de pinos que o sistema de dados
admite necessrio aplicar ajustes no nome dos ficheiros, semelhana com os
processos descritos no Anexo D.2 O cdigo fonte utilizado para implementao do
mdulo gerador de instrues para aquisio de medies digitais no sincronizadas
encontra-se apresentada no Anexo D (seo D.6).

3.6.4. Anlise e processamento dos dados


A anlise combinatria realizada aos dados disponveis tem por objetivo verificar
se para cada combinao dos sinais de entrada ocorre uma nica sada. Se esta
condio verificada ento escrito o cdigo VHDL que descreve o funcionamento do
circuito, caso contrrio esta etapa abortada e so iniciados os procedimentos para
analisar o circuito sob o ponto de vista de lgica sequencial.
A abordagem do algoritmo de anlise combinatria consiste em efetuar a leitura
dos dados de ficheiros e respetivo armazenamento em nova estrutura de dados de
maior facilidade de acesso e excluso das medies repetidas, com o objetivo de
construir uma tabela de verdade descritiva do comportamento do circuito. Aps a
construo da tabela de verdade realizada uma anlise para identificao de circuitos

46

sequenciais (pela verificao da singularidade da combinao de sada para a mesma


combinao de entrada). O funcionamento do algoritmo pode ser sintetizado pelo
fluxograma apresentado na Figura 3.11.

Figura 3.11 Funcionamento geral do algoritmo de anlise combinatria.

O cdigo fonte completo, em linguagem C, utilizado na implementao do


algoritmo de anlise combinatria encontra-se listado no Anexo D.7.

3.6.4.1. Estruturas de dados utilizada


Inicialmente os dados encontram-se armazenados em ficheiros, porm durante
a execuo do algoritmo estes devem ser guardados numa estrutura de dados local do
algoritmo de forma a aumentar a rapidez no acesso aos dados, sendo necessria a
leitura dos ficheiros no incio da execuo do algoritmo de anlise.
No algoritmo de anlise combinatria os principais dados a armazenar so as
medies digitais no sincronizadas efetuadas ao circuito e o pino a que se encontram
associadas. Os dados so guardados num vetor bidimensional (matriz) de dimenses
, onde e representam o nmero de pinos do circuito e o nmero de amostras
utilizadas na anlise, respetivamente. Graficamente, a estrutura de dados pode ser
representada pela matriz apresentada na Figura 3.12.

Figura 3.12 Estrutura de dados para armazenamento das medies.

Com a estrutura de dados apresentada na Figura 3.12 cada coluna da matriz


armazena as amostras, referentes a um instante temporal, dos pinos do circuito em

47

anlise. Cada linha da matriz armazena as amostras obtidas referentes ao pino cujo
nmero igual ao nmero da linha da matriz. Esta organizao dos dados permite um
rpido acesso a qualquer medio ou conjunto de medies. No entanto, a matriz de
armazenamento das medies no contm toda a informao necessria para
construo de uma tabela de verdade pois no fornece informao acerca dos pinos de
entrada e sada do circuito em anlise. Para esse efeito utilizado um vetor de
comprimento , onde em cada posio se encontra armazenada a informao sobre o
tipo de pino e onde o ndice do vetor indica a que pino se refere a informao contida
na posio. Nesta fase do processo de replicao possvel encontrar quatro tipos de
pino: entrada, sada, VCC ou GND. A Figura 3.13 ilustra graficamente a estrutura de
dados que guarda informao sobre o tipo de cada pino, onde o valor apresentado entre
parenteses corresponde ao ndice do vetor e tambm ao pino a que se refere a
informao contida na respetiva posio.

Figura 3.13 Estrutura de dados para armazenamento de informao sobre o tipo de pinos.

Pelo cruzamento dos dados contidos nas estruturas de dados apresentadas na


Figuras 3.11 e 3.12, possvel saber exatamente que conjuntos de medies
correspondem a entradas ou sadas, pois cada posio do vetor apresentado na Figura
3.13 indica o tipo de dados contido na linha de igual ndice da matriz da Figura 3.12.

3.6.4.2. Construo da tabela de verdade


A construo da tabela de verdade do circuito em anlise consiste, em grande
parte, na eliminao de medies repetidas. Como cada coluna da matriz da Figura 3.12
armazena um conjunto de medies referentes ao mesmo instante temporal, a
eliminao de medies repetidas realizada atravs da remoo das colunas repetidas
na matriz. Sem medies repetidas, a tabela de verdade pode ser obtida selecionando
os dados pelas linhas correspondentes a entradas e sadas do circuito. A tabela de
verdade obtida apenas ir conter as combinaes observadas, no garantindo a
cobertura de todas as combinaes de entrada possveis.

3.6.4.3. Deteo de lgica sequencial


O despiste de lgica sequencial consiste em verificar se na tabela de verdade
nenhuma combinao de entrada se encontra repetida. Por outras palavras, quando
uma combinao de entrada se encontra repetida significa que existe uma combinao
de sada diferente para cada uma das combinaes de entrada repetidas encontradas,
caso contrrio apenas uma das medies teria sido mantida e a(s) restante(s)
eliminada(s) anteriormente. Quando esta situao detetada, a anlise combinatria
terminada e retornada a indicao que foi detetada lgica sequencial, sendo essa

48

indicao interpretada pelo mdulo de coordenao que ir iniciar os algoritmos para


anlise sequencial.
Aps a confirmao do circuito como sendo um circuito digital combinatrio
apenas necessria a converso do contedo da tabela de verdade para linguagem
VHDL, assente em uma estrutura de cdigo sintetizvel por um compilador j existente.

3.6.5. Estrutura do cdigo (linguagem VHDL) da rplica


Conhecida a tabela de verdade de um circuito combinatrio a converso da
mesma para linguagem VHDL permite que a sntese do circuito rplica seja realizada
pelo compilador de um software j existente (no caso em estudo foi utilizado o
compilador associado ao software ISE Design, da Xilinx [45].). Uma vez sintetizado o
circuito, pode ser utilizada uma FPGA para reproduzir o funcionamento da rplica.
O esquema do circuito sintetizado influenciado pela estrutura do cdigo gerado.
As FPGAs encontram-se otimizadas para implementao de tabelas de verdade (de
acordo com [46]), de modo que a estrutura do cdigo VHDL segue a apresentada na
Listagem 3.1.
Listagem 3.1 Estrutura do cdigo VHDL implementado para descrio de circuitos
combinatrios.

Neste tipo de estrutura utilizada uma converso dos sinais de entrada


associados a um instante transformando sinais de um bit em um nico sinal de bits,
que por sua vez originam a combinao de sada verificada no mesmo instante a que
se referem as entradas. Atravs do comando case da linguagem VHDL possvel
associar um valor lgico a cada sada dependendo da combinao de entrada. Neste
tipo de estrutura obrigatrio garantir que nenhuma combinao de entrada se repete
no comando case, pois originar erro no compilador.

49

No que respeita declarao de entradas e sadas, nomeadamente aos pinos


classificados como VCC ou GND, no influncia o funcionamento do circuito: podem ser
declarados (in, out ou inout) e nunca serem utilizados ou simplesmente no serem
declarados, uma vez que se destinam apenas alimentao do circuito original e o seu
nvel lgico conhecido.

3.6.6. Taxa de sucesso da rplica obtida


De forma a quantificar a percentagem do comportamento do circuito integrado
que foi possvel extrair com a observao efetuada estimada uma taxa de sucesso
para a rplica obtida. A rplica obtida reflete todas as combinaes observadas, no
entanto nunca possvel ter mais conhecimento do circuito do que o observado. Assim
sendo, quando no so observadas todas as combinaes de entrada possveis, esta
taxa no reflete a probabilidade do circuito funcionar corretamente no sistema onde foi
observado, pois no possvel saber se as amostras no observadas no ocorrem no
sistema onde o circuito integrado se encontra inserido ou se apenas no ocorreram
durante o perodo de observao.
Na estimativa so considerados o nmero de entradas do circuito e o nmero de
diferentes combinaes de entrada encontradas durante o perodo de observao.
Deste modo, a taxa de sucesso da replicao de um circuito combinatrio dada por
(%) =

100
2

(3.19)

onde , e representam a taxa de sucesso, o nmero de combinaes de entrada


no repetidas observadas e o nmero de entradas do circuito, respetivamente.

3.7. Algoritmos de deteo do sinal de relgio


3.7.1. Funo do algoritmo
Quando o circuito sob anlise identificado como sequencial, toda a anlise
combinatria e respetivas medies so descartadas. A primeira etapa do processo de
anlise de um circuito sequencial sncrono encontrar o sinal de relgio uma vez que o
comportamento de circuito um circuito sequencial est diretamente relacionado ao sinal
de relgio.
Os algoritmos de deteo do sinal de relgio tm por objetivo identificar qual dos
pinos corresponde ao sinal de relgio e sincronizar as medies subsequentes ao sinal
de relgio detetado. A determinao do intervalo de tempo entre duas transies do
sinal de relgio (meio perodo) importante para efeitos de sincronismo durante a
aquisio de medies digitais sincronizadas.
Para deteo do sinal de relgio do circuito sob teste so utilizados dois mdulos
de software de entre os mdulos apresentados na Figura 3.2:

Mdulo gerador de instrues para deteo de sinais peridicos;

50

Mdulo de algoritmos de deteo do sinal de relgio.

3.7.2. Dados requeridos pelo algoritmo


Para o algoritmo efetuar com sucesso a deteo do sinal de relgio, necessrio
conhecer o intervalo de tempo entre transies consecutivas de cada possvel sinal
de relgio. Na Figura 3.14 encontra-se representado graficamente os instantes
temporais importantes para o algoritmo (1 , 2 , 7 ) assim como os intervalos temporais
de interesse para o algoritmo (12 , 23 , , 67).

Figura 3.14 Dados temporais importantes para o algoritmo de deteo do sinal de relgio.

Genericamente, os intervalos temporais de interesse para o algoritmo so dados


por
=

(3.20)

onde = 1 para quaisquer valores de pertencente ao conjunto dos nmeros


naturais compreendidos no intervalo [2, ], onde representa o nmero de transies
observadas.
Estas medies so realizadas para cada pino de entrada do circuito, perfazendo
o total de medies dado pela equao

(3.21)

=1

onde e representam o nmero de pinos de entrada do circuito e o nmero de


transies observadas, respetivamente.

3.7.3. Gerao de instrues para deteo de sinais peridicos


O mdulo gerador de instrues para deteo de sinais peridicos tem por
objetivo analisar a classificao atribuda a cada pino e gerar instrues formatadas
para aquisio das medies indicadas na subseo 3.7.2. As instrues geradas so
transmitidas ao mdulo de comunicao que por sua vez ir estabelecer comunicao
com o sistema de aquisio de dados e receber as medies efetuadas.
Este mdulo possui ainda a funo de converter os dados recebidos do sistema
de aquisio de dados para que as medies fiquem com uma organizao compatvel
com as requeridas pelo algoritmo de deteo do sinal de relgio. As medies recebidas

51

consistem nos instantes em que ocorrem as transies e a converso realizada por este
mdulo consiste na aplicao da equao (3.20).
O fluxograma da Figura 3.15 ilustra o funcionamento geral deste mdulo.

Figura 3.15 Funcionamento do mdulo gerador de instrues para aquisio de medies


para deteo de sinais peridicos.

Este mdulo foi desenvolvido na linguagem C# e o cdigo fonte encontra-se


disponvel no Anexo D (seo D.8).

3.7.4. Anlise e processamento dos dados


A deteo do pino de relgio efetuada em duas etapas: deteo de sinais
peridicos e escolha do sinal peridico com menor perodo (maior frequncia), dado que
em regra o sinal de relgio o sinal com maior frequncia nos circuitos sequenciais. A
deteo de sinais peridicos realizada com base na distribuio das amostras em
torno de um valor mdio, sendo tambm efetuado o despiste de erros de medio.
O funcionamento geral do algoritmo encontra-se sintetizado na Figura 3.16.

Figura 3.16 Funcionamento geral do algoritmo de deteo do sinal de relgio.

52

Numa primeira etapa realizado o clculo do valor mdio das amostras relativas
a um pino, que consiste na mdia aritmtica simples, de acordo com a expresso

1
=

(3.22)

=1

onde , e representam o valor mdio das amostras, o valor da -gsima


amostra e o nmero de amostras, respetivamente. A tolerncia na anlise de cada pino,
, atribuda em funo do valor mdio e calculada atravs da expresso
.
(3.23)
100
onde representa um fator percentual entre 0 e 100, no entanto, baseado em testes
realizados atravs do mtodo de aproximaes sucessivas, seja aconselhvel a
utilizao de valor pequenos16.
=

Sendo conhecido o valor mdio a etapa seguinte realizar o despiste de erros


de medio e verificao de periodicidade do sinal de cada pino de entrada. Neste
contexto de anlise comportamental de um sinal, a distino entre um comportamento
atpico e um erro de medio uma tarefa difcil. A contagem da percentagem de
amostras fora do intervalo permite em simultneo despistar
situaes de no periodicidade e erros de medio.
A influncia de um erro de medio no valor mdio baixa quando o nmero de
amostras muito superior aos erros de medio, ou seja, um sinal peridico com
espordicos erros de medio ir conter uma percentagem muito reduzida de amostras
fora do intervalo , logo definido como peridico e o valor mdio
guardado.
Um sinal no peridico, devido no concentrao das amostras em torno do
valor mdio ir conter uma maior percentagem de amostras fora do intervalo de
interesse, logo ser definido como no peridico. A percentagem mxima17 de amostras
fora do intervalo de interesse definida no cdigo fonte ao invs de ser definida pelo
utilizador, pois a utilizao de parmetros inadequados nesta etapa pode afetar
drasticamente as etapas seguintes.
Um sinal no peridico com erros de medio associados ser naturalmente
definido como no peridico, assim como um sinal peridico com demasiados erros de
medio (quando os erros de medio tm influncia no valor mdio).
Quando a anlise periodicidade dos sinais de todos os pinos de entrada
concluda o pino com sinal peridico de maior frequncia (menor perodo) classificado
com sinal de relgio e atualizada a classificao dos pinos na estrutura de dados, de
forma a incluir a informao do sinal de relgio.
O cdigo fonte completo, em linguagem C, utilizado na implementao do
algoritmo de deteo do sinal de relgio encontra-se listado no Anexo D (seo D.9).

16
17

Na implementao do algoritmo foi utilizado = 1%.


Na implementao do algoritmo o valor mximo definido foi 3%.

53

3.8. Algoritmos de deteo do sinal de reset


3.8.1. Funo do algoritmo
O sinal de reset , semelhana do sinal de relgio, um sinal importante na
tarefa de extrair o comportamento do circuito sequencial, bem como na sintetizao de
hardware. O objetivo dos algoritmos de deteo do sinal de reset encontrar uma
relao comportamental entre um pino de entrada e as combinaes do(s) pino(s) sada,
estabelecendo um estado inicial dos pinos de sada perante atuao no pino de entrada
candidato a pino de reset. Todos os pinos de entrada, excluindo pino de relgio e pinos
de tenso constante, so candidatos a pino de reset. objetivo tambm estabelecer
uma relao entre o sinal de reset e o sinal de relgio, de modo a aferir se o reset
realizado assincronamente ou sincronamente numa das transies do sinal de relgio.
Para deteo do sinal de reset do circuito sob teste so utilizados dois mdulos
de software de entre os mdulos apresentados na Figura 3.2:

Mdulo gerador de instrues para aquisio de medies digitais


sincronizadas;
Mdulo de algoritmos de deteo do sinal de reset.

3.8.2. Dados requeridos pelo algoritmo


Os dados requeridos pelo algoritmo de deteo do sinal de reset consistem nos
mesmos dados requeridos pelo algoritmo de anlise combinatria e descritos na
subseo 3.6.2, apenas diferindo no instante de recolha dos dados pretendidos.
Enquanto no caso do algoritmo de anlise combinatria os instantes de recolha das
amostras so aleatrios, o algoritmo de deteo do sinal de reset requer que as
amostras sejam recolhidas aps as transies do sinal de relgio.

3.8.3. Gerao de instrues para aquisio de medies digitais


sincronizadas
O mdulo gerador de instrues para aquisio de medies sincronizadas
muito idntico ao mdulo gerador de instrues para aquisio de medies no
sincronizadas. A diferena das instruo enviada ao sistema de aquisio de dados (via
mdulo de comunicao) reside na incluso da informao sobre o pino e perodo do
sinal de relgio.
O formato dos dados recebidos e converses necessrias so iguais aos
descritos na subseo 3.6.3.
Este mdulo foi desenvolvido na linguagem C# e o cdigo fonte encontra-se
disponvel no Anexo D (seo D.6).

54

3.8.4. Anlise e processamento dos dados


O algoritmo de deteo do sinal de reset analisa todos os pinos de entrada com
o objetivo de encontrar o pino que realiza a funo de reset. Aps ler as configuraes
iniciais e transferir as medies para a estrutura de dados interna do algoritmo, a cada
pino so aplicados sub-algoritmos para verificar se o pino em anlise pode ser o pino
de reset, quer seja o seu funcionamento em lgica direta ou inversa, isto , o reset
realizado na transio ascendente ou descendente do sinal. Quando um sinal de reset
detetado, a relao entre o sinal de reset e o sinal de relgio analisada, permitindo
verificar se o reset sncrono ou assncrono.
O funcionamento geral do algoritmo de deteo do sinal de reset encontra-se
sintetizado no fluxograma da Figura 3.17.

Figura 3.17 Funcionamento geral do algoritmo de deteo do sinal de reset.

3.8.4.1. Sub-algoritmo de deteo do sinal de reset


O sub-algoritmo de deteo do sinal de reset consiste num algoritmo que analisa
a influncia de um pino de entrada em todos os pinos de sada, bem como armazena a
informao relevante para posterior corelacionamento com o sinal de relgio. O subalgoritmo permite a deteo de mltiplas situaes, atravs das configuraes dos
argumentos do algoritmo:

Pino em anlise: define a que pino ser aplicado a anlise;


Pino de relgio: define o pino de relgio do circuito;
Lgica pretendida (direta ou inversa): define se pretendida a deteo
na transio ascendente ou descendente (equivalente a nvel alto ou
nvel baixo, respetivamente, para efeitos de anlise algortmica);
Deteo pretendida: na implementao deste sistema s foi pretendido
detetar sinais de reset, no entanto o sub-algoritmo encontra-se preparado
para fcil expanso que permita ao algoritmo detetar sinais de preset
entre outros, atravs da configurao deste parmetro.

55

O funcionamento do sub-algoritmo de deteo do sinal de reset encontra-se


apresentado no fluxograma da Figura 3.18.

Figura 3.18 Funcionamento do sub-algoritmo de anlise de deteo do sinal de reset.

O fluxograma da Figura 3.18 mostra que a deteo do sinal de reset efetuada


atravs de uma anlise individual das amostras relativa ao pino em anlise, sendo
apenas alvo de anlise as amostras correspondentes ao nvel definido (amostras de
interesse) no argumento lgica pretendida, sendo as restantes descartadas. Quando
uma amostra de interesse encontrada armazenada a amostra e o nvel de sinal do
pino de relgio relativo ao mesmo instante da amostra de interesse. A anlise prossegue
at que a combinao de sada seja diferente de uma combinao verificada
anteriormente durante a anlise de uma amostra de interesse anterior. Se todas as
amostras so analisadas, ento implica que no tenha sido detetada nenhuma
combinao de sada diferente para as amostras de interesse, logo o pino declarado
como pino de reset. Um outro sub-algoritmo utilizado para realizar uma anlise
correlativa entre o pino em anlise e o sinal de relgio.

3.8.4.2. Sub-algoritmo de correlao com o sinal de relgio


O sub-algoritmo de correlao com sinal de relgio executado quando um pino
classificado como pino de reset e tem por objetivo analisar o sinal de reset
relativamente ao sincronismo com o sinal de relgio. A anlise efetuada baseia-se no
conjunto de amostras do nvel de relgio armazenadas, relativas aos instantes das
amostras de interesse.
Com as amostras do sinal de relgio previamente armazenadas so efetuadas
duas operaes: a multiplicao e a soma, de todas as amostras, de acordo com as
expresses;

= ;

(3.24)

=1

= ;
=1

56

(3.25)

onde e representam o nmero de amostras de interesse e a -gsima amostra do


sinal de relgio armazenada, respetivamente.
Considerando que nesta fase toda a anlise digital, os nveis possveis do sinal
de relgio correspondem a uma varivel binria (0/1). Assim sendo a equao (3.24)
resulta num valor igual ou superior a zero, enquanto a equao (3.25) resulta numa
varivel binria. Pela anlise dos valores obtidos nas equaes (3.24) e (3.25) possvel
inferir uma relao do sinal de reset com o sinal de relgio, de acordo com a Tabela 3.4.
Tabela 3.4 Relao entre o sinal de reset e sinal de relgio em funo das equaes (3.24) e
(3.25).

>0

>0

Anlise
Para que o valor da soma seja zero, ento
todas as amostras do sinal de relgio
armazenadas correspondem ao nvel
baixo, ou seja, todas as situaes de reset
ocorreram no nvel baixo do sinal de
relgio.
O valor da soma (superior a zero) indica
que ocorreu, no mnimo, um reset no nvel
alto do sinal de relgio. O valor nulo da
multiplicao indica a ocorrncia de pelo
menos uma situao de reset no nvel baixo
do sinal de relgio. Pela associao de
ambas as informaes verifica-se que
ocorreram situaes de reset em ambos os
nveis do sinal de relgio.
Combinao impossvel. O valor da soma
indica que todas as situaes de reset
ocorreram no nvel baixo do sinal de relgio
enquanto o valor da multiplicao indica o
oposto. Esta situao nunca ocorre.
O valor da soma indica a existncia de, no
mnimo, uma amostra no nvel alto do sinal
de relgio e o valor da multiplicao
demonstra que todas as amostras se
encontram no nvel alto do sinal de relgio.
Conclui-se que todas as situaes de reset
ocorreram no nvel alto do sinal de relgio.

Classificao
do reset
Sncrono
(Transio
descendente ou
nvel baixo)

Assncrono

------

Sncrono
(Transio
ascendente ou
nvel alto)

Como a replicao realizada atravs da observao do funcionamento do


circuito e no possvel provocar externamente nenhum estmulo, verificaes
adicionais so necessrias. Quando um reset classificado como sncrono um aspeto
importante a considerar na classificao a verificao da no ocorrncia da situao
inversa (contra-anlise), de forma a garantir que a classificao atribuda no resulta de
uma observao incompleta. Exemplificando, para garantir que o sinal de reset funciona
apenas na transio ascendente do sinal de relgio necessrio verificar uma situao
de no funcionamento na transio descendente do sinal de relgio (e vice-versa).
Quando o resultado da contra-anlise demonstra que a classificao atribuda carece
de observaes da situao inversa, o sinal de reset reclassificado para assncrono.
Esta opo de implementao visa abranger situaes mais gerais e o cdigo fonte
encontra-se disponvel no anexo D (seo D.10).

57

3.9. Algoritmo de anlise de circuitos sequenciais


3.9.1. Funo do algoritmo e dados requeridos
Conhecidos os pinos aos quais se encontram associados os sinais de relgio e
reset, o algoritmo de anlise sequencial tem por objetivo analisar a sequncia de
combinaes de entrada e respetivas combinaes de sada ao longo do tempo e
efetuar uma aproximao heurstica a uma mquina de estados. Como a informao
disponvel consiste unicamente nas entradas, sadas e sinais de relgio e reset, o
algoritmo de anlise sequencial responsvel pela atribuio de estados e transies
entre estados que descrevam o funcionamento observado. Por fim, o diagrama de
estados e respetivas transies so convertidos pelo algoritmo para linguagem VHDL,
utilizando uma estrutura de cdigo sintetizvel.
Na anlise sequencial so reutilizadas as medies dos algoritmos de deteo
do sinal de reset, dado que a anlise do sinal de reset enquadra-se no mbito da anlise
comportamental e essencial possuir as medies dos restantes pinos de entrada e
sada, referentes aos mesmos instantes temporais, de forma a permitir que ambas as
anlises sejam associadas.

3.9.2. Aproximao de um circuito sequencial a uma mquina de estados


desenvolvida, atravs de mtodos heursticos
A aproximao do comportamento do circuito a uma mquina de estados finitos
baseada na anlise das combinaes de entrada e sada atuais, anteriores e
seguintes. Devido complexidade, quantidade de dados e ao facto da replicao ser
efetuada por observao (no h garantia que todas as situaes so observadas) o
resultado da replicao consiste na melhor aproximao com base nos dados obtidos.
Como os estados internos do circuito sob anlise no esto acessveis ou, porventura,
o circuito sob anlise no foi concebidos como mquinas de estados, a forma mais
adequada de obter a melhor aproximao atravs de um mtodo heurstico.
Os mtodos heursticos englobam estratgias, procedimentos e mtodos
aproximativos com o objetivo de encontrar uma boa soluo, mesmo que no seja a
soluo tima, em um tempo computacional razovel [47]. Mtodos heursticos so
usualmente aplicados na rea da inteligncia artificial e aproximam-se da forma de
pensar humana [48], [49]. A utilizao de mtodos heursticos apropriada em situaes
onde no existe um mtodo exato para a resoluo do problema ou o mesmo requer
elevado tempo de processamento, sendo nesses casos a obteno de uma boa (mas
no tima) soluo melhor do que no obter qualquer soluo [47].
No caso em estudo, o principal problema da anlise sequencial consiste na
distino entre dois estados diferentes cuja combinao de sada a mesma. Para dois
instantes diferentes, com os dados disponveis, nunca possvel garantir que para a
mesma combinao de sada est associada a estados diferentes ou ao mesmo estado,
sendo a deciso do algoritmo baseada na anlise de situaes observadas
anteriormente, o que evidncia um procedimento associativo/heurstico.
Comparativamente anlise combinatria, verificada uma maior incerteza na

58

aproximao, ou por outras palavras, a aproximao efetuada pelos algoritmos de


anlise combinatria representam na maioria dos casos uma soluo tima enquanto
os algoritmos de anlise sequencial produzem maioritariamente uma soluo possvel.
Na anlise das situaes que os circuitos sequenciais proporcionam e respetiva
aproximao a uma mquina de estados surgem trs casos relevantes, cujas
implicaes se encontram detalhadas na Tabela 3.5.
Tabela 3.5 Caratersticas de circuitos sequenciais em funo das entradas e tipo de estados.

Situao

Inexistncia de
pinos de entrada
(excetuando sinais
de relgio e reset)

Existncia de pinos
de entrada e cada
combinao de
sada distinta e
associada a um
nico estado

Existncia de pinos
de entrada e vrios
estados associados
mesma
combinao de
sada

Implicaes
Devido inexistncia de pinos de entrada cada estado s
pode realizar uma transio. Assim sendo, existe uma
nica sequncia de estados (apenas interrompida pelo
sinal de reset) que sendo detetada algoritmicamente
permite esquematizar todos os estados e respetiva
transio, permitindo replicar o comportamento do
circuito em anlise. Os contadores so um exemplo deste
tipo de circuitos.
A existncia de pinos de entrada origina a que cada
estado tenha vrias transies possveis. Como a cada
combinao de sada apenas est associado um nico
estado, o diagrama de estados e transies pode ser
obtido atravs do relacionamento das sadas (estados)
com as entradas (transies).
A existncia de pinos de entrada origina a que cada
estado tenha vrias transies possveis. A no
existncia de uma relao explcita entre a combinao
de sada e o estado associado obriga a uma anlise
baseada na observao de estados anteriores e
transies j ocorridas de forma a determinar o estado
mais provvel associado a cada combinao de medida
e respetivas transies, de modo a construir
algoritmicamente um diagrama de estados e transies.

Na Tabela 3.5 foram descritas trs situaes distintas que podem ser alvo de
abordagens distintas para efeitos de aproximao. Porm, a distino entre as situaes
2 e 3 apresentadas na Tabela 3.5 impossvel pois o circuito desconhecido e no so
conhecidos os estados internos. Assim sendo, a utilizao de um algoritmo genrico
com capacidade de efetuar a aproximao de um circuito sequencial a uma mquina de
estados em qualquer uma das situaes referidas a soluo mais vivel [37].
A aproximao implementada visa a procura da melhor soluo. Uma mquina
de estados finitos to mais otimizada quanto menor for o nmero de estados, sem que
a reduo do nmero de estados afete o funcionamento da mquina de estados. A
aproximao implementada constri um diagrama de estados e transies que se
autocorrige medida que mais casos vo sendo observados. Quando uma nova
combinao de sada encontrada um novo estado criado. Quando ocorre uma
combinao de sada j observada anteriormente construda uma transio para um
estado j existente (que possua a mesma combinao de sada), visando a aproximao
da soluo tima. Quando esta situao acontece so verificadas as transies
seguintes do estado ao qual a nova transio foi associada e verificado se as prximas
transies so compatveis com as transies seguintes do estado associado, onde

59

representa um critrio de profundidade de anlise. Quando no conseguida a


associao a um estado j existente ento um novo estado criado. Na Figura 3.19
encontra-se representado um caso exemplificativo de uma situao onde a associao
a um estado anterior realizada com sucesso.

Figura 3.19 Associao, com sucesso, a estado j existente com profundidade de anlise
unitria.

Pela anlise da Figura 3.19 verificado que nas primeiras trs medies so
encontradas novas combinaes de sada e so criados novos estados (A,B e C). Na
quarta medio a combinao de sada (00) coincide com uma medio j existente
logo criada uma nova transio para o estado A. Para simplificar a anlise ser
considerada uma profundidade de anlise unitria para exemplificao, ou seja, vamos
verificar a compatibilidade da transio seguinte: com a informao j conhecida, o
estado A quando recebe a combinao de entrada 1 transita automaticamente para o
estado B (sada 01), e como a medio seguinte consiste na combinao de entrada 2 ,
como ainda no tinha sido observada nenhuma ocorrncia desta combinao no h
incompatibilidade entre as transies em anlise e as previamente observadas (a
combinao de entrada e sada 1 e 01, respetivamente, tambm no indicavam
incompatibilidade). Porm, na Figura 3.20 apresentado um novo exemplo onde existe
incompatibilidade entre a associao efetuada e o comportamento observado
previamente. Esta anlise pode ser generalizada para profundidade .

Figura 3.20 Associao, sem sucesso, a estado j existente com profundidade de anlise
unitria.

60

Pela anlise da Figura 3.20 verifica-se uma situao de associao a um estado


existente similar ao apresentado na Figura 3.19. Porm na medio a combinao de
entrada 1 originando uma combinao de sada 10. O estado j existente ao qual se
pretende associar a medio em anlise efetua a transio para o estado B, de sada
01, quando recebe a combinao de entrada 1 logo verifica-se que existe uma
incompatibilidade na transio 1 . Desta forma a associao a um estado anterior no
pode ser efetuada e um novo estado criado (Estado D).
Generalizando para uma profundidade de anlise de valor , no pode existir
qualquer transio incompatvel nas transies seguintes do estado a que feita a
associao. Quando existem vrios estados anteriores com a mesma combinao de
sada que a medio em anlise s criado um novo estado se fracassarem as
associaes a todos os estados com a mesma sada.
No pior caso, quando nenhuma associao conseguida, o diagrama de estado
consistir numa sequncia em estados, onde representa o nmero de medies,
que no sendo uma aproximao tima , no entanto, a aproximao possvel. No caso
onde o circuito sob anlise no possui pinos de entrada, a mesma aproximao pode
ser assumindo que a combinao de entrada mantm-se constante.

3.9.3. Configuraes iniciais para anlise de circuitos sequenciais


Quando um circuito sequencial detetado o utilizador tem a possibilidade de
reajustar o nmero de amostras a utilizar na anlise e definir novas configuraes
iniciais, apresentadas na Tabela 3.6.
Tabela 3.51 Parmetros de configurao para circuitos sequenciais.

Parmetro
Seleo automtica
dos parmetros
Preciso
Profundidade
Converso do sinal
de reset

Descrio
Permite escolher se os parmetros a utilizar so definidos
de forma manual ou automtica.
Define o grau de certeza para que uma nova transio seja
estabelecida. Pode assumir os nveis baixo, normal e alto.
Define a profundidade de anlise. O valor pode ser definido
de forma manual ou automtica.
O algoritmo possibilita a converso do sinal de reset para
sncrono, assncrono ou manter o sinal original.

3.9.4. Anlise e processamento


3.9.4.1. Implementao da aproximao heurstica
O algoritmo de anlise sequencial efetua um conjunto de trs operaes que
permitem a replicao de circuitos digitais sequenciais: anlise da transio de relgio
de interesse, realizao da aproximao descrita na seo 3.9.2. e escrita de ficheiro
com descrio comportamental em VHDL.
A identificao da transio de interesse do sinal de relgio consiste em verificar
se as combinaes de entrada e sada so alteradas quando o sinal relgio varia do

61

nvel baixo para o nvel alto (transio ascendente) ou vice-versa (transio


descendente). Quando conhecida a transio de interesse, as medies associadas
s transies sem interesse so descartadas.
A implementao da aproximao do circuito sequencial a uma mquina de
estados encontra-se sintetizada na Figura 3.21.

Figura 3.21 Fluxograma da implementao da aproximao de circuito sequencial a uma


mquina de estados.

A implementao da aproximao consiste unicamente em converter o princpio


de aproximao descrito na seo 3.9.2 para cdigo (linguagem C), que se encontra
disponibilizado no Anexo D (seo D.11). Em suma, a cada nova combinao de sada
encontrada atribudo um novo estado e as combinaes de sada j existentes so
realizadas tentativas de associao a estados j existentes se no for observada
qualquer incompatibilidade com comportamento j verificado anteriormente, e criao
de novo estado em caso contrrio. Quando todas as medies j foram sujeitas a
anlise, o diagrama de estados e transies obtido convertido para linguagem VHDL.

3.9.4.1. Estrutura do cdigo (linguagem VHDL) da rplica


A estrutura do cdigo VHDL utilizado na descrio comportamental de circuitos
sequenciais distinta da utilizada na descrio de circuitos combinatrios, partilhando
apenas a estrutura de cdigo utilizada para declarao de entradas e sadas. As
variveis utilizadas na descrio de circuitos sequenciais consistem numa estrutura
contendo os diferentes estados possveis e variveis para armazenamento do estado
atual, estado seguinte, combinao de entrada e sinal de reset, de acordo com a
Listagem 3.2.
Listagem 3.2 Variveis utilizadas na descrio de circuitos sequenciais.

O corpo do cdigo VHDL possui trs mdulos de processamento paralelo


(declarao process) sincronizados com o sinal de relgio: deteo de reset, transio

62

de estado e um mdulo combinatrio de atualizao das sadas e aplicao do diagrama


de estados.
A estrutura da implementao da deteo do reset difere na dependendo da
relao com o sinal de relgio (sncrono ou assncrono), no entanto em qualquer um dos
casos realizada uma converso do valor do pino de reset (definido como entrada) para
uma varivel interna, como apresentado na Listagem 3.3.
Listagem 3.3 Blocos de deteo e converso do sinal de reset para varivel interna.

O bloco de transio de estado efetua a verificao se o sinal de reset se


encontra ativo e a transio para o estado seguinte dependendo do sinal de reset:
quando se encontra ativo atribui transio para estado inicial, caso contrrio transita
para o prximo estado em funo do diagrama de estados do circuito em anlise. A
estrutura gerada pelo algoritmo para este bloco encontra-se apresentada na Listagem
3.4.
Listagem 3.4 Bloco de atribuio do estado seguinte.

A atribuio das sadas e aplicao do diagrama de estados e transies tem


estrutura diferente dependendo da existncia ou no de pinos de entrada. Quando no
existem entradas (estado seguinte apenas influenciado pelo estado anterior),
utilizada a estrutura apresentada na Listagem 3.5.
Listagem 3.5 Bloco de atribuio das sadas e aplicao do diagrama de estados para circuitos
sem entradas.

Quando existem pinos de entrada o estado seguinte influenciado pelo estado


anterior e pela combinao de entrada, logo existe a necessidade de efetuar uma dupla

63

seleo, ao invs de uma seleo simples como no caso anterior. A estrutura de cdigo
gerada pelo algoritmo encontra-se apresentada na Listagem 3.6.
Listagem 3.6 Bloco de atribuio das sadas e aplicao do diagrama de estados para circuitos
com entradas.

3.9.5. Taxa de sucesso da rplica obtida


De forma a quantificar a percentagem do comportamento circuito integrado que
foi possvel extrair com a observao efetuada estimada uma taxa de sucesso para a
rplica obtida, semelhana do realizado para os circuitos combinatrios.
Na estimativa so considerados o nmero de estados, as transies detetadas
durante o perodo de observao e as transies possveis (em funo do nmero de
entradas). Deste modo, a taxa de sucesso da replicao de um circuito sequencial
dada por
(%) =

100
2

(3.26)

onde , , e representam a taxa de sucesso, o nmero total de transies


detetadas, o nmero de estados encontrados e o nmero de entradas, respetivamente.

3.10. Mdulo de comunicao


O mdulo de comunicao tem a simples tarefa de transmitir informaes entre
os mdulos alojados no computador e o sistema de aquisio de dados.
O mdulo de comunicao efetua a leitura da instruo e respetivos parmetros
a partir de um ficheiro e formata os dados de forma a enviar uma trama que o sistema
de aquisio de dados. O formato das tramas, instrues e respetivos argumentos so
descritos no captulo 4 deste documento. Os dados enviados pelo sistema de aquisio

64

so recebidos e armazenados na estrutura de dados, numa diretoria lida de um ficheiro


de configurao.
O cdigo fonte (linguagem C#) utilizado para implementar este mdulo encontrase na seo D.12 do Anexo D.

3.11. Mdulo de interface e coordenao


O mdulo de interface e coordenao tem duas funes: fornecer uma interface
ao utilizador que permita introduzir os parmetros e configuraes a utilizar na
replicao bem como retornar o estado da replicao e realizar a gesto da execuo
dos diferentes mdulos.
O mdulo de interface o nico mdulo que se encontra sempre em execuo
durante todo o processo de replicao e garante o funcionamento geral do sistema,
estabelecendo a ordem de execuo dos diferentes mdulos ao longo do tempo para
que o sistema execute o funcionamento apresentado na Figura 3.1. O mdulos so
colocados em execuo de acordo com o fluxograma apresentado na Figura 3.22

Figura 3.22 Funcionamento do mdulo de interface e coordenao.

O cdigo fonte (linguagem C#) utilizado na implementao encontra-se listado


no Anexo D (seo D.13). Um tutorial sobre a interface desenvolvida est disponvel no
Anexo E.

3.12. Anlise matemtica da probabilidade de observar o


comportamento completo de um circuito
Como a preciso das rplicas dependem da observao e da quantidade de
amostras recolhidas ser demonstrado matematicamente que, para um grande nmero
de amostras recolhidas ( 2 ), a probabilidade de serem observadas todas as

65

combinaes (no caso dos circuitos combinatrios) um acontecimento muito provvel,


quando todas as combinaes de entrada possuem a mesma probabilidade de ocorrer.
A probabilidade de em amostras recolhidas todas serem referentes a uma
combinao de entrada diferente dada pela equao (3.27).
( 1)!
1 2
1


=
.

1
Como possvel constatar que o
() =

lim () = 0

(3.27)

(3.28)

ou seja, com o aumento do nmero de combinaes de entrada a probabilidade de


recolher combinaes diferentes em amostras torna-se muito improvvel. A
probabilidade de obter todas as combinaes de entrada para um nmero de amostras
recolhidas superior a dado pela equao (3.29).
() = ( ) = () + (2. ) + + ( ) =
2
1
= () + (1 ()). () + (1 ()) . () + + (1 ())
. () =
(3.29)

= (). (1 ())

=1

A equao (3.29) apresenta a estrutura de uma progresso geomtrica [50] e a


soma dos termos de uma progresso geomtrica dada por [50]

1 . 1 =
=1

1
1

(3.30)

e utilizando a expresso (3.31) possvel simplificar a expresso (3.29) em


()
( ) =
=1 ,
(3.31)
1 (1 ())
que converge para o valor um, ou seja, quando o valor de cresce a probabilidade de
adquirir todas as combinaes de entrada possveis tende para a unidade, logo um
acontecimento muito provvel.
Se um circuito sequencial for considerado uma aproximao a um circuito
combinatrio onde o estado atual e as entradas constituem o equivalente s
combinaes de entrada e o estado seguinte equivale s combinaes de sada, sendo
as combinaes apenas verificadas sincronamente com o sinal de relgio, a deduo
apresentada nas equaes (3.27) (3.21) pode ser generalizada para circuitos
sequenciais. Enquanto num circuito combinatrio a anlise do nmero de amostras
realizada em funo do nmero de entradas, nos circuitos sequenciais tm de ser
considerados o nmero de estados e nmero de entradas (que correspondem ao
nmero de transies possveis que cada estado pode ter). Assim sendo, pelo
paralelismo descrito entre circuitos combinatrios e sequenciais, pode ser inferido que
se for realizada uma observao prolongada e o nmero de amostras recolhidas for
suficientemente grande, a probabilidade de todos os estados e transies serem
observados tende para o valor unitrio de acordo com a equao (3.31).

66

4. Sistema de aquisio de dados


4.1. Introduo
Neste captulo ser descrito o prottipo do sistema de aquisio de dados
implementado para demonstrar experimentalmente o funcionamento dos algoritmos
descritos no captulo anterior. O sistema de aquisio de dados o responsvel por
fornecer aos algoritmos de replicao todos os dados necessrios, atravs da realizao
de medies no circuito alvo de replicao.
Devido ao desconhecimento do circuito sob teste e da localizao da referncia
(GND) do mesmo, precaues adicionais tero de ser contempladas no projeto do
sistema de aquisio de dados de forma a impedir a ocorrncia de curto-circuitos, ou
seja, necessrio isolamento entre o circuito sob teste e o sistema de aquisio de
dados. A velocidade de aquisio das medies outro fator importante a ponderar no
projeto do sistema. Dado que os circuito-alvo so digitais, a minimizao das
converses de sinais analgicos para digitais um fator, entre outros, que permite
aumentar a velocidade de aquisio.
Na primeira fase de aquisio de dados, so adquiridas medies diferenciais
entre cada par de pinos do circuito sob teste na forma analgica para identificao das
tenses de alimentao e despiste de circuitos no digitais. Estas aquisies podem ser
realizadas a uma velocidade baixa dado que as tenses de alimentao so
aproximadamente constantes. Na segunda fase de aquisio, na forma digital para
extrao do comportamento, a velocidade de aquisio , essencialmente nos circuitos
sequenciais, fundamental na preciso dos resultados. Esta distino permite restringir
a escolha de componentes mais rpidos, em geral mais caros, aos blocos do sistema
destinados segunda fase de aquisio.
Entre o sistema de aquisio e o computador onde so executados os algoritmos
de replicao foi implementado um canal de comunicao via porta srie.

4.2. Critrios de escolha de componentes


No projeto e dimensionamento de um circuito eletrnico existem vrios fatores a
serem considerados, tais como: caratersticas dos componentes, custo dos
componentes, componentes em stock, entre outros.
Na implementao do sistema de aquisio de dados o principal critrio utilizado
na escolha dos componentes foi o stock de componentes existentes no laboratrio [51].
A frequncia mxima de operao do circuito sob teste influenciada pela resposta em
frequncia dos componentes do circuito de aquisio de dados. No entanto, como os
componentes eletrnicos com maior largura de banda so geralmente mais

67

dispendiosos, com o prottipo desenvolvido pretende-se comprovar o funcionamento do


sistema para baixas frequncias assente numa arquitetura preparada para operao em
frequncias maiores.

4.3. Arquitetura do sistema de aquisio de dados


Num alto nvel de abstrao, a arquitetura do sistema pode ser descrita em
quatro mdulos distintos: encaminhamento, isolamento, aquisio e controlo. Na Figura
4.1 representado o diagrama de blocos geral do circuito de aquisio de dados.

Figura 4.1 Diagrama de blocos do sistema de aquisio de dados.

A funo do mdulo de encaminhamento realizar o roteamento dos sinais do


circuito sob teste para realizao de medies diferenciais entre quaisquer dois pinos
do circuito sob teste, numa fase onde no so conhecidas alimentaes do circuito.
O mdulo de isolamento responsvel por transmitir a informao para os
blocos seguintes, de uma forma eletricamente isolada, evitando assim a ocorrncia de
curto-circuitos durante a fase onde a referncia do circuito desconhecida. Quando a
referncia do circuito determinada (algoritmicamente), esta conectada componente
no isolada do circuito atravs de um interruptor ou componente similar. O isolamento
garantido na sada do bloco de isolamento, mesmo aps conhecida a referncia,
providenciando assim um mecanismo de segurana na camada fsica.
A aquisio de dados consiste em recolher as medies, analgicas e digitais,
j previamente isoladas do circuito sob teste. Na aquisio de medies analgicas e
digitais so utilizados conversores de analgico para digital (ADC Analog to Digital
Converter) e flip-flops, respetivamente.
O sistema de controlo, baseado num microcontrolador, tem a misso de em cada
instante interpretar as necessidades de aquisio de dados e aplicar os sinais de

68

controlo aos diferentes componentes do circuito bem como fazer a recolha e


transmisso da informao para o computador onde se encontram alojados os
algoritmos. Neste mdulo existe ainda um detetor de transies, destinado a identificar
as transies do sinal de relgio com objetivo de gerar uma interrupo no
microcontrolador para efetuar a aquisio de medies, essencialmente nos circuitos
sequenciais. Dois interruptores (ou componentes similares) controlam a provenincia do
sinal de incio de aquisio de dados, isto , se os instantes das aquisies so
determinados pelo microcontrolador ou diretamente pelo detetor de transies.
Nesta dissertao foi implementado um sistema capaz de analisar circuitos
integrados com um mximo de 16 pinos, contudo o circuito pode ser generalizado para
maior nmero de pinos. Tendo por base o diagrama de blocos da Figura 4.1 existem
vrias implementaes possveis. Nas subsees que se seguem ser descrita a
implementao realizada nesta dissertao.

4.4. Implementao do sistema de aquisio de dados


4.4.1. Mdulo de encaminhamento
O mdulo de encaminhamento essencial na aquisio de medies
diferenciais entre os vrios pinos do circuito sob teste. Este bloco constitudo por dois
sistemas de rels idnticos, onde todos os pinos do circuito so conectados a cada um
dos sistemas de rels e atravs de variveis de seleo apenas um dos pinos
conectado sada do sistema de rels. Assim sendo, atravs do controlo das variveis
de seleo dos dois sistemas de rels possvel efetuar o encaminhamento do sinal de
forma a medir a tenso entre qualquer par de pinos do circuito sob teste, como ilustrado
na Figura 4.2.

Figura 4.2 Diagrama de blocos de alto nvel do mdulo de encaminhamento.

A escolha de rels em detrimento de outros comutadores, nomeadamente


MOSFETs, devida s especificidades do circuito:

Necessidade de isolamento entre o sinal a analisar e os sinais de controlo


(necessidade de menor nmero fontes de tenso isoladas necessrias
com o uso de rels);

69

Minimizao das quedas de tenso no comutador;


Frequncia de comutao pouco relevante (o intervalo de tempo entre
duas medies no decisivo nas medies que este mdulo suporta,
logo a frequncia de comutao pode ser baixa);
Capacidade de conduo de corrente em qualquer sentido.

Escolhido o comutador, necessrio dimensionar o restante circuito do sistema


de rels. A escolha do rel que deve estar ativo realizada em funo dos sinais de
seleo, porm a utilizao de 16 sinais de controlo (um para cada rel) para cada
sistema de rels implica uma utilizao massiva de portas do microcontrolador. A
insero de um descodificador permite reduzir o nmero de sinais de seleo para
= log2()

(4.1)

onde e representam o nmero de sinais de seleo necessrios e o nmero mximo


de pinos que o sistema admite, respetivamente.
O esquema eltrico de um sistema de rels com descodificador (DG526CJ)
implementado encontra-se apresentado na Figura 4.3.

Figura 4.3 Esquema eltrico de sistema de encaminhamento baseado em rels, com


descodificador.

A utilizao de um descodificador analgico permite o controlo da tenso de


ativao dos rels atravs do ajuste da entrada analgica do descodificador,
possibilitando assim uma maior versatilidade do circuito e independncia do rel
escolhido (limitado gama de operao do descodificador). A corrente de ativao do
rel no fornecida pelo descodificador sendo recomendvel a utilizao de um
amplificador de corrente na configurao de emissor comum, onde a tenso de sada
do descodificador ir determinar o modo de operao do transstor bipolar de juno
(TBJ), fornecendo corrente ao rel quando a tenso de sada suficiente para polarizar
o TBJ e vice-versa.

70

O dodo aos terminais da bobine do rel permite que a corrente de


desmagnetizao da bobine flua pelo dodo, evitando danos no circuito de controlo do
rel.
O controlo de um sistema de rels igual ao descrito efetuado atravs dos sinais
de seleo e habilitao. Uma anlise do tempo de comutao dos rels
comparativamente ao tempo de comutao do descodificador necessria, de forma a
garantir que dois rels no se encontram ativos em simultneo no mesmo sistema de
rels, causando um possvel curto-circuito no circuito sob teste. Quando ocorre uma
mudana do rel ativo o sinal de habilitao do descodificador deve desativar o mesmo
(nenhuma sada ativa) durante a abertura do rel anteriormente ativo. A Figura 4.4
apresenta a evoluo dos sinais de controlo em situaes de mudana do rel ativo,

Figura 4.4 Diagrama Temporal dos sinais de controlo de um sistema de rels.

onde dado por


= +

(4.2)

sendo e o tempo de abertura do rel e margem de segurana, respetivamente.


Na implementao do mdulo de encaminhamento foram utilizados os
componentes apresentados na Tabela 4.1.
Tabela 4.1 Componentes utilizados na implementao dos mdulos de encaminhamento.

Componente
Rel
Transstor
Dodo
Descodificador

Referncia
EC2-5NU
2N2222
1N4448
DG526CJ

Caratersticas
[52]
[53]
[54]
[55]

So utilizados dois circuitos iguais ao da Figura 4.3 para formao do mdulo de


encaminhamento completo.

4.4.2. Mdulo de isolamento


O mdulo de isolamento permite que seja efetuada a passagem de informao
de uma forma eletricamente isolada. No sistema de aquisio so aplicados dois tipos
de isolamento: por elevada impedncia de entrada e tico, para medies analgicas e
digitais respetivamente.

71

4.4.2.1. Isolamento por elevada impedncia de entrada

As medies de sinais analgicos so necessrias na fase de deteo dos pinos


de alimentao e incidem na medio da tenso entre as sadas dos dois blocos de
encaminhamento baseados em rels. Como nesta fase, a medio pretendida
diferencial, isto , no est referenciada ao GND, utilizado um amplificador de
instrumentao.
Na implementao do isolamento de sinais analgicos foi utilizado o amplificador
de isolamento de referncia AD622 [56], com a montagem apresentada na Figura 4.5.

Figura 4.5 Isolamento de sinal analgico com o amplificador de instrumentao AD622.

Com a montagem apresentada na Figura 4.5, possvel a leitura de diferenas


de tenso na entrada de mdulo 15V. Os pinos RG permitem a configurao de um
ganho de tenso (entre 2 e 1000) atravs da utilizao de uma resistncia [56]. Como a
sada do amplificador se destina a leitura numa ADC e dada a gama de tenses
admitidas na entrada foi configurado o ganho mnimo permitido pelo amplificador (ganho
unitrio) atravs da no utilizao de qualquer resistncia entre os pinos RG [56]. Assim
sendo, a tenso na sada dada pela expresso (4.3).
= (+) ()

(4.3)

Tendo a gama de tenses de sada (igual gama de tenses de entrada) e a


gama de tenses de entrada tipicamente admitidas pelas ADCs de baixa potncia a
aplicao de uma reduo proporcional na sada do amplificador ser necessria.

4.4.2.2. Isolamento tico

As medies de sinais digitais so necessrias na fase de aquisio de amostras


para anlise comportamental. Nesta fase a despistagem de circuitos no digitais j foi
efetuada, ou seja, o objetivo das medies determinar o nvel, em vez do valor exato
da tenso entre dois pontos. Assim sendo, a utilizao de opto-acopladores permite a
transmisso de informao de uma forma eletricamente isolada atravs de um conjunto

72

LED-fotodetetor, onde a polarizao, ou no, do LED depende do nvel do sinal de


entrada, em particular da corrente.
Na implementao do bloco de isolamento tico no sistema de aquisio de
dados desenvolvido, necessrio ter em conta os requisitos da Tabela 4.2.
Tabela 4.2 Caratersticas e requisitos do bloco de isolamento tico.

Entrada

Sada

Caratersticas
Ligao: pinos do circuito sob teste
Gama de tenses de entrada: 0 V - 15 V
Nvel alto: 3,3 V / 5 V
Ligao: flip-flop
Gama de tenses de sada: 0 V - 5 V
Nvel alto: 5 V

Opto
acoplador

Requisitos
- Alta impedncia de entrada
- Converso para escala mais
baixa
- Sada compatvel com lgica
TTL/CMOS

6N136 [57]

A impedncia de entrada de um opto-acoplador baixa, logo o aumento da


impedncia de entrada dever ser feito externamente, por exemplo, com recurso a um
amplificador operacional, a funcionar como seguidor de tenso (ganho unitrio), como
ilustrado na Figura 4.6. O aumento da impedncia de entrada fundamental para no
afetar o funcionamento do circuito sob teste devido ao consumo de corrente.

Figura 4.6 Circuito de isolamento tico com opto-acoplador 6N136 e alta impedncia de
entrada.

O dimensionamento da resistncia tem em conta a tenso de entrada e a


corrente no LED. Pelas regras dos circuitos eltricos a corrente no LED, , dada
por
=

(4.4)

Onde e representam a tenso de entrada e queda de tenso no LED,


respetivamente.

73

Para = 1,45 [57] e polarizao do LED quando 3,3 mantendo


a corrente no intervalo indicado pelo fabricante (entre 5mA e 25mA [57]), e de
acordo com a equao (4.4) foi fixado o valor de em 180 .
A resistncia de sada, , tem por funo regular a corrente na sada. Note-se
que existe uma inverso no nvel do sinal pois quando o LED se encontra polarizado
(nvel alto na entrada) devido polarizao do foto-transstor a tenso na sada
corresponde ao nvel baixo e vice-versa. Quando o foto-transstor no se encontra
polarizado, a corrente no coletor do transstor nula, logo a queda de tenso na
resistncia mnima e apenas vai influenciar o tempo de carga do condensador de
entrada do bloco seguinte (flip-flop) [58]. Uma resistncia muito alta vai amentar o tempo
de carga do referido condensador, limitando a velocidade de operao do circuito.
Quando o foto-transstor se encontra polarizado a corrente mxima na sada no dever
ser superior a 8 mA, logo pela lei de Ohm [5] temos
=

5
=
= 625

(4.5)

onde representa a corrente de sada. Para efeitos de implementao, de forma a no


operar no limite do componente, foi regulada a corrente para um valor mximo de
5 mA, ou seja, pela equao (4.5) foi utilizada uma resistncia de valor igual a 1 k.

4.4.3. Mdulo de aquisio


O mdulo de aquisio tem a funo de converter os sinais a medir para um
formato compatvel com o microcontrolador, garantindo a fiabilidade das aquisies.
semelhana do mdulo de isolamento a aquisio de sinais analgicos e digitais so
distintas.

4.4.3.1. Aquisio de sinais analgicos

A aquisio de sinais analgicos efetuada com recurso a um conversor de


analgico para digital (ADC). Apesar de na arquitetura do sistema a ADC ser
representada como um elemento externo ao microcontrolador, a grande maioria dos
microcontroladores j possuem ADCs internas. No entanto, a ADC um elemento
relevante na aquisio de dados e para efeitos de anlise e dimensionamento do circuito
a ADC representada externamente.
A ADC do microcontrolador utilizado permite a converso de sinais numa
amplitude de 5V. Pela Figura 4.1 verifica-se que o sistema de aquisio dever medir a
tenso na sada do amplificador de instrumentao que varia numa gama de [-15;15] V.
Assim sendo, necessrio um sistema de converso proporcional do intervalo de
entrada para o intervalo [0;5] V, suportado pela ADC.

74

Numa primeira fase, o sinal original convertido para uma escala compreendida
entre [-2,5; 2,5] V (reduo proporcional de seis vezes) atravs de um divisor resistivo
e posteriormente efetuada a soma de um valor constante de 2,5V convertendo assim o
sinal para o intervalo de interesse. Na Figura 4.7 apresentado o circuito de
condicionamento do sinal para leitura na ADC.

Figura 4.7 Circuito de aquisio de sinais analgicos numa gama de entrada de mdulo 15V.

A relao entre as tenses de entrada e sada do divisor resistivo dada pela


expresso
=

2
.
1 + 2 +

(4.6)

onde a resistncia varivel, , tm por funo permitir um ajuste fino.


Pela anlise da Figura 4.7 pode constatar-se que a soma do valor constante de
2,5V efetuada atravs de um circuito subtrator (subtraindo o valor simtrico), pois
permite utilizar um circuito mais pequeno comparativamente a um circuito somador
inversor e de mais simples dimensionamento comparativamente a um circuito somador
inversor.
A relao entre a entrada e sada do circuito subtrator (ou amplificador
diferencial) dada pela expresso
=

4
. (+ )
3

(4.7)

onde + e representam as tenses aos terminais no-inversor e inversor do


amplificador operacional, respetivamente. Para 3 = 4 obtido um amplificador
diferencial de ganho unitrio, ou seja, um circuito subtrator.
Por fim utilizado um seguidor de tenso para evitar que a impedncia de
entrada do ADC tenha influncia no ganho do circuito subtrator, assim como limitar a
tenso no intervalo [0;5] V atravs das tenses de saturao.
A relao entre a tenso de entrada no ADC e a tenso de entrada no bloco de
aquisio ento obtida pela expresso

= 2,5 +

1
, [15; 15]
6

75

(4.8)

onde e representam as tenses no ADC e circuito de condicionamento


de sinal, respetivamente.
O circuito de condicionamento foi implementado com as resistncias
apresentadas na Tabela 4.3.
Tabela 4.3 Resistncias utilizadas no circuito de condicionamento de sinal.

Valor (k)
56
270
1
1
100

Resistncia

Em caso de reduo da gama de tenses de entrada do ADC o ajuste da


resistncia varivel e da tenso /2 permite explorar alguma flexibilidade do circuito
em se ajustar para diferentes intervalos. O circuito completo de aquisio a baixa
velocidade consiste no agrupamento dos circuitos dos blocos de encaminhamento,
isolamento por elevada impedncia de entrada e aquisio de dados analgicos de
acordo com a Figura 4.1 e encontra-se disponvel no Anexo F (seo F.1).

4.4.3.2. Aquisio de sinais digitais

O circuito de aquisio utiliza um flip-flop (tipo D) para cada pino, com sinal de
relgio partilhado por todos os flip-flops, como ilustrado na Figura 4.8.

Figura 4.8 Circuito de aquisio de sinais digitais.

A utilizao de flip-flops na configurao apresentada na Figura 4.8 garante que


a aquisio de todos os sinais so no mesmo instante temporal, condio essencial para
garantir a fiabilidade do produto final. O sinal de aquisio controlado pelo mdulo de
controlo e deve ser garantido que entre dois sinais de aquisio o microcontrolador
efetua a leitura de todos os flip-flops.
Na implementao do mdulo de aquisio de dados digitais so utilizados flipflops 74HCT174N, cujas caratersticas [59] so compatveis com as necessidades do

76

circuito. As caratersticas dos flip-flops dependem em grande parte dos isoladores ticos
utilizados no bloco anterior. No circuito implementado, os isoladores ticos 6N136 so
compatveis com lgica TTL e CMOS, compatvel com a generalidade dos componentes
de eletrnica digital.
O circuito completo de aquisio de sinais de frequncia normal de
funcionamento do circuito digital consiste no agrupamento dos circuitos dos blocos de
isolamento tico e aquisio de dados digitais de acordo com a Figura 4.1 e encontrase disponvel no Anexo F (seo F.2). O circuito completo do sistema de aquisio de
dados encontra-se disponvel na seo F.3 do mesmo anexo.

4.4.4. Mdulo de controlo


O mdulo de controlo responsvel por gerir os sinais de controlo de todo o
sistema de aquisio de dados, efetuar o registo das medies e comunicar com o
computador onde esto alojados os algoritmos de replicao. A Tabela 4.4 apresenta
os requisitos necessrios do microcontrolador para desempenhar as funes deste
mdulo, no contexto do prottipo desenvolvido.
Tabela 4.4 Requisitos mnimos do microcontrolador do mdulo de controlo.

Requisito
Entradas analgicas:
Entradas/sadas digitais:
Interrupes externas:
Comunicao:
Frequncia de operao:
Memria interna:

Tipo ou quantidade
1
28
1
Porta COM ou Ethernet
16MHz18
248 KB (ver subseo 4.5)

Considerando as caratersticas do sistema a implementar o microcontrolador


escolhido foi o Arduno Mega 2560 [60], cujas caratersticas satisfazem os requisitos da
Tabela 4.4.

4.4.4.1. Funcionamento geral do mdulo de controlo

Quando existe a necessidade de conhecer mais dados do circuito sob anlise o


computador envia uma instruo ao mdulo de controlo, sendo realizadas as tarefas
pedidas na instruo e retornadas as medies obtidas, aguardando posteriormente at
nova instruo, tal como ilustrado na Figura 4.9.

18

Na implementao de sistemas de aquisio de dados com maiores velocidades de operao


estas caratersticas assumem grande relevncia na escolha do microcontrolador.

77

Figura 4.9 Funcionamento geral do mdulo de controlo do sistema de aquisio de dados.

As instrues permitidas e respetivas implementaes encontram-se descritas


nas subsees seguintes.

4.4.4.2. Sinais de controlo

Os sinais de controlo permitem que mltiplas instrues sejam realizadas sobre


o mesmo circuito, permitindo a existncia de circuitos mais flexveis e minimizando a
utilizao de circuitos dedicados a uma nica operao. Neste sistema de aquisio de
dados os sinais de controlo desempenham maioritariamente tarefas de
encaminhamento de sinal.
O sistema de aquisio de dados possui os sinais de controlo descritos na
Tabela 4.5.
Tabela 4.5 Sinais de controlo do sistema de aquisio de dados.

19

Sinal de controlo

Designao

Seleo Descodificador A19

Sel_A

Seleo Descodificador B19

Sel_B

Habilitao Descodificador A

Hab_A

Habilitao Descodificador B

Hab_B

Conexo do sinal de relgio

Rel_Con

Conexo da referncia

Ref_Con

Aquisio de dados digitais

Dg_Aq

Sinal constitudo por 4 bits

78

Descrio
Seleciona o rel a ativar do
conjunto de rels A
Seleciona o rel a ativar do
conjunto de rels B
Habilita o funcionamento do
descodificador A (lgica direta)
Habilita o funcionamento do
descodificador B (lgica direta)
Ativa o interruptor que encaminha
o sinal de relgio
Ativa o interruptor que encaminha
a referncia (GND)
Sinal de aquisio (relgio) dos
flip-flops

4.4.4.3. Instrues

O mdulo de controlo tem a capacidade de realizar cinco instrues distintas,


enumeradas na Tabela 4.6.
Tabela 4.6 Instrues reconhecidas pelo mdulo de controlo.

Instruo
(Parmetros)
Medio Analgica
(, , )

Cdigo
0001

Medio
Digital Assncrona
(, )

0010

Medio
Digital Sncrona
(, , , )

0011

Deteo de Transio
(, , )

0100

Confirmao de
ligao ()

1111

Descrio
Realiza medies analgicas de
tenso entre os pinos e .
Realiza medies digitais de todos os
pinos em simultneo para efeitos de
anlise de circuitos combinatrios. Utiliza
o pino indicado em como referncia.
Realiza medies digitais de todos os
pinos em simultneo a cada transio do
pino , para efeitos de anlise de
circuitos sequenciais. Utiliza o pino
indicado em como referncia.
Regista o intervalo de tempo entre
transies durante transies do sinal
do pino . Utiliza o pino indicado em
como referncia.
Confirma a existncia de uma ligao
entre o computador e o sistema de
aquisio de dados.

Cada instruo possui um cdigo identificativo nico, e enviada para o


microcontrolador com a estrutura da Figura 4.10.

Figura 4.10 Estrutura de uma instruo.

O fim da instruo indicado pelo carater - e os parmetros de cada instruo


encontram-se separados pelo carater :, descritos abaixo:

Cdigo: identificador nico de cada instruo;


Medies: define o nmero de medies a realizar na execuo da
instruo;
Argumento 1, Argumento 2: definem parmetros de encaminhamento de
sinal;
Argumento 3: Define o perodo do sinal de relgio na instruo de
medio digital sncrona. Nas restantes instrues so necessrios no
mximo dois argumentos.
Definidas as instrues e respetivos argumentos, o mdulo de controlo faz
aplicar os sinais de controlo conforme a instruo recebida de acordo com a Tabela 4.7.

79

Tabela 4.7 Relao entre as instrues e os sinais de controlo.

Instruo
Sinais de controlo
Cdigo Medies Arg1 Arg2 Sel_A Sel_B Hab_A Hab_B Rel_Con Ref_Con
0001
N
A
B
A
B
1
1
0
0
0010
N
A
A
0
1
0
1
0011
N
A
B
A
B
1
1
1
1
0100
N
A
B
A
B
1
1
1
1
4.4.4.4. Implementao das instrues

Nas subsees seguintes ser descrita a implementao das instrues suportadas


pelo microcontrolador. O cdigo fonte completo utilizado para programao do
microcontrolador encontra-se listado no Anexo F (seo F.4).

A. Medio analgica
Considerando a arquitetura implementada, a aquisio de medies analgicas
implica a identificao de um par de pinos, selecionveis atravs dos argumentos da
instruo. O valor resultante da medio, , dado pela expresso
= 1 2

(4.9)

onde 1 e 2 representam as tenses nos pinos definidos nos argumentos 1 e 2


da instruo, respetivamente. Esta instruo realiza medies diferenciais, permitindo
tambm a realizao de medies associadas a uma referncia (indicando a referncia
no argumento 2). A execuo desta instruo encontra-se ilustrada na Figura 4.10.

Figura 4.10 Execuo da instruo de medio analgica.

80

Dg_aq
0
0
0

Pela anlise da Figura 4.10 verifica-se a existncia de um tempo aleatria entre


medies. A instruo para realizao de medies analgicas requerida ao sistema
de aquisio de dados nas etapas de deteo das alimentaes e despiste de sinais
no digitais, logo necessrio que o intervalo entre aquisies no seja constante de
forma a evitar que a aquisio de medies de um sinal peridico ocorram sempre no
mesmo instante em diferentes ciclos. A utilizao de um intervalo de tempo constante
entre medies de um sinal peridico cujo perodo muito prximo ou mltiplo do
intervalo de tempo entre medies, pode resultar num conjunto de medies que
conduziro a uma interpretao errada do sinal medido, originando a classificao de
um sinal varivel no tempo como constante.

B. Medio digital assncrona


Esta instruo realiza a medio de todos os pinos do circuito integrado sob anlise
relativamente a um pino de referncia indicado no segundo argumento da instruo. A
execuo desta instruo consiste essencialmente em atribuir os sinais de controlo para
encaminhamento do sinal de referncia e controlo do sinal de aquisio, como ilustrado
na Figura 4.11.

Figura 4.11 Execuo da instruo de medio digital assncrona.

Pela anlise da Figura 4.11 verifica-se que a aquisio realizada em intervalos de


tempos no peridicos. Este assincronismo destina-se a evitar interpretaes erradas

81

das medies de sinais peridicos, semelhana do referido anteriormente na


execuo de medies analgicas.
As medies efetuadas na execuo desta instruo so digitais e devido ao
isolamento tico aplicado (j descrito na seco 4.4.2.2 deste documento) as medies
obtidas e enviadas pelo sistema de aquisio de dados encontram-se em lgica negada.
O sinal de aquisio de dados consiste no sinal de relgio dos flip-flops que efetuam
a aquisio dos sinais. Como os flip-flops utilizados (74HCT174 [59]) realizam a
aquisio na transio ascendente do sinal de relgio o sinal de aquisio funciona em
lgica direta, no entanto pode ser necessrio ajustar o sinal de aquisio em funo dos
componentes utilizados.

C. Medio digital sncrona


A instruo de aquisio de medies digitais sncronas realiza as mesmas
medies que a instruo descrita na subseco anterior, com a variante que os
instantes de aquisio so definidos pelas transies de um sinal de relgio (pino de
relgio um dos argumentos da instruo) ao invs de ser realizada a intervalos
temporais no constantes. A deteo das transies do sinal de relgio efetuada
atravs da utilizao de uma interrupo externa (ativada em cada transio), e a
execuo desta instruo encontra-se esquematizada na Figura 4.12.

Figura 4.12 Execuo da instruo de medio digital sncrona.

Um fator a ter em conta na aquisio sincronizada o tempo de estabilizao dos


sinais aps a transio do sinal de relgio, pois a fiabilidade das medies pode ser
afetada pela aquisio de um sinal durante a sua transio. Na Figura 4.13 encontra-se
apresentado um diagrama onde considerado que o tempo de subida e descida dos
sinais muito superior ao tempo de transio do sinal de relgio. Aps a transio do
sinal de relgio aguardado um tempo, , e posteriormente realizada a aquisio ( ).

82

O tempo de espera (aguarda estabilizao dos sinais) para aquisio calculado a partir
do perodo do sinal de relgio, que um dos argumentos da instruo.

Figura 4.13 Aquisio de medies aps uma transio do sinal de relgio.

O intervalo de tempo dado por

(4.10)
, ]0,1[
2
onde e representam o perodo do sinal de relgio e um fator de ajuste. Para efeitos
de implementao foi utilizado = 0,9 uma vez que os sinais j se encontram
estabilizados devido proximidade da transio do sinal de relgio.
= .

Para uma correta realizao desta instruo necessrio que todas as medies
sejam realizadas antes da transio seguinte do sinal de relgio, caso contrrio as
medies obtidas no sero fidedignas. Na implementao desta instruo necessrio
ter em conta o nmero de comandos que o microcontrolador tem de executar a cada
transio, nomeadamente quando o nmero de pinos do circuito sob anlise inferior a
16 (nmero mximo de pinos possveis). Foi analisado e decidido que,
independentemente do nmero de pinos a medir, realizada a medio de todos pinos
pois os comandos para excluir medies sem significado implicariam um maior custo
computacional, tendo ento sido tomada a opo em adquirir todas as medies e
posteriormente descartar as medies sem significado para o algoritmo de replicao.

D. Deteo de transio
A deteo consiste na execuo de uma instruo que deteta a transio de um
sinal e regista o tempo decorrido at ao momento em que a transio ocorre. No caso
implementado o microcontrolador (Arduno Mega) tem a funo que retorna o tempo
que passou desde o incio do funcionamento do sistema. De forma a minimizar as
operaes no microcontrolador entre transies so enviados os dados brutos (tempo
desde o incio do funcionamento at ocorrncia da transio) para o computador
sendo todo o processamento (subtrao dos tempos de duas transies consecutivas
para obter intervalo entre transies) realizados fora do microprocessador quando existe
mais tempo disponvel para processamento. O sistema implementado modular e
permite o melhoramento de diferentes partes do sistema, no entanto necessrio ter
em conta a forma como os dados so disponibilizados pelo sistema de aquisio de
dados, como exemplo esta instruo.
Esta instruo utilizada para fornecer dados para detetar algoritmicamente qual
dos pinos corresponde ao sinal de relgio, quando detetado um circuito sequencial. O

83

sinal a analisar indicado num dos argumentos da instruo e cada transio do mesmo
ir ser tratada atravs de uma interrupo externa, como ilustrado na Figura 4.14.

Figura 4.14 Execuo da instruo de deteo de transies.

Esta instruo foi concebida para ser executada continuamente at o nmero de


transies pretendidas ser atingido. No caso de ser aplicada esta instruo a um sinal
constante o nmero de transies nunca ser atingido, pelo que necessrio adicionar
um mecanismo de proteo, atravs da existncia de um timer que limite o tempo
mximo em que possvel ficar espera de uma transio, garantindo assim que a
instruo nunca fica em funcionamento infinito.
Para sistemas de maior frequncia de operao onde o intervalo entre transies
menor ou utilizao de microcontrolador cujas interrupes apenas sejam ativadas por
uma transio ascendente ou descendente (aos invs de ambas) a utilizao de um
circuito detetor de transies (ver seo F.5 do Anexo F) pode ser importante no
melhoramento do desempenho do sistema.
E. Confirmao da ligao
Quando o sistema recebe um pedido de confirmao de ligao, envia uma resposta
afirmativa, como apresentado na Figura 4.14

Figura 4.15 Execuo da instruo de confirmao de ligao.

84

A confirmao de ligao uma instruo realizada exclusivamente para verificar a


conexo entre o sistema de aquisio de dados e o computador onde esto alojados os
algoritmos.
Esta instruo pode ser interpretada como a instruo equivalente ao comando ping
[61] utilizados em redes de comunicao de dados.
No Anexo G encontra-se apresentado sistema de montagem implementado
experimentalmente.

4.5. Consideraes para operao em alta frequncia


Para um sistema de aquisio de dados com capacidade de adquirir dados a alta
frequncia so necessrias algumas alteraes ao nvel dos componentes utilizados,
nomeadamente a utilizao de componentes com largura de banda compatvel com a
frequncia de aquisio pretendida. Ao implementar o circuito numa placa de circuito
impresso tambm aconselhvel a utilizao de um roteamento de sinal compatvel
com a frequncia a que o circuito vai operar.
Ao nvel da arquitetura do sistema de aquisio de dados, podem ser necessrias
alteraes de forma a adicionar ao sistema uma memria, dado que com o aumento da
frequncia a quantidade de dados recolhidos por segundo aumenta e a capacidade de
transmisso de dados do sistema pode no ser suficientemente elevada. A utilizao de
uma memria necessria quando
( + ) > 0

(4.10)

onde , e representam a memria necessria para armazenar os dados,


a taxa de transmisso de dados entre o sistema de aquisio de dados e o computador
e a memria interna do microcontrolador, respetivamente. As parcelas da equao
(4.10) devem so medidas em bytes/s ou mltiplos. Quando uma memria adicionada
ao sistema a capacidade mnima necessria da memria dada pela manipulao da
equao (4.10), sendo dada por
> ( + )

(4.11)

onde representa a capacidade da memria em bytes ou mltiplos


(dependendo da ordem e grandeza utilizada nas restantes parcelas). A velocidade de
transferncia de dados para a memria adicionada dever ser compatvel com a
velocidade de operao do sistema.
Quando no um valor constante, deve ser considerado o valor mnimo.

85

5. Resultados
5.1. Introduo
Neste captulo sero apresentados os resultados obtidos experimentalmente
atravs da replicao de circuitos integrados digitais (combinatrios e sequenciais)
utilizando o prottipo implementado, de forma a validar os algoritmos desenvolvidos.
Sero ainda analisados os fatores que influenciam as rplicas obtidas e comparados os
resultados obtidos para circuitos combinatrios e sequenciais.

5.2. Resultados obtidos para circuitos combinatrios


5.2.1. Anlise do impacto do nmero de amostras recolhidas
No caso dos circuitos combinatrios a capacidade de replicao do sistema
desenvolvido altamente influenciada pelo nmero de amostras recolhidas dado que a
fonte de dados do sistema baseada na observao do funcionamento. Assim sendo,
nenhuma combinao pode ser forada por ao externa, logo toda a anlise ser
baseada na probabilidade de todas as combinaes ocorrerem naturalmente. De forma
a tornar a anlise independente do nmero de entradas do circuito, o impacto das
amostras recolhidas analisado atravs da razo entre o nmero de amostras
recolhidas, , e o nmero de combinaes de entrada possveis, ( = 2 , onde
representa o nmero de pinos de entrada). A verificao experimental da influncia do
nmero de amostras foi realizada atravs da replicao de circuitos combinatrios com
variao do nmero de amostras recolhidas e combinaes de entrada possveis e
registo da taxa de sucesso estimada pelo sistema. Os resultados obtidos encontram-se
apresentados na Figura 5.1 e podem ser consultados com maior detalhe no Anexo H.1.

Figura 5.1 Evoluo da taxa de sucesso em funo do nmero de amostras.

86

Pela anlise da Figura 5.1 possvel verificar que a taxa de sucesso tende para
100% com o aumento da relao / , coincidente com o evoluo demonstrada
matematicamente pela equao (5.5). Esta convergncia confirma experimentalmente
que quando o nmero de amostras recolhidas muito superior ao nmero de
combinaes de entrada possveis, a replicao completa do circuito combinatrio um
acontecimento muito provvel. Quantitativamente, atravs dos dados obtidos
experimentalmente, quando o nmero de amostras recolhidas , no mnimo, cinco vezes
superior ao nmero de combinaes de entrada possveis ( = 5), muito provvel
que o circuito tenha sido replicado na totalidade, independentemente do nmero de
combinaes de entrada.

5.2.2. Anlise das rplicas obtidas


De forma a analisar a capacidade de replicao do sistema desenvolvido, no que
respeita a circuitos combinatrios, foram submetidos a replicao os circuitos integrados
apresentados na Tabela 5.1. O sistema de replicao implementado apenas tinha
conhecimento (fornecido pelo utilizador) dos pinos de sada do circuito sob teste, no
sendo conhecida qualquer outra caraterstica.
Tabela 5.1 Circuitos integrados combinatrios utilizados para teste do sistema.

Teste

Tipo de
circuito

Componentes
20

Tipo de lgica

74LS08 [62]
74HCT32
[63]
74LS86 [64]
74HC139
[65]

TTL (lgica direta)

#1

Porta AND

#2

Porta OR

#3

Porta XOR

#4

Descodificador

17

37

74LS48 [66]

TTL (lgica direta)

CD4001[67]

CMOS (lgica direta)

#5
#6

Conversor BCD
- 7 segmentos
Porta NOR21

Mult.
0

Referncia

PL
4

CMOS (lgica direta)


TTL (lgica direta)
CMOS (lgica
negada)

Utilizando o software ISE Design da Xilinx [45], foi sintetizado o cdigo VHDL
gerado pelo sistema de replicao e realizadas simulaes para aferir o comportamento
da rplica. Nas verificaes experimentais realizadas os circuitos sob anlise foram
estimulados artificialmente utilizando um microcontrolador 22 auxiliar para efetuar a
gerao de sinais aleatrios nas entradas do circuito integrado, ou seja, apesar dos
circuitos sob teste no se encontrarem inseridos num sistema maior, a estimulao
provocada intencionalmente cria um ambiente de funcionamento equivalente para o
qual o sistema foi concebido. [68]

20

Legenda: PL- Portas Lgicas; Mult: Multiplexers.


Teste realizado a circuito montado por terceiros (teste cego).
22
Foi utilizado o Arduino Uno [68]
21

87

Os resultados obtidos encontram-se apresentados na Tabela 5.2, onde


estabelecida uma relao entre a taxa de sucesso, o nmero de componentes
sintetizados e a correspondncia estrutural e comportamental entre a rplica e as
especificaes tcnicas dos circuitos integrados.
Tabela 5.2 Resultados obtidos para circuitos combinatrios.

Taxa
(%)

100

90-99

<90

Teste
#1
#2
#3
#4
#5
#624
#1
#2
#3
#4
#5
#1
#2
#3
#4
#5

Componentes
PL
4
4
20
24
112
4
100
100
100
100
115
150
150
150
150
150

Mult.
0
0
0
0
10
0
9
2
5
10
10
12
8
10
10
10

Correspondncia
estrutural
Total23
Total22
Equivalente22
Equivalente 22
Inexistente22
Equivalente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente

Correspondncia
comportamental
Observada
Completa
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial

Pela anlise da Tabela 5.2 verifica-se que quando a taxa de sucesso igual a
100%, a correspondncia comportamental absoluta, isto , corresponde aos
comportamentos descritos nas folhas de caratersticas do circuitos e, por conseguinte,
ao comportamento observado. Por outras palavras, foi verificado experimentalmente
que quando todas as combinaes possveis so observadas num circuito combinatrio
a rplica obtida corresponde (funcionalmente) totalidade do circuito, inferindo-se desta
forma que estas rplicas podem substituir o circuito em qualquer circunstncia. Ao invs,
quando a taxa de sucesso inferior a 100%, foi confirmado experimentalmente que a
correspondncia comportamental existe apenas em relao ao comportamento que foi
observado, ocorrendo uma correspondncia parcial das funcionalidades do circuito
integrado. Nestas situaes, como a rplica obtida no corresponde totalidade do
circuito, no existe garantia que a rplica funcione corretamente em qualquer
circunstncia. Quando a rplica se destina a ser utilizada inserida no sistema onde foi
observada provvel que funcione corretamente, no entanto no pode ser excluda a
hiptese de ocorrer uma combinao no observada, ou seja, impossvel quantificar
com exatido a probabilidade de funcionamento de uma rplica no sistema onde foi
observada quando a taxa de sucesso inferior a 100%.
23

O circuito resultante aps sintetizao pode ser consultado no Anexo H.


A montagem do teste #6 foi realizada por terceiros sendo o objetivo descobrir o mximo
possvel sobre funcionamento reproduzindo situao de no conhecimento prvio do utilizador
sobre o circuito
24

88

Estruturalmente, s obtida total correspondncia em alguns casos onde a taxa


de sucesso igual a 100% e depende das caratersticas do sintetizador. medida que
a taxa de sucesso diminui correspondncia estrutura diminui, pois devido menor
quantidade de dados disponveis no possvel simplificar ao mximo a circuito
resultante. O tipo de portas utilizadas pelo sintetizador influncia a correspondncia
estrutural como, por exemplo, no caso das portas XOR (teste #3), onde a rplica foi
gerada com portas do tipo NOT, AND e OR devido s caratersticas do sintetizador, o
que provocou um aumento do nmero de portas lgicas utilizadas. A disparidade entre
o nmero de portas lgicas do circuito original e a rplica verificada no caso do
descodificador (teste #4) e mais acentuadamente no conversor de BCD para 7
segmentos (teste #5) est associado maior complexidade dos circuitos e em particular
ao maior nmero de entradas e sadas com dependncia entre si. Resumidamente,
pelos resultados apresentados na Tabela 5.2, devido baixa correspondncia
estrutural, possvel inferir que o sistema desenvolvido orientado replicao do
comportamento (ver simulaes no Anexo H) em detrimento do esquema lgico, de
acordo com o planeamento realizado e com os objetivos estabelecidos para o sistema.
Pela anlise das Tabela 5.1 e 5.2 possvel verificar que o sistema replicou
diferente famlias lgicas (TTL e CMOS) bem como diferentes tipos de lgica (direta e
negada), sem implicao nas taxas de sucesso estimadas, uma vez que em qualquer
caso o sistema de replicao alcanou a taxa de sucesso mxima, quando a
monitorizao efetuada o permite. Este facto permite tambm concluir que o sistema de
aquisio de dados funciona corretamente para uma gama genrica de circuitos
estruturalmente distintos.

5.3. Resultados obtidos para circuitos sequenciais


5.3.1. Anlise do impacto do nmero de amostras recolhidas
Ao contrrio do verificado nos circuitos combinatrios o nmero de amostras
recolhidas no tem influncia direta na taxa de sucesso estimada para circuitos
sequenciais. Foi verificado experimentalmente que a preciso das rplicas obtidas
aumenta com o aumento do nmero de amostras recolhidas, no entanto a preciso
depende essencialmente da relao entre o nmero de estados gerados internamente
pelo algoritmo e o nmero de amostras recolhidas.

5.3.2. Caratersticas do prottipo desenvolvido


As caratersticas do sistema desenvolvido que influenciam os circuitos
sequenciais encontram-se apresentadas na Tabela 5.3.

89

Tabela 5.3 Limitaes do sistema desenvolvido.

Caraterstica
Frequncia mxima do sinal de relgio
Nmero mximo de amostras para anlise
sequencial

Aplicao
Para deteo
Para aquisio
Para aquisio
Para processamento

Limite
31,25 kHz
2 kHz
2000
ilimitado

5.3.3. Anlise das rplicas obtidas


De forma a analisar a capacidade de replicao do sistema desenvolvido, no que
respeita a circuitos sequenciais, foram sujeitos a replicao circuitos integrados de
funcionamento conhecido, apresentados na Tabela 5.4. semelhana dos testes
realizados aos circuitos combinatrios, o sistema de replicao implementado apenas
tinha conhecimento (fornecido pelo utilizador) dos pinos de sada do circuito sob teste,
no sendo conhecida qualquer outra caraterstica. Ao longo desta seco sero
analisadas as rplicas obtidas e a influncia do sistema onde se encontram inseridos na
rplica obtida atravs do sistema desenvolvido.
Tabela 5.4 Circuitos integrados sequenciais utilizados para teste do sistema de replicao.

Teste

Tipo de circuito

Referncia

Tipo de lgica

#1

Contador
Conversor srieparalelo
Flip-Flop (D)
Conversor srieparalelo
Flip-Flop (JK)

74LS393 [69]

TTL (lgica direta)

74HCT164 [70]

CMOS (lgica direta)

74HCT174 [59]

CMOS (lgica direta)

74HC595 [71]

CMOS (lgica direta)

74LS76 [72]

TTL (lgica direta)

#2
#3
#4
#5

Os testes aos circuitos integrados apresentados na Tabela 5.4 foram realizados


de forma idntica aos circuitos combinatrios e sintetizados utilizando o software ISE
Design da Xilinx [45].
5.3.3.1. Anlise do impacto da ocorrncia do sinal de reset

Num circuito sequencial a ocorrncia do sinal de reset importante para a


obteno da rplica, visto que uma funcionalidade importante que a maioria dos
circuitos integrados possui. Porm, situaes de reset ocorrem, regra geral, poucas
vezes durante o funcionamento do circuito e uma vez que a replicao efetua baseada
em observao a no observao de situaes de reset durante a replicao possvel.

90

A no ocorrncia do sinal de reset durante a observao tem impacto na rplica


obtida, como pode ser demonstrado atravs de testes efetuados ao circuito integrado
74LS39325.
De acordo com [69], o circuito integrado 74LS393 consiste em dois contadores
de 4 bits e para efeitos de teste foram utilizadas as montagens de contador simples e
duplo, apresentadas na Figura 5.2.

Figura 5.2 Montagens para estimulao do circuito integrado 74LS393.

Para efeito da anlise do sinal de reset foi utilizada a montagem de contador


simples apresentada na Figura 5.2. Os diagramas de transies das mquinas de
estados replicadas em funo da ocorrncia do sinal de reset esto apresentados na
Figura 5.3 (os estados com fundo preto representam o estado inicial).

Figura 5.3 Diagramas de transio de estado das rplicas obtidas em funo da ocorrncia
do sinal de reset. (Legenda: Estado/ (Sada)).

Pela anlise da Figura 5.3 verifica-se que em ambas as situaes o nmero de


transies e estados identificados permanece inalterado, bem como a sequncia de
estados. No entanto, verifica-se que o estado inicial (assinalado com fundo negro)
25

A no ocorrncia de situaes de reset tm impacto semelhante em todos os circuitos


integrados sequenciais, no entanto o impacto no circuito 74LS393 facilmente visvel.

91

alterado em funo da ocorrncia do sinal de reset: quando ocorre, pelo menos uma
situao de reset, o estado para onde realizada a transio definido como estado
inicial e realizada uma transio para este estado sempre que o pino de reset
ativado, contrariamente ao que ocorre quando nenhuma situao de reset detetada
onde o primeiro estado identificado definido como estado inicial, sendo definido
estaticamente e no existindo, aps sintetizao, qualquer relao entre o pino de reset
e um estado inicial.
O cdigo VHDL gerado influenciado pela ocorrncia de reset como pode ser
observado nos excertos de cdigo apresentados na Figura 5.4.

Figura 5.4 Cdigo VHDL gerado em funo da ocorrncia de reset.

Com a no ocorrncia do sinal de reset o pino de reset definido como GND ou


VCC (dependendo se o reset ativado no nvel alto ou baixo) e atribuda varivel
reset26 um valor inicial (zero) que nunca ser alterado, uma vez que no foi detetado
pino de reset, isto , estruturalmente a rplica no estar preparada para reproduzir
situaes de reset. Este comportamento foi igualmente verificado em outros circuitos
integrados sujeitos a teste. Para melhor compreenso do impacto da ocorrncia de
reset, os cdigos VHDL gerados em funo da ocorrncia de reset para a montagem de
contador nico apresentada na Figura 5.2 encontram-se disponveis no Anexo I (seo
I.1). Em suma, quando no observada a ocorrncia de uma situao de reset as
transies e os estados ocorridos durante a observao sero igualmente detetados e
reproduzidos, porm no ser possvel retornar a um estado inicial por via de uma ao
de reset.

5.3.3.2. Anlise do impacto do sistema envolvente

Como a descrio da rplica em linguagem VHDL comportamental em funo


da observao realizada, o sistema onde o circuito integrado sob teste se encontra
inserido influencia a rplica obtida. Por outras palavras, diferentes estimulaes podem
ser aplicadas ao mesmo circuito integrado, por exemplo, quando este se encontra

26

A varivel reset est associada ao pino de reset e funciona sempre em lgica direta (ativo no
nvel alto) e atualizada por um bloco process dedicado a verificar as variaes do pino de reset.

92

inserido em sistemas diferentes, podendo existir estados que no so atingidos devido


no ocorrncia dos sinais de estimulao necessrios.
Para efeitos de anlise do impacto do sistema envolvente na rplica obtida,
foram efetuados testes ao circuito integrado 74HCT164 (conversor srie-paralelo), com
diferentes montagens (ver Figura 5.5) que permitem inferir sobre o impacto causado
pelo sistema envolvente ao circuito no diagrama de estados da rplica.

Figura 5.5 Montagens para estimulao do circuito integrado 74HCT164 (conversor srie
paralelo).

De acordo com [70], o circuito integrado 74HCT164 realiza o deslocamento


lgico para a esquerda (de Q0 para Q7) sendo o bit menos significativo (Q0) dado pelo
produto das entradas 1 e 2 (IN1 e IN2). O reset ocorre quando o pino
se encontra
no nvel baixo e o deslocamento realizado na transio ascendente do sinal de relgio.
Para anlise da influncia do sistema envolvente sero consideradas as rplicas
obtidas para as montagens c) e d) da Figura 5.5. Na montagem c) verifica-se que o reset
ocorre quando o sinal se encontra no nvel alto ou quando o pino de sada Q3
assume o valor 1. A montagem d) realiza um condicionamento similar ao da montagem
c), diferindo apenas no pino de sada que provoca reset, neste caso o pino Q4. Os testes
realizados montagem c) com gerao de sinais aleatrios e ocorrncia de reset
resultaram numa rplica onde os pinos Q3, Q4, Q5, Q6 e Q7 foram classificados como
GND27 e o diagrama de transies obtido encontra-se apresentado na Figura 5.6.

Figura 5.6 Diagrama de estados obtido para a montagem com reset associado sada Q3
(Legenda: Estado/ (Sada)).

27

O pino Q3 classificado como GND pois o tempo em que permanece no nvel alto
insignificante.

93

Testes realizados montagem d), com as mesmas condies de teste (embora


possam ter sido observados estados por ordem diferente), resultaram numa rplica onde
os pinos Q4, Q5, Q6 e Q7 foram classificados como GND28 e o diagrama de transies
obtido encontra-se apresentado da Figura 5.7.

Figura 5.7 Diagrama de estados obtido para a montagem com reset associado sada Q4
(Legenda: Estado/ (Sada)).

Pela comparao entre as Figuras 5.6 e 5.7 pode facilmente inferir-se que para
o mesmo circuito integrado podem obter-se rplicas com diferentes diagramas de
transies. Diagramas de transies/estados diferentes ocorrem igualmente para
diferentes montagens dos circuitos integrados apresentados na Tabela 5.3.
Isto ocorre porque a rplica reflete o comportamento do circuito integrado ao
invs da sua estrutura interna, logo quando o meio envolvente impe diferentes
estmulos ao circuito, diferentes transies e/ou estados podem ser observados ou
ainda podem impedir que alguns estados e transies sejam observados. Por outras
palavras, as condicionantes impostas pelo sistema onde o circuito integrado se encontra
inserido no podem ser ultrapassadas pelo sistema de replicao desenvolvido que se
limita a efetuar a observao do funcionamento do circuito integrado, logo a rplica ir
refletir unicamente as transies e estados observados, que podem ser distintos para
diferentes em funo do meio onde o circuito integrado est inserido.

5.3.3.3. Anlise das taxas de sucesso obtidas

Nas anlises efetuadas s rplicas de circuitos combinatrios, em subsees


anteriores, foram utilizados testes onde a taxa de sucesso estimada pelo algoritmo
igual a 100%. Porm, no caso dos circuitos sequenciais, a taxa de sucesso estimada
pelo algoritmo reflete a percentagem de transies encontradas em funo do nmero
de estado detetados e o nmero de transies possveis para cada estado. Assim
sendo, esta taxa de sucesso no reflete a percentagem do circuito integrado que foi
descoberta tal como sucedia nos circuitos combinatrios, ou por outras palavras, mesmo

28

O pino Q4 classificado como GND pois o tempo em que permanece no nvel alto
insignificante.

94

que a rplica de um circuito sequencial tenha uma taxa de sucesso estimada em 100%
no garantido que tenha sido replicada a totalidade das funcionalidades do circuito
integrado, como pode ser comprovado com os testes realizados ao circuito integrado
74HCT164 e apresentados nas Figuras 5.6 e 5.7.
Na Figura 5.8 encontram-se as montagens utilizadas para teste dos circuitos
integrados 74HCT174 (flip-flop D) e 74LS76 (flip-flop JK).

Figura 5.8 Montagens para estimulao dos circuitos integrados 74HCT174 e 74LS76.

O nmero de transies possveis para cada estado depende do nmero de


pinos classificados como pinos de entrada, e dado por
= 2

(5.6)

onde e representam o nmero de transies possveis por estado e o nmero de


pinos de entrada excluindo pinos de relgio e reset, respetivamente. O nmero de
transies possveis depende de e do nmero de estados identificados, dado por
=

(5.7)

onde e representam o nmero total de transies e o nmero de estados detetados.


Analogamente ao ocorrido com os circuitos combinatrios, o aumento de
implica um maior nmero de medies efetuadas para observao da totalidade do
comportamento. Como no foi verificado relao entre a taxa de sucesso e o nmero
de entradas do circuito, para efeitos de teste, dos circuitos sequenciais listados na
Tabela 5.5 foram recolhidas 2000 amostras por teste (mximo suportado pelo prottipo
implementado).
Tabela 5.5 Taxas de sucesso obtidas em funo da montagem e nmero mnimo de
estados/transies necessrios para definir comportamento do circuito.

Circuito
integrado
74LS393

74HCT164
74HCT174

Montagem

N mnimo
de estados

N mnimo de
transies

Figura 5.2 a)
Figura 5.2 b)
Figura 5.5 a)
Figura 5.5 b)
Figura 5.5 c)
Figura 5.5 d)
Figura 5.8 a)

16
16
256
256
8
16
64

16
64
1024
512
16
32
4096

95

Taxa de
sucesso obtida
(%)
100
25
56
67
100
100
16

Circuito
integrado
74HCT174
74HC595
74LS7629

Montagem
Figura 5.8 b)
Sem
condicionamentos
Figura 5.8 c)
Figura 5.8 d)

N mnimo
de estados

N mnimo de
transies

64

Taxa de
sucesso obtida
(%)
100

512

8192

13

2
4

16
128

100
86

Analisando os resultados obtidos para o circuito integrado 74LS393 (contador)


verifica-se que o nmero de estados detetados em cada montagem permanece
inalterado, ao passo que o nmero de transies quadruplica. Este facto ocorre porque
o sistema de replicao desenvolvido apenas considera um pino de relgio ou reset, ou
seja, na montagem da Figura 5.2 b) os pinos de relgio e reset do segundo contador
so considerados como pinos de entrada. De acordo com a equao (5.6) para dois
pinos de entrada existem 4 transies possveis por estado, justificando assim a
quadruplicao do nmero e transies entre montagens. A taxa de sucesso reduzida
para 25% neste caso, pois os pinos de entrada so constantes nos instantes de
interesse e s observada uma transio em quatro possveis para cada estado,
reduzindo assim a taxa de sucesso, pois devido ao circuito envolvente 75% das
transies que o sistema de replicao admite que possam existir (em funo do nmero
de estados e entradas) nunca vo ocorrer, logo nunca sero observadas. Apesar de na
montagem da Figura 5.2 b) as restantes transies nunca ocorrerem fisicamente, essa
informao desconhecida do sistema de replicao, logo no refletida na taxa de
sucesso. Porm todas as transies observadas so replicadas.
Relacionando a taxa de sucesso obtida com o nmero mnimo de estados e
transies necessrios para descrever o circuito, verifica-se que a taxa de sucesso
decresce com o aumento do nmero de transies. O aumento do nmero de estados
no influncia diretamente a taxa de sucesso (apenas influencia pela relao de
proporcionalidade direta entre aumento de nmero de estados e transies), pois
verifica-se que para o mesmo nmero de estados a taxa de sucesso mais baixa no
caso onde existem mais transies (montagens da Figura 5.5 a) e b)) e para o mesmo
nmero de transies e igual nmero de estados (montagens da Figura 5.5 c) e Figura
5.8 c)) foi verificado que a taxa de sucesso permanece inalterada. Assim sendo, pode
concluir-se que o aumento do nmero de transies tem maior impacto na taxa de
sucesso que o aumento do nmero de estados, como pode ser constatado a partir dos
valores da Tabela 5.5. O decrscimo da taxa de sucesso com o aumento do nmero de
transies deve-se no observao de todas as transies. No entanto, todas as
transies observadas so replicadas podendo concluir-se que quando no so
replicados os estados e transies na totalidade deve-se no ocorrncia dos mesmos
durante a observao, inferindo-se assim que os algoritmos desenvolvidos funcionam
de acordo com a sua conceo.

29

Teste realizado a circuito montado por terceiros (teste cego).

96

5.3.3.4. Aproximao estrutural das rplicas ao circuito original

As rplicas obtidas para circuitos sequenciais no apresentam, em geral,


qualquer semelhana estrutural ao circuito integrado original, contrariamente ao
verificado em alguns casos nos circuitos combinatrios. Diagramas lgicos obtidos para
circuitos sequenciais encontram-se disponveis no Anexo I (seo I.2). No entanto, a
sntese depende da estrutura da descrio de hardware e do compilador utilizado, no
tendo influncia na funcionalidade reproduzida.

5.4. Anlise comparativa entre resultados obtidos para circuitos


combinatrios e sequenciais
Considerando os resultados obtidos para circuitos combinatrios e sequenciais
possvel verificar experimentalmente que existem menos fatores que condicionam a
replicao de circuitos combinatrios.
O impacto do meio envolvente na rplica obtida muito mais significativo nos
circuitos sequenciais (comparativamente aos circuitos combinatrios) uma vez que nos
circuitos sequenciais para o mesmo estado podem ser observadas diferentes transies
para diferentes estmulos do circuito sob teste (como verificado nas Figuras 5.6 e 5.7)
enquanto no caso dos circuitos combinatrios, para o mesmo circuito, uma combinao
de entrada corresponde a uma nica combinao de sada, independentemente da
estimulao do circuito. Em sntese, nos circuitos sequenciais o meio envolvente pode
originar a observao de diferentes transies para o mesmo estado ao passo que nos
circuitos combinatrios o meio envolvente pode permitir observar um nmero
maior/menor de combinaes de entrada, sem alterao da relao entre combinao
de entrada e sada, devido ao sistema envolvente.
No que respeita a otimizao das rplicas obtidas os circuitos sequenciais so
moderadamente otimizados pela aproximao heurstica desenvolvida, que visa reduzir
o nmero de estados, ao passo que no caso dos circuitos combinatrios no realizada
qualquer otimizao pelos algoritmos desenvolvidos. Durante o processo de
sintetizao, otimizao pode ser aplicada pelo compilador.

97

6. Concluses
6.1. Concluses gerais
A engenharia inversa um procedimento realizado desde h dcadas com o
objetivo de descobrir como um produto foi construdo sendo que os procedimentos mais
comuns para este efeito consistem em anlises manuais ou semi-manuais do(s)
circuito(s) atravs da separao das diferentes camadas e anlise das mesmas com
auxilio de sensores ticos e software de processamento de imagem. No entanto estas
tcnicas so direcionadas para uma recuperao do esquema eltrico/lgico do(s)
circuito(s) e geralmente danificam o(s) circuito(s) tornando(s)-os inutilizveis. Mais
recentemente tcnicas de engenharia inversa no invasivas tm sido desenvolvidas
assim como tcnicas baseadas em algoritmos com objetivo de identificar o(s) circuito(s)
atravs da anlise funcional do(s) mesmo(s). Atualmente alguns sistemas de
engenharia inversa apresentam a descrio do esquema lgico ou funcionalidade obtida
em linguagens de descrio de hardware pois desta forma fornecido um nvel de
abstrao muito maior, o que torna a rplica obtida independente do hardware. Esta
dissertao contribuiu para o conhecimento cientfico no mbito das tcnicas de
engenharia inversa no invasivas, baseadas em algoritmos e com converso do circuito
obtido para linguagem de descrio de hardware que uma rea cuja investigao
cientfica recente e onde possvel a existncia de desenvolvimentos significativos
nas prximas dcadas. Atualmente os algoritmos aplicveis em engenharia inversa so
essencialmente algoritmos de reconhecimento de padres e processamento de imagem
(anlise estrutural) ou por comparao com uma biblioteca de circuitos conhecidos
(anlise comportamental).
Os algoritmos desenvolvidos nesta dissertao visaram a obteno de uma
capacidade de anlise genrica, sem comparao com qualquer biblioteca de circuitos
conhecidos. Algoritmos diferentes foram desenvolvidos para circuitos combinatrios e
sequenciais. No caso dos circuitos combinatrios (quando verificado que para cada
combinao de entrada s existe uma combinao de sada) so observadas as
combinaes e a correspondncia entrada-sada refletida em cdigo VHDL atravs da
utilizao dos comandos case e when. Quando o circuito sequencial uma aproximao
a uma mquina de estados realizada atravs da utilizao de mtodos heursticos,
onde a soluo obtida pode no ser a soluo tima mas a uma soluo possvel em
funo do comportamento observado. Em qualquer um dos casos, a descrio em
linguagem VHDL automaticamente gerada e o cdigo pode ser sintetizado (utilizando
software destinado para o efeito) e obtido o esquema lgico da rplica, dado que a
estrutura do cdigo gerado otimizada para a sintetizao.
O sistema de aquisio de dados implementado visa retirar medies sem afetar
o funcionamento do circuito e ser facilmente controlado pelo computador atravs de
instrues estabelecidas entre o mdulo de controlo do sistema de aquisio de dados
e algoritmos dedicados gerao de instrues atravs de porta COM. O prottipo

98

obtido resultou da ligao entre os algoritmos e o sistema de aquisio de dados


desenvolvidos e visa demonstrar experimentalmente o correto funcionamento dos
algoritmos desenvolvidos.
A capacidade de replicao obtida para circuitos combinatrios depende
exclusivamente do nmero de amostras recolhidas e das combinaes de entrada
ocorridas durante o perodo de observao. O comportamento da rplica corresponde
ao comportamento observado e a taxa de sucesso estimada pelo sistema para circuitos
combinatrios reflete a percentagem do circuito integrado que foi replicada. Assim
sendo, quando a taxa de sucesso estimada igual a 100%, foi replicada a totalidade do
funcionamento do circuito combinatrio, permitindo a substituio do circuito integrado
original pela rplica independentemente do sistema envolvente do circuito a substituir.
Quando a taxa de sucesso estimada inferior a 100% apenas aconselhvel que o
circuito seja substitudo no sistema onde foi observado, podendo no entanto ocorrer
situaes no observadas, s quais a rplica no ir reagir. No caso dos circuitos
sequenciais a capacidade de replicao obtida depende do nmero de transies
possveis no circuito em anlise e do nmero de transies observadas. O sistema
envolvente ao circuito integrado sob teste influencia a rplica obtida, isto , diferentes
aproximaes a uma mquina de estados podem ser obtidas para o mesmo circuito
integrado quando o sistema envolvente provoca estmulos diferentes no circuito sob
teste. Em qualquer dos casos, combinatrios ou sequenciais, apenas as
combinaes/transies observadas so replicadas, sendo recomendado que as
rplicas obtidas sejam substitudas no meio onde foram observados os circuitos
integrados originais.
Com base no sistema desenvolvido foi redigido um artigo aceite em conferncia
sobre computao aplicada [73] (ver Anexo J).

6.2. Trabalhos futuros


Como o projeto desenvolvido foi um prottipo para demonstrao do
funcionamento dos algoritmos, futuramente possvel trabalhar na otimizao do
mesmo e/ou construo de um prottipo capaz de operar a frequncias mais altas para
criao de um produto comercial. Uma partilha do processamento inteligente entre o
computador e o sistema de aquisio de dados assim como a aplicao tcnicas de
compresso de dados podem representar inovaes tecnolgicas que permitam obter
uma capacidade de replicao ainda maior do que a apresentada neste documento.
No caso do prottipo implementado, o utilizador no incio do processo de
replicao tem de indicar ao sistema quais os pinos de sada. Futuramente, a deteo
automtica de entrada e sadas atravs da anlise da impedncia de cada pino seria
uma forma de enriquecer o sistema de replicao.

99

Futuramente pode ainda ser estudada a expanso da capacidade de replicao


do sistema para circuitos analgicos, utilizando o ncleo de processamento j
desenvolvido, adicionando ADCs na entrada e DACs na sada.
Generalizando possvel expandir a capacidade de replicao do sistema
desenvolvido atravs da utilizao de sensores na entrada capazes de converter uma
grandeza qualquer num sinal digital e atuadores na sada que realizam a operao
inversa, permitindo que o processamento anlise continue a ser digital (j
desenvolvido). Segundo esta abordagem, os circuitos analgicos primeiramente
abordados podem ser vistos como um caso particular onde os sensores so ADCs e os
atuadores so DACs.

100

Referncias
[1]

J. Wakerly, Digital Design - Principles & Practices, 2a Edio. New Jersey:


Prentice-Hall, 1994.

[2]

E. Matlin, M. Agrawal, and D. Stoker, Non-Invasive Recognition of Poorly


Resolved Integrated Circuit Elements, IEEE Trans. Inf. Forensics Secur., vol. 9,
no. 3, pp. 354363, Mar. 2014.

[3]

V. Raja, Reverse engineering: an industrial perspective, First Edit. London:


Springer, 2008, pp. 110.

[4]

A. Padilla, Sistemas Digitais, 2a Edio. McGraw-Hill Companies, 1993.

[5]

P. Scherz, Pratical Eletronics For Inventors, 2a Edio. McGraw-Hill Companies,


2007.

[6]

J. Millman and C. Halkias, Integrated Eletronics, 2a Edio. McGraw-Hill


Companies, 1972.

[7]

E. Eilam, Reversing: Secrets of Reverse Engineering. Indianapolis: Wiley


Publishing Inc., 2005.

[8]

P. A. Lal, J. Hoople, and S. Ardanu, Integrated Chipscale Ultrasonic


Communication Links, PCT/US2013/0507722009.

[9]

P. Subramanyan, N. Tsiskaridze, W. Li, A. Gascon, W. Y. Tan, A. Tiwari, N.


Shankar, S. Seshia, and S. Malik, Reverse Engineering Digital Circuits Using
Structural and Functional Analyses, IEEE Trans. Emerg. Top. Comput., vol. 2,
no. 1, pp. 6380, 2014.

[10]

R. Torrance and D. James, The state-of-the-art in semiconductor reverse


engineering, in 48th ACM/EDAC/IEEE Design Automation Conference (DAC),
2011, pp. 333338.

[11]

Z. Wasson, Reverse Engineering Circuits Using Behavioral Pattern Mining, in


IEEE Conference on Hardware-Oriented Security and Trust (HOST), 2012.

[12]

R. Torrance and D. James, Reverse Engineering in the Semiconductor Industry,


2007 IEEE Cust. Integr. Circuits Conf., no. Cicc, pp. 429436, 2007.

[13]

D. Tang, R. Zhu, and R. Xu, Functional reverse design: Method and application,
Comput. Support. Coop. Work Des. (CSCWD), 2010 14th Int. Conf., no.
50775111, pp. 723727, 2010.

[14]

E. Riccobene, A Model-driven Design Environment for Embedded Systems, in


Design Automation Conference- 43rd ACM/IEEE, 2006, pp. 915918.

[15]

S. A. Fahmi and H.-J. Choi, Software Reverse Engineering to Requirements,


2007 Int. Conf. Converg. Inf. Technol. (ICCIT 2007), no. May 1998, pp. 2199
2204, Nov. 2007.

101

[16]

L. Chouambe, N. Ag, B. Klatt, and K. Krogmann, Reverse engineering SoftwareModels of Component-Based Systems, in In 12th European Conference on
Software Maintenance and Reengineering, 2008, pp. 93102.

[17]

P. Zhang and Y. Su, Understanding the aspects from various perspectives in


aspects-oriented software reverse engineering, 2010 Int. Conf. Comput. Appl.
Syst. Model. (ICCASM 2010), no. Iccasm, pp. V11311V11314, Oct. 2010.

[18]

P. O. B. A. Jordan, Reverse Engineering in Mechatronics Education,


Mohammed Bani Younis Philadelphia University Department of Computer
Engineering Tarek A . Tutunji Department of Mechatronics Engineering, pp. 15,
2010.

[19]

F. G. Capuano and I. V. Idoeta, Elementos de Eletrnica Digital, 30th ed., vol. 1.


rica Editora, 2001.

[20]

R. Quijada, A. Ravents, F. Tarrs, R. Dur, and S. Hidalgo, The Use of Digital


Image Processing for IC Reverse Engineering, in 11th International MultiConference on Systems, Signals & Devices (SSD), 2014, pp. 14.

[21]

D. James, Design-for-manufacturing features in nanometer processes - A


reverse engineering perspective, 2009 IEEE/SEMI Adv. Semicond. Manuf. Conf.,
pp. 5661, May 2009.

[22]

J. Goldstein, C. E. Lyman, D. E. Newbury, and D. C. Joy, Scanning Electron


Microscopy and X-Ray Microanalyis, 3a Edio. New York: Springer, 1984.

[23]

Chipworks. [Online]. Available: http://www.chipworks.com/.

[24]

P. Di Lena and L. Margara, Optimal global alignment of signals by maximization


of Pearson correlation, Inf. Process. Lett., vol. 110, no. 16, pp. 679686, Jul.
2010.

[25]

B. Johnson, EE368: Reverse Engineering of Printed Circuit Boards, IEEE, pp.


14, 1995.

[26]

R. Che, S. Azmi, R. Daud, A. Nasir, and F. K. Ahmad, Reverse Engineering for


Obsolete Single Layer Printed Circuit Board ( PCB ), in Computing & Informatics,
ICOCI 06. International Conference, 2006, pp. 17.

[27]

C. Koutsougeras, N. Bourbakis, and V. J. Gallardo, Reverse Engineering of Real


PCB Level Design Using VERILOG HDL, Intl. J. Eng. Intell. Syst., vol. 10, no. 2,
pp. 6368, 2002.

[28]

MathWorks, MathWoks Documentation Center, 2014. [Online]. Available:


http://www.mathworks.com/help/vision/ref/edgedetection.html. [Accessed: 24May-2014].

[29]

D. Liu and J. Yu, Otsu Method and K-means, 2009 Ninth Int. Conf. Hybrid Intell.
Syst., no. 2, pp. 344349, 2009.

[30]

E. Aybar, Sobel edge detection method for MatLab, 2006.

102

[31]

W. Dong and Z. Shisheng, Color Image Recognition Method Based on the Prewitt
Operator, 2008 Int. Conf. Comput. Sci. Softw. Eng., pp. 170173, 2008.

[32]

A. Zamani and M. S. Moslehian, Approximate Roberts orthogonality. Springer


Basel, 2013.

[33]

J. Canny, A computational approach to edge detection, IEEE Trans. Pattern


Anal. Mach. Intell., vol. 8, no. 6, pp. 67998, Jun. 1986.

[34]

J. Wan, X. He, and P. Shi, An Iris Image Quality Assessment Method Based on
Laplacian of Gaussian Operation, in MVA2007 IAPR Conference on Machine
Vision Applications, 2007, vol. 3, pp. 36.

[35]

S. DiBartolomeo, D-Codes, Apertures & GERBER Plot Files, Artwork Converion


Software,
Inc.,
1991.
[Online].
Available:
http://www.artwork.com/gerber/appl2.htm. [Accessed: 25-May-2014].

[36]

T. S. Line, ABEL-HDL Reference Manual (Version 8.0). Lattice Semiconductor


Corporation, 2003.

[37]

Y. Shi, C. W. Ting, B.-H. Gwee, and Y. Ren, A highly efficient method for
extracting FSMs from flattened gate-level netlist, Proc. 2010 IEEE Int. Symp.
Circuits Syst., pp. 26102613, May 2010.

[38]

V. Pedroni, Circuit Design With VHDL, 1st ed. Massachussets Institute of


Technology, 2004.

[39]

S. C. A. M. R. Brayton, U. C. Berkeley, and X. W. T. Kam, Reducing Structural


Bias in Technology Mapping, in Computer-Aided Design. ICCAD-2005.
IEEE/ACM International Conference, 2005, pp. 518525.

[40]

A. Balcioglu and R. K. Wood, Enumerating Near-Min S-T Cuts, in Naval


Postgraduate School -Operations Research Dept., California: Springer, 2003, pp.
2149.

[41]

V. Pedroni, Digital Electronics and Design With VHDL. Burlington: Elsevier, 2008.

[42]

E. Balas and J. Xue, Finding a maximum clique in an arbitrary graph, SIAM J.


Comput., vol. 15, no. 4, pp. 10541068, 1986.

[43]

M. R. Garey and D. S. Johnson, Computer and intractbility, 1st ed. New York: W.
H. Freeman and Company, 1979.

[44]

L. Farber, Estatstica Aplicada, 4a Edio. So Paulo: Pearson Education Inc,


2010.

[45]

Xilinx, Xilinx - ISE WebPACK Design Software, 2014. [Online]. Available:


http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm.
[Accessed: 12-Nov-2013].

[46]

L. C. Figueiredo, Implementao em FPGA de algoritmos computacionais


paralelos, Universidade de Aveiro, 2010.

103

[47]

A. Z. Cordenonsi, Ambientes, objetos e dialogicidade: uma estratgia de ensino


superior em heursticas e metaheursticas, Universidade Federal do Rio Grande
do Sul, 2008.

[48]

D. Kahneman, Rpido e Devagar: Duas Formas de Pensar, 1a Edio. New York:


Editora Objetiva, 2011.

[49]

U. F. Rural, J. R. Br, and R. Br, Heursticas e Vieses de Deciso: a Racionalidade


Limitada no Processo Decisrio Marcelo Alvaro da Silva Macedo.

[50]

R. Larson and R. P. Hosteller, Sequences, Series and Probability, in


Precalculus, 7th Editio., Cengage Learning, 2006, pp. 643714.

[51]

F. Santos, SIGLAB - Lista de componentes, 2014. [Online]. Available:


http://www.cee.uma.pt/inventario/index.php?op=listcomponents. [Accessed: 17Jul-2014].

[52]

Folha
de
caratersticas
EC2-5NU,
1999.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/nec/EC2-3TNJ.pdf. [Accessed: 17Jul-2014].

[53]

Folha
de
caratersticas
2N2222A.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/on_semiconductor2/2N2222A-D.PDF.
[Accessed: 17-Jul-2014].

[54]

Folha
de
caratersticas
1N4448,
2004.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/1N4148_1N4448.pdf. [Accessed: 17Jul-2014].

[55]

Folha
de
caratersticas
DG526CJ,
1999.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets2/31/316139_1.pdf. [Accessed: 17Jul-2014].

[56]

Folha
de
caratersticas
AD622,
2013.
[Online].
Available:
http://www.analog.com/static/imported-files/data_sheets/AD622.pdf. [Accessed:
17-Jul-2014].

[57]

Folha
de
caratersticas
6N136,
2008.
[Online].
Available:
http://www.fairchildsemi.com/ds/6N/6N136.pdf. [Accessed: 17-Jul-2014].

[58]

Folha
de
caratersticas
74HCT174,
1998.
[Online].
http://pdf.datasheetcatalog.com/datasheet/philips/74HCT174N.pdf.
17-Jul-2014].

[59]

Folha
de
caratersticas
74HCT174N,
1998.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HCT174N.pdf. [Accessed:
17-Jul-2014].

[60]

Folha de caratersticas Arduino Mega 2560, 2014. [Online]. Available:


http://arduino.cc/en/Main/arduinoBoardMega2560. [Accessed: 17-Jul-2014].

[61]

W. Stallings, Redes e Sistemas de Comunicao de Dados - Teoria e Aplicaes


Corporativas, 5a edio. Rio de Janeiro: Editora Campus, 2005.

104

Available:
[Accessed:

[62]

Folha
de
caratersticas
74LS08,
2000.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/70/375337_DS.pdf. [Accessed: 17Jul-2014].

[63]

Folha
de
caratersticas
74HCT32,
1990.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HC_HCT32_CNV_2.pdf.
[Accessed: 17-Jul-2014].

[64]

Folha
de
caratersticas
74LS86,
1995.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets2/11/115612_1.pdf. [Accessed: 17Jul-2014].

[65]

Folha
de
caratersticas
74HC139,
1993.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HC_HCT139_CNV_2.pdf.
[Accessed: 15-Aug-2014].

[66]

Folha
caratersticas
74LS48,
1992.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/120/375650_DS.pdf. [Accessed: 15Aug-2014].

[67]

Folha
caratersticas
CD4001,
1988.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/166/108518_DS.pdf. [Accessed: 22Sep-2014].

[68]

Folha de caratersticas do Arduno Uno, 2014. [Online]. Available:


http://arduino.cc/en/Main/arduinoBoardUno. [Accessed: 25-Jul-2014].

[69]

Folha
de
caratersticas
74LS393,
1998.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/400/334868_DS.pdf. [Accessed: 03Sep-2014].

[70]

Folha
caratersticas
74HCT164,
2013.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT164.pdf. [Accessed: 03Sep-2014].

[71]

Folha
de
caratersticas
74HC595,
2011.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf. [Accessed: 03Sep-2014].

[72]

Folha
de
caratersticas
74LS76,
1999.
[Online].
Available:
http://www.futurlec.com/74LS/74LS76.shtml. [Accessed: 20-Sep-2014].

[73]

IADIS, 11th International Conference applied Computing, 2014. [Online].


Available: http://www.computing-conf.org/. [Accessed: 20-Aug-2014].

[74]

S. Guilley, J. Danger, R. Nguyen, and P. Nguyen, System-Level Methods to


Prevent Reverse-Engineering , Cloning , and Trojan Insertion, 2012.

[75]

Decreto-lei n.o 36/2003, de 05 de Maro do Ministrio da Economia. 2003.

[76]

Decreto-lei n.o143/2008 de 25 de julho do Ministrio da Justia. Portugal, 2008.

105

[77]

G. De Micheli, Synthesis and Optimization of Digital Circuits, 1st ed. McGraw-Hill


Companies, 1994.

[78]

D. J. Smith, HDL-CHIP-design.pdf, 1st ed. Madinson: Doone Publications, 1996.

[79]

C. J. Roth, Digital Systems Design Using VHDL.pdf. Boston: PWS Publishing


Company, 1998.

[80]

Folha
de
caratersticas
74HCT04,
2012.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT04.pdf. [Accessed: 17Jul-2014].

[81]

Folha
caratersticas
74LS04,
1989.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/134/231533_DS.pdf. [Accessed: 17Jul-2013].

106

ANEXOS

107

A. Tcnicas de defesa contra a engenharia


inversa
A engenharia inversa apesar das vantagens que apresenta, pode ser considerada
uma ameaa, nomeadamente em circuitos eletrnicos de alto valor [74]. As tcnicas de
defesa contra a engenharia inversa foram inicialmente desenvolvidas para proteo de
software e posteriormente estendidas aos circuitos eletrnicos [74]. As solues mais
utilizadas para proteo de circuitos contra a aplicao de engenharia inversa
encontram-se descritas na Tabela A.1, bem como o impacto no sistema desenvolvido:
Tabela A.1 Tcnicas de defesa contra engenharia inversa [74], [8].

Tcnica

Funes
fisicamente
inclonveis

Ofuscao

Descrio
Consistem em dispositivos
que produzem uma chave
interna,
essencial
para
funcionamento, nica e no
conhecida por elementos
exteriores ao dispositivo.
possvel a extrao de
informao encriptada.
Baseia-se na implementao
de um esquema simples de
uma forma complexa, mais
difcil
de
descodificar,
utilizando tcnicas tais como o
roteamento em esparguete
ou a cobertura com uma
camada de metal, para evitar a
observao do circuito.

Consiste na adio de
componentes que dificultem a
recuperao do esquema do
Dissimulao circuito, mas no entanto no
tica
produzem efeito no circuito,
como por exemplo fios
fictcios, componentes sem
ligao, entre outros.

Migrao
para
circuitos
ticos e
acsticos

Esta tcnica consiste na


substituio
dos
sinais
eltricos por sinais ticos ou
acsticos no interior dos
circuitos integrados.

108

Impacto
Como o mecanismo de defesa
intrnseco ao dispositivo e o sistema
desenvolvido efetua a anlise de
entradas e sada, logo ser capaz
de replicar o funcionamento interno
e obter uma rplica com o mesmo
comportamento do ponto de vista
das entradas e sadas.
Estas tcnicas fornecem proteo
ao nvel da obteno da estrutura
do circuito por anlise visual
(manual ou computorizada) no
entanto a anlise comportamental
atravs
da
observao
das
entradas e sadas no afetada por
estas tcnicas de defesa.
semelhana do que ocorre na
tcnica
de
ofuscao,
a
dissimulao tica protege os
circuitos contra engenharia inversa
que utiliza mtodos visuais para
extrao do esquema eltrico, no
tendo
impacto
no
mtodo
desenvolvido para extrao do
comportamento.
O sistema implementado foi
concebido para analisar sinais
eltricos. Se os sinais de entrada e
sada forem eltricos (convertidos
para ticos no interior do circuito) o
sistema desenvolvido capaz de
extrair o comportamento, caso
contrrio devido impossibilidade
de adquirir medies eltricas o
sistema no conseguir extrair o
comportamento o circuito.

B.Lei da propriedade industrial


A aplicao da engenharia inversa, e em particular do sistema desenvolvido, deve
sempre ter em conta a legislao vigente, nomeadamente a lei da propriedade industrial.
No caso de Portugal as leis aplicveis neste mbito encontram-se no Cdigo de
Propriedade Industrial (adiante CPI) [75] e em particular no Decreto-Lei n.143/2008
[76], onde foram aprovadas medidas de simplificao e acesso propriedade industrial,
alterando o CPI original.
A propriedade industrial desempenha a funo de garantir a lealdade da
concorrncia, pela atribuio de direitos privativos sobre os diversos processos tcnicos
de produo e desenvolvimento da riqueza (Artigo 1 do CPI) [75]. Assim sendo a
aplicao do sistema de replicao de circuitos integrados desenvolvido a circuito
patenteados implica o cumprimento de normas legais. A aplicao do sistema
desenvolvido pode ser aplicada quando em conformidade com o abaixo disposto [75],
[76]:
Realizao em mbito privado e sem fins comerciais (Artigo 102 do CPI);
Realizao a ttulo experimental (Artigo 145 do CPI);
Realizao em situaes de interesse pblico30 (Artigo 110 do CPI).
Quando no aplicveis as situaes acima descritas, e de acordo com o Artigo 322,
constituem violaes do Cdigo de Propriedade Industrial [75], [76]:

Reproduzir ou imitar, totalmente ou em alguma das suas partes


caratersticas do modelo registado;
Explorar um modelo registado, mas pertencente a outrem.
A aplicao do sistema a circuitos no patenteados ou cuja patente tenha caducado
(Artigo 37 do CPI) no constitui qualquer violao legal e pode ser aplicada sem
qualquer restrio.

30

A concesso da licena por motivo de interesse pblico da competncia do Governo [75],


[76].

109

C. Sintetizao de circuitos
C.1. Introduo sntese de hardware
Atualmente uma grande parte dos sistemas digitais so projetados utilizando
uma linguagem de descrio de hardware, sendo o VHDL e o Verilog as linguagens
mais usadas [41].
A sintetizao consiste na gerao (e otimizao) de um modelo de circuito a
partir de um circuito mais abstrato, isto , o produto de uma sintetizao possui sempre
mais detalhe que o circuito ou diagrama original [41] [77].
Este tipo de linguagens permitem que o circuito seja sintetizado e totalmente
simulado por software antes de qualquer implementao fsica, permitindo um
desenvolvimento e teste maior sem incremento dos custos em material, uma vez que
aps escrito o cdigo este pode ser implementado fisicamente numa FPGA ou CPLD.
Aps todo o desenvolvimento concludo e testado, pode ser criado um circuito integrado
(tambm designado por ASIC Application-Specific Integrated Circuit) com a
funcionalidade sintetizada [41].
Acrescem ainda as vantagens destas linguagens permitirem que a tecnologia
seja independente do fabricante, pois cdigos previamente concebidos podem ser
facilmente incorporados em novos projetos ou reutilizveis com tecnologias diferentes
[41].

C.2. FPGAs e ASICs


Em geral as funcionalidades dos circuitos integrados so fixas e definidas no processo
de fabrico. No entanto, as FPGAs e ASICs so circuitos integrados onde a
funcionalidade no definida na fbrica, mas sim pelo utilizador [78]. No caso das
FPGAs a arquitetura interna difere entre fabricantes, no entanto a generalidade das
FPGAs so constitudas por milhes de blocos de lgica programvel e conexes
programveis, que tornam estes dispositivos versteis como ilustrado na Figura C.1 [41].

Figura C.1 Diagrama interno parcial de uma FPGA [41].

110

A estrutura interna dos blocos de lgica programvel complexa e a evoluo


das FPGAs reside em grande parte no melhoramento destes blocos, tornando-os
maiores e mais complexos, aumentando assim a capacidade de sintetizao de circuitos
das FPGAs [41].
Os ASICs so circuitos integrados concebidos para executar uma funo
especfica. A construo de um ASIC realizada em duas etapas: fabrico genrico e
especificao da funcionalidade [78].
A primeira etapa, fabrico genrico, realizada na fbrica e a etapa mais
complexa, demorada e dispendiosa consistindo na construo de um chip com mltiplos
transstores no conectados. A segunda etapa consiste na interligao dos transstores
de forma a realizar a funo pretendida [78].
Existem dois tipos de ASICs: conjuntos de clulas (gate array) e clulas
standard, onde uma clula bsica consiste num conjunto de transstores [78].
Os ASICs constitudos por conjuntos de clulas possuem colunas de clulas
distribudas ao longo do chip, existindo duas variantes: com clulas dedicadas para
interconexes entre clulas (apenas 70% a 90% disponvel para utilizao
personalizada) ou sem clulas dedicadas para interconexes [78].
No caso dos ASICs de clulas standard o conceito de clula bsica no existe,
nem existem componentes pr fabricados. Neste tipo de ASICs o fabricante cria
mscaras personalizadas para cada etapa de fabrico, utilizando assim o silicone mais
eficientemente [78].
Os ASICs possuem tambm algumas bibliotecas que agrupam clulas de forma
a formar componentes mais complexos, tais com multiplexers, controladores, ALU, entre
outros [78].

C.3. Linguagens e metodologias de descrio de hardware


As linguagens de descrio de hardware (HDL Hardware Description
Languages) so linguagens que permitem criar um modelo com uma funo especfica
ou uma pea de hardware, atravs de software. Essencialmente estas linguagens
permitem dois tipos principais de descrio: comportamental e estrutural [78].
A descrio estrutural efetua uma modelao do hardware a utilizar na
sintetizao, tendo um menor controlo no comportamento do circuito, comparativamente
a uma descrio comportamental [78]. Uma descrio estrutural providencia a
interconexo entre componentes, podendo ser considerada equivalente a um
esquemtico lgico [77].
A descrio comportamental uma modelao mais abstrata (pouco controlo ao
nvel de hardware) e facilita a especificao de objetivos do circuito a sintetizar [78].
Descries comportamentais so fundamentais na modelao de circuitos de grau de
dificuldade acrescido ou com elevado nmero de entradas e sadas [77]. A mesma
funo lgica descrita a partir de descrio comportamental e estrutural pode resultar
em circuitos diferentes aps a sintetizao, uma vez que diferentes circuitos podem ser
obtidos para diferentes nveis de otimizao, tendo o sintetizador maior liberdade de
otimizao da sntese nas descries comportamentais [77].

111

O nvel de abstrao ou detalhe de um sistema encontra-se exemplificado na


Figura C.2.

Figura C.2 Nvel de abstrao ou detalhe de um sistema [78]

As principais linguagens de descrio de hardware so o Verilog e o VHDL.


Ambas so capazes de descrever circuitos lgicos sintetizveis, possuindo no entanto
pequenas diferenas. As principais diferenas encontram-se na Tabela C.1 [78].
Tabela C.1 Principais diferenas entre as linguagens Verilog e VHDL [78].

Verilog

VHDL

- Linguagem mais simples, logo mais fcil


de aprender;
- Maior facilidade de descrio em baixo
nvel;
- Menor preciso necessria na descrio
do modelo.

- Mais tipos de dados e funes de


converso disponveis;
- Maior facilidade de descrio em alto
nvel;
- Melhor desempenho em circuitos de
maiores dimenses.

Atualmente existem vrias ferramentas de software que permitem a gerao


automtica de um circuito digital a partir de cdigo VDHL. No entanto, mesmo que o
cdigo VHDL compile sem erros e seja simulado corretamente, no garantido que
esse mesmo cdigo seja sintetizado corretamente, ou o resultado dessa implementao
pode ser ineficiente [79].
Como as ferramentas de sintetizao no so capazes de avaliar a inteno do
utilizador, por vezes necessrio promover algumas alteraes no cdigo VHDL para
que a sntese seja corretamente e/ou eficientemente implementada, principalmente nos
circuitos onde exigida sincronizao [79].
A sintaxe, tipos de dados e outras informaes teis para escrita de cdigo VHDL
esto descritas em [38], [41], [78], [79].

C.3.1. Recomendaes
sintetizveis

para

modelao

de

circuitos

Para evitar que o circuito resultante de uma sintetizao seja ineficiente, existem
recomendaes para melhorar vrios parmetros do circuito sintetizado essencialmente
a preciso e velocidade de funcionamento [78]. A Tabela C.2 apresenta algumas
recomendaes gerais para modelao de circuitos sintetizveis.

112

Tabela C.2 Recomendaes gerais para modelao de circuitos sintetizveis [78].

Preciso

Velocidade

Recomendaes
- Assegurar que todos os sinais de interesse se encontram na lista de
sensibilidade do ;
- No utilizar tipos de dados sem comprimento definido;
- A utilizao de parenteses em expresses permite algum controlo
estrutural.
- Utilizar sempre que possvel declaraes concorrenciais (reduz o
nmero de sinais que o simulador tem de monitorizar em simultneo);
- Minimizar o nmero de sinais na lista de sensibilidade do ;
- No modelar demasiados pequenos (existe um pequeno
atraso para os ativar/desativar).

Outras recomendaes mais especficas sero descritas nas subseces seguintes.

C.3.2. Sntese de circuitos sem memria (combinatrios)


Assumindo que a declarao (declarao de entradas e sadas)
necessria para um cdigo VHDL compilvel a anlise para efeitos de sintetizao vai
recair sobre o contedo do . Um para circuitos digitais combinatrios
apresenta a estrutura da Figura C.3.

Figura C.3 Estrutura de um de um circuito combinatrio [78].

Nos circuitos puramente combinatrios essencial que todas as combinaes


de entradas estejam abrangidas no cdigo, caso contrrio a sintetizao ser ineficiente
[78].
No caso dos circuitos sem memria (combinatrios) a estruturao do cdigo
no to influente na sintetizao comparativamente a circuitos com memria
(sequenciais), residindo a principal diferena na utilizao das declaraes e
[38], [78].
Na sintetizao a partir de cdigo VHDL a declarao entendida pelo
sintetizador como uma codificao sem prioridades ao passo que a declarao /
representa uma implementao com prioridade, podendo originar a sintetizao de
descodificadores prioritrios ou multiplexers [38], [78]. A utilizao do comando
importante para reduzir a sintetizao de multiplexers e se todas as combinaes de
entradas estiverem abrangidas o resultado obtido a partir de declaraes / ser
similar ao obtido com a declarao , aps o processo de otimizao durante a
sintetizao [38]. No entanto, a utilizao da declarao garante na maioria dos
casos uma sintetizao mais eficiente [78].

113

C.3.3. Sntese de mquinas de estados finitos


A descrio em linguagem de hardware de uma mquina de estados finitos
assenta em dois blocos lgicos: um bloco sequencial de atribuio do prximo estado e
um bloco combinatrio de atualizao das sadas [38], [41], [78]. Um exemplo genrico
do cdigo de cada bloco encontra-se apresentado na Figura C.4.

Figura C.4 Estrutura genrica dos blocos de uma mquina de estados [38].

O bloco sequencial efetua a atribuio do prximo estado bem como verificao


e atuao perante uma situao de reset. A deteo de reset apresentada na Figura
C.4 assncrona (no depende do sinal de clock). A utilizao de um reset assncrono
garante que a mquina sempre inicializada num estado conhecido antes da primeira
transio ativa do sinal de clock [78]. A utilizao de reset sncrono tambm possvel
mas aumenta a possibilidade da mquina de estados ficar permanentemente presa num
estado no definido (quando o circuito ligado no so conhecidos os estados dos flipflops) ou implicar uma utilizao de mais lgica combinatria para prevenir esta situao
[78].
O bloco combinatrio efetua a atualizao das sadas e indica qual o prximo
estado (baseado no estado atual e entradas do circuito) e no est sujeito aos
problemas de sincronizao referidos anteriormente e, sendo um bloco combinatrio, o
cdigo deste mdulo segue as mesmas regras descritas na subseo de circuitos
combinatrios: a utilizao da declarao prefervel declarao [78],[38]. A
Figura C.5 apresenta duas formas diferentes de estruturar o cdigo VHDL do bloco
combinatrio.

Figura C.5 Exemplo de estruturao do bloco combinatrio [38].

Na Figura C.3 b) verifica-se que a avaliao das entradas foi realizada atravs
de uma declarao no entanto a declarao tambm pode ser utilizada,

114

principalmente quando existem mais do que duas combinaes de entrada possveis


[38].
Existem variados estilos alternativos para implementao de mquinas de
estados finitas que podem ser consultados em [38] e [78].

115

D. Algoritmos implementados
D.1. Inicializaes
A leitura dos parmetros de configurao do circuito so fundamentais aos
diversos mdulos. As funes que implementam a leitura das configuraes iniciais e
reconfiguraes encontram-se apresentadas nas Listagens D.1 e D.2, respetivamente.
A implementao foi efetuada na linguagem C.
Listagem D.1 Funo para leitura das configuraes iniciais.
void initialize(){
int k, nr_measurementsVCCGND=0;
int i, j = 0;
FILE *fpInit;
char fileLineContent[300];
fpInit = fopen("settings.REP","r");
if (fpInit==NULL ) printf("Error opening settings.REP\n");
fgets(fileLineContent,300,fpInit);
strcpy(chipDirectory,fileLineContent);
fgets(fileLineContent,300,fpInit);
strcpy(destinantionDirectory,fileLineContent);
fgets(fileLineContent,300,fpInit);
PINS_NR=atoi(fileLineContent);
fgets(fileLineContent,300,fpInit);
j=0;
while (fileLineContent[j]!= '\0'){
if (fileLineContent[j]==',')
fileLineContent[j]='.';
j++;
}
MAX_TOLERANCE=atof(fileLineContent);
fgets(fileLineContent,300,fpInit);
NON_USED_MEASUREMENTS_NR=atoi(fileLineContent);
fgets(fileLineContent,300,fpInit);
MEASUREMENTS_NR=atoi(fileLineContent);
fclose(fpInit);
j=0;
while (chipDirectory[j]!= '\0') j++;
chipDirectory[j-1]='\0';
for (j=0;j<MAX_PIN_NR;j++){
pinsType[j]=0;
pinsV[j]=0;
}
}

//_open configuration file_


//_Read setting from configuration file_
//_save diretory_
//_Read setting from configuration file_
//_save replica location_
//_Read setting from configuration file_
//_save number of pins_
//_Read setting from configuration file_
//_Replace comma by decimal point_

//_save maximum tolerance_


//_Read setting from configuration file_
//_non-interest data_
//_Read setting from configuration file_
//_save number of measurements
//_Close file_
//_remove last character: '\n'_
//_initilize structures_

Listagem D.2 Funo para leitura das reconfiguraes.


void sequentialSettingsInitialization(){
char fileLineContent[50];
FILE *settings=fopen("settingsSeq.rep","r");
if(settings==NULL){
printf("File Error");
}else{
rewind(settings);
fgets(fileLineContent,50,settings);
MEASUREMENTS_NR=atoi(fileLineContent);

//*This function load new settings (sequential settings)


//_Open settings file_
//_File opening failure_
//_rewind cursor in file_
//_Read setting from configuration file_
//_save number of sequential measurements_

116

fgets(fileLineContent,50,settings);
ACCURACY=atoi(fileLineContent);
fgets(fileLineContent,50,settings);
RESET_CONVERT_TYPE=atoi(fileLineContent);
fgets(fileLineContent,50,settings);
ANALYSIS_DEPTH=atoi(fileLineContent);

}
fclose(settings);

//_Read setting from configuration file_


//_save accuracy_
//_Read setting from configuration file_
//_Select reset conversion type_
//_Read setting from configuration file_
//_save sequential anaysis depth_
//_Close file_

117

D.2. Adaptao a circuitos com nmero de pinos inferior ao


mximo suportado pelo sistema de aquisio de dados
O sistema de aquisio de dados permite a realizao de medies a circuitos
integrados com um mximo de 16 pinos. Quando o nmero de pinos do circuito
integrado igual a 16, fisicamente s existe uma forma possvel para realizao das
medies, no entanto quando o nmero de pinos inferior a 16 o circuito sob teste
dever sempre ser colocado junto ao topo, como ilustrado na Figura D.1.

Figura D.1 Adaptao de circuitos integrados com menos de 16 pinos.

Pela observao da Figura D.1 pode verificar-se que a numerao dos pinos do
circuito integrado apenas coincide com o nmero dos pinos do sistema de aquisio de
dados quando o nmero de pinos do circuito integrado igual a 16. Os algoritmos de
replicao utilizam no seu funcionamento a numerao de pinos do circuito integrado
(varivel) e o sistema de aquisio de dados utiliza a numerao prpria (fixa), logo para
compatibilizar ambos os sistemas necessrio realizar a converso, de acordo com a
expresso
,

() = {

(D.1)

(16 ) + ( ) ,
< 16
2
2
2
onde () representa o pino do sistema de aquisio de dados correspondente ao
pino do circuito integrado.
Esta converso realizada sempre que existe necessidade de realizar medies
em circuitos com menos de 16 pinos, de forma a compatibilizar o sistema de aquisio
de dados com os algoritmos. Durante o processo de replicao, alguns os ficheiros so
renomeados de forma a corresponder numerao do circuito integrado utilizando a
frmula de converso apresentada na equao (D.1).

118

D.3. Geradores de instrues para medies analgicas


As principais funes dos mdulos geradores de instrues para medies
analgicas (diferenciais e referenciadas) descritos nas sees 3.4.3 e 3.5.3 deste
documento respetivamente, encontram-se apresentados nas Listagens D.3 e D.4. A
implementao foi efetuada na linguagem C#.
Listagem D.3 Funo para gerar instrues de aquisio de medies analgicas.
private void selectMeasurements() {
int i, j,k;
Decimal [] temporaryData=new Decimal [measurementsNR];
string pathComplete;
if ((pinsNR % 2) == 1) pinsNR++;
//_Re-configure pins to select pins of physical socket to read_
int[] pins = new int[pinsNR];
int halfPins = pinsNR / 2;
for (i = 0; i < pinsNR; i++) {
//_(the chip must be always placed on top of the socket)_
if (i < (halfPins)) {
//_Make the conversion of pins number to postion of pin in the socket_
pins[i] = i;
}
else {
pins[i] = (16 - halfPins) + (i - halfPins);
}
}
for (i = 0; i < pinsNR; i++) {
//_Generate measurements instructions_
for (j = i + 1; j < pinsNR; j++) {
//_File name_
pathComplete = path+ "\\measurementsP"+(i+1).ToString() + "P" + (j+1).ToString() + ".MED";
writeCOMfile(pins[i], pins[j], pathComplete);
//_Write communication settings_
Process runningProcess = new Process();
//_Create process to communicate_
runningProcess.StartInfo.CreateNoWindow = true;
runningProcess = System.Diagnostics.Process.Start("moduleCOM.exe");
//_Communicate with data acquisition system (DAS)_
int idprocess = runningProcess.Id;
while (runningProcess.HasExited == false) {
//_wait conclusion of communication_
}
StreamReader file2 = new StreamReader(pathComplete);
//_Open file with stored measurements _
for (k = 0; k < measurementsNR; k++) {
temporaryData[k] = Convert.ToDecimal(file2.ReadLine()); //_Read measurements provided by DAS_
}
file2.Close();
//_Close file_
for (k = 0; k < measurementsNR; k++) {
temporaryData[k] = ((temporaryData[k] * 5 / 1024) - 2.5m) * 6;
//_Apply conversion factor_
}
StreamWriter file3 = new StreamWriter(pathComplete);
for (k = 0; k < measurementsNR; k++) {
file3.WriteLine(temporaryData[k].ToString());
//_Write converted data into file_
}
file3.Close();
}
}
}

119

Listagem D.4 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0001");
//_Write instruction opcode: diferential measurements
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(i.ToString());
//_Write positive pin to measure_
fileCOM.WriteLine(j.ToString());
//_Write negative pin to measure_31
fileCOM.Close();
//_Close file_
}

31

Quando a referncia para as medies analgicas j conhecida, o pino GND deve ser
atribudo aqui.

120

D.4. Algoritmo de anlise dos pinos destinados a alimentao


As principais funes do algoritmo de anlise dos pinos destinados a
alimentao descritos na seo 3.4.4 deste documento, encontram-se apresentadas
nas Listagens D.5, D.6 e D.7. A implementao foi efetuada na linguagem C.
Listagem D.5 Funes de deteo dos pinos destinados a alimentao.
void detectionVCC_GND(){
char strX[20], strY[20];
for (x=1;x<=PINS_NR;x++)
//_Build file name_
sprintf(strX, "%i", x);
for (y=x+1;y<=PINS_NR;y++){
sprintf(strY, "%i", y);
strcpy(fileName,chipDirectory);
strcat(fileName,"\\MeasurementsVCCGND\\measurementsP");
strcat(fileName,strX);
strcat(fileName,"P");
strcat(fileName,strY);
strcat(fileName,".MED");
verifyPins();
}
}
}

//_Verify VCC and GND situation_

void verifyPins(){
//*Verify if selected file contains constant values
float measurements[MEASUREMENTS_NR];
float sum=0, MeasurementsAdjust=MEASUREMENTS_NR;
char* fileOpen;
char lineContent[50];
int i,violationDeteted=0,counter=0;
fileOpen=fileName;
fp0=fopen(fileName,"r");
if (fp0 == NULL) {
printf ("File opening error.\n");
exitValue=10;
}
while (fgets(lineContent,50,fp0)){
if (counter<MEASUREMENTS_NR){
//_read and store file measurements_
measurements[counter]=atof(lineContent);
sum+=measurements[counter];
counter++;
}
}
MeasurementsAdjust=counter;
fclose(fp0);
mean=sum/MeasurementsAdjust;
//_Calculates average_
MeasurementsAdjust=MEASUREMENTS_NR;
counter--;
while (counter>=0 && violationDeteted==FALSE){
//_verify if samples are in confidence interval_
if ( measurements[counter]>=(mean+TOLERANCE) || measurements[counter]<=(mean-TOLERANCE)){
violationDeteted=1; break;
}
counter--;
}
if(mean>=0){
meanCorrected=mean;
}else{
//_Obtain absolute value_
meanCorrected=mean*(-1);

121

}
if (violationDeteted==0 && meanCorrected>2*TOLERANCE){
if (pinsType[x-1]!=0 || pinsType[y-1]!=0){
specialCaseVCCGND();
}else{
if (mean>0){
pinsType[x-1]=VCC_PIN;
pinsType[y-1]=GND_PIN;
pinsV[x-1]=meanCorrected;
}else{
pinsType[x-1]=GND_PIN;
pinsType[y-1]=VCC_PIN;
pinsV[y-1]=meanCorrected;
}
}
}

//_Success case (constant value)_


//_Verify previous assignements_
//_Analysis previous assignements_
//_ VCC and GND atribution: case 1_

//_ VCC and GND atribution: case 2_

Listagem D.6 Funo de tratamento de casos especiais.


void specialCaseVCCGND(){

//*analyses when previous GND or VCC was assigned


//*re-adjustment of VCC and GND
if (pinsType[x-1]==GND_PIN && pinsType[y-1]==NORMAL_PIN){
pinsType[y-1]=VCC_PIN;
pinsV[y-1]=mean*(-1);
}
if (pinsType[x-1]==NORMAL_PIN && pinsType[y-1]==GND_PIN){
pinsType[x-1]=VCC_PIN;
pinsV[x-1]=mean;
}
if (pinsType[x-1]==VCC_PIN && pinsType[y-1]==NORMAL_PIN){
pinsType[y-1]=VCC_PIN;
pinsV[y-1]=pinsV[x-1]- mean;
}
if (pinsType[x-1]==NORMAL_PIN && pinsType[y-1]==VCC_PIN){
pinsType[x-1]=VCC_PIN;
pinsV[x-1]=mean-pinsV[y-1];
}

}
Listagem D.7 Funes para normalizao dos resultados.
void addOffset(){
float offset=getMinimum();
int j;
for (j=0;j<PINS_NR;j++){
if (pinsV[j]!=0 || pinsType[j]==2){
pinsV[j]+=offset;
if (pinsV[j]<1.7)
pinsType[j]= GND_PIN;
else
pinsType[j]= VCC_PIN;
}
}
}

//*get the minimum VCC deteted. That value is added to all VCC
//_find minimum_

//_Level correction: re-adjust false VCC_

122

float getMinimum(){
float minimum=pinsV[0];
int i;
for (i=1;i<PINS_NR;i++){
if (pinsV[i]<minimum)
minimum=pinsV[i];
}
if (minimum<0)
minimum=minimum*(-1);
return minimum;
}

//*This function find the minimum value of VCC values

//_Compare with previous lower value_


//_Store if presente value is the lowest_
//_Get absolute value_

123

D.5. Algoritmo de despiste de sinais analgicos


O algoritmo de despiste de sinais analgicos foi descrito na seo 3.5.4 deste
documento. A implementao foi realizada em linguagem C e a alocao de memria
para armazenamento dos dados encontra-se apresentada na Listagem D.8.
Listagem D.8 Excerto de cdigo fonte para alocao de memria.
()
//_allocate memory to data structures_
// measurements -> store original measurements. Matrix form: [Nr Pins] [Nr Measurements]
// temporaryMeasurements -> store semi-processed measurements. Matrix form: [Nr Pins] [Nr Measurements]
// levelMeanValues -> store voltage levels detected for each pin. Matrix form: [Nr Pins] [Nr Measurements]
//(probably de 2nd dimension of array will not be ully used)
measurements = malloc(sizeof *measurements *PINS_NR);
temporaryMeasurements=malloc(sizeof *temporaryMeasurements *PINS_NR);
if (measurements && temporaryMeasurements){
for (i = 0; i < PINS_NR; i++){
measurements[i] = malloc(sizeof *measurements[i] * MEASUREMENTS_NR);
temporaryMeasurements[i]=malloc(sizeof *temporaryMeasurements[i] *MEASUREMENTS_NR);
for(j=0;j<MEASUREMENTS_NR;j++)
temporaryMeasurements[i][j]=0;
}
}
levelsMeanValues = malloc(sizeof *levelsMeanValues *PINS_NR);
if (levelsMeanValues) {
for (i = 0; i < PINS_NR; i++) {
levelsMeanValues[i] = malloc(sizeof *levelsMeanValues[i] * MEASUREMENTS_NR);
for (j=0;j<MEASUREMENTS_NR;j++)
levelsMeanValues[i][j]=-99;
}
}
()

As funes que implementam a verificao do nmero de nveis de tenso de


cada pino encontram-se apresentadas nas Listagens D.9 e D.10, nomeadamente as
funes coordenadora e de anlise de nveis, respetivamente.
Listagem D.9 Funo coordenadora da verificao de nveis.
void numberOfLevelsVerification(){ //*verify if all input and output pins are digital (1 bit), analog or mixed.
int pinOut,probableLevelsNr, basicDigital=0, analogConfirm=1;
for (pinOut=0;pinOut<PINS_NR;pinOut++){
if(pinsType[pinOut]!=0 && pinsType[pinOut]!=3){
searchLevels(pinOut);
probableLevelsNr=levelsCounter-ghostLevels;
if (probableLevelsNr<=2){
//_Set as digital or analog_
basicDigital=1;
} else{
analogConfirm=0;
}
}
}
int circuitType=basicDigital+analogConfirm;
//_digital =2, mixed=1; analog =0_
switch(circuitType){
//_select replication type or error code: digital, analog or mixed_
case 0: exitValue=3; break;
case 1: exitValue=4 ;break;
case 2: exitValue=2;break;

124

default: exitValue=0;
}
}
Listagem D.10 Funo de anlise de nveis.
void searchLevels(int pin){
//*detect how many diferent tension levels found. Applied to the indicated pin on function argument
int i,j,k, endIf,newLevelDetected,level;
float analysingValue, newMean,auxCounter;
samplesLevelCounter = malloc(sizeof *samplesLevelCounter *MEASUREMENTS_NR);
ghostLevels=0; levelsCounter=1;
for (i=0;i<MEASUREMENTS_NR;i++) samplesLevelCounter[i]=0;
//_initialize_
levelsMeanValues[pin][0]=measurements[pin][0];
//_copy the first measurement: first level_
samplesLevelCounter[0]=1;
//_increases/initialize nr of samples to the first level_
for(i=1;i<MEASUREMENTS_NR;i++){
//_Start levels detection_
newLevelDetected=1;
analysingValue=measurements[pin][i];
//_copy to analysingValue the sample in analysis_
endIf=0;
for(j=0;j<levelsCounter;j++){
if (analysingValue<levelsMeanValues[pin][j]+TOLERANCE &&
analysingValue>levelsMeanValues[pin][j]TOLERANCE && endIf==0){
newLevelDetected=0;
//_current sample attached to previous level_
level=j; endIf=1;
}
}
if (newLevelDetected==1){
//_new level detected_
levelsMeanValues[pin][levelsCounter]=analysingValue;
//_save the new level_
levelsCounter++;
}else{
samplesLevelCounter[level]++;
//_increases level counter_
newMean=levelsMeanValues[pin][level]*(samplesLevelCounter[level]-1)+analysingValue;
//_re-calculates de mean (Step 1)_
levelsMeanValues[pin][level]=newMean/samplesLevelCounter[level];
//_re-calculates de mean (Step 2)_
}
}
for (k=0;k< levelsCounter;k++){
if(samplesLevelCounter[k]<maxMeanDeviationSamples*MEASUREMENTS_NR){
//_Detect level with a low number of measurements_
ghostLevels++;
globalGhostLevels++;
}
}
}

125

D.6. Gerador de instrues para aquisio de medies digitais


As principais funes utilizadas na implementao dos mdulos geradores de
instrues para aquisio de medies digitais (sincronizadas e no sincronizadas),
descritos nas sees 3.6.3 e 3.8.3 deste documento, respetivamente encontram-se
apresentados nas Listagens D.11, D.12 , D.13 e D.14. A implementao foi realizada na
linguagem C#.
Listagem D.11 Funo para gerar instrues de aquisio de medies digitais no
sincronizadas.
public void selectMeasurements(){
writeCOMfile();
//_Write communication setings_
Process runningProcess = new Process();
//_Create process to communicate_
runningProcess.StartInfo.CreateNoWindow = true;
runningProcess = System.Diagnostics.Process.Start("moduleCOM.exe"); //_Start communication_
int idprocess = runningProcess.Id;
while (runningProcess.HasExited == false) {
//_Wait end of communication_
}
dataConversion();
//_Convert received data_
}

Listagem D.12 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados: medio digital no sincronizada.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0010");
//_Write instruction opcode
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(pinsNR.ToString());
//_Write number of pins pin to measure_
fileCOM.WriteLine(pinGND.ToString());
//_Write reference (GND) pin to measurements_
fileCOM.Close();
//_Close file_
}
Listagem D.13 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados: medio digital sincronizada.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0011");
//_Write instruction opcode
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(pinCLK.ToString());
//_Write clock pin to synchronize _
fileCOM.WriteLine(pinGND.ToString());
//_Write reference (GND) pin to measurements_
fileCOM.WriteLine(clkPeriod_4.ToString());
//_Write of period from CLK signal_
fileCOM.Close();
//_Close file_
}

126

Listagem D.14 Funes de converso dos dados recebidos e escrita na estrutura de dados.
public void dataConversion(){
UInt64 lineData;
int i;
createFiles();
//_Create files to store converted measurements_
//_Open non-processed measurements file_
StreamReader fileResult = new StreamReader(path + "\\unprocessedMeasurements.rep");
for (i = 0; i < measurementsNR; i++){
//_Read all lines of data_
lineData = Convert.ToUInt64(fileResult.ReadLine());
//_Convert line of data_
writeIntoFiles(lineData);
//_Write converted data into files_
}
fileResult.Close();
//_Close files_
}
public void writeIntoFiles(UInt64 data){
//*Receives data into a 16 bits array and serializes it
int i;
UInt64 excess;
uint [] dataSplit=new uint [16];
for (i = 0; i < 16; i++){
excess = data % 10;
//_Uses rest of integer division by 10 to get LSB_
data = data / 10;
//_Exclude last bit to next operation_
dataSplit[i] = excess;
//_Store LSB_
}
//_Open files to append data_
StreamWriter fileM01 = File.AppendText(path + "\\MeasurementsP1.MED");
StreamWriter fileM02 = File.AppendText(path + "\\MeasurementsP2.MED");
(...)
StreamWriter fileM16 = File.AppendText(path + "\\MeasurementsP16.MED");
//_Append data and close the file_
fileM01.WriteLine(dataSplit[0].ToString()); fileM01.Close();
fileM02.WriteLine(dataSplit[1].ToString()); fileM02.Close();
(...)
fileM16.WriteLine(dataSplit[15].ToString()); fileM16.Close();
}

A funo de ajuste do nome dos ficheiros, de acordo com o a seo D.2,


encontra-se apresentada na Listagem D.15.
Listagem D.15 Funo de reajustamento do nome dos ficheiros.
public void renameFiles(){
int i;
String file;
if ((pinsNR % 2) == 1) pinsNR++;
//_Re-configure pins to select pins of physical socket to read_
int halfPins = pinsNR / 2;
int factor = (16 - pinsNR) / 2;
for (i = (9 - factor); i < (9 + factor); i++){
//_Range of files to delete_
try{
file = path + "\\MeasurementsP" + i.ToString() + ".MED";
System.IO.File.Delete(@file);
//_Delete non-interest files_
}
catch (Exception) {
}
}
int[] pins = new int[pinsNR];
for (i = 0; i < pinsNR; i++){
//_(the chip must be always placed on top of the socket)_
if (i < (halfPins)){
//_Make the conversion of pins number to postion of pin in the socket_
pins[i] = i;
}

127

else{
pins[i] = (16 - halfPins) + (i - halfPins);
}

}
String file2;
int j = 9-factor;
for (i = (9+factor); i <=16; i++){
//_Range of pins to re-adjust_
try{
file = path + "\\MeasurementsP" + i.ToString() + ".MED"; //_Original file name_
file2 = path + "\\MeasurementsP" + j.ToString() + ".MED"; //_Readjusted file name_
System.IO.File.Move(@file, @file2);
//_Re-adjust files names_
j++;
}
catch (Exception){
}
}

128

D.7. Algoritmo de anlise combinatria


O algoritmo de anlise combinatria foi descrito na seo 3.6.4 deste documento.
As funes para deteo de lgica sequencial e escrita do corpo do ficheiro VHDL (em
linguagem C) encontram-se disponveis nas Listagens D.16 e D.17, respetivamente.
Listagem D.16 Funo de deteo de lgica combinatria.
int sequencialLogicDetection(){
//*_This function determine if there are sequential logic involved_
int i,j,k,inputIndex,outputIndex;
int *storeInputs, *storeOutputs,*storeInputs2, *storeOutputs2;
int a1,a2,b1,b2;
if (inputPins==0) return 1;
//_if there are no input the circuit must be sequential_
//_Memory allocation_
storeInputs=malloc(sizeof *storeInputs *inputPins);
storeOutputs=malloc(sizeof *storeOutputs *(PINS_NR-inputPins));
storeInputs2=malloc(sizeof *storeInputs2 *inputPins);
storeOutputs2=malloc(sizeof *storeOutputs2 *(PINS_NR-inputPins));
for(i=0;i<newMeasurementsNr-1;i++){
for(j=i+1;j<newMeasurementsNr;j++){
//_Compare with all data_
inputIndex=0;outputIndex=0;
for(k=0;k<PINS_NR;k++){
switch(pinsType[k]){ //_Build input and output combinations_
case INPUT_PIN: storeInputs[inputIndex]=processedMeasurements[k][i];
storeInputs2[inputIndex]=processedMeasurements[k][j];
inputIndex++; break;
case OUTPUT_PIN: storeOutputs[outputIndex]=processedMeasurements[k][i];
storeOutputs2[outputIndex]=processedMeasurements[k][j];
outputIndex++; break;
}
}
a2=1;
for (a1=0;a1<inputPins;a1++){
if(storeInputs[a1]!=storeInputs2[a1]) a2=0;
//_Compare input combination_
}
if(a2){
//_if input combination is the same_
a2=1;
for (b1=0;b1<(PINS_NR-inputPins);b1++){
//_Compare output combination when they have same input_
if(storeOutputs[b1]!=storeOutputs2[b1]) return 1;
//_Sequential logic detected_
}
}
}
return 0;
//_Sequential logic: not detected_
}

Listagem D.17 Funo de escrita do corpo do ficheiro VHDL para circuitos combinatrios.
void writeBodyBasicDigitalFileVHDL(int pin){
//* write the body of VHDL file
int i,j,comma;
int secondCondition=0;
int intAux;
char strAux1[500], strAux2[500],strAux[50];
highProb=100*(newMeasurementsNr)/(power(2,inputPins));
//_Write estimated success rate_
fprintf(ficheiroVHDL,"--Probability of success(%%): %f\n", highProb);
//_creates auxiliar signal_
fprintf(ficheiroVHDL,"signal concatenate : STD_LOGIC_VECTOR (%i downto 0);\nbegin\n\tprocess(",inputPins-1);

129

for (i=0;i<PINS_NR;i++){
if (pinsType[i]==1){
sprintf(strAux, "%i", i+1);
if (comma==1)
fprintf(ficheiroVHDL,",");
fprintf(ficheiroVHDL,"pin%s",strAux);
comma=1;
}
}
int readPins=1;
char strAux3[1000];
//_Concatenate inputpins_
fprintf(ficheiroVHDL,")\n\tbegin\n\t\tconcatenate<=");
for (i=0;i<PINS_NR;i++){
if(pinsType[i]==1){
strcpy(strAux3,"pin");
sprintf(strAux, "%i", i+1);
strcat(strAux3,strAux);
if (readPins!=inputPins) strcat(strAux3," & ");
readPins++;
fprintf(ficheiroVHDL,strAux3);
}
}
fprintf(ficheiroVHDL,";\n\n\t\tcase concatenate is\n");
//_creates case statement_
for (i=0;i<newMeasurementsNr;i++){
//_create case options_
strcpy(strAux1,"\t\t\twhen ");
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL,"%c",34);
for (j=0;j<PINS_NR;j++){
if (pinsType[j]==1) {
sprintf(strAux1, "%i", processedMeasurements[j][i]);
fprintf(ficheiroVHDL,strAux1);
}
}
fprintf(ficheiroVHDL,"%c",34);
//_Add special character_
fprintf(ficheiroVHDL,"=> ");
for (j=0;j<PINS_NR;j++){
//_create the events when the specified case happens_
if (pinsType[j]==2) {
strcpy(strAux1,"pin");
sprintf(strAux2, "%i", j+1);
strcat(strAux1,strAux2);
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL," <= '%i'; ",processedMeasurements[j][i]);
}
}
fprintf(ficheiroVHDL,"\n");
}
//_write the dafault case_
fprintf(ficheiroVHDL,"\t\t\twhen others => ");
for (j=0;j<PINS_NR;j++){
if (pinsType[j]==2) {
strcpy(strAux1,"pin");
sprintf(strAux2, "%i", j+1);
strcat(strAux1,strAux2);
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL," <= '0';");
}
}
fprintf(ficheiroVHDL,"\n\t\tend case;\n");
}

130

D.8. Gerador de instrues para deteo de sinais peridicos


As principais funes utilizadas na implementao do mdulo gerador de
instrues para deteo de sinais peridicos (descrito na seo 3.7.3 deste documento)
encontram-se apresentadas na Listagem D.18.
Listagem D.18 Funo de deteo de lgica combinatria.
private void selectMeasurements() {
int i, j,k;
Decimal [] temporaryData=new Decimal [measurementsNR];
string pathComplete;
if ((pinsNR % 2) == 1) pinsNR++;
//_Re-configure pins to select pins of physical socket to read_
int[] pins = new int[pinsNR];
int halfPins = pinsNR / 2;
for (i = 0; i < pinsNR; i++) {
//_(the chip must be always placed on top of the socket)_
if (i < (halfPins)) {
//_Make the conversion of pins number to postion of pin in the socket_
pins[i] = i;
}
else {
pins[i] = (16 - halfPins) + (i - halfPins);
}
}
int k;
Decimal[] temporaryData = new Decimal[measurementsNR];
for (i = 0; i < pinsNR; i++) {
//_Evaluate all pins_
if (pinsType[i]==INPUT_CODE){ //_Select all input pins_
pathComplete = path + "\\measurementsP" + (i + 1).ToString() + ".MED";
writeCOMfile();
//_Write communication setings_
Process runningProcess = new Process();
//_Create process to communicate_
runningProcess.StartInfo.CreateNoWindow = true;
runningProcess = System.Diagnostics.Process.Start("moduleCOM.exe"); //_Start communication_
int idprocess = runningProcess.Id;
while (runningProcess.HasExited == false) {
//_Wait end of communication_
}
StreamReader file2 = new StreamReader(pathComplete);
//_Open received data file_
for (k = 0; k < measurementsNR; k++){
temporaryData[k] = Convert.ToDecimal(file2.ReadLine());
//_Read data_
}
file2.Close();
//_Close file_
for (k = 1; k < measurementsNR; k++) {
temporaryData[k - 1] = temporaryData[k] - temporaryData[k - 1];
//_Convert data_
}
StreamWriter file3 = new StreamWriter(pathComplete);
//_Open new file_
for (k = 0; k < measurementsNR-1; k++){
file3.WriteLine(temporaryData[k].ToString());
//_Write converted data_
}
file3.Close();
//_CLose file_
}
}
}

Nesta etapa, o ficheiro de comunicaes escrito igual ao descrito na Listagem D.4,


alterando apenas o opcode para o valor 0100, correspondente instruo de deteo
de sinais peridicos.

131

D.9. Algoritmo de deteo do sinal de relgio


As principais funes utilizadas na implementao do algoritmo de deteo do
sinal de relgio (descrito na seo 3.7.4 deste documento) encontram-se apresentadas
nas Listagens D.19 e D.20.
Listagem D.19 Funo de anlise da distribuio dos dados e classificao dos mesmos em
funo da periodicidade.
void checkDataDistribution(){
//*Check distribution of data to detect periodical signals and the respective period
//*Analyzes possible sampling errors
//*Negative values means constant signal
int i,j,samplesOutOfRange;
float sum;
for(i=0;i<PINS_NR;i++){
sum=0; pinsEvaluation[i]=NON_PERIODICAL;
//_Variables initialization_
if(pinsType[i]==1){
//_Mean calculation for each input pin and respective tolerance_
for(j=0;j<MEASUREMENTS_NR;j++) sum+=measurements[i][j];
clkMeanValue[i]=sum/MEASUREMENTS_NR;
clkTolerance[i]=PERCENTUAL_TOLERANCE*clkMeanValue[i];
if(clkTolerance[i]<SENSIBILITY_COMPENSATION) clkTolerance[i]=SENSIBILITY_COMPENSATION;
//_Counting possible sampling errors_
samplesOutOfRange=0;
for(j=0;j<MEASUREMENTS_NR;j++){
if(measurements[i][j]>clkMeanValue[i]+clkTolerance[i] || measurements[i][j]<clkMeanValue[i]clkTolerance[i])
samplesOutOfRange++;
}
//_Classifies pins which has samples in correct range as periodical_
if(samplesOutOfRange<=SAMPLE_PERCENTUAL_TOLERANCE*CYCLES_NUMBER){
pinsEvaluation[i]=PERIODICAL;
}
}
}

Listagem D.20 Funo de identificao do pino de relgio.


int detectClockPin(){
//*identtifies the pin which has the periodical signal with higher frequency
int i, clkPin=17, PreviousValueStored=FALSE;
for(i=0;i<PINS_NR;i++){
//_Analyzes all pins_
if(pinsEvaluation[i]==PERIODICAL){
//_Select periodical pins_
if(PreviousValueStored==FALSE){
//_Atributes initial values_
if(clkMeanValue[i]>0){
minimumPeriod=clkMeanValue[i]; PreviousValueStored=TRUE, clkPin=i;
}
} else{
//_Select lower value for signal perod_
if(clkMeanValue[i]<minimumPeriod && clkMeanValue[i]>0){
minimumPeriod==clkMeanValue[i]; clkPin=i;
}
}
}
}
return clkPin;
//_returns the number of clock pin_
}

132

D.10. Algoritmo de deteo do sinal de reset


As principais funes utilizadas na implementao do algoritmo de deteo do
sinal de reset (descrito na seo 3.8.3 deste documento) encontram-se apresentadas
na Listagem D.21.
Listagem D.21 Funes para deteo do sinal de reset (concebidas para extenso deteo
de sinal de preset se necessrio).
void resetDetection(){
//*This function detect reset pins
int i, RST_DL, pinCLK;
for (i=0;i<PINS_NR;i++) {
//_find and store de clock pin_
if(pinsType[i]==4){
pinCLK=i;
break;
}
}
clockPIN=pinCLK;
for(i=0;i<PINS_NR;i++){
//_coordenates a reset detection for all input pins_
if(pinsType[i]==1){
RST_DL=detectRST_byLogicType(i,pinCLK,DIRECT_LOGIC,0);
//_verify reset (direct logic case)_
if(RST_DL==0)
detectRST_byLogicType(i,pinCLK,REVERSE_LOGIC,0);
//_verify reset (reverse logic case)_
}
}
}
int detectRST_byLogicType (int pin, int clockPIN, int logicType, int RST_or_PST){
//*call the routine to analyzes reset and synchronism. Update the data in a file
int i,j;
int typeToWritte;
int PST_RST_D;
//_the function 'detectSynchronismRST' detects reset to a selected pin, according to a logic type_
PST_RST_D=detectSynchronismRST(pin,clockPIN,logicType,RST_or_PST);
if (PST_RST_D!=NO_RST_DETECTED){
//_verify if a reset was detected_
inputPins--;
if(logicType==DIRECT_LOGIC){
//_Assign pin in direct logic case_
switch(PST_RST_D){
case 1: typeToWritte=RST_D_SF;break;
case 3: typeToWritte=RST_D_A;break;
case 4: typeToWritte=RST_D_SR;break;
}
} else {
//_Assign pin in reverse logic case_
switch(PST_RST_D){
case 1: typeToWritte=RST_R_SF;break;
case 3: typeToWritte=RST_R_A;break;
case 4: typeToWritte=RST_R_SR;break;
}
}
updatePinsTypeFile(pin,typeToWritte);
return 1;
//_indicates a successful reset detection_
}
return 0;
//_indicates a failed reset detection_
}

133

int detectSynchronismRST(int pin, int clockPIN, int logicType,int RST_or_PST){


//*Detect if a selected pin could be a reset pin, by logic type(direct or reverse).
//* Uses operations with clock signal to determinate if the reset could be assynchronus or syncronus.
//_-----Table 1--------_
// PLUS/TIMES
Description
// 0 / 0
synchronus, with falling edge clock
// 0 / 1
Nothing detected
// 1 / 0
Assynchronus
// 1 / 1
Synchronus
int i,j,sum;
int clockPlusVerification=0,clockTimesVerification=1;
int clockPlusCounterVerification=0,clockTimesCounterVerification=1;
int result, counterVerificationSamples=0;
int counterVerificationsResults[4]={1,0,1,1};
//Index: 0-Not reverse CLK sync 1-nothing detected 2-not assyncronus 3-not CLK sync
float accuracyRST=0;
for(i=0;i<MEASUREMENTS_NR;i++){
if(measurements[pin][i]==logicType){
//_verify if the possible reset pin in analysis is active _
sum=0;
for(j=0;j<PINS_NR;j++){
if(pinsType[j]==2){
//_select all outputs _
sum+=measurements[j][i];
//_sum all outputs when possible reset pin is active _
}
}
if(sum==RST_or_PST) {
//_ when reset is detected_
clockPlusVerification+=measurements[clockPIN][i];
//_sum all clock values when reset is active_
clockTimesVerification*=measurements[clockPIN][i];
//_multiply all clock values when reset is active_
} else{
//_make a counter analysis in failure cases_
clockPlusCounterVerification+=measurements[clockPIN][i];
clockTimesCounterVerification*=measurements[clockPIN][i];
counterVerificationsResults[ASSYNCRONUS-1]=0;
//_Initialize exception analysis structure_
counterVerificationSamples++;
}
//_Analysis the failure cases according with table 1_
switch(clockPlusCounterVerification){
//_Counter verification analysis_
case 0: if(clockTimesCounterVerification==0)
counterVerificationsResults[SYNCHRONUS_CLK_FALLING_EDGE-1]=0;
break;
default: if(clockTimesCounterVerification==1)
counterVerificationsResults[SYNCHRONUS_CLK_RISING_EDGE-1]=0;
}
}
}

134

D.11. Algoritmo de aproximao de circuitos sequenciais a uma


mquina de estados
As principais funes utilizadas na implementao do algoritmo de anlise de
circuitos sequenciais (descrito na seo 3.9.4 deste documento) encontram-se
apresentadas nas Listagens D.22, D.23 e D.24.
Listagem D.22 Excerto da funo principal do algoritmo de anlise sequencial.
(...)
statesNumber=0;
resetInfo=resetStateAtribution();
analysis_and_decision (resetInfo);
transitionsTableBuilder();
metric=analysisSuccess();
if(inputPins==0){
create_VHDL_file_seq_No_inputs();
}else{
create_VHDL_file_seq_with_inputs();
}
(...)

//_initializes states number_


//_Generate intial state (reset)_
//_sequential analysis_
//_Build transistions table_
//_Success analysis_
//_Write VHDL code with or without inputs_

Listagem D.23 Funo de anlise e tomada de deciso.


void analysis_and_decision(int start){
int verificationResult;
int RST_statePreviouslyAssigned, matchingResetStatus;
for(outputUnderAnalysis=start;outputUnderAnalysis<(NEW_MEASUREMENTS_NR-1);outputUnderAnalysis++){
if(sequentialTable[outputUnderAnalysis+1].resetON==FALSE) {
//_non-reset situations_
verificationResult=verifyOutputOccurrence(start,
outputUnderAnalysis,sequentialTable[outputUnderAnalysis].output);
switch (verificationResult){
case NEW: assign_NewState(outputUnderAnalysis);
//new state to assign; DECISION NOT DOUBFUL
break;
default: assign_previousState(outputUnderAnalysis,start); //try assign to previous state DECISION DOUBFUL;
break;
}
} else{
//_Establish transition to reset state_
sequentialTable[outputUnderAnalysis].decision=DISCARDED;
sequentialTable[outputUnderAnalysis].assignedState=-2;
outputUnderAnalysis++;
while(sequentialTable[outputUnderAnalysis].resetON==TRUE){
sequentialTable[outputUnderAnalysis].decision=NOT_DOUBFUL;
outputUnderAnalysis++;
}
outputUnderAnalysis--;
}
}
}

Listagem D.24 Funo de aproximao heurstica a estado j existente.


void assignTemporaryState(int index_,int positionStart){
int atributionVerification=FALSE;
int preAtributionState;
while(sequentialTable[index_].indexTransition<sequentialTable[index_].possibleTransitionsNumber &&

135

atributionVerification==FALSE){
preAtributionState=sequentialTable[index_].possibleTransitions[sequentialTable[index_].indexTransition];
atributionVerification=verifySeletedAtribution(preAtributionState,index_,positionStart);
if(atributionVerification==TRUE){
sequentialTable[index_].assignedState=preAtributionState;
}
sequentialTable[index_].indexTransition++;
}
if(atributionVerification==FALSE){
sequentialTable[index_].decision=EXCLUDED;
applyCorretionAlghoritm(index_,positionStart);
}
}

136

D.12. Mdulo de comunicao


O cdigo fonte utilizado para implementar o mdulo de comunicao descrito
na seo 3.10 deste documento encontra-se apresentado na Listagem D.25.
Listagem D.25 Cdigo fonte completo (linguagem C#) do mdulo de comunicao.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
using System.Diagnostics;
namespace moduleCOM
{
public partial class Form1 : Form
{
string portName, path;
int opcode, measurementsNR;
int arguments = 0;
int[] argumentsArray ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
executeCommunication();
}
public void executeCommunication(){
StreamReader file = new StreamReader("comdata.rep");
String communicationString;
portName = file.ReadLine();
serialPort1.PortName = portName;
path = file.ReadLine();
String opcodeStr = file.ReadLine();
opcode = Convert.ToInt32(opcodeStr);
measurementsNR = Convert.ToInt32(file.ReadLine());
communicationString = opcodeStr + ":" + measurementsNR.ToString();
switch (opcode){
case 1: arguments = 2; break;
case 10: arguments = 2; break;
case 11: arguments = 3; break;
case 100: arguments = 2; break;
default: arguments = 0; communicationString = communicationString + ":0:0"; break;
}
if (arguments > 0){
int i;
argumentsArray = new int[arguments];

137

for (i = 0; i < arguments; i++){


argumentsArray[i] = Convert.ToInt32(file.ReadLine());
communicationString = communicationString + ":" + argumentsArray[i].ToString();
}
}
communicationString = communicationString + ":-\n";
communicate(communicationString);
receiveData();
Close();
}
public void receiveData(){
String receivedData;
Boolean finish = false;
StreamWriter file = new StreamWriter(path);
while (finish==false){
receivedData = serialPort1.ReadLine();
if (receivedData.CompareTo("END")==1){
finish = true;
} else{
file.Write(receivedData);
}
}
serialPort1.Close();
file.Close();
}
public void communicate(string sendData){
serialPort1.Open();
serialPort1.DiscardInBuffer();
serialPort1.DiscardOutBuffer();
try{
serialPort1.Write(sendData);
}
catch{
MessageBox.Show("Cabo desconectado", "Erro");
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen == true){
serialPort1.Close();
}
}
}
}

138

D.13. Mdulo de coordenao e interface


O cdigo fonte utilizado para implementar o mdulo de coordenao e interface
(descrito na seo 3.11 deste documento) baseia-se na criao de processos e
respetiva execuo, para os diferentes mdulos e encontra-se apresentado na Listagem
D.26.
Listagem D.26 Funo de criao de um novo processo pelo mdulo de coordenao e
interface.
private int createProcessAndRunning(int stepNr, string processPath) {
startTestTime = DateTime.Now;
labelStartingTimeTest.Text = startTestTime.ToString();
updateConsoleTextboxs();
labelStatusTest.Text = "RUNNING";
labelStatusTest.ForeColor = Color.Green;
labelStage.Text = stepNr.ToString() + "/" +totalSteps.ToString();
Process runningProcess = new Process();
runningProcess.StartInfo.CreateNoWindow = true;
runningProcess = System.Diagnostics.Process.Start(processPath);
int idprocess = runningProcess.Id;
while (runningProcess.HasExited == false){
}
labelStatusTest.Text = "FINISHED";
return runningProcess.ExitCode;
}

139

E. Utilizao da interface grfica do sistema


desenvolvido
O sistema desenvolvido possui uma interface grfica para que seja possvel o
utilizador inserir os parmetros de operao e acompanhar as diferentes etapas do
processo.
Ao iniciar a aplicao ser exibida a janela principal onde o utilizador poder
inserir as configuraes iniciais (ver Figura E.1): diretoria de armazenamento e nome do
ficheiro VHDL, nmero de pinos do circuito integrado, tolerncia mxima admitida,
indicao dos pinos de sada e o nmero de amostras associadas a cada medio (com
diferenciao entre medies analgicas e digitais.)

Figura E.1 Interface para configurao introduo dos parmetros iniciais.

No lado esquerdo da janela principal da interface encontra-se um menu com


opes, sendo cada menu descrito na Tabela E.1.
Tabela E.1 Descrio dos menus da interface grfca.

Menu
Main Page
Load Default Values
Communication Settings

Help
Exit

Descrio
Apresenta a janela principal (Figura E.1)
Reconfigura os parmetros, atribuindo as predefinies.
Permite definir a porta srie a utilizar na ligao com o
sistema de aquisio de dados32. Apresenta ainda a taxa
de transmisso de dados (Ver Figura E.2).
Apresenta a descrio de cada parmetro, permitindo ao
utilizador efetuar uma melhor configurao dos
parmetros (ver Figura E.3).
Fecha a aplicao.

32

A deteo de dispositivos conectados a portas srie feita de forma automtica. No caso de


existirem mltiplos dispositivos conectados pode ser necessrio um reajuste manual.

140

As interfaces grficas dos diferentes menus encontram-se apresentadas nas


Figuras E.2 e E.3.

Figura E.2 Menu de configurao das definies de comunicao (Communication Settings).

Figura E.3 - Menu de ajuda (Help).

Aps insero dos parmetros de configurao, o utilizador deve carregar no


boto Start da janela apresentada na Figura E.1 para que o processo de replicao
automtica tenha incio.
Durante a replicao apresentada ao utilizador informao, em tempo real,
sobre a etapa em que o processo se encontra, como apresentado na Figura E.4.

141

Figura E.4 Janela de apresentao do progresso das etapas de replicao.

Quando o processo de replicao estiver indicado como concludo (FINISHED)


o utilizador deve clicar no boto Continue e o ficheiro VHDL gerado durante o processo
de replicao ir abrir automaticamente. Quando circuito sequencial detetado, uma
nova janela de configuraes exibida, apresentada na Figura E.5.

Figura E.5 Interface para configurao dos parmetros para anlise sequencial.

Esta interface permite a configurao automtica ou manual dos parmetros. Um


reajuste do nmero de medies permitido bem como requerido. A preciso (baixa,
mdia ou alta), tipo de reset (utilizar o observado, converso para sncrono ou
assncrono) e a profundidade de anlise pretendida (automtico ou manual) so os
parmetros necessrios para que o sistema prossiga a replicao.

142

F. Sistema de aquisio de dados


F.1. Circuito de aquisio sinais analgicos

Figura F.1 Circuito de aquisio de medies analgicas.

143

F.2. Circuito de aquisio de sinais digitais

Figura F.2 Circuito de aquisio de medies digitais.

144

F.3. Esquema eltrico do de aquisio de dados

Figura F.3 Esquema eltrico do sistema de aquisio de dados.

145

F.4. Cdigo fonte do microcontrolador do sistema de aquisio


de dados
Listagem F.1 Cdigo fonte do microcontrolador (Arduno Mega 2560) do sistema de aquisio
de dados
#include <string.h>
#include <math.h>
const int positiveMux_A3 = 22;
const int positiveMux_A2 = 24;
const int positiveMux_A1 = 26;
const int positiveMux_A0 = 28;
const int EnablePositiveMux = 30;
const int negativeMux_A3 = 23;
const int negativeMux_A2 = 25;
const int negativeMux_A1 = 27;
const int negativeMux_A0 = 29;
const int EnableNegativeMux = 31;
const int portADC = 1;
const int flipFlopAcq=37;
const int relayGND = 34;
const int relayCLK = 35;
//const int digitalPin 1 to 8 =>38 to 45;
//const int digitalPin 9 to 16 =>46 to 53;
// Variables will change:
boolean stringComplete=false;
boolean dataFound=false;
boolean finishedDataCLK=false,finishedSeqMeasurements=false;
String inputString = "";
int MEASUREMENTS_NR=-1;
int clkMeasurements=0,seqMeasurements=0;
unsigned int digitalSeq[1000];
unsigned long timeValues[105];
unsigned long periodCLK;
void setup() {
pinMode(EnablePositiveMux, OUTPUT);
pinMode(positiveMux_A3, OUTPUT);
pinMode(positiveMux_A2, OUTPUT);
pinMode(positiveMux_A1, OUTPUT);
pinMode(positiveMux_A0, OUTPUT);
pinMode(EnableNegativeMux, OUTPUT);
pinMode(negativeMux_A3, OUTPUT);
pinMode(negativeMux_A2, OUTPUT);
pinMode(negativeMux_A1, OUTPUT);
pinMode(negativeMux_A0, OUTPUT);
pinMode(38,INPUT);
pinMode(39,INPUT);
pinMode(40,INPUT);
pinMode(41,INPUT);
pinMode(42,INPUT);
pinMode(43,INPUT);
pinMode(44,INPUT);
pinMode(45,INPUT);
pinMode(46,INPUT);
pinMode(47,INPUT);
pinMode(48,INPUT);
pinMode(49,INPUT);

146

pinMode(50,INPUT);
pinMode(51,INPUT);
pinMode(52,INPUT);
pinMode(53,INPUT);
pinMode(ADC,INPUT);
pinMode(flipFlopAcq,OUTPUT);
pinMode(relayGND,OUTPUT);
pinMode(relayCLK,OUTPUT);
// initialize serial communication:
Serial.begin(115200);
Serial.flush();
initialization();
}
void initialization(){
//_initializes controler pins
int i;
for(i=22;i<32;i++) digitalWrite(i,LOW);
digitalWrite(flipFlopAcq,LOW);
digitalWrite(relayGND,LOW);
digitalWrite(relayCLK,LOW);
}
void transitionDetection(){
timeValues[clkMeasurements]=micros();
clkMeasurements++;
if(clkMeasurements>MEASUREMENTS_NR){
finishedDataCLK=true;
detachInterrupt(0);
}
}

//_INT 0: Save current time (uS) of INT 0 execution_

void sequentialAcquisition(){
int i, value;
unsigned int sum=0;
delayMicroseconds(periodCLK);
digitalWrite(flipFlopAcq,HIGH);
delayMicroseconds(1);
digitalWrite(flipFlopAcq,LOW);
for(i=0;i<16;i++){
value=digitalRead(38+i);
sum=sum+value*pow(2,i);
}
digitalSeq[seqMeasurements]=sum;
seqMeasurements++;
if(seqMeasurements>MEASUREMENTS_NR){
finishedSeqMeasurements=true;
detachInterrupt(0);
}
}

//_Do digital sinchronized measures_

void sendSeqdata(){
int i;
for(i=0;i<MEASUREMENTS_NR;i++){
Serial.println(digitalSeq[i],BIN);
}
Serial.println("END");
digitalWrite(EnableNegativeMux, LOW);
digitalWrite(EnablePositiveMux, LOW);
}

//_Verify if measurements are enough_


//_Ativate flag to send data_
//_Disable INT 0_

//_Wait 1/5 of CLK period_


//Load data to flip flop_

//_Read data from flip-flops_


//_Convert data to int_
//_Store data_
//_Ativate flag to send data_
//_Disable INT 0_

//_Send sequential data_

//_Release reference relay_


//_Release clock relay_

void sendCLKdata(){

147

int i;
for(i=0;i<MEASUREMENTS_NR;i++){
Serial.println(timeValues[i]);
}
Serial.println("END");
digitalWrite(EnableNegativeMux, LOW);
digitalWrite(EnablePositiveMux, LOW);

//_Send clock data_

//_Release reference relay_


//_Release clock relay_

}
void clockDetection(char *arguments){
char *argA, *argB;
int pinsNR,referenceMux,acquiredData=0;
argA=strtok(arguments,":");
argB=strtok(NULL,":");
pinsNR=atoi(argA);
referenceMux=atoi(argB);
changeNegativeMux(referenceMux);
changePositiveMux(pinsNR);
digitalWrite(relayGND,HIGH);
digitalWrite(relayCLK,HIGH);
delay(5);
attachInterrupt(0, transitionDetection, CHANGE);
}

//_Break function argument 1 from main string_


//_Break function argument 2 from main string_
//_Identify number of pins to measure_
//_Select reference pin to measure_
//_Ativate reference relay_
//_Ativate clock relay_
//_Ativate reference routing relay_
//_Ativate clock routing relay_
//_Ativate intrruption_

void convertPositiveMuxIndex(int index){ //_Serializes positive mux selection signal_


digitalWrite(positiveMux_A3, LOW);digitalWrite(positiveMux_A2, LOW);
digitalWrite(positiveMux_A1, LOW);digitalWrite(positiveMux_A0, LOW);
if(index>7){
digitalWrite(positiveMux_A3, HIGH);
index=index-8;
}
switch(index){
case 1: digitalWrite(positiveMux_A0, HIGH); break;
case 2: digitalWrite(positiveMux_A1, HIGH); break;
case 3: digitalWrite(positiveMux_A1, HIGH); digitalWrite(positiveMux_A0, HIGH);break;
case 4: digitalWrite(positiveMux_A2, HIGH); break;
case 5: digitalWrite(positiveMux_A2, HIGH); digitalWrite(positiveMux_A0, HIGH);break;
case 6: digitalWrite(positiveMux_A2, HIGH); digitalWrite(positiveMux_A1, HIGH);break;
case 7: digitalWrite(positiveMux_A2, HIGH); digitalWrite(positiveMux_A1, HIGH);
digitalWrite(positiveMux_A0, HIGH); break;
}
}
void changePositiveMux(int relayIndex){
digitalWrite(EnablePositiveMux, LOW);
delay(25);
convertPositiveMuxIndex(relayIndex);
digitalWrite(EnablePositiveMux, HIGH);
delay(25);
}

//_Unable positive mux relay_


//_Wait relay opening time_
//_Select relay_
//_Enable positive mux relay_
//_Wait relay closing time_

void convertNegativeMuxIndex(int index){ //_Serializes negative mux selection signal_


digitalWrite(negativeMux_A3, LOW);digitalWrite(negativeMux_A2, LOW);
digitalWrite(negativeMux_A1, LOW);digitalWrite(negativeMux_A0, LOW);
if(index>7){
digitalWrite(negativeMux_A3, HIGH);
index=index-8;
}
switch(index){
case 1: digitalWrite(negativeMux_A0, HIGH); break;
case 2: digitalWrite(negativeMux_A1, HIGH); break;

148

case 3: digitalWrite(negativeMux_A1, HIGH) ;digitalWrite(negativeMux_A0, HIGH);break;


case 4: digitalWrite(negativeMux_A2, HIGH); break;
case 5: digitalWrite(negativeMux_A2, HIGH); digitalWrite(negativeMux_A0, HIGH);break;
case 6: digitalWrite(negativeMux_A2, HIGH);digitalWrite(negativeMux_A1, HIGH);break;
case 7: digitalWrite(negativeMux_A2, HIGH);digitalWrite(negativeMux_A1, HIGH);
digitalWrite(negativeMux_A0, HIGH);

}
void changeNegativeMux(int relayIndex){
digitalWrite(EnableNegativeMux, LOW);
delay(25);
convertNegativeMuxIndex(relayIndex);
digitalWrite(EnableNegativeMux, HIGH);
delay(25);
}

//_Unable positive mux relay_


//_Wait relay opening time_
//_Select relay_
//_Enable positive mux relay_
//_Wait relay closing time_

void analogReading(){
//*Provides N analog measurements
int acquiredData=0;
int analogValue;
int waitingTimeUs, totalDelayUs;
randomSeed(millis());
while(acquiredData<MEASUREMENTS_NR){
//_Acquire N samples_
delay(5);
//_Stabilization time for ADC (fixed time)_
waitingTimeUs=random(1,2000);
//_Generate random time(us)_
delayMicroseconds(waitingTimeUs);
//_Wait random time to avoid periodical measurements_
analogValue=analogRead(portADC);
//_Acquire data_
Serial.println(analogValue);
//_Send data_
acquiredData++;
//_Increment acquired samples_
}
Serial.println("END");
//_Send message which indicates the end of measurements_
}
void digitalReading(int numberPins){
int i;
unsigned int sum=0;
int value;
digitalWrite(flipFlopAcq,HIGH);
delayMicroseconds(1);
digitalWrite(flipFlopAcq,LOW);
for(i=0;i<16;i++){
value=digitalRead(38+i);
sum=sum+value*pow(2,i);
}
Serial.println(sum,BIN);
}

//Load data to flip flop_

//_Read data from flip-flops_


//_Convert data to int_
//_Send data_

void runDifferentialAnalogMeasurements(char *arguments){


//*function to execute the instruction to make analog measurements
char *argA, *argB;
int positiveMux,negativeMux;
argA=strtok(arguments,":");
//_Break function argument 1 from main string_
argB=strtok(NULL,":");
//_Break function argument 2 from main string_
positiveMux=atoi(argA);
//_Select positive pin to measure_
negativeMux=atoi(argB);
//_Select negative pin to measure_
changePositiveMux(positiveMux);
//_Ativate positive relay_
changeNegativeMux(negativeMux);
//_Ativate negative relay_
analogReading();
//_Do differential analog measurements_
digitalWrite(EnablePositiveMux, LOW);
//_Release all positive relays_
digitalWrite(EnableNegativeMux, LOW);
//_Release all negative relays_
}

149

void runCombinatorialMeasurements(char *arguments){


char *argA, *argB;
int pinsNR,referenceMux,acquiredData=0;
int waitingTimeUs;
randomSeed(millis());
argA=strtok(arguments,":");
argB=strtok(NULL,":");
pinsNR=atoi(argA);
referenceMux=atoi(argB);
changeNegativeMux(referenceMux);
digitalWrite(relayGND,HIGH);
delay(5);
while(acquiredData<MEASUREMENTS_NR){
digitalReading(pinsNR);
acquiredData++;
waitingTimeUs=random(100,2000);
delayMicroseconds(waitingTimeUs);
}
digitalWrite(relayGND,LOW);
digitalWrite(EnableNegativeMux, LOW);
delay(5);
Serial.println("END");
}
void runSequentialMeasurements(char *arguments){
char *argA, *argB, *argC;
int referenceMux,clkMux;
argA=strtok(arguments,":");
argB=strtok(NULL,":");
argC=strtok(NULL,":");
clkMux=atoi(argA);
referenceMux=atoi(argB);
periodCLK=atoi(argC)/5;
changeNegativeMux(referenceMux);
changePositiveMux(clkMux);
digitalWrite(relayGND,HIGH);
digitalWrite(relayCLK,HIGH);
delay(5);
attachInterrupt(0, sequentialAcquisition, CHANGE);
}
void generalSerialReading() {
char *opcode, *measurementsStr, *arguments;
char instructionReceived[100];
while (Serial.available()>0) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
dataFound=true;
}
}
if(dataFound==true){
stringComplete=false; dataFound=false;
Serial.flush();
inputString.toCharArray(instructionReceived, 100) ;
inputString="";
opcode=strtok(instructionReceived,":");

//_Break function argument 1 from main string_


//_Break function argument 2 from main string_
//_Identify number of pins to measure_
//_Select reference pin to measure_
//_Ativate reference relay_

//_Generate random time(us)_


//_Wait random time to avoid periodical measurements_
//_Release reference relay_

//_Break function argument 1 from main string_


//_Break function argument 2 from main string_
//_Break function argument 3 from main string_
//_Identify number of pins to measure_
//_Select reference pin to measure_
//_Select clk 1/4 period to measure_
//_Ativate reference relay_
//_Ativate clk relay_

//_Ativate intrruption_

//_Reading input buffer_


//_Identify the end of string_

//_String received_
//_Clean input buffer_
//_Convert to char array_
//_Clean string for next communication_
//_Breaking instruction: extrating opcode_

150

measurementsStr=strtok(NULL,":");
MEASUREMENTS_NR=atoi(measurementsStr);
arguments=strtok(NULL,"-");
//Execute instructions_
if(strcmp(opcode,"0001")==0){
runDifferentialAnalogMeasurements(arguments);
}
if(strcmp(opcode,"0010")==0){
runCombinatorialMeasurements(arguments);
}
if(strcmp(opcode,"0011")==0){
runSequentialMeasurements(arguments);
}
if(strcmp(opcode,"0100")==0){
clockDetection(arguments);
}
if(strcmp(opcode,"1111")==0){
Serial.println("1");
Serial.println("END");
}
}

void loop() {
generalSerialReading();
if(finishedDataCLK==true){
clkMeasurements=0;
sendCLKdata();
finishedDataCLK=false;
}
if(finishedSeqMeasurements==true){
seqMeasurements=0;
sendSeqdata();
finishedSeqMeasurements=false;
}
}

//_Breaking instruction: extrating measurements number_


//_Convert data type_
//_Breaking instruction: extrating arguments_
//_Run analog measurements_
//_Run digital measurements for combinatorial analysis_
//_Run digital measurements for combinatorial analysis_
//_Run transition detector_

//_Send message which indicates the end of measurements_

//_Read instructions from serial port_


//_Verify if there are clock data to send_
//_Re-intialize variables_
//_Send data_
//_Re-intialize variables_
//_Verify if there are sequential data to send_
//_Re-intialize variables_
//_Send data_
//_Re-intialize variables_

151

F.5. Circuito de deteo de transies


O circuito detetor de transies um circuito que a cada transio do sinal de
entrada, ascendente ou descendente, reproduz na sada um impulso de curta durao.
O circuito baseado no atraso das portas lgicas e pode ser implementado como
ilustrado na Figura F.4.

Figura F.4 Circuito detetor de transies.

O circuito possui dos sub-detetores incorporados, que se encontram ligados


porta OR: entrada superior est ligado o circuito de deteo transies ascendentes
e na entrada inferior o circuito de deteo de transies descendentes. A utilizao de
um flip-flop na sada opcional e destina-se a aumentar a durao do impulso de sada,
que tipicamente abaixo de uma dezena de nano-segundos [80], [81], para situaes
onde a largura do impulso necessite de ser aumentada para permitir a deteo. Nestas
situaes deve ser utilizada a entrada reset do flip-flop para determinar a largura do
impulso.
A deteo da transio ascendente baseada no atraso do sinal sada da porta
NOT comparativamente ao sinal de entrada, originando na entrada da porta AND um
intervalo de tempo onde ambos os sinais se encontram no nvel alto, logo aps as
transies ascendentes, provocando desta forma um curto impulso aps as transies
ascendentes do sinal de entrada, como apresentado na Figura F.5.

Figura F.5 Diagrama temporal ilustrativo do funcionamento da deteo de uma transio


ascendente.

A deteo da transio descendente baseada no mesmo princpio descrito na


deteo da transio ascendente, com a variante que nesta situao necessrio
atrasar o sinal de entrada atravs de duas portas NOT de tal forma que o sinal original
atrasado (pela via de dupla inverso) se encontra em atraso comparativamente ao sinal
invertido, permitindo assim a existncia de um curto intervalo de tempo onde existem
dois sinais no nvel alto na entrada da porta AND, originando um curto impulso aps as
transies descendentes. Note-se que devido ao maior atraso imputado ao circuito, o
impulso na sada do circuito surge com um maior atraso aps a ocorrncia da transio

152

comparativamente transio ascendentes, no entanto um atraso na ordem dos nanosegundos. Na Figura F.6 encontra-se ilustrado um diagrama temporal relativo deteo
de uma transio descendente.

Figura F.6 Diagrama temporal ilustrativo do funcionamento da deteo de uma transio


ascendente.

A colocao de uma porta OR na sada que recebe nas entradas os sinais de


deteo das transies ascendentes e descendentes ir permitir obter um sinal na sada
que indique a ocorrncia de qualquer transio, atravs de um impulso como ilustrado
na Figura F.7.

Figura F.7 Deteo de todas as transies.

153

G. Esquema de montagem
A montagem do prottipo para verificao experimental do sistema proposto
encontra-se apresentada na Figura G.1.

Figura G.1 Montagem do prottipo experimental do sistema de replicao de circuitos


integrados.

154

H. Resultados experimentais obtidos para


circuitos combinatrios
H.1. Anlise do impacto do nmero de amostras recolhidas
Para analisar o impacto do nmero de amostras na taxa de sucesso foram
registadas as taxas de sucesso para diferentes situaes, atravs da variao da
relao entre amostras recolhidas e combinaes de entrada possveis. Para cada
situao foram realizados trs testes e selecionada a mediana das taxas de sucesso
estimadas pelo sistema. Os resultados encontram-se apresentados na Tabela H.1.
Tabela H.1 Medies realizadas com variao do nmero de amostras e combinaes de
entrada ( e representam os nmeros de amostras recolhidas e combinaes de entrada,
respetivamente).

/
1
1,25
1,5
1,75
2
2,25
2,5
2,75
3
3,25
3,5
3,75
4
4,5
5
6

Taxa de sucesso (%)


8 Entradas
6 Entradas
4 Entradas
( = )
( = )
( = )
63
57
43
1
1
1
73
73
50
1
1
1
77
76
81
1
1
1
81
87
81
1
1
1
88
85
81
1
1
1
90
85
87
1
1
1
91
94
93
1
1
1
92
92
87
1
1
1
95
95
93
1
1
1
97
98
100
1
1
1
94
98
100
1
1
1
94
95
100
1
1
1
99
98
100
1
1
1
98
100
100
1
1
1
100
100
100
1
1
1
100
100
100
1
1
1

Com base nos valores da Tabela H.1, com recurso a software ISE Design foi
possvel obter funo com melhor aproximao aos pontos registados (regresso
logstica), tendo sido obtida a expresso
98,7
, = 8
1 + 1,9 1,27
99
, = 6
1 + 3,7 1,72
98,9
, = 4
{1 + 10,49 2,13
onde representa o nmero de entradas do circuito.

155

(H.1)

H.2. Esquemas lgicos obtidos pela sintetizao do cdigo


VHDL gerado pelo sistema de replicao
Nas Figuras H.1, H.2 e H.3 encontram-se apresentadas os esquemas lgicos
obtidos nos testes aos circuitos combinatrios referidos na seo 5.2.2 deste
documento, para confirmao do comportamento. Aps a sintetizao, o software
utilizado apresenta o resultado agrupado por LUTs (Look Up Tables), que por sua vez
contm as funes lgicas que descrevem o circuito sintetizado.

Figura H.1 Esquema lgico obtido aps sintetizao das rplicas (testes: 74LS08 (#1),
74HCT32 (#2) e 74LS86 (#3)).

156

Figura H.2 Esquema lgico obtido aps sintetizao da rplica (Descodificador: 74HC139
(teste #4)).

157

Figura H.3 Esquema lgico obtido aps sintetizao da rplica (Conversor de BCD para 7
segmentos (teste: #5)).

158

H.3. Simulaes efetuadas s rplicas obtidas


Nas Figuras H.4, H.5, H.6, H.7 e H.8 encontram-se apresentadas as simulaes
realizadas s rplicas obtidas nos testes aos circuitos combinatrios referidos na seo
5.2.2 deste documento, para confirmao do comportamento.

Figura H.4 Simulao obtida para a rplica do circuito 74LS08 [62]: quatro portas lgicas do
tipo AND (teste #1).

Figura H.5 Simulao obtida para a rplica do circuito 74HCT32 [63]: quatro portas lgicas
do tipo OR (teste #2).

Figura H.6 Simulao obtida para a rplica do circuito 74LS86 [64]: quatro portas lgicas do
tipo XOR (teste #3).

159

Figura H.7 Simulao obtida para a rplica do circuito 74HC139 [65]: descodificador 2:4
duplo (teste #4).

Figura H.8 Simulao obtida para a rplica do circuito 74LS48 [66]: descodificador de BCD
para sete segmentos (teste #5).

160

F.Resultados experimentais obtidos para


circuitos sequenciais
I.1. Impacto da ocorrncia de situao de reset
A ocorrncia ou no de uma situao de reset durante o perodo de observao,
afeta o cdigo VHDL gerado para a rplica. Os cdigos VHDL gerados para a rplica do
circuito integrado 74LS393 com ocorrncia e no ocorrncia de reset encontram-se
apresentados nas Listagens I.1 e I.2, respetivamente.
Listagem I.1 Cdigo VHDL gerado para rplica do circuito integrado 74LS393 (com ocorrncia
de reset durante a observao).
--Created by Circuit Replicator
--VHDL language replication file
--Author: Rodolfo Rodrigues
--Created on Mon Sep 15 14:59:08 2014
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity Replication2014_09_15 is
port(
CLK:
in
RST_D_A :
in
pin3:
out
pin4:
out
pin5:
out
pin6:
out
pin7:
inout
pin8:
inout
pin9:
inout
pin10:
inout
pin11:
inout
pin12:
inout
pin13:
inout
pin14:
inout
);
end entity;

STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC

--Clock signal
--Reset: direct logic, assynchronus
--Digital port
--Digital port
--Digital port
--Digital port
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: VCC
--No connection needed: VCC
--No connection needed: VCC

architecture rtl of Replication2014_09_15 is


--Structure with states
type reply_states is (
REPLY_STATE_0,
REPLY_STATE_1,
REPLY_STATE_2,
REPLY_STATE_3,
REPLY_STATE_4,
REPLY_STATE_5,
REPLY_STATE_6,
REPLY_STATE_7,

161

);

REPLY_STATE_8,
REPLY_STATE_9,
REPLY_STATE_10,
REPLY_STATE_11,
REPLY_STATE_12,
REPLY_STATE_13,
REPLY_STATE_14,
REPLY_STATE_15

shared variable curr_reply_state: reply_states;


shared variable next_reply_state: reply_states;
signal reset: STD_LOGIC;
begin

-- synchronus reset

process (CLK, RST_D_A) is


--process to apply reset
begin
if(RST_D_A ='1') then
reset <= '1';
else
reset <='0';
end if;
end process;
process (CLK, reset) is
--this process select next state
begin
if (reset = '1') then
curr_reply_state := REPLY_STATE_0;
elsif(falling_edge(CLK)) then
curr_reply_state := next_reply_state;
end if;
end process;

process (CLK) is
begin
case curr_reply_state is
when REPLY_STATE_0 => pin3 <='0';pin4 <='0';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_0;
when REPLY_STATE_1 => pin3 <='1';pin4 <='0';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_2;
when REPLY_STATE_2 => pin3 <='0';pin4 <='1';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_3;
when REPLY_STATE_3 => pin3 <='1';pin4 <='1';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_4;
when REPLY_STATE_4 => pin3 <='0';pin4 <='0';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_5;
when REPLY_STATE_5 => pin3 <='1';pin4 <='0';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_6;
when REPLY_STATE_6 => pin3 <='0';pin4 <='1';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_7;
when REPLY_STATE_7 => pin3 <='1';pin4 <='1';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_8;
when REPLY_STATE_8 => pin3 <='0';pin4 <='0';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_9;
when REPLY_STATE_9 => pin3 <='1';pin4 <='0';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_10;
when REPLY_STATE_10 => pin3 <='0';pin4 <='1';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_11;
when REPLY_STATE_11 => pin3 <='1';pin4 <='1';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_12;
when REPLY_STATE_12 => pin3 <='0';pin4 <='0';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_13;
when REPLY_STATE_13 => pin3 <='1';pin4 <='0';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_14;
when REPLY_STATE_14 => pin3 <='0';pin4 <='1';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_15;
when REPLY_STATE_15 => pin3 <='1';pin4 <='1';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_0;
when others => next_reply_state := REPLY_STATE_0;
end case;
end process;
end rtl;

162

Listagem I.2 Cdigo VHDL gerado para rplica do circuito integrado 74LS393 (sem ocorrncia
de reset durante a observao).
--Created by Circuit Replicator
--VHDL language replication file
--Author: Rodolfo Rodrigues
--Created on Sat Sep 15 17:49:24 2014
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity counterNoRST is
port(
CLK:
pin2:
pin3:
pin4:
pin5:
pin6:
pin7:
pin8:
pin9:
pin10:
pin11:
pin12:
pin13:
pin14:
);
end entity;

in
inout
out
out
out
out
inout
inout
inout
inout
inout
inout
inout
inout

STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC

--Clock signal
--No connection needed: GND
--Digital port
--Digital port
--Digital port
--Digital port
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: VCC
--No connection needed: VCC
--No connection needed: VCC

architecture rtl of counterNoRST is


--Structure with states
type reply_states is (
REPLY_STATE_0,
REPLY_STATE_1,
REPLY_STATE_2,
REPLY_STATE_3,
REPLY_STATE_4,
REPLY_STATE_5,
REPLY_STATE_6,
REPLY_STATE_7,
REPLY_STATE_8,
REPLY_STATE_9,
REPLY_STATE_10,
REPLY_STATE_11,
REPLY_STATE_12,
REPLY_STATE_13,
REPLY_STATE_14,
REPLY_STATE_15,
REPLY_STATE_16
);
shared variable curr_reply_state: reply_states:=REPLY_STATE_1;
shared variable next_reply_state: reply_states;
signal inputs : STD_LOGIC;
signal reset : STD_LOGIC :='0';
begin

163

process (CLK) is
--this process select next state
begin
if (reset = '1') then
curr_reply_state:= REPLY_STATE_0;
elsif (falling_edge(CLK)) then
curr_reply_state := next_reply_state;
end if;
end process;
process (CLK) is
begin
case curr_reply_state is
when REPLY_STATE_0 => next_reply_state:=curr_reply_state;
when REPLY_STATE_1 => pin3 <='0'; pin4 <='0'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_2;
when REPLY_STATE_2 => pin3 <='1'; pin4 <='0'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_3;
when REPLY_STATE_3 => pin3 <='0'; pin4 <='1'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_4;
when REPLY_STATE_4 => pin3 <='1'; pin4 <='1'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_5;
when REPLY_STATE_5 => pin3 <='0'; pin4 <='0'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_6;
when REPLY_STATE_6 => pin3 <='1'; pin4 <='0'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_7;
when REPLY_STATE_7 => pin3 <='0'; pin4 <='1'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_8;
when REPLY_STATE_8 => pin3 <='1'; pin4 <='1'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_9;
when REPLY_STATE_9 => pin3 <='0'; pin4 <='0'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_10;
when REPLY_STATE_10 => pin3 <='1'; pin4 <='0'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_11;
when REPLY_STATE_11 => pin3 <='0'; pin4 <='1'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_12;
when REPLY_STATE_12 => pin3 <='1'; pin4 <='1'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_13;
when REPLY_STATE_13 => pin3 <='0'; pin4 <='0'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_14;
when REPLY_STATE_14 => pin3 <='1'; pin4 <='0'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_15;
when REPLY_STATE_15 => pin3 <='0'; pin4 <='1'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_16;
when REPLY_STATE_16 => pin3 <='1'; pin4 <='1'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_1;
when others => next_reply_state := REPLY_STATE_1;
end case;
end process;
end rtl;

O diagrama temporal da simulao realizada na situao de no ocorrncia de


reset apresentado na Figura I.1, permite verificar a existncia de um estado inicial.

Figura I.1 Diagrama temporal da simulao temporal realizada rplica do circuito integrado
74LS393 sem ocorrncia de reset.

164

I.2. Esquema lgico das rplicas obtidas


Como referido na seco 5.3.3.4 deste documento, no existe replicao
estrutural das rplicas, quando comparados os esquemas lgicos obtidos com os
esquemas lgicos definidos nas folhas de caratersticas, como pode ser atestado nas
Figuras I.2, I.3 e I4.

Figura I.2 Esquema lgico obtido para a rplica do circuito integrado 74LS393 (contador)
com ocorrncia de reset durante a observao.

165

Figura I.3 Esquema lgico obtido para a rplica do circuito integrado 74HCT174 (flip-flop tipo
D, com montagem da Figura 5.8 b)) com ocorrncia de reset durante a observao.

166

Figura F.4 Esquema lgico obtido para a rplica do circuito integrado 74LS76 (flip-flop tipo
JK, com montagem da Figura 5.8 c)) com ocorrncia de reset durante a observao.

167

J. Artigo Cientfico aceite para publicao na


11th International Conference Applied
Computing
REVERSE ENGINEERING OF DIGITAL INTEGRATED
CIRCUITS BASED ON BEHAVIORAL ALGORITHMS
Rodolfo Rodrigues
CCCEE
University of Madeira
Funchal, Portugal
e-mail: a2051509@uma.pt

Dionsio Barros
CCCEE
University of Madeira
Funchal, Portugal
e-mail: dbarros@uma.pt

Elias Rodrigues
CCCEE
University of Madeira
Funchal, Portugal
e-mail: elias@uma.pt

ABSTRACT
This paper proposes a novel system to extract the behavior from digital integrated circuits (ICs), combinational and
sequential, by observing its normal operation. An acquisition data system controlled by a computer send measurements
of voltage values on the pins of the IC, that is subsequently analyzed on the computer by several algorithms to obtain
its behavioral. When an input-output correspondence is found a combinatorial function is made, otherwise heuristically
methods are applied to achieve a sequential circuit approach. Extracted behavior is automatically converted into VHDL
language description, to synthetize the extracted schematic. Thus, the replica obtained by the system could be
structurally improved, assuming the same behavior, so an equivalent circuit has been generated. Due to abstraction
level, provided by behavioral description, the obtained replica has a lower dependence of hardware compared to
structural approaches.
KEYWORDS
Reverse engineering, integrated circuits replication, non-invasive techniques, input-output correspondence, heuristic
approach

1. INTRODUCTION
Nowadays, electronic circuits dependence is enormous and ICs are present into a large amount of devices,
so the maintenance of electronic circuits is so important as its development. The maintenance of electronic
circuits, which contains ICs, have two problems: (1) older circuits could have obsolete ICs which are no
longer produced and technical information may be not available and (2) detect ICs with anomalies could
be difficult with visual analysis because it appears perfect, so when a circuit is working badly, behavioral
reverse engineering could be applied to all ICs contained on circuit to find the origin of the malfunctioning.
Definitely, behavioral reverse engineering is a potential solution for circuits recovering, even with few
information.

168

In the recent years, reverse engineering has gained popularity in activities such as performance and security
benchmarking, control quality certifications and support patent licensing (Torrance & James 2011).
However, many techniques of reverse engineering still semi-manual (Raja 2008) focused on logical
schematic extraction, from a disassembled chip and using image analysis algorithms (Quijada et al. 2014).
This kind of processes are invasive and usually after reverse engineering analysis, the IC is no longer
useable. The developing of non-invasive techniques of reverse engineering is currently a research area
(Matlin et al. 2014). The increasingly complexity of microchips using a greater number of layers and logic
gates makes this process unaffordable when using traditional methods that rely on human inspection and
analysis (Quijada et al. 2014). Despite modern computers have greater processing capacity than a human
being, fully algorithmic reverse engineering is a relatively new field of research (Subramanyan et al. 2014).
Actually, mostly of reverse engineering techniques based on algorithms uses libraries with components
information, and reverse engineering is made by matching the circuit under analysis against libraries
component to find any correspondence (structural or functional) (Subramanyan et al. 2014). Many
algorithms try to accomplish an approach to typical circuits, as counters, shift registers, and others
(Subramanyan et al. 2014). Our purpose is develop a system capable of replicate digital integrated circuits
by learning its behavior, using non-invasive, automatic and fully algorithmic techniques, without the
support of any library. The used approach tries to create a generic learning method independently if circuits
under test has a typical behavior or not. Usual applications of reverse engineering aim to discover the exact
content of IC (mainly security and control applications), but the proposed system is aimed to create an
equivalent replica, independently of structural similarity between original circuit and the obtained replica.

2. METHODOLGY
2.1 Developed system
The proposed system consists of a set of algorithms (hosted in a computer) and an acquisition circuit
measurement (controlled by computer) capable of performing measurement of voltages on the pins of the
IC and send the collected information to the computer. After the analysis processes the extracted behavior
is described into a VHDL file, into a synthesizable structure as shown into Figure 1.

Figure 1. Illustrative diagram of proposed system.

In this paper, we will focus algorithms of behavior extraction. Generically, the analysis made by the
algorithms consists into three steps: find constant signals and discard them, input-output correspondence
analysis (combinational approach) and heuristic approach is applied to generate a customized state machine,
which describes circuit behavior (when combinational approach failed). This sequence of procedures could
be diagrammed by flowchart of Figure 2.

Figure 2. Flowchart of general analysis.

Sub-algorithms, such as communication with data acquisition system, are used to provide all data required
by the main algorithms.

169

2.2 ALGORITHMS
2.2.1 Detection of constant signals
Constant signals have no influence in IC behavior, or by others words, the influence is always the same
during circuit normal operation and consequently could be discarded. This analysis allow us to find pins
intended to supply the IC (designated as VCC and GND) and eventually other constant signals, whose
discarding will simplify analysis. The measurements required by this algorithm are differential
measurements between each combination of pins, in analog format. For each combination of pins, the
differential voltage average can be obtained using the expression

(1)

=1

where and means voltage mean value and number of samples, respectively. Assuming only digital ICs
are being analyzed, differential voltage average should be near to zero or VCC for two constant signals and
VCC/2 when, at least, one of the signals is not constant. Two pins are classified as constants when all
samples measured between those pins are included in range [ ; + ] , where represents the
maximum tolerance allowed. This step provides reference pin (GND) for the next measurements.

2.2.2 Input-output correspondence and combinatorial approach


This step requires measurements (binary format) of all non-constant pins related to the same instant,
with random interval between samples to avoid wrong analysis of periodic signals. Input-output
correspondence analysis consists into check if for each input combination a single output combination is
observed (repeated combinations are discarded). When this condition is verified a combinatorial approach
is possible, otherwise, heuristic methods are needed. Combinational behavior is converted to VHDL
language using case statement where all input combinations observed and respective outputs combinations
are listed inside case, using when statement. Using proper software (ISE Design Suite for example) VHDL
code could be synthetized and an equivalent schematic (replica) will be generated. The percentage of
extracted knowledge of IC (success rate) under analysis is estimated by algorithm according the expression
(%) = 100 /2

(2)

where , and means the success rate, number of input combinations observed and number of input pins,
respectively.

2.2.3 Heuristic approach method to generate a customized state machine


The approximation of the behavior of the circuit into a customized finite state machine is based on analysis
of the current and previous inputs/outputs, and is used when a sequential circuit is under analysis. Before
heuristic methods execution, sub-algorithms to detect clock and reset signal are applied, due to the
importance of those signals into analyses. Clock signal detection is based on detection of periodical signal
with higher frequency and reset is detected when an input has always the same influence on output
combination. Considering that the system only has access to the input/output combinations, the main
problem of a sequential approach is guess the internal state of the IC. The purpose of heuristic methods
is finding a good solution in a reasonable computational time, even if it is not the optimal solution
(Cordenonsi 2008). The proposed approach assign a new state when an output combination is found by first
time. Optimal state machines have the minimum number of possible states, then when a repeated output
combination is detected, a transition to a previous state (candidate state) in order to get the best approach.
However, a compatibility verification is needed to ensure that transition is compatible to previous
occurrences. Compatibility verification consists into check transitions after previous occurrences of the
candidate state and do not find different transitions to the same states and input combination. The parameter
represents the depth of analysis, and is set by user. A successful example of a transition to a previous
state is shown in Figure 3.

170

Figure 3. Successful transition to a previous state ( = ).

When the transition to a state previously detected causes two different transitions for the same
combination of state and input transitions a mismatch is found: Incorrect transition is reversed and a new
attempt is made to perform a new transition to another state with the same output, already identified. If all
previous states with the same output combinations are incompatible, a new state is generated. An
unsuccessful example of a transition to a previous state is shown in Figure 4.

Figure 4. Unsuccessful transition to a previous state ( = ).

From Figure 4 it appears that the attempt to make the transition from state C to state A is not correct because
in the next transition there are two different transitions (01 and 10) to the same input combination (1 ).
Therefore, as there are no other states with the same output, a new state is created (state D). The accuracy
of the approximation rises with the increasing depth analysis. The implementation of the algorithm is
summarized in the flowchart of Figure 5.

Figure 5. Flowchart of the heuristic method to generate a customized finite state machine.

3. CONCLUSION
This paper proposed a novel system to extract the behavior from digital ICs(combinational and sequential),
using input-output correspondence and heuristic methods to achieve combinational and sequential circuits
replica, after observing circuit during its operation. The main advantage of the proposed system is the level
of abstraction provided by the VHDL code automatically generated, allowing the simulation and synthesis
of the replica. Recovery circuits and possible technological upgrades (when applied to old circuits) are
possible applications to the proposed system. A compatible data acquisition system was developed and first
results showed the replication of some circuits, with success rates between 55% and 100% depending on
the number of samples used and the type of circuit.

REFERENCES
Cordenonsi, A.Z., 2008. Ambientes, objetos e dialogicidade: uma estratgia de ensino superior em heursticas e
metaheursticas. Universidade Federal do Rio Grande do Sul.
Matlin, E., Agrawal, M. & Stoker, D., 2014. Non-Invasive Recognition of Poorly Resolved Integrated Circuit
Elements. IEEE Transactions on Information Forensics and Security, 9(3), pp.354363.
Quijada, R. et al., 2014. The Use of Digital Image Processing for IC Reverse Engineering. In 11th International
Multi-Conference on Systems, Signals & Devices (SSD). Barcelona, Spain, pp. 14.

171

Raja, V., 2008. Reverse engineering: an industrial perspective First Edit. V. Raja & K. J. Fernandes, eds., London:
Springer.
Subramanyan, P. et al., 2014. Reverse Engineering Digital Circuits Using Structural and Functional Analyses. IEEE
Transactions on Emerging Topics in Computing, Vol. 2, No. 1, pp.6380.
Torrance, R. & James, D., 2011. The state-of-the-art in semiconductor reverse engineering. In 48th
ACM/EDAC/IEEE Design Automation Conference (DAC). San Diego, USA, pp. 333338.

172

Das könnte Ihnen auch gefallen