• Nenhum resultado encontrado

Multiprocessador em eletronica reconfiguravel para aplicações roboticas

N/A
N/A
Protected

Academic year: 2021

Share "Multiprocessador em eletronica reconfiguravel para aplicações roboticas"

Copied!
145
0
0

Texto

(1)

Universidade Estadual de Campinas

Faculdade de Engenharia El´etrica e de Computa¸c˜ao Departamento de Sistemas e Controle de Energia

Laborat´orio de Sistemas Modulares Rob´oticos

Eberval Oliveira Castro

Multiprocessador em Eletrˆ

onica Reconfigur´

avel

para Aplica¸c˜

oes Rob´

oticas

Campinas

2007

(2)

Eberval Oliveira Castro

Multiprocessador em Eletrˆ

onica Reconfigur´

avel

para Aplica¸c˜

oes Rob´

oticas

Disserta¸c˜ao apresentada `a Comiss˜ao de P´os-gradua¸c˜ao da Faculdade de Engenharia El´etrica e de Computa¸c˜ao da Universidade Estadual de Campinas como parte dos requisitos para obten-¸c˜ao do t´ıtulo de Mestre em Engenharia El´etrica.

´

Area de concentra¸c˜ao: Automa¸c˜ao.

Orientador: Prof. Dr. Marconi Kolm Madrid

Campinas

2007

(3)

ii

FICHA CATALOGR ´AFICA ELABORADA PELA

BIBLIOTECA DA ´AREA DE ENGENHARIA E ARQUITETURA – BAE – UNICAMP

Castro, Eberval Oliveira

C279m Multiprocessador em eletrˆonica reconfigur´avel para aplica¸c˜oes rob´oticas / Eberval Oliveira Castro. –Campinas, SP: [s.n.], 2007.

Orientador: Marconi Kolm Madrid

Disserta¸c˜ao (Mestrado) – Universidade Estadual de Campinas, Faculdade de Engenharia El´etrica e de Computa¸c˜ao.

1. Rob´otica. 2. Processamento paralelo (Computadores). 3. Multiprocessadores. 4. Controle em tempo real. I. Madrid, Marconi Kolm. II. Universidade Estadual de Campinas. Faculdade de Engenharia El´etrica e de Computa¸c˜ao. III. T´ıtulo.

T´ıtulo em Inglˆes: Multiprocessor in reconfigurable electronics to robotical applications

Palavras-chave em Inglˆes: Robotics, Parallel processing, FPGA, Embedded multiprocessor, Real-time systems

´

Area de concentra¸c˜ao: Automa¸c˜ao

Titula¸c˜ao: Mestre em Engenharia El´etrica

Banca examinadora: Areolino de Almeida Neto, Jos´e Raimundo de Oliveira e Peter J¨urgen Tatsch

Data da defesa: 11/12/2007

(4)
(5)

v

(6)

Agradecimentos

A Deus, pela oportunidade de viver `

A minha fam´ılia, pelo incentivo e apoio

Ao meu orientador, Prof. Marconi K. Madrid, sou grato pela orienta¸c˜ao, paciˆencia e compa-nheirismo

Aos meus amigos ´Elio Almeida e sua fam´ılia, e Michel Zamboni e sua esposa Jane Madureira pelo ombro amigo nas horas dif´ıceis

Aos colegas de laborat´orio pelas enriquecedoras sugest˜oes

Aos companheiros de rep´ublica pela inesquec´ıvel amizade e incentivo A toda comunidade ADBar˜ao1 pelo suporte espiritual

A todos aqueles n˜ao citados anteriormente que, de alguma forma, contribu´ıram positivamente com este trabalho

Ao CNPq, pelo apoio financeiro.

1

(7)

ix

“Cada momento, cada segundo ´e de um valor infinito, pois ele ´e o representante de uma eterni-dade inteira”.

(8)

Resumo

A solu¸c˜ao de modelos dinˆamicos de robˆos em tempo real ´e um dos principais desafios da rob´otica. Este trabalho prop˜oe um multiprocessador de quatro n´ucleos fortemente acoplados, o SMM-4 (Sistema Multiprocessado Monol´ıtico), consistindo de uma arquitetura de proces-samento paralelo monol´ıtica sintetizada em FPGA para aplica¸c˜oes em controle de sistemas rob´oticos. Uma an´alise quantitativa e qualitativa ´e realizada em contraste a sistemas unipro-cessadores, evidenciando os ganhos obtidos atrav´es desta abordagem em FPGA. O SMM-4 foi desenvolvido no Laborat´orio de Sistemas Modulares Rob´oticos (LSMR/Unicamp) como uma das alternativas para o c´alculo das equa¸c˜oes dos modelos de robˆos em tempo real.

Palavras-chave: Rob´otica, Processamento Paralelo, FPGA, Multiprocessador Embu-tido, Sistemas de Tempo Real.

Abstract

The solution of robots’ dynamic models in real-time is one of major challenges of the robotics. This work presents a strongly coupled quad-core multiprocessor – the MMS-4 (Mo-nolithic Multiprocessor System) – consisting of a mo(Mo-nolithical parallel processing architecture synthesized on FPGA for applications on robotic control systems. A quantitative and quali-tative analysis is performed in contrast with uniprocessor systems for the purpose of evince the benefits obtained choosing this approach in FPGA. The MMS-4 was developed at Robotic Modular Systems Laboratory (LSMR/Unicamp) as an alternative to calculate the equations systems of robots’ models on real-time.

Keywords: Robotics, Parallel Processing, FPGA, Embedded Multiprocessor, Real-Time Systems.

(9)

xiii

Lista de Figuras

1.1 Desenvolvimento hist´orico das tecnologias envolvidas na rob´otica . . . 3

1.2 ASIMO na Consumer Electronics Show (CES) em Las Vegas . . . 4

1.3 N´umeros da ind´ustria estado-unidense de robˆos . . . 5

2.1 Tempos de ciclo de projeto . . . 10

2.2 PROM: arquitetura . . . 11

2.3 PLA: arquitetura . . . 12

2.4 PAL: arquitetura . . . 14

2.5 Arquitetura de um dispositivo GAL22v10 . . . 15

2.6 Macroc´elula de um dispositivo GAL22v10 . . . 16

2.7 CPLD: arquitetura . . . 17

2.8 FPGA: arquitetura t´ıpica . . . 20

3.1 Evolu¸c˜ao da computa¸c˜ao de alto desempenho . . . 30

3.2 Taxonomia de Duncan . . . 34

3.3 Topologias de rede de interconex˜ao . . . 37

3.4 Hipercubos . . . 38

4.1 Placa de desenvolvimento Altera DE2 . . . 50

4.2 Esquem´atico do SMM-4 no Quartus II . . . 52

4.3 SOPC Builder com a implementa¸c˜ao do SMM-4 . . . 53

4.4 Diagrama do SMM-4 . . . 54

4.5 Configura¸c˜ao dos tempos da SDRAM . . . 57

4.6 Relat´orio de processamento do Timing Analyser . . . 58

(10)

4.8 Fra¸c˜oes serial e paraleliz´avel do c´odigo da soma paralela de matrizes . . . 64

4.9 Tempos de execu¸c˜ao do algoritmo de soma de matrizes de diversos tamanhos e por diferentes n´umeros de processadores . . . 66

4.10 Tempos de execu¸c˜ao do algoritmo de produto de matrizes de diversos tamanhos e por diferentes n´umeros de processadores . . . 69

4.11 Aproxima¸c˜ao da fun¸c˜ao arco-tangente por raz˜ao de polinˆomios . . . 72

4.12 Tempos de execu¸c˜ao do algoritmo do arco-tangente em diferentes n´umeros de processadores . . . 74

A.1 Diagrama de blocos do Cyclone II EP2C20 . . . 94

A.2 Estrutura interna de um elemento l´ogico do Cyclone II . . . 95

A.3 Bloco de arranjo l´ogico . . . 97

A.4 Rede global de clock . . . 99

A.5 Bloco de controle de clock . . . 100

A.6 Malha de fase s´ıncrona . . . 101

A.7 Habilita¸c˜ao de clock de endere¸co . . . 104

A.8 Modos de mem´oria . . . 106

(11)

xv

Lista de Tabelas

2.1 Comparativo entre FPGAs de diferentes fabricantes . . . 24

3.1 Parˆametros topol´ogicos . . . 39

4.1 Tempos de FPGA e SDRAM . . . 58

4.2 Parˆametros passados ao compilador cruzado ELF GCC para Nios . . . 62

4.3 Fatores de speedup relativos observados para soma paralela de matrizes . . . . 67

4.4 Fatores de speedup relativos observados para produto paralelo de matrizes . . . 70

4.5 Coeficientes dos polinˆomios da aproxima¸c˜ao por express˜ao racional do arco-tangente . . . 72

4.6 . . . 75

A.1 Recursos dos elementos da fam´ılia Cyclone II . . . 93

A.2 Recursos de clock da fam´ılia Cyclone II . . . 99

A.3 Recursos de mem´oria na Fam´ılia Cyclone II . . . 103

(12)

Lista de Siglas

Sigla Descri¸c˜ao

A/D - Anal´ogico para Digital AMD - Advanced Micro Device

ANSI - American National Standards Institute API - Application Programming Interface ASIC - Application Specific Integrated Circuit ASIMO - Advanced Step in Innovative Mobility BFM - Bus Functional Model

BGA - Ball Grid Array

CAB - Configurable Analog Block CAM - Content-Addressable Memory CAS - Column Address Strobe

CCN - Completely Connected Network CFI - Commom Flash Interface CI - Circuito Integrado

CISC - Complex Instruction Set Computing CLB - Configurable Logic Block

CONLAN - CONsensus LANguage CRC - Cyclical Redundancy Check D/A - Digital para Anal´ogico DDR - Double Data Rate DDR2 - Double Data Rate 2

DIS - Draft International Standard DLL - Delay-Loked Loop

DPRAM - Dual-Port RAM DRAM - Dynamic RAM

DSP - Digital Signal Processor ECC - Error Correction Code

EDA - Electronic Design Automation

EEPROM - Electricaly Erasable and Programmable ROM ELF - Executable and Linking Format

FFT - Fast Fourier Transform (continua...)

(13)

xviii LISTA DE SIGLAS Sigla Descri¸c˜ao

FIFO - First-In First-Out

FIR - Finite Impulse Response

FPAA - Field Programmable Analog Array FPD - Field Programmable Device

FPGA - Field Programmable Gate Array FPLA - Field Programmable Logic Array GAL - Generic Array Logic

GCC - GNU C Compiler GCN - Global Clock Network GNU - GNU is Not Unix

HAL - Hardware Abstraction Layer HCPLD - High Capacity PLD

HDL - Hardware Description Language HSTL - High Speed Transmitter Logic I/O - Input/Output

IDE - Integrated Development Environment IEC - International Electrotechnical Commission IEEE - Institute of Electrical and Electronics Engineers IOE - Input/Output Element

IP - Intellectual Property IRQ - Interrupt Request

JTAG - Joint Test Action Group LAB - Logic Array Block LE - Logic Element

LED - Light-Emitting Diode LIFO - Last-In First-Out LM - Logic Module

LPM - Library of Parameterized Modules

LSMR - Laborat´orio de Sistemas Modulares Rob´oticos LUT - Look-Up Table

LVCMOS - Low-Voltage Complementary MOS LVDS - Low-Voltage Differential Signaling

LVPECL - Low-Voltage Positive Emitter Coupled Logic MAC - Media Access Control

MDAC - Multiplying type Digital-to-Analog Converter MIF - Memory Initialization File

MMI - Monolithic Memories Inc. MOS - Metal-Oxide-Semiconductor MPGA - Mask Programmable Gate Array MPLA - Mask Programmable Logic Array NRE - Non-Recurring Engineering OLMC - Output Logic MacroCell OTP - One-Time Programmable

(14)

Sigla Descri¸c˜ao

PC - Personal Computer

PCA - Programmable Capacitor Array PCI - Peripheral Component Interconnect PCI-X - PCI Extended

PFD - Phase-Frequency Detector PLA - Programmable Logic Array PLD - Programmable Logic Device PLL - Phase-Locked Loop

PROM - Programmable ROM PWM - Pulse Width Modulation QDRII - Quad Data Rate II RAM - Random Access Memory RIA - Robotic Industries Association RISC - Reduced Instruction Set Computing ROM - Read-Only Memory

RSDS - Reduced Swing Differential Signaling RTL - Register Transfer Level

SD - SecureDigital

SDRAM - Synchronous DRAM

SMM - Sistema Multiprocessado Monol´ıtico SO - Sistema Operacional

SoC - System-on-Chip

SOPC - System-On-a-Programmable-Chip SPI - Serial Peripheral Interface

SRAM - Static RAM

SSTL - Stub Series Terminated Logic

TSMC - Taiwan Semiconductor Manufacturing Company UART - (Universal Asynchronous Receiver/Transmitter) USB - Universal Serial Bus

VCO - Voltage-Controlled Oscillator

VHDL - VHSIC Hardware Description Language VHSIC - Very High Speed Integrated Circuit VLSI - Very Large Scale Integration

(15)

xxi

Lista de S´ımbolos

S´ımbolo Descri¸c˜ao

fIN - Freq¨uˆencia de entrada da malha de fase s´ıncrona

fREF - Freq¨uˆencia de referˆencia da malha de fase s´ıncrona

fV CO - Freq¨uˆencia de sa´ıda do oscilador controlado por tens˜ao

ck - Fator de divis˜ao do k-´ezimo contador p´os-escalador

fck - Freq¨uˆencia de sa´ıda do k-´ezimo contador p´os-escalador

t0 - Tempo inicial do contador de sa´ıda da malha de fase s´ıncrona

W - Tamanho do problema computacional

C(p) - Custo computacional em fun¸c˜ao do n´umero de processadores O(h(x)) - Cota superior assint´otica

g(v) - Grau de um n´o

∆ - Grau m´aximo da rede

σ(v1, v2) - Distˆancia entre os n´os v1 e v2 da rede

D - Diˆametro de rede

N - N´umero total de n´os da rede L - Custo topol´ogico

b - Fator de ramifica¸c˜ao do modelo topol´ogico em ´arvore p - N´umero de processadores de um sistema paralelo

T (p) - Tempo de execu¸c˜ao total da tarefa usando p processadores

Tm(p) - Tempo de execu¸c˜ao da fra¸c˜ao paralela da tarefa usando p processadores

Ts - Tempo de execu¸c˜ao da fra¸c˜ao serial da tarefa

γ - Fra¸c˜ao serial (n˜ao-paraleliz´avel) da tarefa S(p) - Fator de speedup

Tc - Tempo gasto em comunica¸c˜ao durante a execu¸c˜ao da tarefa

γi - i-´ezima fra¸c˜ao (paraleliz´avel ou n˜ao) da tarefa

si - Fator de speedup associado `a i-´ezima fra¸c˜ao da tarefa

SS(p) - Fator de scaled speedup em fun¸c˜ao do n´umero de processadores γe - Fra¸c˜ao serial da tarefa determinada experimentalmente

φ - Fator de multiprocessamento (MPF) ξ(p) - Eficiˆencia

R(p) - Redundˆancia (continua...)

(16)

S´ımbolo Descri¸c˜ao U(p) - Utiliza¸c˜ao

(17)

xxiii

Sum´

ario

Lista de Ilustra¸c˜oes xiii

Lista de Tabelas xv

Lista de Siglas xvii

Lista de S´ımbolos xxi

1 Introdu¸c˜ao 1

1.1 Vis˜ao Geral . . . 1

1.2 Objetivos . . . 6

1.3 Metodologia . . . 7

1.4 Estrutura do Trabalho . . . 7

2 Eletrˆonica Reconfigur´avel 9 2.1 Arranjo Anal´ogico Program´avel em Campo . . . 10

2.2 Dispositivo L´ogico Program´avel Simples . . . 11

2.2.1 A Mem´oria PROM . . . 11

2.2.2 Tecnologia PLA . . . 12

2.2.3 Tecnologia PAL . . . 13

2.2.4 Tecnologia GAL . . . 14

(18)

2.4 Arranjo de Portas Program´avel em Campo . . . 19

2.4.1 Surgimento do FPGA . . . 19

2.4.2 Arquitetura do FPGA . . . 20

2.4.3 Classifica¸c˜ao dos FPGAs . . . 21

2.4.3.1 Tecnologia de Programa¸c˜ao . . . 21 SRAM . . . 21 Antifus´ıvel . . . 21 Porta Flutuante . . . 22 2.4.3.2 Possibilidades de Configura¸c˜ao . . . 22 Program´aveis (OTPs) . . . 22 Reprogram´aveis . . . 23 2.4.3.3 Granularidade . . . 23 Granularidade Grossa . . . 23 Granularidade M´edia . . . 25 Granularidade Fina . . . 25

2.5 Linguagem de Descri¸c˜ao de Hardware . . . 25

2.5.1 N´ıveis de Abstra¸c˜ao . . . 25

2.5.1.1 N´ıvel de Portas . . . 26

2.5.1.2 N´ıvel de Transferˆencia de Registrador (RTL) . . . 26

2.5.1.3 N´ıvel Comportamental . . . 26

2.5.1.4 Modelo Funcional de Barramento (BFM) . . . 26

2.5.2 Desenvolvimento Hist´orico do VHDL . . . 27

3 Processamento Paralelo 29 3.1 Conceitos e Defini¸c˜oes . . . 30

3.2 An´alise Qualitativa: Classifica¸c˜oes . . . 31

(19)

SUM ´ARIO xxv

3.2.2 Taxonomia de Duncan . . . 32

3.2.3 Parˆametros Topol´ogicos . . . 35

Grau de um N´o . . . 35

Grau M´aximo de Rede . . . 35

Distˆancia . . . 35 Diˆametro de Rede . . . 35 Custo Topol´ogico . . . 35 Simetria . . . 35 Homogeneidade . . . 35 Regularidade . . . 35

3.2.4 Taxonomia de Redes de Interconex˜ao . . . 36

3.2.4.1 Topologias Est´aticas . . . 36 Troca Total . . . 36 Arranjo Linear . . . 36 Anel . . . 36 Estrela . . . 36 Arranjo Bidimensional . . . 37 ´ Arvore . . . 37 Hipercubo . . . 38 3.2.4.2 Topologias Dinˆamicas . . . 39 Barramento . . . 39 Comutador (Switch) . . . 39

3.3 An´alise Quantitativa: M´etricas . . . 39

3.3.1 Modelos Computacionais . . . 40

3.3.1.1 Modelo de Igual Dura¸c˜ao . . . 40

(20)

3.3.2 Fator de Speedup . . . 41

Fator de Speedup Relativo . . . 42

Fator de Speedup Real . . . 42

Fator de Speedup Absoluto . . . 42

3.3.3 M´etrica de Carga Fixa: Lei de Amdahl . . . 42

3.3.3.1 Lei de Amdhal Generalizada . . . 43

3.3.4 M´etrica de Tempo Fixo: Lei de Gustafson-Barsis . . . 43

3.3.5 M´etrica de Karp-Flatt . . . 44 3.3.6 Fator de Multiprocessamento (MPF) . . . 44 3.3.7 Eficiˆencia . . . 45 3.3.8 Redundˆancia . . . 45 3.3.9 Utiliza¸c˜ao . . . 46 3.3.10 Qualidade do Paralelismo . . . 46 3.3.11 M´etricas de Comunica¸c˜ao . . . 46

4 Descri¸c˜ao e An´alise do Projeto 49 4.1 Ambiente de Desenvolvimento . . . 50

4.1.1 Placa Altera™ DE2 . . . 50

4.2 Ferramentas de Software . . . 51

4.3 Arquitetura . . . 52

4.3.1 Unidades de Processamento . . . 56

4.3.2 Mem´oria . . . 57

4.3.3 Espa¸co de Endere¸camento . . . 60

4.4 Coordena¸c˜ao e Compartilhamento de Recursos . . . 61

4.4.1 Mutex . . . 61

4.4.2 Mailbox . . . 61

(21)

SUM ´ARIO xxvii

4.5.1 Opera¸c˜oes com Matrizes . . . 64

4.5.1.1 Soma de Matrizes . . . 64

4.5.1.2 Produto de Matrizes . . . 68

4.5.2 C´alculo do Arco-Tangente . . . 70

5 Resultados e Conclus˜oes 77 5.1 Resumo das Contribui¸c˜oes . . . 80

5.2 Sugest˜oes para Trabalhos Futuros . . . 80

Referˆencias 82 A Tecnologia Cyclone II 91 A.1 Vis˜ao Geral . . . 91

A.2 Arquitetura . . . 94

A.2.1 Elemento L´ogico . . . 94

A.2.1.1 Modos de Opera¸c˜ao . . . 96

Modo Normal . . . 96

Modo Aritm´etico . . . 96

A.2.2 Blocos de Arranjo L´ogico (LAB) . . . 97

A.2.2.1 Interconex˜oes do LAB . . . 97

A.2.2.2 Sinais de Controle do LAB . . . 98

A.2.3 Rede Global de Clock (GCN) . . . 98

A.2.3.1 Pinos de Clock Dedicados (CLK) . . . 100

A.2.3.2 Pinos de Clock de Prop´osito Duplo (DPCLK e CDPCLK) . . . 100

A.2.3.3 Blocos de Controle de Clock . . . 101

A.2.4 Malha de Fase S´ıncrona (PLL) . . . 101

A.2.5 Blocos de Mem´oria M4K . . . 103

(22)

A.2.5.2 Habilita¸c˜ao de Clock de Endere¸co . . . 105 A.2.5.3 Modos de Mem´oria . . . 105 A.3 Blocos Multiplicadores . . . 107 A.4 Particularidades do EP2C35 . . . 108

B C´odigo dos Programas 109

B.1 Soma Paralela de Matrizes . . . 109 B.2 Produto Paralelo de Matrizes . . . 115 B.3 C´alculo do Arco-Tangente . . . 121 ´Indice por Autor . . . 127

(23)

1

Cap´ıtulo 1

Introdu¸c˜

ao

1.1

Vis˜

ao Geral

Os grandes desafios no desenvolvimento de aplica¸c˜oes rob´oticas est˜ao nas limita¸c˜oes dos recur-sos computacionais (algoritmos e arquiteturas), recurrecur-sos de comunica¸c˜ao e sensores. Por ser este um campo de pesquisa multidisciplinar, est˜ao envolvidas diversas ´areas de conhecimento como Inteligˆencia Artificial, Computa¸c˜ao Paralela, F´ısica, Mecatrˆonica, dentre outras (KO-NOLIGE et al., 2005; RITTER et al., 2003; YAMANE et al., 2005; HIRAI et al., 2005; FEATHERSTONE; ORIN, 2000).

Uma das principais dificuldades encontradas pelos pesquisadores e desenvolvedores de so-lu¸c˜oes rob´oticas ´e o c´alculo dos modelos cinem´aticos e dinˆamicos em tempo real. O controle de sistemas rob´oticos geralmente exige uma grande carga computacional na solu¸c˜ao de seus modelos (INABA et al., 2000), em especial, o modelo dinˆamico que muitas vezes inviabiliza abordagens que fa¸cam uso de processamento seq¨uencial (FEATHERSTONE; ORIN, 2000). Desafio ainda maior ´e o c´alculo da dinˆamica inversa que ´e muito custoso tanto do ponto de vista anal´ıtico quanto computacional para robˆos com muitos graus de liberdade (ZHAO et al., 2005). No intuito de contornar tais dificuldades, diversas t´ecnicas tˆem sido aplicadas como o uso de inteligˆencia artificial e outros m´etodos heur´ısticos, mas a maior parte s˜ao solu¸c˜oes particulares e localizadas. Pesquisas em torno de solu¸c˜oes mais gerais tem sido rea-lizadas no LSMR na Faculdade de Engenharia El´etrica da Unicamp (MADRID, 1994; NICO-LATO, 2007; NOGUEIRA, 2001; JUNGBECK, 2001; DIAS, 1991; SILVEIRA-FILHO, 2002; GUARDIA-FILHO, 2005; GUARDIA-FILHO; NICOLATO; MADRID, 2004), que aponta-vam para a necessidade de solu¸c˜oes mais gerais e serviram de incentivo para que este trabalho fosse realizado.

(24)

O avan¸co das tecnologias de integra¸c˜ao de circuitos – VLSI – traz sistemas digitais cada vez mais complexos e velozes, tornando fact´ıvel a execu¸c˜ao de tarefas que h´a alguns anos atr´as n˜ao sairiam da prancheta dos projetistas de controle de robˆos (HONDA, 2007; GOCKLEY; SIMMONS; FORLIZZI, 2006). Pesquisas tˆem sido desenvolvidas no sentido de transpor tais barreiras utilizando multiprocessamento em FPGA (Field Programmable Gate Array -Arranjo de Portas Program´avel em Campo) (SUBRAMAINAN, 2003; BENINI; MICHELI, 2002). No Brasil, grupos de pesquisa tˆem apresentado arquiteturas paralelas utilizando ele-trˆonica reconfigur´avel (SILVA et al., 2004; ARAG ˜AO; ALMEIDA-JR; MARQUES, 2004). Propomos um sistema paralelo no qual seja poss´ıvel a implementa¸c˜ao do controle digital multin´ıvel aplicado `a rob´otica, balanceando o custo e a viabilidade tecnol´ogica de forma a atender necessidades tanto da ind´ustria quanto dos ambientes de pesquisa. O tema central deste trabalho ´e o desenvolvimento e an´alise desta arquitetura paralela sobre uma plataforma FPGA.

A figura 1.1 apresenta o desenvolvimento hist´orico dos sistemas mecˆanicos, el´etricos e eletrˆonicos, tecnologias que convergiram para o surgimento dos sistemas mecatrˆonicos. ´E importante notar que o controle digital s´o se tornou vi´avel em meados da d´ecada de 70 do s´eculo XX, muito embora a computa¸c˜ao digital j´a fosse uma realidade desde o final da segunda guerra mundial, durante a qual esta tecnologia teve sua expans˜ao principal incentivada pelo governo estado-unidense. O custo de fabrica¸c˜ao e manuten¸c˜ao dos sistemas digitais caiu drasticamente desde ent˜ao, levando os computadores digitais de custosos artefatos de guerra ao patamar de eletrodom´esticos. A rob´otica se beneficiou da universaliza¸c˜ao da inform´atica ao passo que permitiu a solu¸c˜ao, economicamente vi´avel e em tempo real, do c´alculo num´erico de equa¸c˜oes dinˆamicas.

No in´ıcio deste s´eculo podemos identificar sistemas rob´oticos not´aveis pela sua comple-xidade no que diz respeito ao modelo e `a computa¸c˜ao realizada em tempo real. O Honda ASIMO (Advanced Step in Innovative Mobility) (HONDA, 2007) ´e um bom exemplo. Man-tido pela empresa japonesa, o projeto desenvolve um human´oide com 34 graus de liberdade, capacidade para andar e correr, desviar-se de obst´aculos, al´em de habilidade para reconhecer faces, postura, gestos, sons e ambiente. A figura 1.2 apresenta uma foto deste robˆo japonˆes. Em particular, a complexidade envolvida na mobilidade de robˆos pode ser muito grande. Dentre os principais requisitos necess´arios para robˆos m´oveis podemos citar:

• Autonomia de teleopera¸c˜ao e controle; • Execu¸c˜ao de tarefas n˜ao repetitivas;

(25)

1.1. VIS ˜AO GERAL 3

Figura 1.1: Desenvolvimento hist´orico das tecnologias envolvidas na rob´otica (BISHOP, 2002).

(26)

Figura 1.2: ASIMO na Consumer Electronics Show (CES) em Las Vegas (HONDA, 2007). • Particularidades nos mecanismos de locomo¸c˜ao;

• Opera¸c˜ao em ambientes hostis (altos gradientes de temperatura, exposi¸c˜ao `a radia¸c˜ao, v´acuo, ilumina¸c˜ao vari´avel etc);

• Tolerˆancia a falhas (inclusive falhas do sistema e erros) e necessidade de recupera¸c˜ao devido a eventos n˜ao planejados.

O Instituto de Rob´otica da Universidade de Carnegie Mellon nos Estados Unidos mant´em projetos em diversas ´areas da rob´otica. Destaca-se um que visa desenvolver um robˆo com per-sonalidade (GOCKLEY; SIMMONS; FORLIZZI, 2006), capaz de interagir socialmente com seres humanos. Desafios como este tamb´em exigem uma grande carga computacional, pois demandam desde o processamento e s´ıntese da fala, at´e interpreta¸c˜ao de express˜oes corporais (inclusive faciais), tarefa esta que excede o simples processamento de imagens. Embora n˜ao seja nova a id´eia de autˆomatos com tais capacidades, o desenvolvimento tecnol´ogico ainda n˜ao nos permitiu chegar aos patamares de personagens citadas na fic¸c˜ao cient´ıfica da metade do s´eculo XIX (MELVILLE, 1856).

Arquiteturas paralelas espec´ıficas para aplica¸c˜oes rob´oticas tˆem sido desenvolvidas como ´e o caso da arquitetura de Nigam (NIGAM; LEE, 1985) que prop˜oe um controlador distri-bu´ıdo para robˆo PUMA. Uma outra proposta ´e o sistema desenvolvido por (ZHANG; PAUL,

(27)

1.1. VIS ˜AO GERAL 5

Figura 1.3: N´umeros da ind´ustria estado-unidense de robˆos (ROBOTICS. . . , 2007). 1991), que prop˜oe um m´etodo para a solu¸c˜ao da cinem´atica inversa implementado sobre uma arquitetura paralela. Pose citar ainda o Sistema H´ıbrido Multicontrolado (SHM-4) de-senvolvido por Ara´ujo para prop´ositos de controle industrial (ARA ´UJO, 1999) que utiliza topologia f´ısica hiperc´ubica, comunica¸c˜ao baseada em SPI (Serial Peripheral Interface - In-terface Perif´erica Serial) e unidades de processamento baseadas no microcontrolador HC11 da Motorola. Outro exemplo, o Responsive Processor, ´e um processador especializado para controle distribu´ıdo/paralelo (YAMASAKI, 2001) que integra um n´ucleo de processamento SPARC, interface de comunica¸c˜ao em tempo real (responsive link ), interface SDRAM, ge-rador de PWM (Pulse Width Modulation - Modula¸c˜ao por Largura de Pulso), conversores A/D e D/A al´em de diversos padr˜oes de E/S industriais (PCI, USB, MDAC etc.) em um ´

unico substrato. Embora tenham bons resultados, solu¸c˜oes que apresentam processadores fisicamente distantes tˆem problemas quando ´e necess´aria a troca de maiores quantidades de dados entre os processadores, principalmente devido `as limita¸c˜oes impostas por largura de banda e latˆencia de comunica¸c˜ao (EL-REWINI; ABD-EL-BARR, 2005). A integra¸c˜ao de multiprocessadores e perif´ericos atrav´es de redes em chip tem se mostrado uma boa solu¸c˜ao para estes problemas (WONG, 2004).

Para aplica¸c˜oes com escala anual de produ¸c˜ao superiores a 10 mil unidades, os ASICs (Application Specific Integrated Circuit - Circuito Integrado de Aplica¸c˜ao Espec´ıfica) possuem menor custo por unidade que os FPGAs. A figura 1.3 mostra as vendas (incluindo exporta-¸c˜oes) da ind´ustria estado-unidense de robˆos entre o primeiro trimestre de 2004 e o segundo trimestre do 20071. Os dados s˜ao da RIA (Robotic Industries Association - Associa¸c˜ao das

1

(28)

Ind´ustrias de Rob´otica) (ROBOTICS. . . , 2007).

Embora a ind´ustria mundial de robˆos tenha movimentado bilh˜oes de d´olares no ano passado, a escala de produ¸c˜ao n˜ao ´e t˜ao elevada pois o pre¸co m´edio de um robˆo, no mercado americano, ´e de 60 mil d´olares. A aplica¸c˜ao de FPGAs se justifica neste segmento do ponto de vista econˆomico uma vez que a escala de produ¸c˜ao anual, at´e o presente momento, n˜ao ultrapassa uma dezena de milhar de unidades (incluindo todos os modelos de robˆos) por fabricante. O uso de FPGAs traz ainda vantagens oriundas da prototipa¸c˜ao r´apida, na redu¸c˜ao do TTM (Time-To-Market - Tempo-at´e-o-Mercado) e baixo custo de NRE (Non-Recurring Engineering - Engenharia N˜ao-Recorrente) (HOHMANN, 2003).

Existem previs˜oes de crescimento exponencial da produ¸c˜ao de robˆos (impulsionado prin-cipalmente por aplica¸c˜oes dom´esticas) nos pr´oximos anos. Para escalas de produ¸c˜ao anual na ordem de dezenas ou centenas de milhares pode-se ainda lan¸car m˜ao de tecnologias como o ASIC estruturado que oferece portabilidade para projetos concebidos em FPGA (MOSHER; KIRK, 2007). A prototipa¸c˜ao e depura¸c˜ao podem ser feitas em FPGA e o projeto final ´e ent˜ao convertido para ASIC estruturado que possui, em rela¸c˜ao ao FPGA, menor custo por unidade em grande escala de produ¸c˜ao.

1.2

Objetivos

Tendo em vista o contexto apresentado, o objetivo geral deste trabalho ´e implementar um multiprocessador utilizando a tecnologia de FPGA com vista a aplica¸c˜oes rob´oticas. Os objetivos espec´ıficos s˜ao:

• Projetar e implementar uma arquitetura de processamento paralelo baseada em FPGA capaz de realizar algoritmos ´uteis em rob´otica em tempos da ordem de 10 ms;

• Avaliar a arquitetura desenvolvida sob os prismas da viabilidade t´ecnica e econˆomica;

• Comparar as abordagens de processamento serial e paralelo para aplica¸c˜oes rob´oticas, levantando os ganhos obtidos com a t´ecnica de processamento paralelo em detrimento da serial;

(29)

1.3. METODOLOGIA 7

1.3

Metodologia

A fim de alcan¸car tais objetivos tomamos como base a seguinte metodologia: • Buscar trabalhos j´a publicados nesta linha de pesquisa (revis˜ao bibliogr´afica);

• Aprofundar os conhecimentos e aprimorar as habilidades nas tecnologias de FPGA: recursos dispon´ıveis nos CIs dispon´ıveis e dom´ınio dos ambientes de desenvolvimento; • Estudar o processamento paralelo tanto do ponto de vista de hardware quanto de

soft-ware;

• Definir a topologia e o tipo de arquitetura a ser implementada; • Implementar o sistema paralelo em FPGA;

• Avaliar o desempenho da arquitetura;

• Implementar algoritmos utilizados em aplica¸c˜oes rob´oticas na forma paralela.

1.4

Estrutura do Trabalho

Este cap´ıtulo d´a uma vis˜ao geral do trabalho e sua contextualiza¸c˜ao tecno-mercadol´ogica. S˜ao apresentadas al´em das justificativas e motiva¸c˜ao, revis˜ao bibliogr´afica, objetivos gerais e espec´ıficos, metodologia e estrutura do trabalho.

No cap´ıtulo dois s˜ao descritas as tecnologias de eletrˆonica reconfigur´avel, sua classifica-¸c˜ao, os recentes avan¸cos atrav´es dos FPGAs, al´em da nova classe de dispositivos para projetos anal´ogicos conhecido como FPAA (Field Programmable Analog Array - Arranjo Anal´ogico Program´avel em Campo).

O cap´ıtulo trˆes d´a uma vis˜ao geral de processamento paralelo sob os pontos de vista de hardware e software, classifica¸c˜oes, m´etricas e para an´alise de sistemas.

No cap´ıtulo quatro ´e descrito o sistema paralelo desenvolvido, sua arquitetura e an´alise qualitativa e quantitativa. Testes de performance e comparativos atrav´es da implementa¸c˜ao de algoritmos utilizados em aplica¸c˜oes rob´oticas s˜ao apresentados.

O cap´ıtulo cinco discute os resultados obtidos, apresentando as conclus˜oes, resumo das contribui¸c˜oes e sugest˜oes para trabalhos futuros.

(30)

Foram inclu´ıdos dois apˆendices ao fim do trabalho com a finalidade de complementar, para o leitor interessado em maior profundidade, a informa¸c˜ao apresentada atrav´es de detalhes t´ecnicos do CI de FPGA utilizado no trabalho, no apˆendice A; al´em dos programas escritos em linguagem C utilizados nos testes, no apˆendice B.

(31)

9

Cap´ıtulo 2

Eletrˆ

onica Reconfigur´

avel

De forma geral, a eletrˆonica reconfigur´avel pode ser vista como uma tecnologia que com-bina a velocidade de opera¸c˜ao das solu¸c˜oes em hardware com a flexibilidade das solu¸c˜oes em software. Os dispositivos baseados em eletrˆonica reconfigur´avel s˜ao chamados de FPDs (Field-Programmable Devices - Dispositivos Program´aveis em Campo) (BROWN; ROSE, 1996). A palavra “field ” indica que a configura¸c˜ao do circuito pode ser feita pelo usu´ario final sem a necessidade da utiliza¸c˜ao dos recursos de ind´ustrias de fundi¸c˜ao de semiconduto-res (foundries). Os dispositivos baseados em eletrˆonica reconfigur´avel re´unem, em um ´unico chip, os componentes b´asicos de um sistema (digital ou anal´ogico) e uma forma de interco-nex˜ao program´avel entre eles. Isto possibilita projetar um sistema utilizando softwares de EDA (Electronic Design Automation - Automa¸c˜ao de Projeto Eletrˆonico) multin´ıvel. Estas plataformas de desenvolvimento implementam o projeto a partir da conex˜ao adequada dos elementos internos do dispositivo de eletrˆonica reconfigur´avel. Tal abordagem reduz drasti-camente os custo de NRE (Non-Recurring Engineering - Engenharia N˜ao-Recorrente) (HOH-MANN, 2003) para desenvolvimento de hardware atrav´es da redu¸c˜ao do tempo de ciclo do projeto (MUNDEN, 2005). A figura 2.1 mostra um comparativo entre os tempos do ciclo de projeto baseado em simula¸c˜ao e prototipa¸c˜ao.

A eletrˆonica reconfigur´avel possibilita a implementa¸c˜ao de sistemas bastante sofisticados e abriu espa¸co para o surgimento de arquiteturas de processamento que modificam sua es-trutura em tempo real, constituindo plataformas conhecidas como Sistemas de Computa¸c˜ao Reconfigur´avel (REISER et al., 1998).

Para a implementa¸c˜ao de circuitos anal´ogicos em eletrˆonica reconfigur´avel utiliza-se os FPAAs (Field Programmable Analog Arrays - Arranjos Anal´ogicos Program´aveis em Campo) enquanto que para aplica¸c˜oes digitais s˜ao utilizados os PLDs (Programmable Logic Device -Dispositivo L´ogico Program´avel). Os PLDs podem ser classificados quanto `a arquitetura

(32)

Figura 2.1: Tempos de ciclo de projeto (MUNDEN, 2005).

em trˆes tipos: SPLD (Simple Programmable Logic Device - Dispositivo L´ogico Program´avel Simples), CPLD (Complex Programmable Logic Device - Dispositivo L´ogico Program´avel Complexo) e FPGA (Field Programmable Gate Array - Arranjo de Portas Program´avel em Campo). Estes dois ´ultimos (CPLDs e FPGAs) podem ser referidos pelo acrˆonimo HCPLD (High Capacity PLD - PLD de Alta Capacidade) por possu´ırem alta capacidade l´ogica, ou seja, 600 portas l´ogicas ou mais. Existem ainda circuitos integrados h´ıbridos capazes de lidar tanto com sinais anal´ogicos quanto digitais1.

2.1

Arranjo Anal´

ogico Program´

avel em Campo

O FPAA ´e um CI para aplica¸c˜oes no dom´ınio anal´ogico. ´E um dispositivo program´avel que cont´em um grande n´umero de m´odulos chamados de CABs (Configurable Analog Blocks - Blocos Anal´ogicos Configur´aveis) e interconex˜oes program´aveis permitindo configura¸c˜oes arbitr´arias de circuitos anal´ogicos. Os recursos de cada CAB variam de fabricante para fabri-cante, mas tipicamente ´e composto por um amplificador operacional, arranjos de capacitores program´aveis (PCA - Programmable Capacitor Array) e arranjos de resistores program´aveis (necess´arios a circuitos de processamento cont´ınuo no tempo) ou chaves configur´aveis para circuitos chaveados. Os principais fabricantes de FPAAs da atualidade s˜ao Anadigm, Lat-tice Semiconductors, Sidsa, Zetex e Cypress. Uma das aplica¸c˜oes de FPAAs em rob´otica ´e a implementa¸c˜ao de hardware evolutivo com tolerˆancia a falhas (DERENSON; EST´EVES; LIPSON, 2005). No Laborat´orio de Sistemas Modulares Rob´oticos da Unicamp pesquisas tˆem sido desenvolvidas (FAZANARO, 2007) utilizando Arranjos Anal´ogicos Program´aveis

1

Teradyne Inc., Agilent Technologies e Cypress s˜ao os principais fabricantes destes dispositivos que s˜ao ainda pouco difundidos. Um dos modelos comerciais fabricado pela Cypress ´e PSoC™ (Programmable System-on-Chip - Sistema em Chip Program´avel).

(33)

2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 11

Figura 2.2: PROM: arquitetura. em Campo.

2.2

Dispositivo L´

ogico Program´

avel Simples

Os PLDs mais simples e com menor densidade s˜ao os SPLDs. Esta se¸c˜ao aborda estes dispositivos que serviram de base tecnol´ogica para produtos mais sofisticados como CPLDs e FPGAs.

2.2.1

A Mem´

oria PROM

O primeiro dispositivo program´avel utilizado para implementa¸c˜ao de fun¸c˜oes l´ogicas foi a PROM (Programmable Read-Only Memory - Mem´oria Program´avel S´o de Leitura), inven-tada pelo engenheiro de foguetes e cientista chinˆes, Wen Tsing Chow, em 1956 (CHOW; HENRICH, 1962). Uma PROM sai de f´abrica com todos os bits em n´ıvel l´ogico alto. A programa¸c˜ao ´e irrevers´ıvel e realiza-se por queima de fus´ıveis para os bits que se deseja alte-rar para n´ıvel l´ogico baixo. A PROM pode ser utilizada para implementar circuitos l´ogicos usando as linhas de endere¸cos como a entrada e as linhas de dados como a sa´ıda do circuito. A fun¸c˜ao l´ogica ´e mapeada como uma express˜ao na forma de soma-de-produtos. A figura 2.2 mostra a arquitetura de uma PROM de 3 entradas e 4 sa´ıdas. Neste caso, s˜ao necess´arios 32 fus´ıveis integrados no chip. Para uma PROM de n entradas e k sa´ıdas o n´umero necess´ario de fus´ıveis z(n, k) seria:

(34)

Figura 2.3: PLA: arquitetura.

z(n, k) = k.2n (2.1)

Da equa¸c˜ao ´e poss´ıvel notar que o n´umero de fus´ıveis integrados em uma PROM cresce exponencialmente com o aumento das linhas de entrada o que torna caro o emprego deste dispositivo para o mapeamento de fun¸c˜oes l´ogicas com muitas entradas. Al´em do mais, para fun¸c˜oes l´ogicas que podem ser expressas como soma de poucos mintermos a maior parte do circuito da PROM fica inutilizado, uma vez que ´e realizada decodifica¸c˜ao total na entrada (TOCCI; WIDMER, 2003). Pode-se notar que a PROM para implementa¸c˜ao de circuitos l´ogicos n˜ao ´e sempre eficiente, e portanto, ´e raramente utilizada com esta finali-dade (BROWN; ROSE, 1996).

2.2.2

Tecnologia PLA

Em 1972, a National Semiconductor Corporation introduziu no mercado o primeiro disposi-tivo criado especificamente para implementa¸c˜ao de circuitos l´ogicos – o PLA (Programmable Logic Array - Arranjo L´ogico Program´avel) DM7575. A figura 2.3 ilustra a arquitetura de um PLA de 3 entradas e 4 sa´ıdas. Ela possui dois n´ıveis de l´ogica, um plano AND (na entrada) e um plano OR (na sa´ıda), ambos program´aveis. A maior flexibilidade desta ar-quitetura resulta na possibilidade de mapear-se de forma mais eficiente fun¸c˜oes l´ogicas que possuam grande n´umero de entradas.

(35)

2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 13 esse motivo ´e freq¨uentemente chamado de MPLA (Mask Programmable Logic Array - Arranjo L´ogico Programado por M´ascara) e n˜ao pode ser considerado um FPD. Em 2 de junho de 1975 na EE Times, a Intersil anunciou um chip chamado IM5200. No mesmo ano, Ron Cline da Signetics Corporation desenvolveu o 825100. Estes dois dispositivos eram baseados na arquitetura do PLA, contudo podiam ser programados em campo, e portanto, passaram a ser referenciados pelo acrˆonimo FPLA (Field Programmable Logic Array - Arranjo L´ogico Programado em Campo) (PELLERIN; HOLLEY, 1991). Eles tinham finalidade inicial de substituir circuitos l´ogicos de acoplamento (glue logic) e por permitirem a programa¸c˜ao por parte do usu´ario, podem ser considerados FPDs.

Para um PLA com n entradas, k portas no plano AND e m sa´ıdas, temos que qualquer vari´avel de entrada (ou seu complemento) pode ser uma entrada de qualquer porta AND. Logo, qualquer porta no plano AND pode ser configurada para implementar um dos 3n

poss´ıveis termos-produtos2. A estrutura do PLA permite que qualquer termo-produto seja

conectado a qualquer porta OR. Esta caracter´ıstica ´e referida como “compartilhamento de termo-produto” (product-term-sharing) e permite que muitos elementos l´ogicos comuns sejam compartilhados entre os circuitos de sa´ıda (plano OR). Ao contr´ario da PROM, o n´umero de termos-produtos ´e limitado pelo plano AND, ou seja, uma fun¸c˜ao l´ogica poder´a ter no m´aximo k termos-produtos, o que torna a minimiza¸c˜ao das fun¸c˜oes uma etapa cr´ıtica na implementa¸c˜ao do projeto. Tal dispositivo permite implementar m fun¸c˜oes l´ogicas de n vari´aveis, cada fun¸c˜ao podendo ser composta pela soma de at´e k termos-produtos.

A opera¸c˜ao dos PLAs ´e, em geral, mais lenta que a das PROMs pelo fato e existirem dois arranjos program´aveis atrav´es dos quais os sinais devem se propagar. A presen¸ca de dois planos program´aveis tamb´em torna o custo de fabrica¸c˜ao de PLAs mais elevado que o das PROMs.

2.2.3

Tecnologia PAL

Em 1978, a empresa americana Monolithic Memories Inc. (MMI)3 lan¸cou no mercado o PAL

(Programmable Array Logic - L´ogica de Arranjo Program´avel). Este tipo de dispositivo da mesma forma que a PROM possui dois n´ıveis de portas l´ogicas: um plano AND e um plano OR. A diferen¸ca reside no fato de que, ao contr´ario do que acontece na PROM, as entradas das portas AND s˜ao program´aveis enquanto o plano OR possui conex˜oes fixas. Tal distin¸c˜ao

2

Isso se deve ao fato de existirem trˆes poss´ıveis configura¸c˜oes para a entrada no plano OR: verdadeiro, complemento ou desconectado.

3

A Monolithic Memories Inc. fundiu-se `a Advanced Micro Devices (AMD) em 1987 e tornou-se a divis˜ao de l´ogica program´avel em campo da AMD – Vantis Corporation. Em 1999, a AMD vendeu a unidade Vantis Corp. por 500 milh˜oes de d´olares para a Lattice Semiconductor (RISTELHUEBER, 1999).

(36)

Figura 2.4: PAL: arquitetura.

´e ilustrada na figura 2.4 na qual ´e apresentada a arquitetura e um PAL com trˆes entradas e quatro sa´ıdas. Dispositivos usando esta tecnologia podiam ser programados uma ´unica vez, da mesma forma que as PROMs.

Os PALs superaram as desvantagens de alto custo e baixa performance dos PLAs atrav´es da redu¸c˜ao a um ´unico plano program´avel. A perda de generalidade inserida pelas conex˜oes fixas do plano OR foram compensadas, em termos de mercado, com a produ¸c˜ao de variados tipos de PAL com diferentes quantidades de linhas de entrada, linhas de sa´ıda e diversos tamanhos de portas OR. As PALs possuem ainda flip-flops ligados `a sa´ıda das portas OR de forma que a implementa¸c˜ao de circuitos seq¨uenciais se torna poss´ıvel.

A maneira como o hardware digital era projetado foi profundamente afetada ap´os o lan¸camento dos PALs de forma que a estrutura deste dispositivo tornou-se a base para os PLDs em uso na atualidade (BROWN; ROSE, 1996).

2.2.4

Tecnologia GAL

Os FPDs ganharam um novo membro em 1985 com o lan¸camento do GAL (Generic Array Logic - L´ogica de Arranjo Gen´erico) pela Lattice Semiconductor, que foi uma evolu¸c˜ao direta da tecnologia PAL. Os dispositivos GAL utilizam uma matriz de EEPROM ao inv´es de fus´ıveis para selecionar as conex˜oes no plano AND. Desta forma, o diferencial pr´atico reside no fato de que o GAL pode ser apagado e reprogramado, ao contr´ario do PAL que pode ser programado uma ´unica vez.

(37)

2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 15

Figura 2.5: Arquitetura de um dispositivo GAL22v10 (LATTICE SEMICONDUCTOR CORP., 2006).

(38)

Figura 2.6: Macroc´elula de um dispositivo GAL22v10 (LATTICE SEMICONDUCTOR CORP., 2006).

A arquitetura GAL ´e constituida de um plano AND na entrada e o plano OR est´a em-butido num arranjo de OLMCs (Output Logic MacroCells - Macroc´elulas L´ogicas de Sa´ıda). A figura 2.5 mostra a estrutura interna do GAL22v10. ´E importante observar a presen¸ca de buffers de trˆes estados nas entradas e sa´ıdas do GAL, al´em de realimenta¸c˜ao das sa´ıdas para o plano AND tamb´em feito por interm´edio de buffers.

A figura 2.6 apresenta a macroc´elula de um GAL22v10 da Lattice. Dependendo da pro-grama¸c˜ao ela pode operar em modo registrado ou combinacional e a sa´ıda pode ser comple-mentada ou n˜ao. O GAL22v10 possui 10 macroc´elulas sendo que podem receber na entrada 8, 10, 14 ou 16 termos-produtos provenientes do plano AND.

2.3

Dispositivo L´

ogico Program´

avel Complexo

A ind´ustria pioneira na tecnologia de CPLDs foi a Altera atrav´es do lan¸camento do EPLC (Erasable Programmable Logic Device - Dispositivo L´ogico Apag´avel e Program´avel) em 1988. Tal dispositivo possibilita o projeto de sistemas relativamente maiores que os SPLDs, mas geralmente oferece menos recursos l´ogicos que os FPGAs. Os CPLDs possuem tipicamente 50 vezes a capacidade de um SPLD e sua arquitetura cl´assica mostra-se ineficiente para densidades maiores (GERICOTA, 2003).

A figura 2.7 mostra a arquitetura de um CPLD. Os dispositivos l´ogicos program´aveis complexos mais novos apresentam melhorias em rela¸c˜ao ao esquema cl´assico. A arquitetura do CPLD pode ser compreendida como muitos SPLDs conectados atrav´es de um arranjo

(39)

2.3. DISPOSITIVO L ´OGICO PROGRAM ´AVEL COMPLEXO 17

Figura 2.7: CPLD: arquitetura.

de conex˜oes program´aveis. Neste caso, estes SPLDs s˜ao ocasionalmente referenciados por “blocos l´ogicos”. Cada bloco l´ogico de um CPLD, por sua vez, inclui de oito a dezesseis macroc´elulas todas elas conectadas permanentemente entre si. A programa¸c˜ao do CPLD consiste, portanto, em conectar determinados blocos l´ogicos entre si para alcan¸car o resultado desejado.

A maior parte dos CPLDs cont´em macroc´elulas com uma fun¸c˜ao l´ogica combinacional na forma de soma-de-produtos al´em de um flip-flop opcional. Dependendo do CPLD, a fun¸c˜ao l´ogica pode suportar de quatro a dezesseis mintermos. Os CPLDs podem variar tamb´em quanto ao n´umero de portas l´ogicas e registradores de deslocamento. Isto possibilita que CPLDs com grande n´umero de portas l´ogicas possam ser usados no lugar de FPGAs. Uma outra especifica¸c˜ao do CPLD ´e o n´umero de mintermos que a macroc´elula ´e capaz de gerenciar.

Os CPLDs est˜ao dispon´ıveis em muitas op¸c˜oes de encapsulamento, fam´ılias l´ogicas, freq¨uˆencia m´axima de opera¸c˜ao, tens˜ao de alimenta¸c˜ao, corrente de opera¸c˜ao, corrente de standby e dissipa¸c˜ao de potˆencia. Podem ainda variar quanto a quantidade de mem´oria e os diferentes tipos de mem´oria suportados (AGRAWAL; CHENG, 2005), dentre os quais:

• ROM (Read-Only Memory - Mem´oria S´o de Leitura)

(40)

• DPRAM (Dual-Port RAM - RAM de Dupla Porta) (DALLAS, 2001)

• CAM (Content-Addressable Memory - Mem´oria Endere¸c´avel por Conte´udo) (PAGI-AMTZIS; SHEIKHOLESLAMI, 2006; KOHONEN, 1987)

• Mem´oria FIFO (First-In First-Out - Primeiro a Entrar, Primeiro a Sair) • Mem´oria LIFO (Last-In First-Out - ´Ultimo a Entrar, Primeiro a Sair)

Existem diversas especifica¸c˜oes de desempenho para CPLDs. Freq¨uˆencia interna de ope-ra¸c˜ao, atraso de propaga¸c˜ao e speed grade s˜ao alguns exemplos. O speed grade indica o atraso em nanosegundos (ns) atrav´es de uma macroc´elula do dispositivo. Um speed grade de -10, por exemplo, representa um atraso de 10ns atrav´es da macroc´elula. Claramente, quanto mais pr´oximo do zero estiver o speed grade, mais r´apido ser´a o dispositivo.

Alguns CPLDs incluem PLL (Phase-Locked Loop - Malha Fechada de Fase4) e DLL

(Delay-Loked Loop - Malha Fechada de Atraso) integradas conferindo poder para s´ıntese de variadas freq¨uˆencias de clock e permitindo seu uso em aplica¸c˜oes de SoC (System-on-Chip - Sistema em Chip). Os circuitos de gerenciamento de clock atrav´es da multiplica¸c˜ao de freq¨uˆencia possibilitam a gera¸c˜ao de sinais de clock internos de alta velocidade para amostra-gem de dados em aplica¸c˜oes de processamento digital de sinais. Al´em do mais, a utiliza¸c˜ao de PLLs e DLLs provˆe grande controle sobre os sinais de clock internos. Este ponto, em particu-lar, ´e cr´ıtico na integra¸c˜ao de sistemas que operam com diversos dom´ınios de clock (BENINI; MICHELI, 2002; HAMMOND; NAYFEH; OLUKOTUN, 1997).

Uma outra caracter´ıstica muito importante dos CPLDs ´e a temporiza¸c˜ao predit´ıvel que o torna uma excelente escolha para aplica¸c˜oes de controle de alto desempenho. Tipicamente os CPLDs possuem atrasos menores e mais previs´ıveis que os FPGAs e outros PLDs. Por serem baratos e apresentarem consumo de potˆencia relativamente baixo, os CPLDs s˜ao freq¨uente-mente usados em aplica¸c˜oes de baixo custo, aplica¸c˜oes port´ateis alimentadas por baterias e substitui¸c˜ao de l´ogicas aleat´orias (random logic) sofisticadas e circuitos de acoplamento (glue logic) mais complexos.

Os CPLDs podem ser encontrados em variadas densidades que v˜ao de 32 macroc´elulas nos modelos mais simples at´e 1700 macroc´elulas nos modelos de mais alta capacidade. A Xilinx oferece as s´eries CoolRunner e XC9500 de CPLDs com densidades entre 32 e 512 macroc´elulas, enquanto sua principal concorrente, a Altera, traz as s´eries MAX que podem chegar a 1700 macroc´elulas5.

4

Ou Malha de Fase S´ıncrona.

5

(41)

2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 19

2.4

Arranjo de Portas Program´

avel em Campo

Neste trabalho foi utilizada a tecnologia de FPGA (Field Programmable Gate Array) para a implementa¸c˜ao de uma arquitetura de processamento paralelo, logo o seu estudo ´e desen-volvido de forma mais detalhada para apresentar os fundamentos te´oricos necess´arios para a compreens˜ao do trabalho. O FPGA ´e um circuito integrado composto por blocos l´ogicos dispostos em forma de matriz, blocos de mem´oria, blocos de E/S e uma l´ogica de intercone-x˜ao program´avel, podendo conter ainda v´arios outros recursos como multiplicadores, PLLs, DLLs, circuitos de CRC (Cyclical Redundancy Check - Verifica¸c˜ao de Redundˆancia C´ıclica) e ECC (Error Correction Code - C´odigo de Corre¸c˜ao de Erro), al´em de variados tipos de mem´oria. A funcionalidade dos componentes de um FPGA assim como o seu roteamento, podem ser configurados via softwares de EDA.

2.4.1

Surgimento do FPGA

O primeiro chip de FPGA foi desenvolvido por Ross Freeman e Bernard Vonderschmitt em 1983. Estes dois, at´e ent˜ao engenheiros da Zilog Corp., fundaram a Xilinx Inc. em 1984, e no ano seguinte lan¸caram o primeiro chip de FPGA do mercado – o Xilinx XC2064™ (XILINX, 2007b). Este dispositivo pioneiro possu´ıa 1000 portas l´ogicas e representava uma forma revolucion´aria de l´ogica program´avel para a ´epoca. Na atualidade temos Altera, Xilinx, Lattice Semiconductor e Actel como os principais fabricantes de FPGA. Os quatro juntos representam 90% do mercado mundial enquanto QuickLogic, Atmel, Cypress, Motorola s˜ao alguns dos outros fabricantes que disputam a fatia restante (FPGA. . . , 2007; ALTERA, 2007a).

As ra´ızes hist´oricas do FPGA est˜ao nos CPLDs e MPGAs (Mask Programmable Gate Array - Arranjo de Portas Program´avel por M´ascara). Os FPGAs surgiram com o intuito de superar as dificuldades encontradas na fabrica¸c˜ao de FPDs de capacidades mais elevadas. A arquitetura dos CPLDs esbarrava na grande complexidade da matriz de interconex˜ao para dispositivos com grande capacidade l´ogica. Por este motivo, CPLDs n˜ao ultrapassaram a barreira das 512 macroc´elulas em um ´unico dispositivo t´ecnico-economicamente vi´avel. Por outro lado, a tecnologia de FPGA apresenta-se com uma revolucion´aria arquitetura de FPDs que oferece possibilidades muito maiores de expans˜ao devido `a t´ecnica de “conex˜ao segmentada” de blocos l´ogicos, diferenciando-se da “conex˜ao cont´ınua” utilizada nos FPDs precursores.

o valor apresentado ´e baseado em uma convers˜ao para o n´umero equivalente de macroc´elulas declarado pelo fabricante.

(42)

Figura 2.8: FPGA: arquitetura t´ıpica.

2.4.2

Arquitetura do FPGA

A figura 2.8 ilustra a arquitetura t´ıpica de um FPGA e suas trˆes estruturas b´asicas, a saber: os blocos l´ogicos, os blocos de E/S e as chaves de interconex˜ao.

O constituinte principal de um FPGA ´e o bloco l´ogico, pois nele s˜ao implementadas as fun¸c˜oes l´ogicas desejadas. Existem diferentes denomina¸c˜oes para “bloco l´ogico” dependendo do fabricante do dispositivo. A Xilinx denomina seu bloco l´ogico de CLB (Configurable Logic Block - Bloco L´ogico Configur´avel), a Actel referencia-o por LM (Logic Module - M´odulo L´ogico) e a Altera por LE (Logic Element - Elemento L´ogico). A estrutura interna dos blocos l´ogicos de um FPGA pode variar de um dispositivo para outro e a complexidade desta estrutura permite classific´a-los quanto `a granularidade.

Os blocos de E/S est˜ao dispostos fisicamente na regi˜ao perif´erica do substrato, podem ser programados como entrada, sa´ıda ou bidirecionais, permitindo acesso aos pinos de E/S de uso geral na parte externa do dispositivo atrav´es de um buffer.

(43)

2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 21 l´ogicos e blocos de E/S. O processo de escolha das conex˜oes a realizar ´e chamado de “rotea-mento”.

A funcionalidade do FPGA ´e definida atrav´es de comutadores el´etricos program´aveis cujas propriedades, tamanho, resistˆencia e capacitˆancia parasita definem a eficiˆencia e o desempenho do dispositivo (GERICOTA, 2003).

2.4.3

Classifica¸c˜

ao dos FPGAs

Os dispositivos FPGAs podem classificados, dentre outras formas, quanto `a tecnologia de programa¸c˜ao que empregam, quanto ao n´umero de configura¸c˜oes que permite e quanto `a gra-nularidade das estruturas internas. Cada uma destas formas ´e descrita nas se¸c˜oes seguintes.

2.4.3.1 Tecnologia de Programa¸c˜ao

Os FPGAs podem ser classificados quanto `a tecnologia de suas conex˜oes. Neste quesito encontra-se, atualmente, trˆes tipos de FPGAs que ser˜ao descritos a seguir.

SRAM: Os FPGAs baseados em mem´oria est´atica usam as c´elulas da mem´oria de configu-ra¸c˜ao como forma de implementa¸c˜ao da l´ogica desejada. As c´elulas encontram-se distribu´ıdas entre os blocos l´ogicos de forma a controlar a interliga¸c˜ao entre eles. Esta ´e a tecnologia de programa¸c˜ao mais utilizada em FPGAs de maior densidade de integra¸c˜ao. Os comutadores que possibilitam o estabelecimento de interliga¸c˜oes s˜ao chamados de PIPs (Programmable Interconnect Points - Pontos de Interconex˜ao Program´avel).

Antifus´ıvel: Antifus´ıveis s˜ao elementos program´aveis de dois terminais que quando sub-metidos a uma determinada tens˜ao (chamada tens˜ao de programa¸c˜ao), alteram de forma irrevers´ıvel o valor da sua impedˆancia que passa de um valor muito elevado a um valor muito baixo. A baixa resistˆencia de condu¸c˜ao e o tamanho reduzido fazem dos antifus´ıveis elemen-tos adequados para utiliza¸c˜ao como tecnologia de programa¸c˜ao de FPGAs. A programa¸c˜ao de dispositivos baseados nesta tecnologia ´e bem mais r´apida que nos dispositivos baseados em SRAM (GERICOTA, 2003 apud GREENE; HAMDY; BEAL, 1993). A tecnologia de an-tifus´ıvel ´e n˜ao-vol´atil, contudo tem as desvantagens de ser program´avel uma ´unica vez (OTP) e apresentar elevadas correntes de fuga atrav´es dos elementos n˜ao conectados.

(44)

Porta Flutuante: A tecnologia de programa¸c˜ao baseada em EEPROM (Electricaly Era-sable and Programmable ROM - ROM Apag´avel e Program´avel Eletricamente) e Flash ´e freq¨uentemente utilizada em CPLDs, embora possa ser encontrada esporadicamente aplicada em FPGAs. Uma c´elula de EEPROM ´e um transistor MOS (Metal-Oxide-Semiconductor - Metal- ´Oxido-Semicondutor) que armazena carga numa placa condutora eletricamente iso-lada (porta flutuante), localizada acima do canal do transistor. Quando carregada, a porta flutuante gera um campo el´etrico capaz de modificar a condutividade do canal. A carga da porta flutuante pode ser aumentada ou reduzida atrav´es da a¸c˜ao de um fenˆomeno de condu-¸c˜ao de corrente denominado efeito de tunelamento de Fowler-Nordheim (GERICOTA, 2003 apud CONSTANCIAS, 1998). Quando submetida a baixos n´ıveis de polariza¸c˜ao, a camada de ´oxido de sil´ıcio ´e uma excelente isolante, mas torna-se suficientemente condutora quando sujeita a uma tens˜ao de polariza¸c˜ao elevada6 (tens˜ao de programa¸c˜ao), levando `a passagem

de el´etrons que podem carregar ou descarregar a porta flutuante. Retirando-se a tens˜ao de programa¸c˜ao, o ´oxido volta a apresentar caracter´ısticas isolantes e a carga da porta flutuante fica retida podendo permanecer por muitos anos. Desta forma, a tens˜ao pode ser lida sem alterar a carga armazenada.

A tecnologia Flash ´e uma varia¸c˜ao da EEPROM e possui c´elulas que ocupam a metade da ´area de uma c´elula de EEPROM normal. O apagamento ´e mais simples e r´apido, contudo n˜ao ´e poss´ıvel a altera¸c˜ao de posi¸c˜oes de mem´oria individuais.

2.4.3.2 Possibilidades de Configura¸c˜ao

Quanto `a reconfigurabilidade, podemos classificar os dispositivos de FPGA em duas catego-rias: os OTP (One-Time Programmable - Program´avel uma ´Unica Vez) e os reconfigur´aveis (baseados em SRAM, EEPROM e Flash). As diferen¸cas b´asicas entre eles resultam da tec-nologia empregada na implementa¸c˜ao dos seus blocos l´ogicos e mecanismos de interconex˜oes internas (BROWN; ROSE, 1996), ou seja, da tecnologia de programa¸c˜ao empregada.

Program´aveis (OTPs): FPGAs OTP usam tecnologia baseada em antifus´ıveis para re-alizar conex˜oes (permanentes) no dispositivo. Neste caso, os blocos l´ogicos s˜ao semelhantes aos usados em CPLDs e SPLDs, contendo matrizes de portas l´ogicas e flip-flops. Os OTPs possuem tecnologia baseada em PROM. Os principais fabricantes desta categoria de FPGAs s˜ao Actel e QuickLogic.

6

(45)

2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 23 Reprogram´aveis: O FPGA reprogram´avel ´e a categoria dominante. A implementa¸c˜ao dos seus blocos l´ogicos se d´a usando uma LUT (Look-Up Table - Tabela de Consulta) baseada em SRAM (Static RAM - RAM Est´atica) no lugar de matrizes de portas l´ogicas. Fun¸c˜oes l´ogicas s˜ao implementadas atrav´es do mapeamento dos bits na SRAM. Esta tecnologia permite ao usu´ario reprogramar o chip de acordo com suas necessidades. Este tipo de FPGA precisa ser reprogramado toda vez que ´e reenergizado uma vez que a SRAM ´e uma mem´oria vol´a-til e apenas mant´em as informa¸c˜oes nela armazenadas enquanto o chip estiver alimentado. Por este motivo, uma mem´oria serial n˜ao vol´atil (SPROM) ´e requerida para reprogramar o FPGA a cada vez que ´e energizado. Este processo ´e conhecido tamb´em como “configura-¸c˜ao” ou “boot” do FPGA. A t´ecnica mais usual para realiz´a-lo emprega um tipo de mem´oria EEPROM especialmente desenvolvida para esta finalidade denominada mem´oria de configu-ra¸c˜ao. Pode-se utilizar alternativamente cart˜oes de mem´oria (cart˜oes SD, xD, CompactFlash etc.) ou mem´oria FLASH convencional associada a um CPLD para implementar os m´eto-dos de programa¸c˜ao propriet´arios de cada fabricante, e.g., o SelectMAP da Xilinx (XILINX, 2007a).

A volatilidade ´e uma caracter´ıstica dos FPGAs com tecnologia de programa¸c˜ao baseada em SRAM, contudo os modelos baseados em porta flutuante (EEPROM e Flash) mant´em a sua programa¸c˜ao mesmo ap´os a desenergiza¸c˜ao do dispositivo.

Tem-se grande vantagem na utiliza¸c˜ao de FPGAs reprogram´aveis quando se necessita realizar ajustes e corre¸c˜oes no projeto pois, neste caso, ´e suficiente a atualiza¸c˜ao da mem´oria de configura¸c˜ao. Por outro lado, quando se utiliza OTPs qualquer modifica¸c˜ao no projeto implica na substitui¸c˜ao do FPGA por um outro dispositivo virgem que possa ser programado com a nova configura¸c˜ao.

2.4.3.3 Granularidade

As arquiteturas de FPGA podem variar ainda com rela¸c˜ao `a complexidade das suas unida-des internas (gr˜aos). Este aspecto ´e denominado de “granularidade” ou “granulosidade” do dispositivo (GERICOTA, 2003). Os FPGAs podem ser de granularidade grossa, m´edia ou fina, como ser´a descrito a seguir.

Granularidade Grossa: S˜ao dispositivos que possuem gr˜aos grandes, ou seja, m´odulos estruturalmente complexos como unidades l´ogicas aritm´eticas, pequenos microprocessadores, mem´orias et cetera.

(46)

C A P ´I T U L O 2 : E L E T R ˆO N IC A R E C O N F IG U R ´A V E L

Fabricante Fam´ılia Tecnologia de

Programa¸c˜ao Granularidade

Capacidade

L´ogica (Portas)

Estruturas

Heterogˆeneas

Actel Axcellerator antifus´ıvel fina at´e 2M SRAM embutida

ProASIC Flash fina at´e 1M SRAM embutida

Altera Stratix III SRAM m´edia at´e 338K LEs SRAM embutida

Almel AT40K SRAM m´edia at´e 50K –

Lattice LatticeSC SRAM grossa at´e 900M RAM embutida

QuickLogic

pASIC3 antifus´ıvel m´edia at´e 75K –

Eclipse-II antifus´ıvel m´edia at´e 370K

SRAM e unidades computacionais

embutidas

Xilinx

XC4000XL SRAM m´edia at´e 180K –

Virtex-EM SRAM m´edia at´e 3M SRAM embutida

Virtex-II SRAM m´edia at´e 8M SRAM embutida

Virtex-II Pro SRAM m´edia –

SRAM, multiplicadores, processadores PowerPC, transmissores e receptores embutidos Tabela 2.1: Comparativo entre FPGAs de diferentes fabricantes

(47)

2.5. LINGUAGEM DE DESCRI ¸C ˜AO DE HARDWARE 25 Granularidade M´edia: M´odulos de gr˜aos m´edios s˜ao blocos l´ogicos com duas ou mais LUTs e dois ou mais flip-flops. Nesta classe est´a inclusa a maior parte das arquiteturas de FPGAs. Apresentam atrasos de interconex˜ao relativamente pequenos.

Granularidade Fina: S˜ao dispositivos constitu´ıdos de gr˜aos pequenos, i.e., m´odulos de pequena complexidade com blocos l´ogicos contendo uma fun¸c˜ao l´ogica de duas entradas ou um multiplexador e um flip-flop. FPGAs de granularidade fina fazem, em geral, melhor utiliza¸c˜ao dos recursos e permitem sua convers˜ao direta para ASIC, contudo requerem maior n´umero de interconex˜oes e possuem roteamento mais complexo.

Dentre todos os PLDs tratados anteriormente, os FPGAs s˜ao os que possuem a maior capacidade l´ogica da atualidade, sendo utilizados em diversos produtos industriais e de uso dom´estico.

A tabela 2.1 apresenta dados comparativos entre os principais dispositivos dispon´ıveis no mercado atual. S˜ao apresentados, de forma resumida, os principais recursos de cada modelo bem como a tecnologia em que s˜ao confeccionados.

2.5

Linguagem de Descri¸c˜

ao de Hardware

As linguagens de descri¸c˜ao de hardware (HDL) surgiram com a finalidade de documentar projetos de sistemas digitais. Em seguida foram usadas com a finalidade de simula¸c˜ao e nos ´ultimos vinte anos ´e not´avel sua populariza¸c˜ao em aplica¸c˜oes de s´ıntese de circuitos digitais em dispositivos l´ogicos program´aveis (BALCH, 2003). As duas principais linguagens de descri¸c˜ao de hardware da atualidade s˜ao Verilog e VHDL (VHSIC Hardware Description Language). Ambas incorporam padr˜oes internacionais da ind´ustria. Neste trabalho ´e dado um maior enfoque para a linguagem VHDL por ser uma linguagem altamente estruturada e fortemente tipada, tendo suas ra´ızes na linguagem ADA.

2.5.1

N´ıveis de Abstra¸c˜

ao

VHDL ´e uma linguagem multin´ıvel, ou seja, ela permite modelagem em v´arios n´ıveis de abstra¸c˜ao. A seguir ser˜ao brevemente descritos cada um dos poss´ıveis n´ıveis de descri¸c˜ao de modelos na linguagem VHDL.

(48)

2.5.1.1 N´ıvel de Portas

Este ´e o n´ıvel que provˆe o maior detalhamento para simula¸c˜ao de circuitos digitais e representa tamb´em o n´ıvel de abstra¸c˜ao mais baixo dentro do dom´ınio digital. Tanto para FPGAs quanto para ASICs, a biblioteca dos modelos em n´ıvel de portas ´e fornecida pelo vendedor ou foundry do componente. Devido `a grande quantidade de detalhes, a simula¸c˜ao tende a ser mais lenta que nos outros n´ıveis.

2.5.1.2 N´ıvel de Transferˆencia de Registrador (RTL - Register Transfer Level ) A forma mais discutida e praticada de modelagem HDL ´e em RTL (MUNDEN, 2005). Este n´ıvel ´e utilizado para projetar CIs como ASICs e FPGAs. Seu prop´osito ´e descrever o objetivo do projeto com detalhamento n˜ao t˜ao grande quanto no n´ıvel de portas, mas suficiente para ser compreendido por uma ferramenta de s´ıntese. A s´ıntese consiste em decompor a descri¸c˜ao RTL para o n´ıvel de portas de tal maneira que possa ser usada para criar o layout de um ASIC ou gerar o arquivo de configura¸c˜ao de um FPGA.

Embora o modelo RTL possa ser simulado, quando escrito para s´ıntese, n˜ao cont´em informa¸c˜oes sobre restri¸c˜oes de atraso nas porta e temporiza¸c˜ao. A simula¸c˜ao neste n´ıvel serve para a verifica¸c˜ao da funcionalidade do c´odigo, mas torna-se imprecisa. A precis˜ao necess´aria pode ser obtida simulando-se no n´ıvel de portas.

2.5.1.3 N´ıvel Comportamental

Ao contr´ario dos n´ıveis mais baixos, modelos neste n´ıvel possuem uma quantidade menor de detalhes, representando um n´ıvel mais alto de abstra¸c˜ao. O prop´osito do modelo compor-tamental ´e simular o que acontece nas interfaces de uma c´elula ou CI. Preocupa-se apenas com o que entra ou sai. A forma como o trabalho ´e realizado internamente n˜ao ´e levada em considera¸c˜ao neste n´ıvel.

O menor n´ıvel de detalhamento permite uma simula¸c˜ao muito mais r´apida que no RTL, contudo, o modelo neste n´ıvel n˜ao ´e sintetiz´avel.

2.5.1.4 Modelo Funcional de Barramento (BFM - Bus Functional Model ) Modelos funcionais de barramento s˜ao usualmente criados para partes muito complexas a ponto de um modelo comportamental se tornar muito custoso para se criar, ou muito lento para se avaliar. BFM tenta modelar a interface sem modelar a fun¸c˜ao do componente. Este

(49)

2.5. LINGUAGEM DE DESCRI ¸C ˜AO DE HARDWARE 27 modelo n˜ao ´e completo o bastante para simula¸c˜ao, mas serve para verificar se o componente est´a corretamente projetado em um sistema maior. Microprocessadores e DSPs (Digital Signal Processor - Processador Digital de Sinais) s˜ao exemplos de componentes para os quais se utiliza este n´ıvel de abstra¸c˜ao (MUNDEN, 2005).

2.5.2

Desenvolvimento Hist´

orico do VHDL

A linguagem VHDL foi criada com o intuito de descrever, simular e documentar hardware. Ap´os o surgimento dos dispositivos l´ogicos program´aveis e pelo fato do VHDL ter ampla aceita¸c˜ao, ela passou a servir tamb´em para projeto de novos dispositivos e sistemas digitais. Os itens abaixo descrevem o desenvolvimento hist´orico da linguagem VHDL.

• 1968: desenvolvem-se as primeiras linguagens de descri¸c˜ao de hardware. Dois anos depois j´a se sentia falta de padroniza¸c˜ao quanto `a sintaxe e semˆantica devido ao surgi-mento de diversas linguagens.

• 1973: nasce o projeto CONLAN (CONsensus LANguage) com o objetivo de definir formalmente uma linguagem de multin´ıvel.

• 1980: ´e lan¸cado o programa VHSIC (Very High Speed Integrated Circuit - Circuito Integrado de Velocidade Muito Alta). Neste mesmo ano, estima-se que 33 milh˜oes de d´olares foram investidos para o desenvolvimento direto de uma linguagem padronizada e suas ferramentas.

• 1983: no mˆes de julho, em parceria, Intermetrics, IBM e Texas Instruments vencem uma licita¸c˜ao do governo estado-unidense para desenvolver a linguagem VHDL. Ap´os uma d´ecada do surgimento do CONLAN seu relat´orio final foi publicado.

• 1985: em agosto foi entregue a vers˜ao final da linguagem: VHDL vers˜ao 7.2.

• 1986: o IEEE (Institute of Electrical and Electronics Engineers - Instituto de Enge-nheiros Eletricistas e Eletrˆonicos) designou uma comiss˜ao para padroniza¸c˜ao do VHDL. • 1987: foi lan¸cada a primeira padroniza¸c˜ao da linguagem (IEEE Std 1076-1987). • 1988: a linguagem VHDL torna-se um padr˜ao ANSI (American National Standards

Institute - Instituto Nacional Americano de Padr˜oes). Os primeiros softwares foram comercializados.

• 1991: iniciou-se um processo de ajuste do padr˜ao, cujo objetivo era a coleta e an´alise de requisitos, defini¸c˜ao dos objetivos e a especifica¸c˜ao das modifica¸c˜oes na linguagem.

(50)

• 1992: ocorre a avalia¸c˜ao e vota¸c˜ao das modifica¸c˜oes propostas.

• 1993: foi publicada uma revis˜ao do padr˜ao 1076 do IEEE chamado VHDL-93 (IEEE Std 1164-1993). A linguagem foi aceita pelo IEC (International Electrotechnical Com-mission - Comiss˜ao Eletrot´ecnica Internacional) como DIS (Draft International Stan-dard - Padr˜ao Internacional de Projeto).

• 1997: em dezembro deste ano foi publicado o manual de referˆencia da linguagem VHDL. • 2001: o padr˜ao VHDL foi revisado pelo IEEE novamente (IEEE Std 1364-2001) e

chamado de VHDL-2001.

Estes avan¸cos da eletrˆonica configur´avel somados `a evolu¸c˜ao de componentes eletrˆonicos de alt´ıssimo n´ıvel de integra¸c˜ao possibilitaram a embarca¸c˜ao de sistemas multiprocessados em um ´unico CI e, conseq¨uentemente, aplica¸c˜oes de processamento paralelo embutido.

(51)

29

Cap´ıtulo 3

Processamento Paralelo

Problemas cujo cˆomputo exige simula¸c˜oes complexas (previs˜oes meteorol´ogicas, dispers˜ao de polui¸c˜ao, biomecˆanica, dinˆamica molecular, turbulˆencia de fluidos ou sistemas de combust˜ao), ou que manipulam grandes quantidades de dados (genoma humano, ecossistemas, modela-gem de semicondutores e supercondutores, processamento de imagens ou renderiza¸c˜ao) s˜ao freq¨uentemente executados com o uso de processamento paralelo (GRAMA et al., 2003). Em geral, recorre-se a esta abordagem quando ´e necess´ario resolver problemas maiores ou mais complexos em um certo tempo cr´ıtico, ou quando se deseja reduzir o tempo de processamento de uma tarefa.

Nos ´ultimos 50 anos a computa¸c˜ao sofreu diversas modifica¸c˜oes e avan¸cos (DONGARRA et al., 2003; GRAMA et al., 2003; HINTON et al., 2001). Na segunda metade dos anos 70, a cria¸c˜ao das m´aquinas vetoriais marcou o in´ıcio da supercomputa¸c˜ao moderna (DONGARRA et al., 2003) e o uso da computa¸c˜ao antes da d´ecada de 80 era essencialmente militar e cient´ıfico. Dos anos 50 at´e os dias de hoje, o desenvolvimento do hardware de novos compu-tadores seguiu, em m´edia, a Lei de Moore (MOORE, 1965) no que se refere ao aumento da capacidade computacional. Percebe-se que a computa¸c˜ao de alto desempenho experimentou um crescimento logar´ıtmico de performance desde o seu surgimento. A figura 3.1 mostra a capacidade de processamento dos computadores de alto desempenho ao longo do tempo, as tecnologias dominantes por per´ıodo e os principais representantes de cada era da evolu¸c˜ao arquitetural.

Em sistemas rob´oticos, diversas tarefas necessitam de execu¸c˜ao em tempo real, ou seja, com restri¸c˜oes de tempo que se n˜ao forem atendidas ocasionam falhas no funcionamento (hard real-time) ou degrada¸c˜ao de performance (soft real-time) (LAPLANTE, 2004). A solu¸c˜ao de problemas desse tipo para robˆos de alto desempenho (geralmente mais de quatro graus de liberdade), quando implementada de forma seq¨uencial, exige freq¨uentemente hardware de

(52)

Figura 3.1: Evolu¸c˜ao da computa¸c˜ao de alto desempenho (CARRIJO; PAIVA, 2001). alto custo o que torna-se, muitas vezes, um fator proibitivo.

Uma alternativa para a solu¸c˜ao deste problema ´e a utiliza¸c˜ao de arquiteturas de proces-samento paralelo embutidas em FPGA. Este cap´ıtulo apresenta os princ´ıpios do paralelismo e a t´ecnica de processamento paralelo. Um enfoque especial ´e dado `as taxonomias e m´etricas de performance de redes.

3.1

Conceitos e Defini¸c˜

oes

Paralelismo: Estrat´egia de solu¸c˜ao de tarefas que consiste na decomposi¸c˜ao de uma tarefa em outras menores que possam ser realizadas de forma simultˆanea (AMDAHL, 1967). Processo: Programa em execu¸c˜ao.

Thread: Auto-replica¸c˜ao de um programa que passa a ser executado na forma de duas ou mais tarefas simultˆaneas ou pseudo-simultˆaneas, compartilhando o mesmo espa¸co de endere¸cos.

Computa¸c˜ao Paralela: Estrat´egia de computa¸c˜ao onde se divide o programa em processos a serem executados por diferentes processadores.

Sistema Paralelo: Combina¸c˜ao de uma arquitetura paralela e um algoritmo paralelo im-plementado sobre ela (KUMAR; GUPTA, 1994).

Referências

Documentos relacionados

Considerando que o MeHg é um poluente ambiental altamente neurotóxico, tanto para animais quanto para seres humanos, e que a disfunção mitocondrial é um

Ao afirmar que “dois enunciados distantes um do outro” revelam relações dialógicas em meio a confrontos e convergências de sentido, Bakhtin apresenta um pressuposto extremamente

O objetivo deste trabalho foi conhecer a prevalência dos sinais e sintomas relacionados à Disfunção Temporomandibular em um grupo de alunos do curso de fisioterapia, verificando

Apresenta-se neste trabalho uma sinopse das espécies de Bromeliaceae da região do curso médio do rio Toropi (Rio Grande do Sul, Brasil), sendo também fornecida uma chave

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

Dessa forma, os níveis de pressão sonora equivalente dos gabinetes dos professores, para o período diurno, para a condição de medição – portas e janelas abertas e equipamentos

(...) o controle da convencionalidade em sede internacional seria um mecanismo processual que a Corte Interamericana de Direitos Humanos teria para averiguar se o direito

ensino superior como um todo e para o curso específico; desenho do projeto: a identidade da educação a distância; equipe profissional multidisciplinar;comunicação/interatividade