Vous êtes sur la page 1sur 16

Departamento de Engenharia Eltrica

SNTESE EVOLUCIONRIA DE CIRCUITOS DIGITAIS EMPREGANDO FPGAS

Aluno: Rogrio Cortez B. L. Pvoa Orientador: Marco Aurlio C. Pacheco

1. Introduo 1.1. Motivao O hardware evolutivo (Evolvable Hardware EHW) projetado para se adaptar s mudanas na sua estrutura fsica, no ambiente ou no seu objetivo, devido a sua capacidade de reconfigurao dinmica. Desta forma este hardware se difere do hardware tradicional cuja estrutura fixa [1]. EHW foi o resultado dos estudos da rea da Eletrnica Evolutiva, que surgiu devido ao grande interesse de pesquisadores em otimizar e/ou sintetizar circuitos eletrnicos por algoritmos evolutivos [2]. Algoritmos evolutivos so divididos em classes e foram desenvolvidos a partir de observaes de processos adaptativos e evolutivos da natureza, tendo como principais bases a seleo natural, a recombinao do material gentico e a mutao [3]. Dentre as principais classes esto os algoritmos genticos [4] [5], a programao gentica [6], a evoluo diferencial [7], os algoritmos culturais [8] [9] e a programao evolutiva [10]. A Eletrnica Evolutiva classificada de acordo com o tipo de projeto, a natureza do projeto e a plataforma evolutiva. O tipo de projeto determina se o mesmo ser utilizado para otimizao ou sntese de circuitos, a natureza do projeto define se as aplicaes sero analgicas ou digitais e a plataforma evolutiva abrange as classificaes intrsica e extrnseca para uma aplicao. Uma aplicao extrnseca consiste em avaliar circuitos atravs de simuladores, j na intrnseca a avaliao realizada atravs do uso de circuitos integrados reconfigurveis, esta metodologia de evoluo de circuitos denominada Evolvable Hardware [2], como j mencionada anteriormente. Projetos de Hardware Evolucionrio para evoluo intrnseca consistem na utilizao de um hardware programvel, como FPAA, FPGA ou FPTA, e uma tcnica de algoritmo evolutivo, como o Algoritmo Gentico. O algoritmo evolutivo compilado em um software e uma configurao de bits gerada para reconfigurar o hardware programvel. Trabalhos como [11] e [12], utilizando a plataforma reconfigurvel Field Programmable Transistor Array (FPTA), so realizados na NASA (National Aeronautics and Space Administration) e so exemplos de projetos de Hardware Evolucionrio. 2. FPGA 2.1. Conceito de FPGA Field Programmable Gate Array (FPGA) uma plataforma reconfigurvel que contm uma matriz de clulas lgicas genricas e chaves programveis. Estas clulas lgicas so configuradas para desempenhar uma funo simples, enquanto as chaves programveis interconectam as clulas lgicas segundo uma configurao.

Departamento de Engenharia Eltrica

FIGURA 2.1. Estrutura Conceitual de uma FPGA. Na implementao de um projeto em FPGA, ocorre a especificao da funo de cada clula lgica alm da configurao da conexo de cada chave. Com a etapa de sntese do projeto concluda, enviado um arquivo de configurao para FPGA por um cabo. Este processo feito em campo e no em fbrica, sendo por este motivo atribudo o nome Field Programmable placa. [13] 2.2. LUT-based logic cell Normalmente uma clula lgica constituda de uma LUT (look-up table), ou tabela de busca, que um circuito combinacional com um flip-flop tipo D. Uma n-LUT pode ser considerada como uma memria 2n por 1 e se configurada de forma correta pode funcionar como uma funo combinacional de n entradas. A figura 2.2 um exemplo de clula lgica baseada em look-up table de 3 entradas. [13]

Departamento de Engenharia Eltrica

FIGURA 2.2. Clula lgica baseada em look-up table de 3 entradas. 2.3. Projeto FPGA O projeto e programao de uma FPGA consistem em seis etapas: definio do comportamento da FPGA, gerao de uma netlist, processo de roteamento, validao do mapeamento, gerao do arquivo binrio e configurao da FPGA. A definio do comportamento da FPGA feita atravs da gerao de um projeto esquemtico (grfico) por uma linguagem de descrio de hardware (HDL Hardware Description Language). As principais linguagens utilizadas so VHDL e Verilog. Este projeto utilizar a linguagem VHDL (Very-high-speed integrated circuit HDL). A netlist gerada por uma ferramenta de EDA (Eletronic Design Automation). Esta netlist descreve a conectividade de um circuito, como componentes, pinos e portas. O processo de roteamento o ajuste da netlist arquitetura da FPGA. O mapeamento validado atravs de anlises temporais e simulaes, a partir desta validao um arquivo binrio gerado e transferido para a FPGA para configurar a mesma. Esta transferncia feita atravs de uma interface serial utilizando o protocolo JTAG. [13] 3. Algoritmos Genticos 3.1. Conceito Tcnica de busca e otimizao paralela, desenvolvida por John Holland na Universidade de Michigan, que se baseia na seleo natural proposta por Charles Darwin, onde uma soluo potencial se d atravs de uma estrutura semelhante a um cromossomo. Este cromossomo submetido a trs operadores, seleo, crossover e mutao, alm de uma funo de avaliao de aptido. [14] 3.2. Estrutura Bsica Segue abaixo, a estrutura bsica de um Algoritmo Gentico simples.

Departamento de Engenharia Eltrica

FIGURA 3.1. Estrutura bsica de um Algoritmo Gentico simples. Para determinar a soluo de um problema, uma populao aleatria de possveis solues gerada. Os cromossomos pertencentes a esta populao so avaliados quanto aos seus desempenhos e ordenados quanto a sua aptido. Aps este procedimento, avaliado se a soluo para o problema foi encontrada, caso tenha sido encontrada o procedimento encerrado, caso contrrio os procedimentos de seleo, reproduo e mutao sero aplicados para gerar novos indivduos na populao. Por esta tcnica estar baseada na teoria da seleo natural, a seleo feita de forma a privilegiar a sobrevivncia dos indivduos mais aptos. Privilgio concedido pelo fato da aptido dos indivduos estar diretamente relacionada probabilidade de serem selecionado e assim contriburem com uma nova gerao de indivduos. Aps o procedimento de seleo, cromossomos so selecionados aleatoriamente em pares para que o crossover seja realizado. A aplicao de tal evento probabilstica, ou seja, h a possibilidade de ocorrer ou no. Caso ocorra, partes do material gentico (nmero binrio) de um indivduo trocado com o outro indivduo, de maneira que os dois descendentes possuam material gentico dos dois indivduos progenitores (figura 3.2). Caso no ocorra, os cdigos dos cromossomos so preservados.

Departamento de Engenharia Eltrica

FIGURA 3.2. Crossover. Cada bit dos novos indivduos submetido ao procedimento de mutao, que ocorre de forma probabilstica. Ao ocorrer uma mutao o bit alterado, como ilustrado na figura 3.3. Aps a mutao, os indivduos resultantes passam a fazer parte da populao, sendo ento reiniciado o procedimento, conforme a figura 3.1. [14]

FIGURA 3.3. Mutao. 4. Objetivo Este projeto tem com objetivo estudar projetos de Hardware Evolucionrio utilizando a plataforma reconfigurvel Field Programmable Gate Array (FPGA). Projetos deste tipo requerem uma constante comunicao entre o software que utiliza o algoritmo evolutivo e o hardware programvel, alm do uso de uma FPGA requerer passos como programao, configurao de portas e envio de dados. Logo ser estudada a possibilidade de transferncias de dados para a placa, de forma a utiliz-la de maneira eficiente. O projeto tambm tem como objetivo implantar uma aplicao de EHW utilizando uma FPGA. Para esta etapa final, sero avaliados os recursos disponveis e os conhecimentos adquiridos na rea. 4.1. Recurso Para a realizao do projeto, o modelo da FPGA escolhido foi o Spartan-3E, do fabricante XILINX. Que est disponvel no pacote Spartan-3E Starter Kit.

Departamento de Engenharia Eltrica

FIGURA 4.1. Spartan-3E Starter Kit. 5. Atividades Realizadas 5.1. Projeto FPGA e Pesquisa O incio do projeto foi determinado pelo entendimento da estrutura conceitual e do projeto de uma FPGA, implementando a metodologia de execuo de um projeto de FPGA, descrita no captulo 2 deste projeto. A lembrar, as seis etapas de programao e projeto de uma FPGA so: definio de comportamento da FPGA, gerao de uma netlist, processo de roteamento, validao do mapeamento, gerao do arquivo binrio e configurao da FPGA. Aps a compreenso e a implementao de um projeto esttico, se fez necessrio o estudo de Algoritmos Genticos, conforme o captulo 3. Desta forma foi constatada a importncia de se utilizar este mtodo para a evoluo de cdigos e para uma futura programao evolucionria. Para o desenvolvimento de projetos de Hardware Evolucionrio utilizando FPGAs atuando em tempo hbil, foi necessrio pesquisar possveis formas de evoluir um projeto. A criao de um Algoritmo Gentico durante a criao de um cdigo VHDL como soluo do problema, por mais trivial que se pode parecer, no satisfaz o requisito de utilizao do projeto no dia a dia, em tempo satisfatrio. Isto ocorre porque um projeto de uma FPGA necessita de um tempo relativamente grande para execuo de suas etapas [13]. Alm disso, o nmero de evolues que seriam realizadas pelo Algoritmo Gentico para programao da

Departamento de Engenharia Eltrica

plataforma reconfigurvel seria grande, de forma a prolongar mais o tempo para encontrar uma configurao tima. 5.2. Definio de Soluo Dentre as solues de projetos relacionados a este assunto, a evoluo do arquivo binrio, gerado a partir da criao de um cdigo VHDL e do mapeamento da FPGA, se apresentou como a mais adequada para o projeto. Pois para a evoluo do arquivo binrio s necessrio realizar a gerao deste arquivo uma nica vez, ou seja, as seis etapas de programao e projeto de uma FPGA sero executadas somente uma vez, sendo a partir deste momento a programao da FPGA evoluda por uma API (Application Programming Interface) chamada JBits (abordada no prximo captulo).

6. JBits 6.1. Conceito JBits um conjunto de classes Java que fornece uma API (Application Programming Interface) para acessar um arquivo binrio, desenvolvido para modelos de FPGA do fabricante Xinlinx. A interface permite a reconfigurao das clulas lgicas e conexes de dispositivos da FPGA. Desta forma, sua utilizao permite a configurao dinmica de circuitos. [15] 6.2. Funcionamento Esta biblioteca de classes d acesso completo a configurao de todos os dispositivos da plataforma reconfigurvel e por se tratar de classes Java pr-compiladas, o resultado para configurao da FPGA no um bitstream esttico, mas sim um cdigo executvel que gera um bitstream para a placa. Este cdigo executado nos momentos de configurao, conforme a figura 7.1.

Departamento de Engenharia Eltrica

FIGURA 6.1. Modo de funcionamento do JBits. A informao compartilhada entre o processador que executa o cdigo Java e a FPGA, o que difere de outros sistemas de computao reconfigurvel onde a configurao da FPGA completamente independente da interface do software. Esta diferena evita erros que so difceis de encontrar e corrigir. Com um mdulo nico e integrado de software que faz tanto a configurao do circuito e gerenciamento do processador, a coerncia entre o software e a FPGA mantida de uma forma simples. [15] 6.3. Forma de utilizao do JBits A figura 7.2 ilustra a forma de utilizao do JBits. A aplicao em Java para o usurio utiliza o JBits para configurar os dispositivos da FPGA. Cada chamada de funo no nvel da interface JBits faz uma ou mais chamadas para o nvel de bits, onde um bit alterado no bitstream. Ocorrendo ento uma abstrao na alterao de bits, evitando alteraes diretas no arquivo binrio, por parte do usurio. Esta interface do nvel de bit gerencia o fluxo contnuo de dados do dispositivo e fornece suporte para leitura e escrita bitstreams de e para arquivos. Alm disso, a classe Bitstream pode ler dados do hardware e mape-lo para o formato de dados de um bitstream (readback), o que necessrio para uma reconfigurao dinmica. A API JBits utiliza o software XHWIF para fazer o download e readback do hardware. A biblioteca central a coleo de classes Java que definem ncleos (Macro cell) geralmente parametrizveis e realocveis dentro de um dispositivo. So exemplos de ncleos: contadores, somadores e multiplicadores. [15]

FIGURA 6.2. Forma de utilizao do JBits.

Departamento de Engenharia Eltrica

FIGURA 6.3. Exemplo de cdigo JBits para o modelo da FPGA Virtex. 6.4. Limitaes do JBits Uma das principais limitaes do JBits sua natureza manual, onde todos os comandos enviados para a FPGA devem ser explicitados no cdigo fonte. Para facilitar a programao destes cdigos, os ncleos (Macro cell) da FPGA so utilizados. Outra limitao importante a necessidade de um conhecimento avanado sobre a arquitetura da plataforma reconfigurvel, conhecimento este, que nunca foi exigido dos usurios de FPGAs. Para soluo deste problema necessrio estudo sobre as documentaes de cada modelo de FPGA utilizado em um projeto. [15] O fabricante desta interface, XINLINX, no garante o funcionamento correto das classes para modelos de FPGAs diferentes do modelo XC4000 ou da famlia Virtex (at a Virtex II). Sendo a ultima verso, JBits 3.0, desenvolvida especificamente para o modelo Virtex II. 6.5. BoardScope Ferramenta grfica para anlise do funcionamento de FPGAs em qualquer placa de computao reconfigurvel. Verifica o funcionamento do projeto e resultados produzidos por operaes do hardware. Permite uma verificao mais detalhada e uma depurao durante a comunicao da FPGA com outros dispositivos. O BoardScope utiliza a interface JBit para acessar recursos do bitstream da FPGA. Em seguida, utilizando o XHWIF, o bitstream transferido para configurar a FPGA, ou o readback realizado para analis-lo. Os estados dos Blocos Lgicos Configurveis (CLB) so representados graficamente pelo BoardScope. A figura 7.4 mostra o StateView no BoardScope de uma placa com quatro FPGAs do modelo XC4028EX. Cada quadrado representa a CLB de uma FPGA, colorido com a cor azul para representar um estado de baixa e verde para um estado de alta. Se os estados forem alterados as cores so alteradas indicando os novos estados. A representao possibilita a anlise de todos as CLBs e as alteraes de estados. [15]

Departamento de Engenharia Eltrica

FIGURA 6.4. StateView no BoardScope. 6.6. XHWIF uma interface Java para comunicao com placas FPGA. Possui mtodos para ler e escrever bitstreams das FPGAs e mtodos para descrever os tipos e nmero de FPGAs contidas em uma placa. Tambm possui mtodos para incrementar o clock e para leitura e escrita nas memrias da placa. Atravs deste software h uma padronizao na comunicao entre os aplicativos e o hardware, permitindo comunicao de aplicativos com placas diferentes. Outra vantagem desta interface permitir que aplicativos como o BoardScope no se preocupem com controladores, barramentos e tipos de barramento (PCI, ISA e outros). [15] 7. Ferramentas Utilizadas 7.1. Hardware Conforme descrito no captulo 4, o modelo da FPGA utilizado neste projeto foi o Spartan-3E, do fabricante XILINX, disponvel no pacote Spartan-3E Starter Kit. 7.1. Software Xilinx Integrated Software Environment (ISE) Project Navigator Software que permite a realizao das seis etapas de programao e projeto de uma FPGA: definio de comportamento da FPGA, gerao de uma netlist, processo de roteamento, validao do mapeamento, gerao do arquivo binrio e configurao da FPGA.

Departamento de Engenharia Eltrica

ModelSim XE III/Starter 6.4b Simulador de cdigos VHDL. 8. Implementao 8.1. Desenvolvimento Esttico Para a melhor compreenso do funcionamento de uma FPGA, projetos estticos (ou no evolutivos) foram implementados. Dentre os projetos realizados na plataforma reconfigurvel, o somador de dois bits foi selecionado para servir de base para testes futuros envolvendo EHW. A escolha deste projeto se justifica pela necessidade de avaliao de uma operao simples durante o desenvolvimento evolucionrio e pelo fato de no se tratar de um operador lgico bsico, como um AND ou um OR. O projeto foi desenvolvido, seguindo as seis etapas de programao e projeto de uma FPGA. A definio de comportamento da FPGA, foi realizada atravs da criao dos cdigos em VHDL, add.vhd e testbench.vhd. O primeiro possui a entidade e arquitetura para execuo da soma de dois nmeros de dois bitst, enquanto o segundo possui a rotina de testes para simulao.

FIGURA 8.1. Cdigo em VHDL do somador de dois bits (add.vhd).

Departamento de Engenharia Eltrica

FIGURA 8.2.a. Cdigo em VHDL do testbench (testbench.vhd).

FIGURA 8.2.b. Cdigo em VHDL do testbench (testbench.vhd).

Departamento de Engenharia Eltrica

FIGURA 8.2.c. Cdigo em VHDL do testbench (testbench.vhd). Aps a criao dos cdigos, atravs do ModelSim, os mesmos foram testados e simulados, conforme o resultado abaixo.

FIGURA 8.3. Simulao do somador de dois bits. Com os cdigos gerados e simulados, foram gerados dois esquemas do circuito lgico para verificao do mesmo afim de avaliar entradas, sadas e dispositivos intermedirios do circuito proposto pelo Xilinx Integrated Software Environment (ISE) Project Navigator.

Departamento de Engenharia Eltrica

FIGURA 8.4.a. Esquema do circuito lgico.

FIGURA 8.4.b. Esquema do circuito lgico.

Departamento de Engenharia Eltrica

Em seguida a netlist foi gerada descrevendo as portas de entrada e sada do circuito. O processo de roteamento e mapeamento foram realizados pelo prprio software, gerando assim o bitstream para configurao da FPGA. 8.2. Desenvolvimento Evolucionrio Esta etapa do projeto no foi implementada devido as dificuldades encontradas para a definio da soluo para o desenvolvimento de projetos de Hardware Evolucionrio utilizando FPGAs. Em contra partida uma pesquisa sobre solues existentes nesta rea foi realizada. Como j descrito na definio de soluo das atividades realizadas, captulo 6, a soluo mais adequada para este projeto foi evoluir arquivos binrios, gerados a partir da criao de um cdigo VHDL e do mapeamento da FPGA. Esta evoluo feita atravs de uma API chamada JBits. Este projeto prope a trabalhos futuros a utilizao desta API para a evoluo de bitstrems e para auxiliar estes trabalhos realiza uma descrio sobre o JBits no captulo 7. necessrio lembrar que para a utilizao desta interface, o usurio dever conhecer a arquitetura das FPGAs a serem utilizadas e avaliar se as classes em Java oferecidas atendem a arquitetura da plataforma reconfigurvel. Caso no sejam utilizados modelos de FPGAs que o fabricante XILINX garante o funcionamento do JBits, devero ser criadas classes que atendam as diferenas do modelo da FPGA. Concluso Neste projeto foram realizadas pesquisas para a utilizao de FPGAs em projetos de Hardware Evolucionrio, avaliando projetos e trabalhos existentes, alm de ferramentas disponveis. Durante a pesquisa fez necessria a implementao de projetos estticos de FPGA, para adquirir conhecimentos sobre a plataforma reconfigurvel e verificar as condies para se utilizar a computao evolucionria. Estudos sobre Algoritmos Genticos foram importantes para o aprendizado dos conceitos de Evolvable Hardware. A definio da utilizao da ferramenta JBits exigiu um estudo sobre esta interface, onde percebeu-se as limitaes do software. Com o fim do prazo do trabalho e os conhecimentos adquiridos, uma proposta para continuao do mesmo foi realizada de forma a orientar trabalhos futuros nesta rea. Referncias Bibliogrficas 1 SANTINI, C. C. DESENVOLVIMENTO DE UMA PLATAFORMA RECONFIGURVEL ANALGICA PARA A EVOLUO INTRSICA DE CIRCUITOS. Tese de Mestrado, Departamento de Engenharia Eltrica, Pontifcia Universidade Catlica, Rio de Janeiro, Brasil, 2001. 2 ZEBULUM, R. S. SNTESE DE CIRCUITOS ELETRNICOS POR COMPUTAO EVOLUTIVA. Tese de Mestrado, Departamento de Engenharia Eltrica, Pontifcia Universidade Catlica, Rio de Janeiro, Brasil, PP. 1-2,1999. 3 RIDLEY, M. EVOLUTION: Second Edition, Blackwell Science, EUA, 1996. 4 BACK, T.; FOGEL, D. B.; MICHALEWICZ, Z. HANDBOOK OF EVOLUTIONARY COMPUTATION. Institute of Physics Publishing, Bristol, NY, EUA 1997. 1.1.

Departamento de Engenharia Eltrica

5 MICHALEWICZ, Z. GENETIC ALGORITHMS + DATA STRUCTURES = EVOLUTION PROGRAMS: 2nd, extended ed. Springer-Verlag New York, Inc., New York, NY, USA, 1994. 1.1, 3.1.4, 4.1, 4.1.2. 6 KOZA, J. R. GENETIC PROGRAMMING: ON THE PROGRAMMING OF COMPUTERS BY MEANS OF NATURAL SELECTION. MIT Press, 1992. 1.1, 4.2.2. 7 STORN, R.; PRICE, K. DIFFERENTIAL EVOLUTION A SIMPLE AND EFFICIENT
ADAPTIVE SCHEME FOR GLOBAL OPTIMIZATION OVER OVER CONTINUAOUS SPACES, Technical Report TR-95-012, 1995. 1.1, 3.1.3.

8 REYNOLDS, R. G. AN INTRODUCTION TO CULTURAL ALGORITHMS: Proceeding of the 3rd annual conference on evolutionary programming, p. 131139, 1994. 1.1, 2.6. 9 REYNOLDS, R. G., PENG, B. CULTURAL ALGORITHMS: MODELING OF HOW CULTURES LEARN TO SOLVE PROBLEMS: Proccedings of the 18th IEEE international conference on toolswith artificial intelligence (ICTAI 2004), 2004. 1.1, 2.6.1, 2.6.1. 10 YAO, X.; LIU, Y.; LIN, G. M. EVOLUTIONARY PROGRAMMING MADE FASTER, IEEE Trans. Evolutionary Computation, 3:82102, 1999. 1.1, 4.1.2. 11 KEYMEULEN, D.; ZEBULUM, R.; DUONG, V.; GUO, X.; FERGUSON, I.; STOICA, A. HIGH TEMPERATURE EXPERIMENTS FOR CIRCUIT SELF-RECOVERY. Aceito para publicao na Conferencia de Computao Gentica e Evolutiva (Genetic and Evolutionary Computation Conference GECCO), Seattle, WA, EUA, Junho, 2004. 12 STOICA, A.; ZEBULUM, R.; FERGUSON,M.I.; KEYMEULEN, D.; DUONG, V; DAUD , T; GUO, X. EVOLUTIONARY CONFERATION OF FIELD PROGRAMMABLE ANALOG DEVICES, conferncia especial IEEE Aerospace Conference, Big Sky, MT, EUA, Maro, 2003. 13 CHU, P. P. FPGA PROTOTYPING BY VHDL EXAMPLES: XINLNX SPARTAN-3 VERSION. Cleveland State Universitty: John Wiley & Sons, 2008. 14 GOLDBERG, D. GENETIC ALGORITHMS IN SEARCH, OPTIMIZATION AND MACHINE LEARNING, Addison-Wesley 1989. 15 GUCCIONE, S. A.; LEVI, D. XILINX BITSTREAM INTERFACE: A JAVA-BASED INTERFACE TO FPGA HARDWARE, Bellingham, WA, EUA, 1998.

Vous aimerez peut-être aussi