UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E

Transcrição

UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
ENGENHARIA ELÉTRICA
Cleverson Leandro Ávila
Rodrigo Duarte
SOLUCIONANDO O PROBLEMA DO CAIXEIRO VIAJANTE
ATRAVÉS DA COMPUTAÇÃO RECONFIGURÁVEL
Curitiba, 2008
Cleverson Leandro Ávila
Rodrigo Duarte
SOLUCIONANDO O PROBLEMA DO CAIXEIRO VIAJANTE
ATRAVÉS DE COMPUTAÇÃO RECONFIGURÁVEL
Monografia apresentada ao Curso de
Engenharia Elétrica da Universidade Positivo,
para obtenção de avaliação da disciplina de Trabalho de Conclusão de Curso (TCC)
Orientador: Profº André Macário Barros.
Curitiba, 2008
Dedicamos esta monografia a todos os professores que contribuíram em nossa formação escolar desde o nosso ensino
básico até a graduação de Engenharia Elétrica.
iii
AGRADECIMENTOS
Primeiramente, agradeço a Deus por ter me dado a oportunidade de estar aqui. Aos meus pais, Osvaldo de Jesus Ávila e
Elizabeth de Almeida Ávila, e à minha namorada Caroline
Rodrigues da Silva, agradeço todo o amor, carinho, compreensão e respeito.
Cleverson Leandro Ávila
Agradeço aos meus pais, Elédio Duarte e Rosana Aparecida
Balena Duarte, a toda a minha família e amigos por todo o
amor, carinho e compreensão.
Rodrigo Duarte
Agradecemos ao Profº André Macário Barros pelo grande apoio, dedicação e companherismo.
iv
“Procurem deixar este mundo um pouco melhor do que o encontraram e, quando chegar a hora de morrer, poderão morrer felizes sentindo que pelo menos não desperdiçaram o
tempo e que procuraram fazer o melhor possível.”
Baden Powell
v
RESUMO
O Problema do Caixeiro Viajante, conhecido como TSP (Travelling Salesman
Problem), é a obtenção da menor rota entre “N” cidades finalizada no ponto de origem. O
TSP por ser um problema combinatorial de difícil resolução, tornou-se muito popular no meio
acadêmico, devido a sua ampla aplicabilidade em várias áreas.Várias formas de implementálo computacionalmente foram criadas, por exemplo, utilizando algoritmos genéticos e redes
neurais. Um computador convencional consegue calcular em um tempo satisfatório apenas
um pequeno número de cidades. Já um sistema baseado em computação reconfigurável (CR)
onde o paralelismo pode ser explorado, pode resolver problemas combinatoriais com uma
maior velocidade, quando se trata de um número maior de cidades. Por isso, neste trabalho foi
utilizada a estrutura F+V (Fixo + Variável) e utilizando um método determinístico baseado no
Algoritmo Johnson-Trotter, na qual um computador convencional é a interface entre o usuário
e o sistema CR. O usuário entrará com as coordenadas de “N” instâncias em um programa
desenvolvido em Borland C++ Builder e este, através de comunicação paralela, enviará informações para uma placa que contém o FPGA (Field Programmable Gate Arrays), componente principal da parte V, que fará todos os cálculos necessários e transmitirá a resposta, a
menor rota, novamente para o computador.
Palavras-chave: TSP, algoritmo Jonhson-Trotter, FPGA, Computação Reconfigurável.
vi
ABSTRACT
The TSP (Travelling Salesman Problem), is the attainment of the smaller route
among “N” cities and that finishes at the origin point. The TSP, because it is a combinatorial
problem difficult to solve, has became very popular into the academic environment, due to its
great applicability in several areas. Several ways to implement it through computers were
developed, for example, using genetic algorithms and neural networks. An ordinary computer
can calculate within a satisfactory time only a small number of cities. But a reconfigurable
computing system (RC) where the parallelism can be explored, is able to solve combinatorial
problems in less time, when we talk about a larger number of cities. Therefore, in this study it
was used the structure F+V (Fixed + Variable), and using a determining method based on
Algorithm Johnson-Trotter, in which an ordinary computer will be the interface between the
user and system (RC). The user will enter the coordinates of “N” cities in a software program
developed in Borland C++ Builder, and this one, through parallel communication, will send
information to the FPGA (Field Programmable Gate Arrays), a main component of the V
part, that will do all the necessary calculations and will transmit the answer, the smaller
route, back to the computer.
Key-words: TSP, Algorithm Johnson-Trotter, FPGA, Reconfigurable Computing.
vii
LISTA DE FIGURAS
Figura 1 – Diagrama em Blocos Simplificado. ....................................................................... 2
Figura 2 – Diagrama em blocos do sistema “F+V” com a parte variável expandida................ 5
Figura 3 – Exemplo de um arquivo *.tsp................................................................................ 6
Figura 4 – Layout do AC ....................................................................................................... 9
Figura 5 – Esquemático FPGA............................................................................................. 16
Figura 6 – Programa de Interface com o Usuário.................................................................. 18
Figura 7 – Placa de comunicação paralela. ........................................................................... 20
Figura 8 – Gráfico do Tempo de processamento entre o AC e F+V...................................... 23
LISTA DE TABELA
Tabela 1 – Exemplo de Matriz de Distâncias para 4 cidades................................................... 7
Tabela 2 – Cronograma........................................................................................................ 11
Tabela 3 – Custos do projeto................................................................................................ 12
Tabela 4 – Tempo de processamento entre o AC e do F+V .................................................. 22
viii
LISTA DE ABREVIATURAS/SIGLAS
AC – Algoritmo Canônico;
AG – Algoritmos Genéticos;
ASIC – Application Specific Integrated Circuit;
CP – Computação Paralela;
CR – Computação Reconfigurável;
F+V – Fixo + Variável;
FLS – Fast Local Search;
FPGA – Field-Programmable Logic Arrays;
JT – Algoritmo de Johnson-Trotter;
LE – Logical elements;
MD – Matriz de distâncias;
PC – Personal Computer;
PSO – Paticle Swarm Optimization;
RNA – Redes Neurais Artificiais;
TSP - Travelling Salesman Problem
LCD - Liquid Crystal Display
ix
SUMÁRIO
1 INTRODUÇÃO ..........................................................................................................................................1
1.1
PROBLEMA ......................................................................................................................................1
1.2
JUSTIFICATIVA .................................................................................................................................2
1.3
OBJETIVOS ......................................................................................................................................2
2
REVISÃO DA LITERATURA.............................................................................................................4
3
ESPECIFICAÇÕES TÉCNICAS PRELIMINARES ..........................................................................5
3.1
VISÃO GERAL DO PROJETO ...............................................................................................................5
3.2
DESCRIÇÃO FUNCIONAL DOS BLOCOS ...............................................................................................6
3.2.1
Bloco 1: Programa em Borland no PC.........................................................................................6
3.2.2
Bloco 2: Interface paralela ..........................................................................................................7
3.2.3
Bloco 3: FPGA e sub-blocos.......................................................................................................7
3.3
DIMENSIONAMENTO E MEMORIAL DE CÁLCULO .................................................................................8
3.4
PROGRAMAÇÃO ...............................................................................................................................9
3.4.1
Descrição geral ...........................................................................................................................9
3.4.2
Planejamento............................................................................................................................10
4
METODOLOGIA...............................................................................................................................13
4.1.1
Fase 1.......................................................................................................................................13
4.1.2
Fase 2.......................................................................................................................................13
4.1.3
Fase 3.......................................................................................................................................14
4.2
CONTRIBUIÇÃO ..............................................................................................................................14
5
IMPLEMENTAÇÃO..........................................................................................................................15
5.1
DESCRIÇÃO DA MONTAGEM ..................................................................................................15
5.2
TESTES, MEDIÇÕES E CONFIGURAÇÕES ...............................................................................16
5.3
CÓDIGO S FONTE S ......................................................................................................................17
5.3.1
Código Fonte do Programa 1 ....................................................................................................17
5.3.2
Código Fonte do Programa 2 ....................................................................................................18
5.3.3
Código Fonte BCD_to_7seg .....................................................................................................19
5.4
PLACAS DE CIRCUITO IMPRESSO (PCI)..................................................................................20
6
RESULTADOS...................................................................................................................................22
6.1
ANÁLISE DE RESULTADOS......................................................................................................23
7
CONCLUSÕES ..................................................................................................................................24
7.1
TRABALHOS FUTUROS ............................................................................................................24
REFERÊNCIAS ............................................................................................................................................26
x
1
1 INTRODUÇÃO
Os computadores convencionais, devido à sua grande flexibilidade, podem ser utilizados em diversas tarefas, mas para aplicações específicas, estes dispositivos podem não
alcançar um desempenho desejado. Para as aplicações que necessitam de alta capacidade de
processamento, os ASICs (Application Specific Itegrated Circuit) são chips dedicados à estas
tarefas, desenvolvidos para ter alto desempenho em aplicações que exigem grande processamento, mas esta tecnologia é uma opção mais cara e inflexível, comparada aos microcomputadores.
A CR (Computação Reconfigurável) (SKLIAROVA e FERRARI, 2003) surgiu
para integrar o alto desempenho dos ASICs e a flexibilidade dos computadores de uso geral.
A CR baseia-se em uma arquitetura “F+V” (ESTRIN, 1960) que, hoje em dia, é implementada utilizando-se placas contendo um ou mais FPGAs (Field-Programmable Logic Arrays)
para representar a parte V (Variável) e um computador de uso geral para representar a parte F
(Fixa). Neste sistema, o processador de uso geral executa as partes que não são facilmente
implementadas em hardware, e o FPGA executa as partes que exigem maior processamento e
que se beneficiam de alguma forma com a implementação em hardware. Pelas suas características, a CR é também aplicada na resolução de problemas matemáticos combinatoriais que,
a depender do seu grau de magnitude, consomem muito tempo quando processados em computadores convencionais.
1.1
PROBLEMA
Como reduzir o tempo de processamento de problemas combinatoriais utilizando
a CR como ferramenta de apoio, quando comparado ao tempo de processamento de um computador de uso geral, executando o mesmo problema.
2
1.2
JUSTIFICATIVA
A área da CP (Computação Paralela), antes do surgimento da Computação Reconfigurável, era uma área de pesquisa, a qual requeria uma sala com vários computadores para
executar um dado problema. Com o surgimento da CR (Computação Reconfigurável), foi
possível paralelizar tais algoritmos da CP, utilizando apenas uma placa com FPGA e um
computador convencional. Isso gera uma necessidade de aprofundamento em pesquisas.
1.3
OBJETIVOS
O objetivo principal deste estudo foi desenvolver e implementar uma arquitetura
do tipo "F+V" para resolver o TSP (Travelling Salesman Problem) (DANTZIG E FULKERSON, 1954), de acordo com a figura 1.
Figura 1 – Diagrama em Blocos Simplificado.
Fonte própria
Os objetivos específicos foram:
a)
Desenvolver um software que resolva o problema proposto inteiramente no
PC, através do algoritmo JT (Johnson-Trotter) (SEDGEWICK, 1977) para
servir de AC (algoritmo canônico);
b) Desenvolver o software da parte “F” do sistema “F+V”;
3
c)
Desenvolver o programa que foi executado na parte “V” da arquitetura
“F+V”, baseada em um FPGA com no mínimo 33000 LE (Logical Elements),
da família EP2 da Altera;
d) Comparar os resultados do AC (Algoritmo Canônico), que executa o JT apenas no computador convencional, e do “F+V” e verificar o speedup (razão entre tempo obtido na arquitetura proposta, sobre o tempo de execução do AC,
num computador convencional).
4
2
REVISÃO DA LITERATURA
Em Lopes e Coelho (2005) foi proposto um novo método para a resolução do
TSP, utilizando PSO (Particle Swarm Optimization) e FLS (Fast Local Search). O método
mostrou ter bons resultados computacionais, comparado ao PSO puro (sem FLS).
Em Skliarova e Ferrari (2002) foi proposto a resolução do TSP utilizando AG
(Algoritmos Genéticos) (GOLDBERG, 1989). Neste método utilizou-se CR, sendo que, por
tomar muito tempo de processamento, parte do AG (parte dedicada à operação de crossover)
foi implementada em um FPGA, com o intuito de aumentar o desempenho do sistema.
Os dois trabalhos citados anteriormente evidenciam a necessidade de técnicas alternativas para a resolução do TSP, quando este tem seu número de cidades aumentado.
Em Ankush Varma e Jayadeva (2002) foi apresentado um novo sistema de rede
neural para solucionar o TSP. O modelo proposto é baseado em FPGAs. Para demonstrar a
eficiência deste método, o projeto foi comparado ao modelo computacional Hopfield Neural
Network e mostrou-se superior, no quesito velocidade de processamento. A utilização das
RNA (Redes Neurais Artificiais) vem novamente a reforçar a necessidade de métodos alternativos para a resolução de instâncias de valor alto para o TSP. Uma das linhas de ação futuras a
serem obtidas com os resultados desta pesquisa-piloto é empregar tais métodos alternativos. O
emprego do método JT, em contrapartida, tem o intuito de simplificar o processo nesta primeira fase (neste ano) da pesquisa. Uma vez com o sistema desenvolvido de forma flexível,
será possível a inserção de funções na linguagem C que implementem os métodos aqui mencionados.
5
3
3.1
ESPECIFICAÇÕES TÉCNICAS PRELIMINARES
VISÃO GERAL DO PROJETO
O projeto está dividido em duas partes, a criação do AC (Algoritmo Canônico) e a
implementação do sistema “F+V” (“Fixo + Variável). O AC é um programa criado em Borland C++ Builder 5, que será executado exclusivamente num PC (Personal Computer). Este
programa abre um arquivo contendo informações das instâncias, gera uma MD (Matriz de
Distâncias), executa o JT (Algoritmo Johnson-Trotter) e disponibiliza ao usuário a menor rota.
No sistema “F+V”, um programa criado em Borland abre um arquivo, coleta as
informações das instâncias e gera a MD, a qual é transferida por comunicação paralela à placa
DE2 da Altera (placa externa que contém o FPGA) que, por sua vez, executa o algoritmo JT e
transfere para o PC a menor rota para que seja disponibilizada ao usuário. O diagrama em
blocos que ilustra este sistema é mostrado na figura 2.
Figura 2 – Diagrama em blocos do sistema “F+V” com a parte variável expandida.
Fonte própria.
6
3.2
DESCRIÇÃO FUNCIONAL DOS BLOCOS
Esta seção visa explicar o diagrama em blocos proposto na figura 2.
3.2.1 Bloco 1: Programa em Borland no PC
Interface com o usuário, apresenta a seleção de arquivos, o status do programa e
disponibiliza os resultados finais. O programa abre um arquivo escolhido pelo usuário (arquivo compatível com a tsplib – ELIB, 2008) e coleta as principais informações deste arquivo: a
quantidade de instâncias e posição, em coordenadas cartesianas, de cada cidade. A figura 3
mostra um exemplo de um arquivo que contém as informações necessárias para executar corretamente o programa. O campo “NAME” indica o nome do arquivo; o campo “DIMENSION:” informa a quantidade de instâncias; abaixo do campo “NODE_COORD_SECTION”
estão disponíveis as informações relativas às cidades, por exemplo: cidade 1, x=5, y=6; cidade
2, x=15, y=2. O próximo passo é a criação da MD (Matriz de Distâncias), exemplificada na
tabela 1 (tabela gerada a partir do programa exemplo da figura 3).
Figura 3 – Exemplo de um arquivo *.tsp .
Fonte própria.
7
Tabela 1 – Exemplo de Matriz de Distâncias para 4 cidades.
n\n
1
2
3
4
1
0
11
5
5
2
11
0
12
8
3
5
12
0
4
4
5
8
4
0
Fonte própria.
Por exemplo, para obter o valor de distância entre as cidades 2 e 3 (valor igual a
12, conforme a tabela 1), utiliza-se a fórmula da distância euclideana (1):
d = (int) ( x 2 − x3 ) 2 + ( y 2 − y 3 ) 2
(1)
3.2.2 Bloco 2: Interface paralela
Comunicação paralela entre PC e a placa DE2. Transfere a MD, do PC para o
FPGA e a melhor rota, do FPGA para o PC.
3.2.3 Bloco 3: FPGA e sub-blocos
As ferramentas Quartus II, SOPC Builder (Altera,2008) gera componentes em
VHDL, como o processador, memória, barramentos de entrada e saída entre outros. O NIOS
II IDE (Altera, 2008) permite escrever um programa em “C” para rodar no processador gerado pelo SOPC Builder. O sub-bloco do processador virtual NIOS II armazenará o algoritmo
8
JT, responsável pela geração das combinações de rotas, e também o algoritmo que encontra a
melhor rota.
3.3
DIMENSIONAMENTO E MEMORIAL DE CÁLCULO
Os programas serão desenvolvidos em Borland C++ Builder 5 por causa da sua
facilidade de operação; pela disponibilidade gratuita da ferramenta na universidade; e por
suportar AnsiC, o que facilitará na passagem do programa do PC para o do NIOS II.
A placa DE2 foi escolhida por possuir toda a estrutura necessária para testes
(LEDs, switchs, LCD (Liquid Crystal Display), porta para comunicação serial, memórias SRAM, SDRAM e flash); por dar suporte ao processador virtual NIOS II e por conter o FPGA
Cyclone II EP2C35, o qual possui 33216 LEs e 35 multiplicadores embarcados1, o que permite descrever hardwares mais complexos.
Será utilizada a interface paralela por disponibilizar as informações com maior velocidade. A porta USB não foi escolhida porque, para implementar no FPGA a comunicação
USB, teria que ser feita compra do módulo pronto, agregando assim, custo ao projeto. O módulo paralelo para o FPGA é disponível gratuitamente.
O TSP foi escolhido por ser o problema com várias possíveis aplicações na engenharia elétrica, como por exemplo, na escolha de rotas na fabricação de placas de circuito
impresso e por ser um problema simples de ser implementado em C comparado a outros problemas combinatoriais, como o Problema da Satisfação.
1
Dados retirados do data sheet da família de dispositivos Cyclone II
9
3.4
PROGRAMAÇÃO
3.4.1 Descrição geral
Abaixo seguem os principais passos que o AC deve desempenhar:
Início
Ler arquivo de instâncias até a string “DIMENSION:”;
Capturar número de cidades (n);
Ler arquivo de instâncias até a string “NODE_COORD_SECTION”;
Capturar identificação da cidade e suas coordenadas x y até a string “EOF”;
Loop para preenchimento da MD (tamanho nXn)
Calcula distância entre dois pontos e coloca resultado na MD;
Executar algoritmo JT
Gerar uma combinação (rota);
Comparar a distância total da rota atual com a menor distância obtida;
Se a rota atual for menor, guardar valor de distância e a rota atual;
Expor na tela a melhor seqüência de cidades (rota) com distância total;
Fim;
No sistema “F+V”, depois que o PC gera a MD, ele a envia pela porta serial para
o FPGA, que executa o algoritmo JT e envia para o PC a melhor rota para que seja disponibilizada para o usuário. A figura 4 apresenta um layout da tela de interface para o usuário.
Figura 4 – Layout do AC
10
Fonte prórpia.
Os ambientes de programação utilizados são:
•
Borland C++ Builder 5;
•
Quartus II 8.0;
•
SOPC Builder;
•
NIOS II IDE 8.0;
As linguagens de programação utilizadas são: C e VHDL.
3.4.2 Planejamento
O cronograma seguido para execução do projeto esta apresentado na tabela 2. As tarefas foram executadas por todos os integrantes da equipe.
11
Tabela 2 – Cronograma.
Cronograma
Data
Descrição de Tarefas
20 a 03.03.2008
Elaboração da proposta de TCC
07 a 24.03.2008
Correção e entrega da proposta TCC versão definitiva
25 a 30.03.2008
Estudo de artigos para formular a revisão literaria
30 a 05.04.2008
Estudo da arquitetura "F+V", Algoritmo JT, FPGAs.
06 a 15.04.2008
Elaboração do software AC em Borland.
16 a 22.04.2008
Elaboração dos capítulos 1 e 2 do TCC.
22.04.2008
Entrega dos capítulos 1 e 2 do TCC.
22 a 09.05.2008
Elaboração do TCC em formato de PPT.
09.05.2008
Apresentação do PPT.
10 a 14.05.2008
Conclusão do Software AC.
15 a 26.05.2008
Elaboração do capítulo 3 do TCC.
26.05.2008
Entrega dos capítulos 1, 2 e 3 do TCC.
27 a 02.06.2008
Elaboração do TCC em formato de PPT.
02.06.2008
Apresentação do PPT.
03 a 22.06.2008
Ensaios práticos do projeto.
23.06.2008
Apresentação do software AC.
23 a 31.07.2008
Testes da estrutura "F+V".
01 a 18.08.2008
19 a 31.08.2008
Implementação da arquitetura "F+V" proposta.
Testes de comparação de tempo de processamento entre a AC e
o "F+V"
01 a 29.09.2008
Elaboração do capítulo 4.
29.09.2008
Entrega dos capítulos 1, 2, 3 e 4 do TCC.
30 a 06.10.2008
Elaboração do Artigo.
06.10.2008
Entrega do Artigo
07 a 27.10.2008
Conclusão da Monografia
28 a 05.11.2008
Preparação do Painel
06 a 10.11.2008
Elaboração da Apresentação final
10.11.2008
Apresentação final
01.12.2008
Entrega da Monografia e Artigo versões finais
Fonte própria.
12
Os custos para a execução do projeto estão apresentados na tabela 3.
Tabela 3 – Custos do projeto.
Quantidade
1
1
45
63
90
3
120
3
150
3
120
30
3
Fonte própria.
Planejamento Financeiro
Descrição
Valor unitário
Valor total
Placa Altera DE2
R$
1.150,25 R$ 1.150,25
Placa de Comunicação Paralela
R$
100,00
R$
100,00
Impressões da 1ª fase
R$
0,10
R$
4,50
Impressões da 2ª fase
R$
0,10
R$
6,30
Impressões da 3ª fase
R$
0,10
R$
9,00
Encadernação
R$
2,50
R$
7,50
Impressões da 4ª fase
R$
0,10
R$
12,00
Encadernação
R$
2,50
R$
7,50
Impressões da 5ª fase
R$
0,10
R$
15,00
Encadernação
R$
2,50
R$
7,50
Impressões da 6ª fase
R$
0,10
R$
12,00
Impressões coloridas
R$
1,20
R$
36,00
Encadernação c/ capa dura
R$
15,00
R$
45,00
TOTAL
R$ 1.412,55
13
4
METODOLOGIA
Este projeto, por ser uma pesquisa experimental, consiste principalmente na coleta
e no confrontamento de dados, tais como valores de tempo de processamento gerados pelo
algoritmo canônico e pelo sistema “F+V” desenvolvido.
A metodologia aplicada pode ser dividida em fases, para a melhor administração
do trabalho.
4.1.1 Fase 1
Esta fase consiste no desenvolvimento do AC em Borland C++ Builder 5. Este
programa deve possibilitar que o usuário selecione o arquivo que é utilizado. O programa deve abrir este arquivo; ler a quantidade de instâncias e a posição de cada cidade; guardar estas
informações; gerar a matriz de distâncias; executar o algoritmo JT; encontrar a melhor rota
dentre as combinações geradas pelo JT e; disponibilizar para o usuário a seqüência de cidades
que possui a melhor rota.
4.1.2 Fase 2
A fase 2 consiste em implementar o algoritmo desenvolvido na fase 1, exclusivamente dentro da placa DE2, através das ferramentas SOPC Builder e NIOS II IDE.
14
4.1.3 Fase 3
Nesta etapa, o principal foco é o desenvolvimento do sistema “F+V” proposto, ou
seja, implementar o programa que será executado no PC (interface com o usuário; coleta de
dados e geração da matriz de distâncias); a comunicação paralela entre PC e placa DE2; a
implementação do que será executado no FPGA (o processador virtual NIOS II e, dentro deste, o algoritmo JT); e, finalmente, executar o algoritmo canônico e o sistema “F+V”, com a
finalidade de comparar o tempo de processamento dos dois sistemas.
4.2
CONTRIBUIÇÃO
Esta pesquisa contribuirá para o grupo de pesquisas da Universidade Positivo,
pois foi criada uma estrutura que permitirá a implementação de algoritmos com heurísticas no
local do algoritmo JT.
A pesquisa visa também conseguir uma arquitetura do tipo “F+V” que será útil
em diversas aplicações que necessitam de uma grande capacidade de processamento tal como,
por exemplo, no reconhecimento de impressões digitais, processamento de imagens e processamento de áudio.
A contribuição para a comunidade científica dos resultados desta pesquisa é a de
oferecer mais uma arquitetura do tipo “F+V”, simplificada, que sirva para outros problemas
combinatoriais, além de oferecer uma estrutura flexível e simplificada na qual poderá ser utilizada para configurar outros códigos para diferentes aplicações, comportando tanto métodos
determinísticos quanto heurísticos.
15
5
5.1
IMPLEMENTAÇÃO
DESCRIÇÃO DA MONTAGEM
O projeto foi desenvolvido em pequenos passos os quais, em cada ponto importante do projeto, foram desenvolvidos programas testes. O primeiro passo foi desenvolver o
Algoritmo Canônico, o qual possibilitava a leitura de um arquivo texto, gerava todas as seqüências de rotas e, dentre estas, indicava na tela a melhor.
Em seguida, a atenção foi direcionada à placa DE2 e o FPGA. Foram desenvolvidos alguns programas testes que possibilitaram o aprendizado desta ferramenta e dos softwares NIOS II IDE e SOPC Builder. Nesta estapa, um grande tempo (3 meses) do projeto foi
perdido em busca de tutoriais e materiais relacionados à placa didática e aos softwares NIOS
II IDE e SOPC Builder, já que os materiais disponibilizados pela Terasic (empresa desenvolvedora da placa DE2) que foram entregues junto à placa DE2 estavam desatualisados em relação à versão do Quartus II utilizada (versão 8). Na tentativa de encontrar tutoriais mais recentes, foram feitas pesquisas na internet e no site da Altera, mas são poucos os materiais disponíveis sobre estes softwares. Os primeiros sistemas desenvolvidos utilizando estas ferramentas
foram simples programas para acender LEDs através de chaves. Mas este simples programa
foi a base para desenvolver todo o software que é executado internamente no processador
Nios desenvolvido para o FPGA. Durante este processo, foram encontrados alguns problemas
relacionados à porta de comunicação serial, problemas gerados, principalente, pela dificuldade de encontrar materiais de referência para esta ferramenta, e também pelo material (tutoriais) disponibilizado estar desatualizado. Assim, foi optado pela utilização da comunicação
pela porta paralela.
Após os testes realizados na placa, foi feito a conexão entre o PC e a placa DE2.
Para isto, algumas adaptações foram nescessárias, já que o FPGA utilizado possui uma tensão
de trabalho de 3.3V, enquanto a porta paralela do PC, trabalha em 5V. para esta adaptação,
fez-se necessário a utilização de um buffer (74LS245N) que separasse as duas portas.
Além da placa para adaptação dos níveis de tensão e dos componentes providos
pela placa DE2, não foi utilizado nenhum outro dispositivo auxiliar.
16
O hardware desenvolvido para o FPGA (figura 5), conta com processador Nios,
uma memória on-chip de 40Kbytes e 8 entradas/saídas paralelas: rst; clk; dados_in; valor_out;
i1; j1; sin_d_p; sin_p_p. Também foi implementado um conversor BCD para display de 7
segmentos para a visualização de valor_out, i1 e j1. Os pinos de dados_in e de valor_out são
utilizados para a troca de dados com o PC, sendo que valor_out também está ligado a um display de 7 segmentos para a melhor visualização dos valores trafegados. Os pinos i1 e j1 também são ligados a displays para facilitar o encontro de erros no software do Nios. O sinal
sin_d_p é um sinal de sincronismo gerado pelo PC para o FPGA e o sinal sin_p_p é a resposta
do FPGA para o PC. A descrição dos softwares desenvolvidos pode ser encontrada no capítulo 4.3.
Figura 5 – Esquemático FPGA
Fonte própria.
5.2
TESTES, MEDIÇÕES E CONFIGURAÇÕES
O hardware, como comentado anteriormente, é composto pela placa DE2 e pelo
circuito de acoplamento (circuito para adaptação dos sinais). Após a escolha do buffer a ser
utilizado na comunicação paralela entre o PC e a placa DE2, foram realizados teste para veri-
17
ficar se o mesmo transmitiria em altas freqüências sem perdas de bits. Foram verificados através do osciloscópio em uma freqüência de 1 KHz.
Para o software, a cada novo passo, era realizado um pequeno programa para testes de novas funcionalidades. Na implementação da comunicação paralela, foi criado um protocolo de sinalização no qual, um elemento só recebe o dado após ser sinalizado de que há um
dado a ser recebido, criando um sistema assíncrono.
O projeto não possui uma limitação em relação ä quantidade de cidades, mas um
número superior a 20 cidades pode passar do tempo de processamento limite (o processamento pode demorar demais), mas pode facilmente ter sua funcionalidade modificada para aumentar este número e otimizar o tempo de processamento.
5.3
CÓDIGOS FONTES
No projeto, foram desenvolvidos 2 programas em C (Programa 1 e Programa 2) e
um em VHDL (BCD_to_7seg).
5.3.1 Código Fonte do Programa 1
O Programa 1 é o programa executado no PC, cuja característica principal é a interface com o usuário e pode ser visualizada através da figura 6. Todo o código fonte pode ser
visto no Apêndice 1. Seu funcionamento parte da abertura de um documento, escolhido pelo
usuário, que contém as informações sobre as cidades. Clicando-se no ícone “Abrir”, é executada a função “ler_dados” que irá ler os dados do documento selecionado, mostrar seu conteúdo na tela e montar uma tabela contendo as informações das cidades. Em seguida, clicando
no ícone iniciar (“Play”), são executadas seqüêncialmente as seguintes funções: gera_matriz;
envia_dados; recebe_dados; w_seq; gráfico.
18
A função gera_matriz cria a matriz de distâncias partindo do cálculo da distância
entre dois pontos e utilizando a parte inteira da resposta. A função envia_dados envia a matriz
de distâncias para a placa DE2 pela porta paralela. A cada envio de dados, pela porta de controle envia-se um nível lógico alto (1) para o sincronismo com o FPGA e, em seguida, é gerado um delay de 1ms para dar tempo para a placa didática receber, acomodar os dados e ficar
pronto para receber outro dado. Terminando o envio, é executada a função recebe_dados.
Quando o FPGA for enviar dados para o PC, ele envia um sinal para o PC saber que pode
“pedir” os dados. Com todos os dados recebidos, é executada a função w_seq que escreve a
seqüência de cidades na tela e, através da função gráfico, o gráfico é desenhado na tela.
Figura 6 – Programa de Interface com o Usuário.
Fonte própria
5.3.2 Código Fonte do Programa 2
Este programa é executado no Nios, dentro do FPGA. Seu código fonte pode ser
visualizado no Apêndice 2. Ele tem a função de receber dados vindos de PC, executar o algoritmo JT e enviar para o PC a seqüência de cidades que forma a melhor rota.
19
O programa permanece em estado de reset (enviado pelo PC) até ser informado
que há dados para serem recebidos (sinal rst igual a zero). Quando o sinal “sin_d_p” igual a
“1”, significa que há um novo dado a ser recebido. O programa pega o dado e o acomoda na
memória, primeiramente recebendo o número de cidades, depois montando uma matriz de
distâncias. Depois é executado o Algoritmo JT e, quando finalizado, envia a seqüência de
cidades para o PC.
5.3.3 Código Fonte BCD_to_7seg
Este código em VHDL é um simples programa para receber um valor em hexadecimal e converter num valor que pode ser visualizado num display de 7 segmentos. O código
pode ser visualizado abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
library ieee;
use ieee.std_logic_1164.all;
entity BCD_to_7seg is
Port(
bcd : in bit_vector(0 to 3);
on_off : in bit;
seg : out bit_vector (0 to 6));
end;
Architecture conversor of BCD_to_7seg is
Begin
abc : process(bcd,on_off)
begin
if on_off='0' then
seg<="1111111";
else
case bcd is
when "0001"=>seg<="1001111";
when "0010"=>seg<="0010010";
when "0011"=>seg<="0000110";
when "0100"=>seg<="1001100";
when "0101"=>seg<="0100100";
when "0110"=>seg<="0100000";
when "0111"=>seg<="0001111";
when "1000"=>seg<="0000000";
when "1001"=>seg<="0001100";
when "1010"=>seg<="0001000";
when "1011"=>seg<="1100000";
when "1100"=>seg<="0110001";
when "1101"=>seg<="1000010";
when "1110"=>seg<="0110000";
when "1111"=>seg<="0111000";
20
33
when others=>seg<="0000001";
34
end case;
35
end if;
36
end process;
37 end architecture;
5.4
PLACAS DE CIRCUITO IMPRESSO (PCI)
Como se trata de um projeto de pesquisa, este foi desenvolvido em placas didáticas e em protoboard, visando à aquisição de resultados. O único hardware desenvolvido foi
uma interface, apresentada na figura 7, interligando o PC a DE2, devido às diferenças de níveis de tensão e para a proteção da placa didática e da porta paralela do PC.
Figura 7 – Placa de comunicação paralela.
Fonte própria.
Para os sinais que seguem no sentido porta paralela-FPGA, foi utilizado o circuito
buffer (74LS245N), com todas as suas entradas em PULL DOWN, alimentado com 4.3V. Esta
tensão é gerada por um regulador de tensão (CI 7805), em série com um diodo N4004. Quando há um nível lógico alto na porta paralela, na saída do CI, devido a uma queda de tensão
21
interna, obteve-se os 3.3V necessários como nível lógico para o FPGA. O diagrama de circuito eletrônico pode ser visto no Apêndice 3. O caminho de volta do FPGA-porta paralela, foi
utilizado um circuito DRIVE de 5V para cada sinal de volta, formado por saturação e cortes de
transistores BC 548.
22
6
RESULTADOS
Os intervalos de tempo obtidos são os tempos que, tanto o sistema “F+V”, quanto
o AC levam para processar os dados, desde a criação da Matriz de Distâncias até a captação
da melhor rota.
O tempo gasto para a troca de dados entre PC e DE2 pode ser desconsiderado já
que cresce linearmente na proporção de 1ms por dado enviado e não afeta (para o número de
instâncias testadas) significativamente a contagem de tempo de processamento.
A Tabela 4 e o Figura 8 a seguir demonstram como foi o comportamento dos sistemas.
Tabela 4 – Tempo de processamento entre o AC e do F+V
Tempo de Processamento (s)
Nº de Cidades
4
5
6
7
8
9
10
11
Fonte própria.
F+V
Combinações Possíveis
0
0
0
0
0
0
0
0
2
0
14
0
1 149
3 1706
24
120
720
5040
40320
362880
3628800
39916800
AC
23
Figura 8 – Gráfico do Tempo de processamento entre o AC e F+V
Tempo em segundos
Tempo de Processamento entre o AC e o Sistema F+V
150
140
130
120
110
100
90
80
70
60
50
40
30
20
10
0
AC
F+V
1
2
3
4
5
6
7
8
Número de Cidades
Fonte própria.
6.1
ANÁLISE DE RESULTADOS
Na Tabela 4 em conjunto com a Figura 8 pode-se verificar, em vermelho e verde,
a relação entre número de instâncias e tempo de processamento para os dados coletados através do sistema “F+V” proposto e o AC. Ainda com um pequeno número de cidades, o sistema
proposto, comparado com um AC, não consegue obter resultados satisfatórios.
No capítulo 5.2 - TRABALHOS FUTUROS estão disponíveis algumas propostas
que têm a possibilidade de reverter este quadro.
24
7
CONCLUSÕES
Pelo gráfico apresentado no capítulo de resultados concluiu-se que não foi atingido o objetivo inicial que era desenvolver e implementar uma arquitetura do tipo F+V para
resolver o TSP em tempos de processamento satisfatórios.
Mesmo em contato com a Altera através de chamados de suporte desde Julho deste ano, não foi obtido um auxilio adequado quanto ao fornecimento de tutoriais atualizados.
Também por esses motivo foi gasto um certo tempo em estudos de detalhes do funcionamento
da ferrameta NIOS II IDE.
Por outro lado, mesmo sem ter atingido o objetivo principal, o conhecimento adquirido e fornecido ao curso de Engenharia Elétrica da Universidade Positivo, foi de grande
valor. Apartir deste ponto, outras equipes ou professores poderão utilizar esta pesquisa como
base para futuros projetos com FPGAs.
Com os resultados obtidos com a arquitetura de um processador NIOS II, o tempo
de processamento se tornou inviável apartir de 12 cidades, é extremamente alto ao se comparar ao sistema AC.
Vale comentar que as possibilidades oferecidas pelo sistema desenvolvido, são
muito grandes. O sistema criado, em conjunto com o FPGA utilizado, permite a paralelização
do processamento dos dados (Computação Paralela), a utilização de sistemas de aceleração
como o C2H (C to Hardware) ou, até mesmo, a implementação de algoritmos que utilizam
métodos herísticos para a solução de problemas combinatoriais, como Algoritmos Genéticos e
Redes Neurais.
7.1
TRABALHOS FUTUROS
Como comentado anteriormente, o sistema desenvolvido permite a utilização de
Computação Paralela, ou seja, utilizar mais de um núcleo de processador, assim, o trabalho de
processamento seria dividido em partes iguais, entre estes núcleos. O sistema desenvolvido
ocupou 1700 elementos lógicos do FPGA, e o chip utilizado (EP2C35 – Cyclone 2) possui
25
33000 elementos lógicos, ou seja, pode-se implementar uma quantidade de até 14 núcleos de
processadores (deixando reservado uma certa quantidade de elementos lógicos para dispositivos auxiliares).
Outra forma de aproveitar o sistema criado é utilizá-lo como uma cápsula para a
inserção de métodos heurísticos, ou seja, utilizar o mesmo processador Nios criado, a mesma
forma de comunicação e a mesma freqüência de trabalho, mas retirar o algoritmo JT (determinístico) e colocar em seu lugar, por exemplo, um Algoritmo Genético (heurístico).
26
REFERÊNCIAS
ALTERA, FPGA, CPLD, and ASIC.Disponível em <http://www.altera.com/>. Acesso em 28 mai.
2008.
DANTZIG, G.; FULKERSON, R.; JOHNSON, S. Solution of a Large-Scale Travelling-Salesman
Problem. California: The Rand Corporation, Santa Monica, 1954.
ELIB, TSP data. Disponível em < http://elib.zib.de/pub/mp-testdata/tsp/tsplib/tsplib.html >.Acesso
em 15 jun. 2008.
LOPES, Heitor S.; COELHO, Leandro S. Particle Swarm Optimization with Fast Local Search
for the Blind Traveling Salesman Problem. Potugal: Department of Electronics and Telecommunications University of Aveiro, 2002.
SEDGEWICK, Robert. Permutation Implementation Methods. Rhode Island: Computing Surveys,
1977.
GOLDBERG, D. Genetic Algoritms in Search, Optimization, and Machine Learning. Reading:Addison-Wesley Publishing Company, Inc, 1989.
SKLIAROVA, Iouliia; FERRARI, Antônio B. FPGA-Based Implementation of Genetic Algorithm
for the Traveling salesmas Problem and Its Industrial Application. Potugal: Department of Electronics and Telecommunications University of Aveiro, 2002.
SKLIAROVA, Iouliia; FERRARI, Antônio B. Introdução à Computação Reconfigurável. Potugal:
Revista do DETUA, 2003.
VARMA, A.; Jayadeva, J. A Novel Digital Neural Network for the Travelling Salesman Problem.
In: INTERNATIONAL CONFERENCE ON NEURAL INFORMATION PROCESSING – ICONIP’
02, 9., 2002. Singapura, o DETUA, 2002.