ALGORITMO GENÉTICO IMPLEMENTADO EM FPGA PARA EVOLUÇÃO DE HARDWARE

Tamanho: px
Começar a partir da página:

Download "ALGORITMO GENÉTICO IMPLEMENTADO EM FPGA PARA EVOLUÇÃO DE HARDWARE"

Transcrição

1 CENTRO UNIVERSITÁRIO POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS ENGENHARIA DA COMPUTAÇÃO ALGORITMO GENÉTICO IMPLEMENTADO EM FPGA PARA EVOLUÇÃO DE HARDWARE Tiago Carvalho Oliveira Monografia apresentada à disciplina de Projeto Final como requisito parcial à conclusão do Curso de Engenharia da Computação, orientada pelo Prof. Valfredo Pilla Júnior UNICENP/NCET Curitiba 2007

2 TERMO DE APROVAÇÃO Tiago Carvalho Oliveira Algoritmo genético implementado em FPGA para evolução de hardware Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca examinadora: Prof. Valfredo Pilla Júnior (Orientador) Prof. Maurício Perretto Prof. Edson Pedro Ferlin Curitiba, 15 de Dezembro de 2007.

3 AGRADECIMENTOS Há muitas pessoas que contribuíram diretamente ou indiretamente para a finalização e sucesso deste projeto de conclusão de curso. Entretanto, para registrar o devido reconhecimento a quem mais contribuiu, deixo meus agradecimentos para aqueles que se esforçaram durante anos para me proporcionar o que eles mesmos não tiveram a oportunidade de ter, meus pais.

4 RESUMO O projeto consiste no em um sistema capaz de evoluir um circuito eletrônico através de um algoritmo genético. Este sistema é composto por três módulos principais: algoritmo genético (embarcado em FPGA), módulo evolutivo (simulado no software SMASH) e módulo de avaliação (software desenvolvido em C++). Os módulos de avaliação e simulação operam em um computador comum e se comunicam com o algoritmo genético (AG) embarcado em uma FPGA. O objetivo principal do projeto é embarcar uma variante de um algoritmo genético específico (Algoritmo Genético Compacto) em FPGA. A evolução do hardware é utilizada como validação da capacidade de busca de solução do AG embarcado com um problema complexo. O circuito simulado (circuito evoluído) é um amplificador de baixo ruído (LNA Low Noise Amplifier) que usa tecnologia de circuitos integrados CMOS e modelagem de transistores MOSFET do tipo enriquecimento com base em corrente. Valores e dimensões de componentes são utilizadas como variáveis no projeto do circuito a fim de obter um desempenho adequado do amplificador para a freqüência central de operação. Foram determinados quatro parâmetros para avaliação de desempenho: impedância do circuito, potência dissipada, diferença de fase e linearidade de operação. Palavras-chave: Hardware evolutivo, Computação Evolutiva, Algoritmo Genético, Algoritmo Genético Compacto (CGA), Algoritmo Evolutivo, Field Programmable Array (FPGA), Computação Reconfigurável, Hardware Reconfigurável, Amplificador de baixo ruído (LNA).

5 Genetic Algorithm implemented on FPGA for Evolvable Hardware applications ABSTRACT The project consists on a system capable of evolving (through the use of Genetic Algorithms) a circuit. This system is formed by three main modules: genetic algorithm (embedded on FPGA), evolvable module (simulated on SMASH software) and assessment module (C++ developed software). The assessment module runs on a personal computer and has an interface with the genetic algorithm (GA) embedded on a FPGA. The project main objective is to embed a variation of a specific GA (the compact genetic algorithm) on a FPGA. The hardware evolution is used to validate the search power of the embedded GA to solve a complex problem. The simulated circuit (evolvable circuit) is a Low Noise Amplifier (LNA) based on CMOS integrated circuit technology and MOSFET transistor modeling. Values and dimensions of components are used as variables on circuit design project to obtain an amplifier adequate performance on a central operation frequency. Four parameters are used to assess performance: circuit impedance, dissipated power, phase difference and operating linearity. Key words: Evolvable Hardware, Evolutionary Computation, Genetic Algorithm, Compact Genetic Algorithm (CGA), Evolutionary Algorithm, Field Programmable Array (FPGA), Reconfigurable Computing, Low Noise Amplifier (LNA).

6 SUMÁRIO Capítulo 1 - Introdução Motivação Definição do Trabalho...11 Capítulo 2 Fundamentação Teórica Dispositivos Lógicos Programáveis Field Programmable Gate Arrays (FPGA) Computação Evolutiva Algoritmos Genéticos Algoritmo Genético Compacto Hardware Evolutivo...18 Capítulo 3 Especificação do Projeto Especificação do Hardware Separação Física Separação Lógica Especificação do Software...21 Capítulo 4 Desenvolvimento e Implementação Hardware Diagrama em blocos Materiais Software Diagrama de fluxo de dados do Controlador do AGC Diagrama de fluxo de dados do software avaliador Diagrama de Estados do Controlador do AGC Diagrama de Estados do componente de comunicação...35 Capítulo 5 Validação e Resultados Simulação do AGC Validação do AGC e comunicação com o computador Validação do AGC para evolução de hardware...39 Capítulo 6 - Conclusão Capítulo 7 - Referências Bibliográficas... 44

7 LISTA DE FIGURAS Fig. 1 - Módulos do projeto Fig. 2 - Estrutura de Algoritmo Evolutivo Fig. 3 - Pseudocódigo do Algoritmo Genético Compacto Fig. 4 - Separação dos módulos de hardware Fig. 5 - Blocos funcionais do projeto e fluxo de dados Fig. 6 - Diagrama em blocos do AGC Fig. 7 - Placa DE2 da Altera Fig. 8 - Cabo de conexão entre a porta paralela e a placa DE Fig. 9 - Conexão entre a placa DE2 e o cabo que liga à porta paralela Fig Diagrama de fluxo de dados do AGC Fig Código-fonte de configuração de arquivos e chamada de execução do SMASH 32 Fig Diagrama de fluxo de dados do software de cálculo do fitness Fig Código da função de comunicação do computador com a FPGA Fig Esquemático do circuito do LNA... 40

8 LISTA DE SIGLAS AG Algoritmo Genético AGC Algoritmo Genético Compacto CE Computação Evolutiva EA Algoritmo Evolutivo FPGA Field Programmable Gate Array HE Hardware Evolutivo LNA Low noise amplifier NCET- Núcleo de Ciências Exatas e Tecnológicas PC Computador Pessoal PLD Programmable logic device UNICENP Centro Universitário Positivo

9 LISTA DE TABELAS TABELA 1 Características da família Cyclone II de FPGAs TABELA 2 Estados da máquina do controlador do AGC TABELA 3 Estados da máquina do componente de comunicação TABELA 4 Estados do AGC e ciclos de clock TABELA 5 Restrições dos parâmetros do LNA TABELA 6 Resultados das simulações... 41

10 CAPÍTULO 1 - INTRODUÇÃO O crescimento acelerado nas últimas décadas da utilização de circuitos e componentes eletrônicos nos mais diversos tipos de equipamentos e instalações fez com que surgissem novas necessidades além do desenvolvimento e implementação dos circuitos. Entre elas podemos citar a preocupação com o consumo de energia, disponibilidade de espaço físico e acesso à manutenção. Algumas aplicações eletrônicas requerem um pequeno consumo de energia e pequeno espaço físico, como por exemplo, dispositivos portáteis alimentados por bateria. Alguns desses dispositivos podem ainda ter finalidades cuja localização ou funcionamento impeçam manutenções regulares, seja por custo ou ininterruptibilidade das operações. Para estes circuitos eletrônicos são pesquisadas diversas formas de manutenção remota visando minimizar o problema de acesso. Entretanto, há aplicações em que não é possível prever ou calcular as alterações necessárias em um circuito eletrônico, como o desgaste de componentes em satélites artificiais devido às oscilações térmicas e tempo de utilização. Motivado pela necessidade específica destas aplicações eletrônicas este trabalho tem por objetivo embarcar um algoritmo genético em um dispositivo de hardware de baixo consumo de energia. Este algoritmo através de variáveis pré-definidas irá evoluir um circuito para que sua funcionalidade esteja dentro do esperado. Através de soluções de computação evolutiva como esta (algoritmos genéticos), soluções de hardware evolutivo podem ser criadas de forma que circuitos eletrônicos não precisem de monitoramento de variáveis, cálculos de otimização ou intervenção humana para sua manutenção (TETSUYA HIGUCHI, et al, 1999). 1.1 Motivação A principal motivação para o desenvolvimento deste projeto é a pesquisa em uma área relativamente nova (evolução de hardware). O hardware evolutivo se adapta para a realização de novas funcionalidades ou a alterações no ambiente durante seu funcionamento, reconfigurando sua própria estrutura de hardware automaticamente. 10

11 1.2 Definição do Trabalho O projeto consiste no desenvolvimento de um circuito eletrônico capaz de evoluir por meio de um algoritmo genético um. Este sistema (Figura 1) é composto por três módulos principais: algoritmo genético (embarcado em FPGA), módulo evolutivo (simulado no software SMASH) e módulo de avaliação (software desenvolvido em C++). O módulo avaliador opera em um computador comum que se comunica com o algoritmo genético (AG) implementado em uma FPGA. O objetivo principal do projeto é embarcar uma variante de um algoritmo genético específico (Algoritmo Genético Compacto) em FPGA. A evolução do hardware é utilizada como validação da capacidade de busca de solução do AG embarcado com um problema complexo. Fig. 1 - Módulos do projeto 11

12 CAPÍTULO 2 FUNDAMENTAÇÃO TEÓRICA O projeto consiste na implementação de um algoritmo genético específico (algoritmo genético compacto apresentado por GOLDBERG, et al., 1999) em um dispositivo lógico programável (PLD) do tipo FPGA. A utilização deste AG para a solução de um problema de HE foi escolhida porque problemas de hardware evolutivo (HE) são relativamente complexos e podem demonstrar a robustez e aplicabilidade do AG. A fundamentação teórica está divida em três partes, de forma a abranger estes três tópicos fundamentais do projeto (PLD, AG e HE) e suportar as escolhas tomadas para a utilização de um tipo específico de cada tecnologia. 2.1 Dispositivos Lógicos Programáveis Um dispositivo lógico programável ou PLD é um componente eletrônico usado para construir circuitos digitais. Diferente de uma porta lógica, que tem uma função fixa, um PLD tem uma função indefinida no momento da fabricação. Antes que um PLD possa ser usado em um circuito ele deve ser programado. Quando soluções inovadoras para problemas difíceis de projeto de hardware são necessárias, programação com algoritmos genéticos pode ser usada para criar projetos de hardware em termos de linguagem de descrição de hardware. A estrutura de um dispositivo de hardware reconfigurável pode ser alterada quantas vezes forem necessárias realizando no dispositivo o download de string de bits, chamado de bits de configuração. FPGAs são um exemplo típico de dispositivos reconfiguráveis de hardware (HIOGUCHI et al, 1999). Entretanto, o objetivo de utilização de FPGAs neste circuito não é a evolução e reconfiguração lógica de um dispositivo de hardware digital. A utilização de FPGA está relacionada à facilidade de programação e testes para fins didáticos, como também o baixo consumo de energia e alta velocidade de processamento para que o AG seja embarcado Field Programmable Gate Arrays (FPGA) As FPGAs são uma classe específica de PLDs. Uma FPGA é um dispositivo semicondutor que contém componentes de lógica programável e interconexões programáveis. Os componentes de 12

13 lógica programável podem ser configurados para duplicar a funcionalidade de portas lógicas básicas como AND, OR, XOR, NOT ou funções combinacionais mais complexas como decoders ou funções matemáticas simples. Na maioria das FPGAs estes elementos lógicos programáveis (ou blocos lógicos, na linguagem de FPGA) também incluem elementos de memória, que podem ser simples flip-flops ou blocos de memória mais completos. A hierarquia das interconexões programáveis permite que blocos lógicos de uma FPGA estejam interconectados conforme necessário de acordo com o sistema de elaboração de projeto. Estes blocos lógicos e interconexões podem ser programados após a fabricação pelo cliente / desenvolvedor (por isto o termo field programmable, de programável em campo) de forma que a FPGA possa realizar qualquer função lógica necessária. 2.2 Computação Evolutiva A computação evolutiva (CE) é uma área de desenvolvimento e pesquisa da ciência da computação. Ela abrange a construção, aplicação e estudo de algoritmos baseados na seleção natural. A CE é conduzida com a ajuda de algoritmos evolutivos. Um algoritmo evolutivo (AE) utiliza alguns mecanismos inspirados na evolução biológica como: reprodução, mutação, recombinação, seleção natural e sobrevivência do mais apto. Soluções candidatas para o problema de otimização fazem o papel de indivíduos em uma população e a função de custo determina o ambiente em que a solução vive (VAN ZUBEN, 2000). Os sistemas baseados em computação evolutiva mantêm uma população de soluções potenciais, aplicam processos de seleção baseados na adaptação de um indivíduo e também empregam outros operadores genéticos. Diversas abordagens para sistemas baseados em evolução foram propostas, sendo que as principais diferenças entre elas dizem respeito aos operadores genéticos empregados (VAN ZUBEN, 2000). Segundo ZUBEN as principais abordagens propostas na literatura são: algoritmos genéticos; estratégias evolutivas; programação evolutiva. Uma extensão dos algoritmos genéticos, denominada programação genética, foi introduzida por Koza (1992), e tem por objetivo básico evoluir programas de computador usando os princípios 13

14 da evolução natural. Atualmente a programação genética tem sido aplicada a uma grande variedade de problemas, como na síntese de circuitos elétricos analógicos e na definição de arquiteturas de redes neurais artificiais (VAN ZUBEN, 2000). A estrutura de um algoritmo evolutivo pode ser dada na forma apresentada na Figura 2. Fig. 2 - Estrutura de Algoritmo Evolutivo t t O algoritmo evolutivo mantém uma população de indivíduos P t) = { x,..., x } na iteração ( 1 (geração) t. Cada indivíduo representa um candidato à solução do problema em questão e, em qualquer implementação computacional, assume a forma de alguma estrutura de dados S. Cada solução t x i é avaliada e produz alguma medida de adaptação, ou fitness. n Uma nova população é formada na iteração t + 1 pela seleção dos indivíduos mais adaptados. Alguns indivíduos da população são submetidos a um processo de alteração por meio de operadores genéticos para formar novas soluções. Após um número de gerações, a condição de parada deve ser atendida, a qual geralmente indica a existência, na população, de um indivíduo que represente uma solução aceitável para o problema, ou quando o número máximo de gerações foi atingido (VAN ZUBEN, 2000) Algoritmos Genéticos Os AGs foram introduzidos por Holland em 1975 com o objetivo de formalizar matematicamente e explicar rigorosamente processos de adaptação em sistemas naturais e desenvolver sistemas artificiais (simulados em computador) que retenham os mecanismos 14

15 originais encontrados em sistemas naturais. Os algoritmos genéticos utilizam os operadores de crossover e mutação. A terminologia adotada em AGs é originada da teoria da evolução natural e da genética. Um indivíduo da população é representado por um único cromossomo, o qual contém a codificação (genótipo) de uma possível solução do problema (fenótipo). Cromossomos são usualmente implementados na forma de listas de atributos ou vetores, onde cada atributo é conhecido como gene. Os possíveis valores que um determinado gene pode assumir são denominados alelos. O processo de evolução executado por um algoritmo genético corresponde a um procedimento de busca em um espaço de soluções potenciais para o problema. Como enfatiza MICHALEWICZ (1996), esta busca requer um equilíbrio entre dois objetivos aparentemente conflitantes: o aproveitamento das melhores soluções e a exploração do espaço de busca (exploitation exploration). Este equilíbrio está muito longe de ocorrer quando se considera outras técnicas de busca: métodos de otimização clássicos, como o método do gradiente, são exemplos de métodos que apenas aproveitam a melhor solução na busca de possíveis aprimoramentos, sem realizar uma exploração do espaço de busca; métodos de busca aleatória, por sua vez, são exemplos típicos de métodos que exploram o espaço de busca ignorando o aproveitamento de regiões promissoras do espaço. Algoritmos genéticos constituem, assim, uma classe de métodos de busca de propósito geral que apresentam um balanço notável entre aproveitamento de melhores soluções e exploração do espaço de busca. Embora apresentem etapas não-determinísticas em seu desenvolvimento, os algoritmos genéticos não são métodos de busca puramente aleatórios, pois combinam variações aleatórias com seleção, polarizada pelos valores de adequação (fitness) atribuídos a cada indivíduo. Outra propriedade importante dos algoritmos genéticos (assim como de todos os algoritmos evolutivos) é que eles mantêm uma população de soluções candidatas enquanto que os métodos alternativos processam um único ponto no espaço de busca a cada instante (VAN ZUBEN, 2000). O processo de busca é, portanto, multi-direcional, através da manutenção de soluções candidatas, e encorajando a troca de informação entre as direções. A cada geração, soluções relativamente 15

16 boas se reproduzem, enquanto que soluções relativamente ruins são eliminadas. Para fazer a distinção entre diferentes soluções, é empregada uma função de avaliação ou de adaptabilidade (fitness) que simula o papel da pressão exercida pelo ambiente sobre o indivíduo (VAN ZUBEN, 2000). Um algoritmo genético para um problema particular deve ter os seguintes componentes: uma representação genética para soluções candidatas ou potenciais (processo de codificação); uma maneira de criar uma população inicial de soluções candidatas ou potenciais; uma função de avaliação que faz o papel da pressão ambiental, classificando as soluções em termos de sua adaptação ao ambiente (ou seja, sua capacidade de resolver o problema); operadores genéticos; valores para os diversos parâmetros usados pelo algoritmo genético (tamanho da população, probabilidades de aplicação dos operadores genéticos, etc.) Algoritmo Genético Compacto O objetivo principal deste trabalho é a implementação em hardware (no caso, FPGA) de um algoritmo genético. Diversos AEs baseados em hardware têm sido propostos nos últimos anos. Cada um é uma variação do algoritmo genético simples (simple genetic algorithm, SGA) adaptado para implementação em hardware, e cada um proporciona aumento de desempenho sobre o mesmo algoritmo implementado em um computador. Uma maneira em que memória significativa (e, portanto, potência e espaço) pode ser economizada em AEs baseados em hardware é representar populações de soluções candidatas como vetores de probabilidade ao invés de grupos de strings de bits. Um AG padrão representa uma população candidata como um grupo de genomas de string de bits, necessitando de espaço de memória RAM embarcada proporcional a LN onde L é o comprimento do genoma e N é o número de candidatos da população. Um método baseado em vetor de probabilidades representa a população como um único vetor de probabilidades em que cada bit em cada string de bits de um candidato teria o valor de zero ou um. Adotando a interpretação da freqüência relativa de probabilidade, cada elemento no vetor de probabilidades representa a proporção de membros de uma população simulada que tem um ou zero na posição do bit correspondente. Presumindo uma 16

17 representação de probabilidade binária de precisão fixa seria necessário L (log 2 N) bits de memória para representar uma população de tamanho L com strings de N bits. Para genomas de mesmo tamanho, AGs padrão iriam precisar memória de O (N), enquanto um AG baseado em vetor de probabilidades precisaria de O (log 2 N). Pelo menos dois AE que empregam codificação de população em vetores de probabilidade têm sido explorados na literatura. Destes, o algoritmo genético compacto (AGC) é de interesse particular porque ele simula algumas propriedades do SGA e porque já há na literatura uma implementação em hardware elegante (GALLAGHER et al. 2004). Segundo GALLAGHER et al (2004), o AGC simples não tem poder de busca suficiente para uso em diversos projetos de HE. Portanto, para solucionar o problema do circuito evolutivo no presente trabalho foi utiliza-se uma variável de uma família de AGC proposta por JOHN GALLAGHER et al (2004) e a implementação de hardware também proposta no mesmo artigo. Os fundamentos deste AGC são encontrados no modelo original de GOLDBERG et al. (1999). Este modelo é descrito na Figura 3. 17

18 Fig. 3 - Pseudocódigo do Algoritmo Genético Compacto A família de AGC proposta por GALLAGHER et al. (2004) sobre o modelo de GOLDBERG et al. (1999) e utilizada neste projeto possui duas modificações em relação ao AGC padrão: elitismo e mutação. 2.3 Hardware Evolutivo Hardware evolutivo é uma área de pesquisa que objetiva construir, por exemplo, circuitos eletrônicos cujo modelamento ou operação são definidos através de um processo de evolução. Hardware evolutivo é um novo campo que relaciona hardware reconfigurável, inteligência artificial e sistemas autônomos e tolerantes a falhas. Hardware evolutivo se refere ao hardware que pode mudar sua arquitetura e comportamento dinamicamente e autonomamente pela interação com seu ambiente. Na sua forma fundamental um AE manipula uma população de indivíduos onde cada indivíduo descreve como construir um circuito candidato. A cada circuito é associado um fitness, que indica quão bem o circuito candidato satisfaz a especificação de projeto. O AE usa operadores aleatórios para evoluir novas configurações de circuitos a partir de configurações existentes. Feito corretamente, o AE irá ao longo do tempo evoluir uma configuração de circuito que exibe comportamento desejável. Cada candidato pode ser tanto simulado quanto fisicamente implementado em um dispositivo reconfigurável. Dispositivos reconfiguráveis típicos são FPGAs (para projetos digitais) ou field programmabel analog arrays (FPAAs, para projetos analógicos). Há diversas razões para evoluir circuitos. Em muitos casos os métodos convencionais (ex. fórmulas) de projeto podem ser utilizados para desenhar circuitos. Mas em outros casos a especificação de projeto não fornece informação suficiente para permitir o uso de métodos convencionais. Por exemplo, a especificação pode somente estabelecer o comportamento do hardware em questão. Em outros casos o circuito deve adaptar-se (ex: modificar sua configuração) para compensar falhas ou talvez uma mudança operacional no ambiente. 18

19 Hardware evolutivo é um novo conceito no desenvolvimento de máquinas adaptativas on-line. Em contraste com o hardware convencional onde a estrutura é irreversivelmente fixada no processo de desenho, HE é designado para se adaptar a mudanças nos requisitos das tarefas ou mudanças no ambiente através da sua habilidade de reconfigurar sua própria estrutura de hardware on-line (dinamicamente) e autonomamente. Esta capacidade de adaptação, atingida por AEs (como os AGs) tem grande potencial para desenvolvimento de aplicações industriais inovadoras (HIGUCHI et al. 1999). Apesar do conceito de HE ser relativamente novo, algumas aplicações de HE já estão sendo avaliadas para uso comercial. Há na literatura artigos sobre aplicações reais de HE analógico e digital. HIGUCHI et al (1999) apresenta cinco chips de HE e suas aplicações práticas, demonstrando a aplicabilidade comercial de HE. O fitness de um circuito evoluído pode ser medido através do quão bem ele está de acordo com a especificação do projeto. O fitness em problemas de HE é determinado por dois métodos: Evolução extrínseca: todos os circuitos são simulados para avaliar seu desempenho; Evolução intrínseca: testes físicos são realizados em hardware. Na evolução extrínseca apenas a melhor solução final da população final do AE é fisicamente implementada enquanto que na evolução intrínseca todos os indivíduos em cada geração do AE são fisicamente implementados e testados. 19

20 CAPÍTULO 3 ESPECIFICAÇÃO DO PROJETO 3.1 Especificação do Hardware Separação Física O hardware do projeto é composto por dois módulos principais: kit didático da FPGA e computador pessoal. A Figura 4 ilustra a separação entre o os módulos do hardware. Fig. 4 - Separação dos módulos de hardware Separação Lógica O módulo de avaliação dos indivíduos (desenhos de circuitos) gerados pelo algoritmo genético está implementado em um computador. Apenas o processamento do AG é realizado na FPGA, conforme diagrama em blocos do projeto (Figura 5). 20

21 Algoritmo genético implementado em FPGA para evolução de hardware - Blocos funcionais Geração de indivíduos Avaliação dos indivíduos Apresentação do Resultado Circuito Evolutivo (PC) Módulo Avaliador (PC) Algoritmo Genético (FPGA) Início Gerador de números aleatórios Comparação com o vetor de probabilidades e geração do novo inivíduo Não Recebimento dos dados (indivíduo) Conversão dos dados para formato texto padrão dos parâmetros Arquivo texto com parâmetros do indivíduo Software Smash Incremento/ decremento do vetor de probabilidades Número de indivíduos atingido? Arquivo com resultado da simulação Identificação e extração dos parâmetros. Cálculo do fitness. Envio de dados (fitness) Sim Recebimento dos dados (indivíduo) Conversão dos dados para formato texto padrão dos parâmetros Geração do indivíduo final Arquivo texto com parâmetros do indivíduo Fim Fig. 5 - Blocos funcionais do projeto e fluxo de dados 3.2 Especificação do Software O software do projeto é responsável por realizar a comunicação de interface entre a FPGA e o programa SMASH e calcular o fitness dos indivíduos. Conforme ilustrada na Figura 5, a simulação e geração de dados de resposta do circuito são realizados pelo software de projeto e simulação SMASH (DOLPHIN INTEGRATION, O software desenvolvido para este projeto recebe os dados do indivíduo gerado na FPGA, configura os arquivos (.nsx e.pat) que descrevem o circuito e sinais de entrada de acordo com o indivíduo, executa o SMASH 21

22 com comando de simulação, recebe a resposta por meio de arquivo de simulação do SMASH, calcula o fitness e o envia para a FPGA. Não há interação do usuário com o software do projeto. A simulação e evolução de hardware são simuladas em software para facilitar a implementação e substituir o hardware que realizaria estas funções. A comunicação entre a FPGA e o software é realizada por meio da porta paralela do PC. O software foi desenvolvido na linguagem de programação C++ e o computador pessoal utiliza o sistema operacional Windows XP. 22

23 CAPÍTULO 4 DESENVOLVIMENTO E IMPLEMENTAÇÃO 4.1 Hardware Com exceção do módulo de avaliação, todo o algoritmo genético está implementado em FPGA. Para elaborar o circuito foi utilizado o software Quartus II da Altera. Os blocos elaborados, suas funções e equipamentos utilizados estão descritos nos próximos tópicos Diagrama em blocos Todo os blocos do algoritmo genético compacto foram desenvolvidos em linguagem de descrição de hardware da Altera (AHDL). Cada componente foi compilado individualmente e gerado o arquivo de inclusão de símbolo. A Figura 6 relaciona os blocos e seus pinos. A estrutura representada do AGC é para um indivíduo de n bits com fitness de y bits. MUX4x1 MUX2x1 Fig. 6 - Diagrama em blocos do AGC Os componentes do AGC da Figura 6 e seus pinos estão descritos abaixo: Gerador de números aleatórios (RNG): O RNG é um gerador de números pseudoaleatórios do tipo LFSR (Logical Feedback Shift Register). O pino <load> é ativado na inicialização do AGC. 23

24 A cada ciclo de clock o RNG gera um novo número aleatório, seja ele utilizado ou não no fluxo de dados do AGC. O número aleatório do diagrama é composto por 8 bits para uma representação de um número entre 0 e 1 com ponto fixo. Registrador de probabilidade (B_PBR): O registrador de probabilidades armazena um valor entre 0 e 1 em uma representação em ponto fixo. Este valor é a probabilidade de um indivíduo na população possuir o bit em 0 ou 1 em uma determinada posição do genoma. Quando o pino <b_clear> é ativado o registrador é configurado para 0x80, indicando que a probabilidade é iniciada em 50% para 0 ou para 1. Os pinos <b_inc> e <b_dec> respectivamente incrementam e diminuem o valor da probabilidade de acordo com o valor configurado no desenho do componente. Registrador de mutação (M_PBR): O registrador de mutação é muito semelhante ao registrador de probabilidade com a diferença da ativação do pino <m_clear> que zera o valor do registrador. Com o registrador de mutação zerado não há mutação, desta forma, no processo de inicialização do AGC o pino de incremento (<m_inc>) é ativado quantas vezes for necessário para determinar a probabilidade de mutação desejada. Buffer (BUF): O buffer possui apenas 2 registradores de armazenamento, acessados através de duas saídas. A gravação é permitida através dos pinos <b_write> (para ativar a gravação) e <i_sel> (para selecionar o registrador). Um multiplexador simples é utilizado para determinar qual valor de registrador está disponível no barramento de saída. Módulo de Ajuste (INC/DEC): O Módulo de ajuste faz alterações no registrador de probabilidades todas as vezes que o pino <p_fix> é ativado. Comparando os bits presentes no buffer e contendo a informação do registrador E (registrador do bit de elite) o módulo de ajuste através de um circuito combinacional determina se a probabilidade de cada bit deve ser incrementada ou diminuída, ou ainda, se não deve ser alterada. A probabilidade de um bit só deve ser alterada se o indivíduo avaliado possui o bit diferente do indivíduo apontado como campeão. O incremento ou decremento da probabilidade ocorre na direção do valor do bit do indivíduo campeão. Registrador do bit de elite (E_REG): O registrador do bit de elite indica qual registrador do buffer contém o bit de elite (indivíduo campeão). Este componente do AGC é compartilhado por todos os bits do genoma, ou seja, há apenas um registrador E. O pino <e_bit> é configurado 24

25 pelo módulo de avaliação, que após calcular o fitness, altera o valor do pino de acordo com o slot em que se encontra o indivíduo melhor avaliado. O pino <e_load> é controlado pela unidade de controle do AGC. Comparador (CMP_2_1): O comparador desta estrutura de AGC possui duas entradas e uma saída. As entradas são de 8 bits, utilizando a mesma representação de número com ponto fixo do RNG e B_PBR. Se o valor da entrada do RNG é maior que a entrada do B_PBR (ou M_PBR) o valor de saída é 0, caso contrário o valor de saída é 1. Função de fitness (FUNCAO): O módulo de função de fitness é o componente que a partir dos dados do barramento com os bits do indivíduo calcula o fitness. Sua saída <fitness> possui largura y, dependendo de qual resolução se deseja do valor do fitness. O pino <r_write> indica para o módulo quando o indivíduo já está disponível no barramento para que seja calculado seu fitness. O pino <fit_ready> indica para o módulo controlador da avaliação que o resultado do fitness do indivíduo já foi calculado e está disponível no barramento <fitness>. Controlador de avaliação (FEV): A versão do AGC implementada contempla o elitismo do indivíduo e para que não seja necessário em todas as rodadas de comparação de indivíduos calcular novamente o fitness do atual campeão se faz necessário um registrador para seu armazenamento. Este módulo possui dois registradores de largura y para armazenar o fitness do indivíduo campeão e do competidor. Em cada rodada de avaliação apenas o fitness do competidor é calculado. Após o cálculo pelo módulo FUNCAO e a gravação do fitness no registrador do competidor (de acordo com o pino <i_sel>) o registrador que indica o indivíduo campeão (E_REG) é ajustado de acordo com o registrador de fitness que possui maior valor. Para realizar estes passos o componente possui uma máquina de estados que é iniciada pela ativação do pino <p_eval>. Controlador do AGC (CTRL): O componente foi omitido na Figura 6 por possuir muitas conexões com os demais módulos, o que poderia poluir visualmente o diagrama. Ele é responsável por gerenciar todo o fluxo de informações através dos demais componentes por meio da ativação dos pinos de controle dos módulos. Este módulo possui uma máquina de estados para determinar as ativações dos pinos de controle. Os estados, pinos de entrada e pinos de saída do controlador do AGC estão descritos no capítulo 4 no tópico (diagrama de estados do controlador do AGC). 25

26 Outros componentes: A estrutura do AGC ainda é composta por dois multiplexadores (um de quatro entradas e outro de duas entradas) e uma porta XOR simples Materiais Os componentes do AGC foram desenvolvidos em AHDL e integrados através de esquemático no software Quartus II da Altera. Para a implementação em hardware foi utilizada uma FPGA da Altera disponível em um kit didático. O kit didático utilizado (Placa DE2, Figura 7) é para desenvolvimento de aplicações com o processador NIOS. Ele possui uma FPGA Altera da família Cyclone II, modelo EP2C35. Fig. 7 - Placa DE2 da Altera FONTE: ALTERA CORPORATION ( Da família de FPGAs de baixo custo Cyclone II, o modelo EP2C35 é um modelo intermediário e contêm blocos lógicos, 105 blocos de RAM e máximo de 475 pinos utilizáveis pelo usuário (Tabela 1). Este kit foi o escolhido para desenvolvimento do projeto porque facilita a configuração da FPGA e sua comunicação com o PC por meio dos barramentos de expansão. TABELA 1 Características da família Cyclone II de FPGAs Característica \ Modelo EP2C5 EP2C8 EP2C20 EP2C35 EP2C50 EP2C70 Elementos Lógicos M4K RAM blocks (4 Kbits mais 512 parity bits) Total RAM bits Máximo pinos de E/S (usuário) FONTE: Altera DE2 Development and Education Board User Manual 26

27 Não foi utilizado nenhum componente já disponível no kit para comunicação ou mesmo o processador NIOS. Apenas a porta USB Blaster foi utilizada para a configuração da FPGA. Toda a arquitetura do AGC e comunicação com o PC foram implementadas diretamente no chip através de lógica desenvolvida em linguagem de descrição de hardware da Altera (AHDL). A comunicação entre a FPGA e o computador através da porta paralela foi estabelecida através de um cabo (Figura 8) montado para realizar esta ligação. Fig. 8 - Cabo de conexão entre a porta paralela e a placa DE2 Foram utilizados os oito pinos de dados da porta paralela e os pinos wait, write e ground, totalizando onze pinos. A conexão do cabo com a porta paralela do computador foi realizada por meio do conector padrão DB25. A conexão entre o cabo e a placa DE2, conforme exibido pela Figura 9, foi realizada por meio dos conectores do cabo ao barramento de pinos de expansão da placa. 27

28 Fig. 9 - Conexão entre a placa DE2 e o cabo que liga à porta paralela 4.2 Software O software relacionado diretamente ao AGC é apenas o firmware do componente controlador do AGC. Nele está a máquina de estados que controla todo o fluxo de informações entre os demais componentes do AGC. O software no computador tem o objetivo de comunicar-se com a FPGA para obter os valores dos indivíduos, simular o circuito no software SMASH, calcular o fitness e enviar o valor para a FPGA Diagrama de fluxo de dados do Controlador do AGC A Figura 10 representa o diagrama de fluxo de dados do componente controlador do AGC (CTRL). Os números do diagrama estão relacionados com a descrição dos passos. Os passos contêm a descrição dos procedimentos realizados e sua relação com o algoritmo genético utilizado (algoritmo genético compacto padrão com variação de elitismo e mutação). Eles estão relacionados também com os estados da máquina do controlador. Passo 1) Todos os registradores recebem o sinal de clear. Apenas os registradores que representam o vetor de probabilidades são iniciados em 0,5 (0x80 em uma representação já comentada de ponto fixo de 8 bits). Estas ações são realizadas no estado i00 do CTRL. Em 28

29 seguida, no estado i01, os registradores do gerador de números aleatórios são inicializados com um valor pré-definido no gerador e os registradores de probabilidade de mutação são inicializados de acordo com um valor definido de mutação (valores configurados no código em AHDL). Passo 2) Um indivíduo é gerado pelo comparador utilizando números aleatórios do RNG e probabilidades do B_PBR. Este indivíduo é gravado no slot campeão do buffer. Este passo corresponde ao estado g00 do CTRL. Passo 3) O módulo de avaliação dos indivíduos (FEV) recebe sinal para avaliar o indivíduo do slot campeão do buffer. O FEV envia sinal para o módulo FUNCAO iniciar o cálculo do fitness do indivíduo. Ao fim deste processo o FEV recebe um sinal indicando o término da avaliação e armazena o resultado no registrador interno indicado pelo bit de campeão. Este passo corresponde aos estados g01 e g02 do CTRL. Passo 4) Um indivíduo é gerado pelo comparador utilizando números aleatórios do RNG e probabilidades do B_PBR. Este indivíduo é gravado no slot competidor do buffer. Este passo corresponde ao estado g03 do CTRL. Passo 5) O módulo de avaliação dos indivíduos (FEV) recebe sinal para avaliar o indivíduo do slot competidor do buffer. O FEV envia sinal para o módulo FUNCAO iniciar o cálculo do fitness do indivíduo. Ao fim deste processo o FEV recebe um sinal indicando o término da avaliação e armazena o resultado no registrador interno diferente do bit indicador de campeão. Este passo corresponde aos estados a00 e a01 do CTRL. Passo 6) O FEV gera o bit correspondente ao slot do buffer que contém o indivíduo de melhor fitness e o CTRL envia o sinal para o registrador E atualizar seu valor. Este passo corresponde ao estado a01 do CTRL. Passo 7) As linhas de ajuste de B_PBR (<b_inc> e <b_dec>) são ativadas de acordo com as necessidades de ajuste calculadas pelo módulo INC/DEC. Este módulo é um circuito combinacional e realiza ajuste no vetor de probabilidade fazendo com que ele sofra uma alteração na direção do indivíduo campeão em um determinado bit caso ele seja diferente entre o campeão e o competidor. Este passo corresponde ao estado c00 do CTRL. 29

30 Passo 8) Um indivíduo é gerado pelo comparador utilizando números aleatórios do RNG e probabilidades do M_PBR. Os bits desse indivíduo passam por uma porta lógica XOR com os bits do indivíduo do slot campeão do buffer. O indivíduo resultante é gravado no slot de competidor do buffer. Este passo corresponde ao estado m00 do CTRL. Passo 9) O módulo de avaliação dos indivíduos (FEV) recebe sinal para avaliar o indivíduo do slot competidor do buffer. O FEV envia sinal para o módulo FUNCAO iniciar o cálculo do fitness do indivíduo. Ao fim deste processo o FEV recebe um sinal indicando o término da avaliação e armazena o resultado no registrador interno diferente do bit indicador de campeão. Este passo corresponde aos estados m01 e m02 do CTRL. Passo 10) O FEV gera o bit correspondente ao slot do buffer que contém o indivíduo de melhor fitness e o CTRL envia o sinal para o registrador E atualizar seu valor. Este passo corresponde ao estado m02 do CTRL. Após o passo 10 é verificado se o processo de evolução chegou ao fim. Podem existir diversas condições de parada como, por exemplo: número de gerações, convergência parcial do vetor de probabilidades, convergência total do vetor de probabilidades, fitness mínimo atingido, etc. Caso seja verificado que o processo de evolução não chegou ao fim o controlador executa novamente o processo a partir do passo três. Nos casos descritos como teste do CGA a condição de parada (quantidade de indivíduos desejada) foi determinada em software. 30

31 Início BUF[0], BUF[1], E 0 RNG(load) B_PBR 0,5 M_PBR Taxa de Mutação 1 BUF[E] CMP(RNG, B_PBR) 2 FEV(E) FUNCAO(BUF[E]) 3 BUF[!E] CMP(RNG, B_PBR) 4 FEV(!E) FUNCAO(BUF[!E]) 5 E FEV(BIT_E) 6 B_PBR INCDEC(E, BUF[0], BUF[1]) 7 Não BUF[!E] XOR(CMP(RNG, M_PBR), BUF[E]) 8 FEV(!E) FUNCAO(BUF[!E]) 9 E FEV(BIT_E) 10 Fim do processo? Sim Fim Fig Diagrama de fluxo de dados do AGC 31

32 4.2.2 Diagrama de fluxo de dados do software avaliador O software responsável pelo cálculo do fitness dos indivíduos gerados pelo AGC na FPGA foi completamente desenvolvido em linguagem de programação C++ com o uso do compilador Borland C++ Builder 6.0. O programa não possui interface com o usuário e não é orientado a objetos. Antes de executar o software o usuário já deve ter ligado a placa com a FPGA contendo a programação do AGC. Ao chamar o programa de cálculo do fitness o mesmo já inicia a comunicação com o AGC conforme o diagrama da Figura 12. Não há indicadores do andamento do processo. Ao final das avaliações dos indivíduos (o programa está configurado para avaliar 301 indivíduos por execução) o programa é encerrado automaticamente e gera um arquivo texto de log contendo as informações dos indivíduos gerados e dos fitness calculados na execução. Fig Código-fonte de configuração de arquivos e chamada de execução do SMASH O software de simulação de circuitos SMASH é utilizado devido à complexidade dos cálculos envolvidos. Para se comunicar com o software SMASH são utilizados dois arquivos de texto 32

33 contendo as configurações do circuito (arquivo.nsx) e os sinais de entrada (arquivo.pat). O SMASH é chamado por linha de comando utilizando estes dois arquivos como parâmetros para simulação e retorna dois arquivos com os resultados (arquivos com extensões.op e.dat). A Figura 11 contém trechos de código do software com funções de configuração dos arquivos e chamada do software SMASH com os parâmetros necessários para a simulação com os arquivos configurados. Fig Diagrama de fluxo de dados do software de cálculo do fitness 33

34 4.2.3 Diagrama de Estados do Controlador do AGC A máquina de estados que controla o fluxo de informações entre os componentes do AGC está no controlador do AGC. A Tabela 2 lista e descreve todos os estados, suas entradas e saídas. O processo de evolução do AGC está dividido em 4 etapas: inicialização, geração de indivíduos, avaliação dos indivíduos, ajustes no vetor de probabilidades e mutação. TABELA 2 Estados da máquina do controlador do AGC Entradas Saídas Processo Estado e_bit f_finished all_clear rng_load mux4_1 mux4_0 b_sel b_write mux2_sel f_evaluate incdec_fix e_load S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 m_inc[] Estado Comentários Inicializa i00 X X i01 Todos os registradores são "zerados". Apenas os registradores do vetor de probabilidades assumem o valor 0xH0. i01 X X VCC i02 Os registradores do gerador de números aleatórios são inciados com um valor pré-definido. Os registradores de probabilidade de mutação são incrementados uma vez. i02 X X i03 Estado para aguardar o funcionamento normal do RNG. i03 X X i04 Estado para aguardar o funcionamento normal do RNG. i04 X X i05 Estado para aguardar o funcionamento normal do RNG. i05 X X g00 Estado para aguardar o funcionamento normal do RNG. g00 X X g01 Gera indivíduo e grava no slot campeão do buffer. g01 X X g02 Envia para avaliação indivíduo do slot campeão do buffer. Gera g02 X g02 Aguarda FEV responder com sinal de término da avaliação. g02 X g03 Aguarda FEV responder com sinal de término da avaliação. g03 0 X a00 Gera indivíduo e grava no slot competidor do buffer. g03 1 X a00 Gera indivíduo e grava no slot competidor do buffer. a00 0 X a01 Envia para avaliação indivíduo do slot competidor do buffer. a00 1 X a01 Envia para avaliação indivíduo do slot competidor do buffer. Avalia a a01 Aguarda FEV responder com sinal de término da avaliação. a a01 Aguarda FEV responder com sinal de término da avaliação. a01 X Ajusta registrador E conforme slot do indivíduo com melhor c00 fitness. Corrige c00 X X m00 Ajusta vetor de probabilidades. m00 0 X Gera mutação do indivíduo campeão e grava no slot competidor m01 do buffer. m00 1 X Gera mutação do indivíduo campeão e grava no slot competidor m01 do buffer. m01 0 X m02 Envia para avaliação indivíduo do slot competidor do buffer. Muta m01 1 X m02 Envia para avaliação indivíduo do slot competidor do buffer. m m02 Aguarda FEV responder com sinal de término da avaliação. m m02 Aguarda FEV responder com sinal de término da avaliação. Ajusta registrador E conforme slot do indivíduo com melhor m02 X g03 fitness. 34

35 4.2.4 Diagrama de Estados do componente de comunicação Uma máquina de estados controla a comunicação entre a FPGA e o PC. Toda a comunicação é feita um byte por vez. Todos os parâmetros do projeto são de um byte, inclusive o fitness. Desta forma a FPGA envia n bytes para a o PC, no qual n é o número de parâmetros do indivíduo, e recebe um byte relativo ao fitness do indivíduo avaliado. Os estados e suas descrições estão comentados na Tabela 3. TABELA 3 Entradas Estados da máquina do componente de comunicação Saídas Processo Gravação dos dados do barramento do CGA estado write r_write rd_end wait tri_estate reg_read reg_write ct_en estado Comentários i X i00 Espera sinal indicando que valor a ser enviado para o PC já está disponível no barramento. i X r00 Sinal r_write ativo indicado que o valor para envio ao PC já está disponível no barramento. O pino reg_read é ativado, habilitando o registrador para gravação. r00 0 X X r00 Ativação do pino wait indicando ao computador que se a transmissão dos dados está para iniciar. Envio dos parâmetros do indíviduo ao PC Gravação do fitness do indivíduo avaliado pelo PC r00 1 X X r01 O computador responde com a ativação do pino write que está pronto para receber o valor. Neste instante o pino tri_state é ativado, permitindo que a saída do registrador seja conectada ao barramento. r01 1 X X r01 Enviado sinal para o PC através da desativação do pino wait indicando que o valor para leitura já está disponível. r01 0 X r00 O PC responde que finalizou a leitura através da destaivação do pino write. Caso rd_end seja zero o processo de envio para o PC é realizado novamente. O PC responde que finalizou a leitura através da destaivação do pino write. Caso rd_end seja um indica que todos os parâmetros foram passados para o PC e assim a comunicação pode prosseguir para o r01 0 X w00 recebimento de dados. w00 0 X X O pino wait é ativado indicando que a FPGA está disponível para w00 receber o valor do PC. w00 1 X X O pino write é ativado pelo PC indicando que o valor já se encontra disponível no barramento. Nesta condição o pino reg_write é habilitado w01 permitindo a gravação do valor no registrador. w01 1 X X w01 O pino wait é desativado comunicando ao PC que o valor foi recebido. w01 0 X X i00 Estado de espera da desativação do pino write quando o PC comunica que recebeu a mensagem de término do processo de gravação do valor enviado. Após este estado todo o processo é iniciado novamente com o recebimento dos valores do barramento do CGA. O trecho do código da Figura 13 é a função de comunicação implementada em C++ e contém os comentários relacionados a máquina de estados de comunicação. A função wait_value deixa o programa em um laço infinito até que o valor passado como parâmetro seja lido no pino wait na porta paralela. A função set_write envia para o pino write da porta paralela o valor passado como parâmetro. As demais funções lêem e enviam dados pela porta de dados da porta paralela (inportb e outportb) e configuram os registradores da porta que indicam seu modo de operação (leitura ou gravação). 35

36 Fig Código da função de comunicação do computador com a FPGA 36

37 CAPÍTULO 5 VALIDAÇÃO E RESULTADOS Todos os módulos e componentes dos módulos do projeto foram testados e avaliados individualmente para garantir o funcionamento correto antes de serem integrados. As etapas descritas de validação do projeto estão divididas entre simulação do AGC, validação do AGC e comunicação e validação dos resultados para evolução de hardware. Cada etapa testou parte do AGC e apresentou resultados relevantes para a validação do projeto e análise do funcionamento do algoritmo genético. 5.1 Simulação do AGC Uma simulação do AGC foi realizada no software Quartus II para validar seu funcionamento e convergência para busca do indivíduo ótimo de um problema simples. Foi elaborada uma função em linguagem de descrição de hardware que possui entrada de doze bits e conta a quantidade de bits 1. A saída da função possui largura de quatro bits, pois o menor resultado possível é zero (indivíduo com todos os doze bits iguais a zero) e o maior resultado possível é doze (indivíduo com todos os doze bits iguais a um). Conforme descrito no tópico o componente FUNCAO do diagrama em blocos da Figura 6 é o responsável pelo cálculo da função de fitness. A função para contar a quantidade de bits 1 foi compilada em um componente no formato do FUNCAO e colocado no seu lugar. Devido ao fato desta ser uma função simples ela é completamente formulada por lógica combinacional, desta forma, a saída com o resultado é atualizada instantaneamente com a mudança da entrada. Com esta configuração do AGC para avaliação do fitness foi simulada no Quartus II a sua execução para verificar se o algoritmo convergia para um indivíduo com todos os bits iguais a um. Na simulação realizada o algoritmo obteve um indivíduo com todos os bits iguais a um no quadragésimo segundo indivíduo gerado (somando indivíduos gerados a partir do vetor de probabilidades e mutações) e convergiu o vetor de probabilidades após 95 indivíduos avaliados. Para correção no vetor de probabilidades após as avaliações foi utilizado um valor igual a 32 para incremento ou decremento. O vetor de probabilidades possui um byte de resolução para cada bit, permitindo 256 níveis diferentes de probabilidade para cada bit. Com ajuste de valor 32 o AGC possuiu oito níveis diferentes de probabilidade para cada bit do indivíduo. 37

Algoritmos Genéticos

Algoritmos Genéticos UNIVERSIDADE PRESBITERIANA MACKENZIE Laboratório de Computação Natural LCoN I ESCOLA DE COMPUTAÇÃO NATURAL Algoritmos Genéticos Rafael Xavier e Willyan Abilhoa Outubro/2012 www.computacaonatural.com.br

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Complemento IV Introdução aos Algoritmos Genéticos

Complemento IV Introdução aos Algoritmos Genéticos Complemento IV Introdução aos Algoritmos Genéticos Esse documento é parte integrante do material fornecido pela WEB para a 2ª edição do livro Data Mining: Conceitos, técnicas, algoritmos, orientações e

Leia mais

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA 136 ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA FILITTO, Danilo 1 Resumo: Os algoritmos Genéticos inspiram-se no processo de evolução natural e são utilizados para resolver problemas de busca e otimização

Leia mais

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 3ª Prática: Rotação de uma palavra nos Displays de 7 segmentos Data: 10/04/2014 Nome: Adrián

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

CONTROLE DIGITAL DE VOLUME 1.-----------------------------------------------------------------------------

CONTROLE DIGITAL DE VOLUME 1.----------------------------------------------------------------------------- CONTROLE DIGITAL DE VOLUME 1.----------------------------------------------------------------------------- Uma boa gama de aplicações atuais utiliza o controle de volume digital. Não nos referimos apenas

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO Agosto/2004 V2 INTRODUÇÃO Este guia foi preparado para auxilio às aulas de laboratório para o curso de Engenharia

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO DE ENGENHARIA ELÉTRICA DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH Projeto para a matéria TE130 Projeto de Circuitos Integrados Digitais, ministrada pelo

Leia mais

4 Arquitetura básica de um analisador de elementos de redes

4 Arquitetura básica de um analisador de elementos de redes 4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Prof. Walter Cunha falecomigo@waltercunha.com http://waltercunha.com PMBoK Organização do Projeto Os projetos e o gerenciamento

Leia mais

Universidade Paulista

Universidade Paulista Universidade Paulista Ciência da Computação Sistemas de Informação Gestão da Qualidade Principais pontos da NBR ISO/IEC 12207 - Tecnologia da Informação Processos de ciclo de vida de software Sergio Petersen

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

Leia mais

1. Conceitos de sistemas. Conceitos da Teoria de Sistemas. Conceitos de sistemas extraídos do dicionário Aurélio:

1. Conceitos de sistemas. Conceitos da Teoria de Sistemas. Conceitos de sistemas extraídos do dicionário Aurélio: 1. Conceitos de sistemas Conceitos da Teoria de Sistemas OPTNER: É um conjunto de objetos com um determinado conjunto de relações entre seus objetos e seus atributos. TILLES: É um conjunto de partes inter-relacionadas.

Leia mais

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1 Introdução à Organização e Arquitetura de Computadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Evolução dos Computadores; Considerações da Arquitetura de von Neumann; Execução de uma instrução

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

www.vwsolucoes.com Copyright 2013 VW Soluções

www.vwsolucoes.com Copyright 2013 VW Soluções 1 1. Especificação técnicas: Dimensões do módulo 4EA2SA v1.0: 100 mm x 56 mm Peso aproximado: xxx gramas (montada). Alimentação do circuito : 12 ou 24Vcc Tipo de comunicação: RS232 ou RS485 Tensão de referencia:

Leia mais

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR 6LPXODomR GH6LVWHPDV )HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR #5,6. Simulador voltado para análise de risco financeiro 3RQWRV IRUWHV Fácil de usar. Funciona integrado a ferramentas já bastante conhecidas,

Leia mais

Monitor de Rede Elétrica Som Maior Pro. Manual do Usuário Versão 3.9f

Monitor de Rede Elétrica Som Maior Pro. Manual do Usuário Versão 3.9f Monitor de Rede Elétrica Som Maior Pro Manual do Usuário Versão 3.9f 2 ÍNDICE PÁG. 1 APRESENTAÇÃO...03 2 DESCRIÇÃO DO EQUIPAMENTO...04 2.1 ROTINA INICIAL DE AVALIAÇÃO DA REDE ELÉTRICA...04 2.2 TROCA DE

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia

Leia mais

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furbbr Resumo. Este artigo apresenta a especificação

Leia mais

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual Algoritmos: Lógica para desenvolvimento de programação de computadores Autor: José Augusto Manzano Capítulo 1 Abordagem Contextual 1.1. Definições Básicas Raciocínio lógico depende de vários fatores para

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS 1 PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS Os projetos com circuitos digitais mais complexos podem se tornar inviáveis devido a vários problemas, tais como: - Elevado número de C.I. (circuitos integrados)

Leia mais

ALGORITMOS GENÉTICOS

ALGORITMOS GENÉTICOS ALGORITMOS GENÉTICOS INTRODUÇÃO São métodos adaptativos que podem ser usados para resolver problemas de busca e otimização. Na natureza a combinação de boas características provenientes de diferentes indivíduos

Leia mais

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO 28 CAPÍTULO 5 INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO Interfaces para periféricos de armazenamento: Periféricos de armazenamento,

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Dimensões de análise dos SI Ricardo de Sousa Britto rbritto@ufpi.edu.br + Introdução n Os sistemas de informação são combinações das formas de trabalho, informações, pessoas

Leia mais

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba.

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba. Universidade Federal da Bahia Escola Politécnica Programa de Pós Graduação em Engenharia Elétrica Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável

Leia mais

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 7ª Experiência Síntese de Circuitos Sequenciais Síncronos 1. Objetivos

Leia mais

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Projeto de controle e Automação de Antena

Projeto de controle e Automação de Antena Projeto de controle e Automação de Antena Wallyson Ferreira Resumo expandido de Iniciação Tecnológica PUC-Campinas RA: 13015375 Lattes: K4894092P0 wallysonbueno@gmail.com Omar C. Branquinho Sistemas de

Leia mais

Requisitos de Software

Requisitos de Software Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama kiev@cin.ufpe.br Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio,

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Prof. André Dutton EMENTA: Conceitos fundamentais e histórico da ciência da computação; Histórico dos computadores, evolução e tendências; Modalidades de computadores

Leia mais

Hardware & Software. SOS Digital: Tópico 2

Hardware & Software. SOS Digital: Tópico 2 Hardware & Software SOS Digital: Tópico 2 Os objetos digitais são acessíveis somente através de combinações específicas de componentes de hardware a parte física do computador software programas para operar

Leia mais

UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO

UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO Amanda 5ª Atividade: Codificador e codificação de linha e seu uso em transmissão digital Petrópolis, RJ 2012 Codificador: Um codoficador

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

3. Cite o nome e características do ponto mais alto e do ponto mais baixo de uma onda?

3. Cite o nome e características do ponto mais alto e do ponto mais baixo de uma onda? Exercícios: 1. Sobre:Ondas Responda: a. O que é a Natureza de Ondas? b. O que origina as Ondas Mecânicas? c. As Ondas Mecânicas se propagam no vácuo? Explique a sua resposta. d. Quais são os elementos

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,

Leia mais

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES [Observação: O template a seguir é utilizado como roteiro para projeto de sistemas orientado

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas Departamento de Ciências

Leia mais

O protocolo I2C. Fig. 1 Diagrama em blocos e pinos do circuito integrado PT2313.

O protocolo I2C. Fig. 1 Diagrama em blocos e pinos do circuito integrado PT2313. O protocolo I2C 1 - Introdução O protocolo I2C ou I 2 C, também chamado IIC, foi criado para possibilitar a comunicação entre circuitos integrados com um número reduzido de fios, reduzindo o número de

Leia mais

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA Muitas organizações terceirizam o transporte das chamadas em seus call-centers, dependendo inteiramente

Leia mais

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert: BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma

Leia mais

Extração de Requisitos

Extração de Requisitos Extração de Requisitos Extração de requisitos é o processo de transformação das idéias que estão na mente dos usuários (a entrada) em um documento formal (saída). Pode se entender também como o processo

Leia mais

1.3 Conectando a rede de alimentação das válvulas solenóides

1.3 Conectando a rede de alimentação das válvulas solenóides 1.3 Conectando a rede de alimentação das válvulas solenóides CONTROLE DE FLUSHING AUTOMÁTICO LCF 12 Modo Periódico e Horário www.lubing.com.br (19) 3583-6929 DESCALVADO SP 1. Instalação O equipamento deve

Leia mais

Como Utilizar Power over Ethernet para Reduzir o Consumo de Energia

Como Utilizar Power over Ethernet para Reduzir o Consumo de Energia Como Utilizar Power over Ethernet para Reduzir o Consumo de Energia Documento Técnico Setembro de 2011 Visão Geral A tecnologia 'Power over Ethernet' (PoE) tornou-se uma ferramenta cada vez mais importante

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Funções de Posicionamento para Controle de Eixos

Funções de Posicionamento para Controle de Eixos Funções de Posicionamento para Controle de Eixos Resumo Atualmente muitos Controladores Programáveis (CPs) classificados como de pequeno porte possuem, integrados em um único invólucro, uma densidade significativa

Leia mais

Algoritmos Genéticos (GA s)

Algoritmos Genéticos (GA s) Algoritmos Genéticos (GA s) 1 Algoritmos Genéticos (GA s) Dado um processo ou método de codificar soluções de um problema na forma de cromossomas e dada uma função de desempenho que nos dá um valor de

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Prof. Daniel Gondim danielgondimm@gmail.com. Informática

Prof. Daniel Gondim danielgondimm@gmail.com. Informática Prof. Daniel Gondim danielgondimm@gmail.com Informática Componentes de um SC Barramento Também conhecido como BUS É um conjunto de linhas de comunicação que permitem a interligação entre dispositivos,

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

AUTOMAÇÃO DE ESCRITÓRIOS ADE

AUTOMAÇÃO DE ESCRITÓRIOS ADE Curso: TÉCNICO EM INFORMÁTICA com Habilitação em Programação e Desenvolvimento de Sistemas. AUTOMAÇÃO DE ESCRITÓRIOS ADE NOTA DE AULA 01 Assunto: Introdução a informática. Histórico do computador. Conceitos

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

SCD 912. Dispositivo de comunicação e armazenamento. Apresentação. Dados Técnicos. Conexões

SCD 912. Dispositivo de comunicação e armazenamento. Apresentação. Dados Técnicos. Conexões Conv. USB-Serial Baudrate, stop bit e nro de dados programável. Baudrate de 1200 a 38400 bauds. Emula porta COM virtual. Led de indicação de operação como conversor USB-serial. Não possui linhas de controle

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Engenharia de Software: Introdução Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes Programa 1. O processo de engenharia de software 2. UML 3. O Processo Unificado 1. Captura de requisitos 2.

Leia mais

O que é RAID? Tipos de RAID:

O que é RAID? Tipos de RAID: O que é RAID? RAID é a sigla para Redundant Array of Independent Disks. É um conjunto de HD's que funcionam como se fosse um só, isso quer dizer que permite uma tolerância alta contra falhas, pois se um

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO O que é a Informática? A palavra Informática tem origem na junção das palavras: INFORMAÇÃO + AUTOMÁTICA = INFORMÁTICA...e significa, portanto, o tratamento da informação

Leia mais

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais

Componentes de um Sistema de Computador

Componentes de um Sistema de Computador Componentes de um Sistema de Computador HARDWARE: unidade responsável pelo processamento dos dados, ou seja, o equipamento (parte física) SOFTWARE: Instruções que dizem o que o computador deve fazer (parte

Leia mais

Planejando o aplicativo

Planejando o aplicativo Um aplicativo do Visual FoxPro geralmente inclui um ou mais bancos de dados, um programa principal que configura o ambiente de sistema do aplicativo, além de uma interface com os usuários composta por

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001 47 5 Redes Neurais O trabalho em redes neurais artificiais, usualmente denominadas redes neurais ou RNA, tem sido motivado desde o começo pelo reconhecimento de que o cérebro humano processa informações

Leia mais

Quadro de consulta (solicitação do mestre)

Quadro de consulta (solicitação do mestre) Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta

Leia mais