Acelerando Algoritmos de Baixo Nível em Visão Robótica com Hardware Reconfigurável

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

Download "Acelerando Algoritmos de Baixo Nível em Visão Robótica com Hardware Reconfigurável"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA Acelerando Algoritmos de Baixo Nível em Visão Robótica com Hardware Reconfigurável Gianna Rodrigues de Araújo Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Engenharia Elétrica da UFRN (área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Mestre em Ciências. Número de ordem PPgEE: M298 Natal, RN, fevereiro de 2011

2

3 Acelerando Algoritmos de Baixo Nível em Visão Robótica com Hardware Reconfigurável Gianna Rodrigues de Araújo Dissertação de Mestrado aprovada em 18 de fevereiro de 2011 pela banca examinadora composta pelos seguintes membros: Prof. Dr. Luiz Marcos Garcia Gonçalves (orientador) DCA/UFRN Prof a. Dr a. Raquel Esperanza Patiño Escarcina UCSP, Perú Prof. Dr. José Alberto Nicolau de Oliveira DEE/UFRN Prof. Dr. Rummenigge Rudson Dantas ECT/UFRN

4 Aos meus pais e a minha família NatalNet.

5 Agradecimentos Ao meu orientador, Prof. Dr. Luiz Marcos Garcia Gonçalves, sou grata pela orientação. Ao Prof. Dr. José Alberto Nicolau de Oliveira, pelo apoio e orientação. Aos colegas Julio Cesar e Renato Gardiman pelas sugestões para minha dissertação. Aos demais colegas de pós-graduação, pelas críticas e sugestões. À minha família, amigos e namorado pelo apoio durante esta jornada. Ao CNPq, pelo apoio financeiro.

6 Resumo Um desafio que ainda resta no campo da robótica é como fazer um robô reagir em tempo real a estímulos visuais. Técnicas tradicionais de visão robótica usadas para resolver este problema ainda são muito caras tomando muito tempo quando se usa processadores convencionais. Algoritmos simples com filtragem em imagens ou operações de morfologia matemática podem tomar muito tempo de execução. Pesquisadores têm implementado algoritmos de processamento de imagens em dispositivos de hardware com alto grau de paralelismo, visando diminuir o tempo de processamento nos algoritmos, com bons resultados. Usando técnicas de processamento de imagens implementadas em hardware e um sistema orientado a plataforma que usa o processador Nios II, propomos um método que usa processamento em hardware e programação baseada a eventos, para simplificar sistemas baseados em visão, enquanto que, ao mesmo tempo, conseguimos acelerar algumas partes dos algoritmos usados.

7 Abstract A challenge that remains in the robotics field is how to make a robot to react in real time to visual stimulus. Traditional computer vision algorithms used to overcome this problem are still very expensive taking too long when using common computer processors. Very simple algorithms like image filtering or even mathematical morphology operations may take too long. Researchers have implemented image processing algorithms in high parallelism hardware devices in order to cut down the time spent in the algorithms processing, with good results. By using hardware implemented image processing techniques and a platform oriented system that uses the Nios II Processor we propose an approach that uses the hardware processing and event based programming to simplify the vision based systems while at the same time accelerating some parts of the used algorithms.

8 Sumário Sumário Lista de Figuras Lista de Tabelas i iii iv 1 Introdução Definição do problema Principais Contribuições Aplicações Lista de Símbolos e Abreviaturas 1 2 Estado da Arte 5 3 Embasamento teórico Dispositivos lógicos Programáveis Processadores Digitais de Sinais Dispositivos Lógicos Complexos Programáveis A Tecnologia FPGA - Field Programable Gate Array Programação para FPGA Verilog VHDL Estudo de Caso: Visão Computacional Algoritmos de Visão Computacional baseado em eventos Correlação e Filtragem Transformada de Hough Filtro Média Filtro de Sobel Sistema orientado a plataforma Implementações A Tecnologia Field Programable Gate Array Simulink Incorporando dispositivos com o SOPC Quartus II NIOS IDE II i

9 5 Resultados Filtro Genérico Mapa de Atenção Filtro de Sobel Filtro Média Filtro Gaussiano Filtro Laplaciano do Gaussiano Integração dos resultados Conclusão Trabalhos futuros Referências bibliográficas 39

10 Lista de Figuras 3.1 Estrutura comum dos sistemas de Visão Computacional Sistema de tratamento de evento do teclado Módulo de visão modificado Resultado da adição do hardware de visão baseado em eventos Arquitetura comum a sistemas orientados a plataforma Arquitetura da plataforma desenvolvida Vista superior da DE Esquema da placa FPGA DE2 (diagrama de blocos) Projeto do Simulink Projeto do NMAC (numerical multiplier and accumulator) Projeto do Mapa Atencional SOPC quartus FPGA Imagem original, Imagem obtida por filtro puramente em software e Imagem obtida pelo dispositivo Imagem original, Imagem obtida por filtro puramente em software e Imagem obtida pelo dispositivo Imagem original, Imagem obtida por filtro puramente em software e Imagem obtida pelo dispositivo Imagem original, Imagem obtida por filtro puramente em software e Imagem obtida pelo dispositivo iii

11 Lista de Tabelas 5.1 Comparação dos resultados usando hardware e puramente em software.. 31 iv

12 Capítulo 1 Introdução Visão Computacional é uma das áreas da pesquisa científica que cresceu muito nos últimos anos. As técnicas de Visão Computacional estão presentes nos mais diversos campos de aplicação, tais como robótica, automação industrial, sistemas de segurança, cartografia, realidade virtual, e animação, entre outros, e até em campos não tão convencionais tais como medicina, televisão, teatro e dança telemática. Dentro deste universo, é grande o número de aplicações que necessitam de resposta do sistema em tempo real, como exemplo temos as aplicações em visão robótica e dança telemática. Em geral, algoritmos de Visão Computacional são computacionalmente custosos, além de sua alta complexidade, exigindo geralmente uso de grande quantidade de memória, além do tempo substancial de processamento, o que torna difícil, a obtenção de uma resposta em tempo real, para algumas aplicações. Por exemplo, um desafio que ainda permanece nas pesquisas em visão robótica é como construir um sistema que permita a um robô reagir em tempo real a estímulos visuais providos pelo seu ambiente. Um dos principais problemas está relacionado à utilização de algoritmos de visão por computador tradicionais e sua implementação em processadores convencionais, o que os torna caros computacionalmente. Ou seja, operações com alto grau de paralelismo, tidas como de mais baixo nível necessárias nas etapas iniciais desses algoritmos, tais como filtragem de imagens implementada geralmente pelo operador de convolução, ou mesmo operações mais simples de processamento de imagem, tal como o uso de operadores de morfologia matemática, podem demorar muito tempo em um processador seqüencial, conseqüentemente atrasando outras etapas do fluxo de processamento do sistema. Uma solução seria a utilização de imagens pequenas para compensar o tempo alto gasto pelas técnicas convencionais de processamento de imagem, mas isso pode ser inútil para algumas aplicações, como por exemplo, de reconhecimento de padrões onde detalhes podem ser cruciais. A fim de reduzir a maior parte do tempo gasto nos algoritmos de processamento de imagem, pesquisadores os têm implementado em arquiteturas de hardware específico, que possuem dispositivos de hardware com alto grau de paralelismo, obtendo bons resultados Exemplos de tais implementações podem ser vistos na Arquitetura Sonic [Haynes et al. 2000], no Multiplicador de matriz em Processamento de vídeo [Haynes & Cheung 1998] e alguns outros trabalhos que serão discutidas mais adiante neste documento. Apesar de prover respostas em tempo real, essas arquiteturas são conhecidas por terem um valor

13 CAPÍTULO 1. INTRODUÇÃO 2 comercial que as torna inviável quando o quesito principal é minimizar o custo monetário do sistema. Um exemplo também monetariamente caro encontra-se no uso de placas gráficas gráficas específicas que permitem sua programação em linguagens como CUDA, mais conhecidas como Unidades de Processamento Gráfico (do Inglês Graphics Programming Unity - GPU) [Pharr & Fernando 2005]. Placas do tipo GPU estão sendo cada vez mais utilizadas até mesmo na execução de outras tarefas que não sejam específicas da área de processamento gráfico, mas com alto grau de complexidade, tal como execução massiva de cálculos, problemas de otimização, enter outras. Porém, convém ressaltar novamente o custo de tais placas, na casa dos milhares de dólares, para um bom desempenho. 1.1 Definição do problema Atualmente, é possível encontrar pesquisas das mais diversas em visão robótica, voltadas a aplicações como por exemplo o auxilio à educação [Barrios-Aranibar et al. 2006] ou o mapeamento de áreas [de et al. 2010, Herinque et al. 2009]. Em muitas dessas aplicações, a tomada de decisão a partir das respostas obtidas pelo sistema de visão computacional dos robôs é um fator primordial. Como visto acima, geralmente, os algoritmos de visão computacionais são custosos computacionalmente, por possuírem uma alta complexidade, ocupando assim muito tempo do processador. Isto aliado à espera de resultados para as tomadas de decisões constituem um dos problemas a ser resolvido para fazer com que robôs respondam a estímulos visuais em tempo real. Ou seja, considerando que o sistema executa outras tarefas, estas serão afetadas com um eventual retardo, diminuindo os rendimentos do sistema como um todo. Em face da complexidade e morosidade, vários estudos vêm sendo realizados visando otimização de algoritmos de visão computacional. Alguams dessas pesquisas verificam a eficácia do desenvolvimento de algoritmos de Visão Computacional em hardware, utilizando uma implementação mista (hardware / software) [de Souza & Bianchi 2002]. Em nosso contexto, uma implementação mista é aquela que combina o poder do processamento direto em hardware dedicado com a facilidade de abstração provida pelo nível de software. Ou seja, o que for passível de implemenmtação em hardware sendo controlado dinamicamente pelo software. Uma vez que é complicado mudar o hardware, o máximo possível de flexibilidade deve ser provido em software, sempre tentando minimizar esta flexibilização. Ainda existe um forte nicho de pesquisa quando nos referimos a implementações mistas, uma vez que não existe, ainda, uma definição precisa do que seja esse paradigma de implementação. Estudos que vão desde a utilização de portas de comunicação (paralela ou serial) para acesso externo de computadores até soluções utilizando processadores embarcados com a tecnologia FPGA (Field Programmable Gate Array) tentam resolver o problema com implementações totalmente disjuntas. Alem do problema na definição em si das implementações mistas, ainda existe a forte aversão à utilização de hardware reprogramável pela dificuldade de integração dos mesmos com as linguagens de propósito gerais. Muitos estudos e documentações precisam ser feitos nessas áreas para que novos pesquisadores possam ingressar nessa problemá-

14 CAPÍTULO 1. INTRODUÇÃO 3 tica sem ter tantos problemas com a configuração e utilização dos artefatos e ferramentas inerentes a essa área. 1.2 Principais Contribuições A contribuição do presente trabalho é o desenvolvimento de um sistema orientado a plataforma usando FPGA no qual agregamos dispositivos que são algoritmos implementados usando programação mista. A idéia é simplificar um sistema de visão robótica tomado como estudo de caso e, ao mesmo tempo, acelerar algumas partes dos algoritmos utilizados. A utilização de uma implementação mista faz com que os algoritmos mais custosos de visão computacional tenham uma significativa diminuição de tempo de processamento, mantendo a mesma precisão. Com isto, esperamos atender os requisitos de algumas aplicações que necessitam de uma resposta em tempo real. Desenvolvemos um conjunto de artefatos visando otimizar alguns algoritmos de Visão Computacional tidos como de baixo nível (etapas iniciais do processamento visual) e, com isso, pudemos contribuir para que outros projetos do Laboratório Natalnet possam ser efetivados. A seguir, destacamos nossas comtribuições mais específicas. Idealizamos e formalizamos a arquitetura que permitiu a implementação mista (software/hardware) de algoritmos de Visão Computacional de baixo nível. Provemos uma plataforma visando integração dos dispositivos (algoritmos e técnicas) desenvolvidos. Cada novo algoritmo pode ser considerado como um novo dispositivo. Assim,etapas posteriores podem ser também implementadas usando este conceito e simplesmente acopladas à plataforma desenvolvida. Realizamos de testes de performance (tempo x precisão) na plataforma, para verificação de funcionamento em tempo real da arquitetura mista desenvolvida. Esses testes serviram de base para validação do modelo proposto e seus resultados foram publicados em veículos relevantes da nossa área. O número de pesquisadores na área de Sistemas Embarcados envolvendo hardware ainda é relativamente pequeno. Assim, com esse trabalho pudemos contribuir na área de pesquisa com o uso de hardware, dentro da UFRN, podendo esse conhecimento ser passado à frente para que outros pesquisadores possam enveredar nessa área. Resumidamente, como contribuições práticas, implementamos algoritmos de visão de baixo nível em hardware e realizamos comparações entre as implementações em software e em hardware. Ainda, comparamos principalmente o tempo de processamento das implementações puras e da implementação mistas, analisando o ganho computacional. Incorporamos os dispositivos desenvolvidos (algoritmos implementados) na plataforma. E, respaldando nossa idéia, conseguimos publicar os principais resultados do presente trabalho em congressos e conferências da área [de ARAÚJO et al. 2009, de ARAÚJO et al. 2010].

15 CAPÍTULO 1. INTRODUÇÃO Aplicações O presente trabalho está relacionado diretamente a outros projetos do Laboratório Natalnet, sendo os algoritmos desenvolvidos deverão ser usados em projetos de monitoramento usando robôs, e de mapeamento interno e externo usando também robôs. Os robôs Galatéia(Pioneer), utilizada no projeto GTMV [Dantas et al. 2009] e o Helicóptero NatalGIS, utilizado no projeto de mesmo nome [Herinque et al. 2009], ambos em execução pelo laboratório NatalNet-DCA, podem ter parte do seu sistema de Visão Computacional embarcado e conseqüentemente otimizado. Com isso, o processamento ocioso pode ser usado para outras etapas ou atividades, mais conhecidas como técnicas de pay-load (técnicas que podem ser de processamento on board). Tendo em vista a necessidade de uma resposta mais rápida por parte dos sistemas e os problemas encontrados para conseguir isso, foi que surgiu a idéia de implementarmos algoritmos de Visão Computacional diretamente em dispositivos de hardware programável, no caso, usando FPGA. O uso de hardware dedicado torna possível a paralelização (real e também aparente) dos algoritmos, o que vem a diminuir a sua complexidade. O FPGA permite mais uma flexibilidade, devido à possibilidade de re-configuração. Também, possuem capacidade de processamento maior do que os processadores de sinais digitais (DSP - Digital Signal Processors) específicos e micro-controladores convencionais baseados em arquiteturas mais simples como micro-processadores e processadores ARM e outros. Ressaltamos que a nossa proposta pode ter um cunho mais geral, mas aqui foi desenvolvida com base em um estudo de caso visando encontrar uma solução para a aceleração de algoritmos de visão computacional, que são geralmente usados em aplicações robóticas, em tempo real. A idéia principal é usar o paralelismo, a flexibilidade e a estrutura simples do hardware como meios para reduzir o tempo de processamento. Propomos e desenvolvemos um sistema orientado a plataforma, em que dispositivos são desenvolvidos e alocados a uma plataforma, sendo usados apenas quando necessários. Estes dispositivos são implementações em hardware dos algoritmos de visão computacional.

16 Capítulo 2 Estado da Arte Embora tenha se estabelecido uma das área da pesquisa científica muito recentemente se comparada com outras áreas mais tradicionais, com apenas pouco mais de 3 décadas de existência, a área de Visão Computacional é bastante difundida atualmente, sendo as aplicações de suas técnicas e métodos bem diversificadas. Inúmeras pesquisas recentes podem ser encontradas visando o desenvolvimento de novos métodos e técnicas mas também são realizados trabalhos visando otimizar os algoritmos existentes. A busca por tornar os sistemas de visão menos custosos computacionalmente, ou seja, rápidos, e sem perder a qualidade dos dados são temas de muitas pesquisas no mundo todo. Alguns trabalhos explorando implementações em hardware podem ser encontradas na literatura [Haynes et al. 2000, Haynes & Cheung 1998, de Souza & Bianchi 2002, RILLO 1989, de Almeida Nobre 2009, Fredi 2001]. Aqui apresentamos os sistemas que tem um relacionamento mais direto com o nosso visando melhor entender nossa proposta. A arquitetura do sistema Sonic [Haynes et al. 2000] é complexa, permitindo ao usuário configurar o hardware em tempo real, oferecendo, por exemplo, melhor desempenho em filtragem de imagens através da implementação mais eficiente de multiplicadores e acumuladores (convolução) e outras operações. A abordagem é semelhante à nossa no sentido de que um sistema de hardware e/ou software é usado para acelerar o processamento de imagem digital. Porém, o trabalho não prevê um sistema como um todo, com etapas posteriores sendo processadas, como ocorre na área de visão computacional. Sua aplicação nesta área poderia ser viabilizada, tornando o processamento de imagem mais rápido e economizando tempo para outros métodos de processamento de imagem. No trabalho de Haynes [Haynes & Cheung 1998], é implementada uma solução de hardware apenas para acelerar a multiplicação de matrizes, o chamado "Multiplicador de Matriz de Processamento de Vídeo". A flexibilidade do multiplicador de matriz implementada pode tornar 25 vezes mais rápido que uma solução de software. Nas aplicações de visão robótica, a eficiência do sistema de visão computacional é fator decisivo. Um exemplo ocorre no futebol de robôs. Neste caso, numa visão genérica, o sistema geral é composto de um subsistema de visão (percepção), um subsistema de decisão (planejamento) e um subsistema que executa fisicamente (atuação) tarefas, ou seja, move os robôs no campo executando determinadas ações como chute, drible, e passe, entre outras. Neste caso, o subsistema de visão deve fornecer ao subsistema de decisão informação abstraída a partir de dados adquiridos de imagens que são base para o seu planejamento. Sendo assim, é desejável que a reposta do subsistema de visão computacional

17 CAPÍTULO 2. ESTADO DA ARTE 6 seja rápida, para que não afete o desempenho dos demais sistemas. Visando obter um melhor desempenho do sistema de visão computacional,o trabalho proposto por Souza e Bianchi [de Souza & Bianchi 2002] implementa técnicas de processamento de imagem em hardware, utilizando a linguagem de descrição de hardware VHDL. Basicamente, o objetivo principal do trabalho é acelerar a detecção da posição e orientação de objetos importantes no campo, tais como os robôs (colegas e oponentes) e a bola. No trabalho, eles implementam três módulos em hardware, o primeiro é responsável pela binarização da imagem, a partir de um valor limiar de cor. As regiões onde a cor está acima do limiar, é atribuído o valor 1 e as regiões abaixo do limiar é atribuído o valor 0. O segundo módulo é responsável pela extração de bordas da imagem, usando um algoritmo tradicional de detecção de arestas [RILLO 1989]. O terceiro e último módulo é responsável pela vetorização da imagem. Dada uma imagem binária com os contornos definidos, esse módulo determina as regiões da imagem que possuem contornos fechados. Com o uso de hardware, o sistema consegue disponibilizar os dados de saída, após passar pelos três módulos, em cerca de 1,54 ms. Os mesmos módulos, quando implementados em linguagem C e ambiente Linux, necessitam de 21,5 vezes mais tempo do que os implementados em hardware, uma vez que levaria 33ms para os dados estarem disponíveis na saída. A busca por padrões em um imagem é outra tarefa que possui alto custo computacional. Quando o padrão procurado não é invariante a determinadas características, esse custo se torna muito mais elevado. Diversas aplicações necessitam fazer uso da busca por padrões, principalmente em tarefas de vigilância e monitoramento, onde reconhecimento e identificação de objetos pontuais na cena devem ser características essenciais do sistemas. No trabalho de Pires [de Almeida Nobre 2009], é implementado um módulo baseado no método Ciratefi, recentemente proposto [Kim & Araújo 2007a, Kim & Araújo 2007b]. Basicamente, o método realiza uma busca na imagem por uma dada máscara, sendo invariante aos aspectos RSTBC (rotação, escala, translação, brilho e contraste, na tradução do inglês). O processamento ocorre pela aplicação de três filtros em cascata, Cifi, Rafi e Tefi. Os três filtros são invariantes a translação e vão excluindo, sucessivamente, os pixels não pertencentes a imagem da mascára (padrão procurado). O primeiro filtro, Cifi, é invariante a escala e calcula a provavél escala do pixels candidatos ao padrão. O segundo filtro, Rafi, tem como entradas os pixels resultantes do primeiro filtro e é invariante a rotação. Após sua aplicação, é calculado e atribuido para os pixels resultantes, o ângulo de rotação mais adequando. O terceiro filtro, Tefi, é invariante a brilho e contraste e tem como entrada os pixels resultantes do segundo filtro. Ele é o responsável por encontrar a posição mais provável da máscara na imagem dada. Neste trabalho, o filtro Cifi foi implementado em hardware. Com essa implementação em hardware, eles melhoram o tempo de 7 s para 1,367 ms, o que provê um desempenho excelente já que o tempo está abaixo do necessário para sistemas críticos de tempo real, conseguindo alta performance e baixo custo computacional. Em seu trabalho, Fredi [Fredi 2001] propõe uma metodologia de desenvolvimento de hardware e software utilizando soluções baseadas em FPGA s, linguagem C e DSPs para a aceleração de sistemas de visão computacional. Como estudo de caso, é desenvolvida uma solução para localização e reconhecimento de placas com formato retangulares. A parte do software está localizada em um hardware DSP orientada ao controle do hard-

18 CAPÍTULO 2. ESTADO DA ARTE 7 ware de uma placa FPGA. Sua metodologia divide o processamento de imagem em 4 etapas (entrada, pré-processamento, processamento e saída) que pode mudar dependendo da aplicação. A parte do pré-processamento é composta por filtragem da imagem, detecção de bordas e extração de formas (retangulares). Essa etapa é realizada utilizando hardware e software. A etapa de processamento da imagem é dividida em dois blocos, um para a extração de feições e outro para a etapa de classificação. A etapa de extrações de feições foi implementada em software pois a utilização de pontos flutuantes, não seria possivel por causa da capacidades das placas FPGAs utilizadas. Já a etapa de classificação foi feita em hadware, utilizando o paralelismo e permitido a obtenção de alta velocidade de processamento. A principal diferença com o nosso trabalho é que a proposta de Fredi é baseada em um sistemas dedicado em FPGA enquanto que o nosso usa uma arquitetura orientada à plataforma, o que facilitaria o adicionamente de novos componentes a nossa plataforma e nos dar uma maior flexibilidade.

19 Capítulo 3 Embasamento teórico Em uma análise mais genérica, nosso trabalho abrange as áreas de processamento digital de imagens, visão computacional e sistemas embarcados usando FPGA. Assim, um melhor entendimento sobre as tecnologias utilizadas no nosso trabalho bem como um embasamento teórico a respeito das ferramentas matemáticas necessárias para o bom entendimento do resto do trabalho se faz necessário. Uma dessas novas tecnologias refere-se aos dispositivos lógicos programáveis. Esses dispositivos, apesar de executarem a maior parte de suas operações em hardware, possuem algum elemento de software que permite realizar a sua programação permitindo execução de tarefas diferentes, no mesmo hardware, usando programações diferentes. Porém, convém ressaltar que, uma vez programados, não permitem alteração de sua programação durante a execução. Geralmente a memória de armazenamento do programa é pequena e sua linguagem de baixo nível não é trivial. Sendo assim, linguagens mais acessíveis surgem naturalmente para sua programação, derivando diversos tipos de hardware para esses dispositivos. Neste contexto, surgem os dispositivos de hardware reconfigurável, mais conhecidos como Field Programmable Gate Arrays (FPGA), que se tornam populares, pois permitem construção e configuração de componentes de hardware de forma declarativa, possibilitando desenvolvimento e estudo de diversas construções de hardware de forma barata e relativamente simples. Para programar tais dispositivos, a linguagem de descrição de hardware conhecida, como VHDL, é usada, que será detalhada mais à frente. Essa linguagem foi utilizada no desenvolvimento de grande parte de nossos componentes de hardware e foi escolhida por sua versatilidade e por possuir uma grande e ativa comunidade de desenvolvedores. Com ela, conseguimos implementar em hardware programável todas as ferramentas matemáticas utilizadas para nossas aplicações. Serão abordados principalmente algoritmos de visão computacional, porém alguns conceitos de processamento digital de imagens são necessários, endereçados a seguir. 3.1 Dispositivos lógicos Programáveis Um PLD 1 é, basicamente, um componente eletrônico utilizado para se construir circuitos digitais. O PLD foi originalmente projetado baseado em lógica configurável e 1 PLD - Programmable Logic Device

20 CAPÍTULO 3. EMBASAMENTO TEÓRICO 9 usando flip-flops, que são, unidades básicas de circuitos lógicos, ligados em conjunto com interconexão programável. Um PLD fornece funções específicas, incluindo dispositivo de interface, comunicação de dados, processamento de sinal, display de dados, calendário e operações básicas de controle, e quase todas as outras funções que um sistema de controle robusto deve ter. Assim, podemos entender o PLD como uma combinação de dispositivos logicos e de memória. A memória é usada para guardar o padrão que é dado ao chip durante a programação. Muitos dos métodos usados para armazenar dados no circuito integrado são adaptados para serem usados em PLDs. Isto Inclui: SRAM Células EPROM, EEPROM Memória Flash Dentro dos dipositivos lógicos programáveis abordamos os três tipos mais utilizados nos trabalhos relacionados com o nosso, são eles DSP, CPLD e os FPGA Processadores Digitais de Sinais Os DSP (Digital signal processors) são dispositivos construídos com microprocessadores especializados, especificamente projetados para processamento digital de sinais, desenvolvidos para serem utilizados em aplicações em tempo real. Os DSP também pode ser usados para executar cálculos de propósito geral, mas não são otimizados para essa função. Em comparação aos outros tipos de microcontroladores, os DSP possuem um maior poder de processamento. Tanto podem ser programados usando liguagem de baixo nível, assembly, como também em liguagem de mais alto nível, como "C"padrão Dispositivos Lógicos Complexos Programáveis Os CPLD Complex Programmable Logic Devices são circuitos integrados (CI) que possibilitam executar aplicações para implementar hardware digital, tais como telefones celulares. Os CPLD podem suportar projetos significativamente maiores do que os dispositivos simples lógicos programáveis (SPLD), mas fornecem menos lógica do que os FPGA. Abaixo listamos algumas características dos CPLD. Os CPLD não permitem configuração da sua memória volátil. A configuração externa da ROM (Random Access Memory) não é necessária, e os CPLD podem funcionar imediatamente após a inicialização do sistema. Possuem grande número de portas disponíveis. Os CPLD têm tipicamente o equivalente a milhares de portas lógicas, permitindo a implementação de dispositivos de processamento de dados moderados. Os CPLD possuem algumas disposições para lógica mais flexíveis do que expressões de soma de produtos, incluindo caminhos feedback complicados entre as células macro e a lógica especializada para implementar várias funções comumente usadas, tais como aritmética de inteiros.

21 CAPÍTULO 3. EMBASAMENTO TEÓRICO A Tecnologia FPGA - Field Programable Gate Array Dispositivos FPGA implementam conexões entre vetores (arrays) lógicos e registradores que permitem, através de uma linguagem de descrição, que dispositivos de hardware sejam construídos e integrados. Dessa forma, é possível utilizar um dispositivo FPGA para aplicações de prototipagem ou teste a fim de produzir ou melhorar resultados de forma mais barata. É uma tecnologia muito utilizada na área acadêmica, pois facilita o o ensino de disciplinas como eletrônica, programação e arquiteturas híbridas. É também muito utilizado em pesquisas aplicadas da engenharia, pois facilita o desenvolvimento de dispositivos e protótipos. Um dispositivo FPGA, ao invés de estar restrito a uma função de hardware prédeterminada, permite que os recursos do seu programa e, consequentemente, as funções do produto possam ser modificados e adaptadas às novas normas. Ou seja, se necessário, o hardware pode ser reconfigurado, via software, para aplicações específicas, mesmo depois que o produto tenha sido instalado numa dada planta, daí o nome field-programmable. Pode-se usar um dispositivo FPGA para implementar qualquer função lógica que um circuito integrado de aplicação específica (ASIC) poderia realizar. Sua capacidade de atualizar, incluindo a funcionalidade de navegação, após, oferece vantagens para muitas aplicações. Ao contrário da geração anterior dos FPGA E/S (utilizando entrada e saída), hoje, os FPGA são compostos por várias combinações de SRAM embutidas configurávelmente, incluindo transceptores de alta velocidade, alta velocidade de entrada e saída (I/O) de blocos, lógica e roteamento. Especificamente, um FPGA contém componentes lógicos programáveis chamados elementos lógicos (LES) e uma hierarquia de interconexões reconfiguráveis que permitem que o LES possa estar fisicamente ligado. É possível configurar LES para executar funções complexas combinadas, ou apenas portas lógicas simples, como AND e XOR. Na maioria dos FPGA, os blocos lógicos também incluem elementos de memória, flip-flops, que podem ser simples ou mais blocos completos de memória. Entre as principais vantagens para se projetar e desenvolver com um FPGA podemos incluir: Prototipagem rápida Tempo mais curto para o mercado Capacidade de reprogramar no campo para depuração Ciclo de vida do produto mais longo para reduzir o risco de obsolescência 3.2 Programação para FPGA Para definir o comportamento do dispositivo FPGA, o usuário fornece instruções usando uma linguagem de descrição de hardware (HDL Hardware Description Language) ou um desenho esquemático. O uso de HDL é mais adequado para trabalhar com grandes estruturas, pois é possível especificá-los apenas numericamente ao invés de ter que desenhar cada pedaço à mão. No entanto, a entrada esquemática pode ser utilizada para facilitar a visualização de um projeto de sistema como um todo.

22 CAPÍTULO 3. EMBASAMENTO TEÓRICO 11 Em seguida, utilizando uma ferramenta de automação de design eletrônico (EDA - Electronic Design Automation), um netlist é gerado. O netlist é uma descrição logicamente equivalente consistindo apenas de primitivas lógicas elementares (AND, OR, NOT, flip-flops, etc) que estão disponíveis em uma tecnologia VLSI específica. O netlist pode ser configurado para a arquitetura real do FPGA, geralmente realizada por um software proprietário da empresa fornecedora do FPGA. O usuário irá validar o mapa, o local e os resultados da rota através da análise de tempo, simulação e outras metodologias de verificação. Uma vez que o design e processo de validação forem concluídos, o arquivo binário gerado (usando também software fornecido pela empresa do FPGA) é utilizado para reconfigurar o FPGA. As linguagens de descrição de hardware mais comuns são o VHDL e Verilog. Começamos descrevendo esta última Verilog Verilog é uma linguagem de descrição de hardware usada para modelar sistemas eletrônicos. Verilog não deve ser confundida com VHDL, sendo esta mais comumente usada no projeto, verificação e implementação de chips de lógica digital, a nível de transferência de registos (RTL) da abstração. Ela também é usada na verificação de circuitos analógicos e de sinal misto. Linguagens de descrição de hardware como o Verilog diferem das linguagens de programação de software, porque incluem maneiras de descrever a propagação de tempo e as dependências do sinal (sensibilidade). Há dois operadores de atribuição, a atribuição de bloqueio (=), e atribuição de não-bloqueio (<=). A atribuição de não-bloqueio permite que os projetistas possam descrever uma atualização da máquina de estados sem a necessidade de declarar e usar variáveis de armazenamento temporário. Uma vez que estes conceitos fazem parte da semântica da linguagem Verilog, os designers podem escrever rapidamente as descrições dos circuitos de grande porte, de uma forma relativamente compacta e concisa. Quando foi introduzido na comunidade (1984), o Verilog representou um enorme aumento de produtividade para os projetistas de circuito que já estavam usando o software de captura esquemática e programas de softwares gráficos, especialmente escritos para documentar e simular circuitos eletrônicos. Os projetistas da linguagem Verilog queriam uma linguagem com sintaxe similar à linguagem de programação C, que já era amplamente utilizada no desenvolvimento de software de engenharia. Verilog é case-sensitive, tem uma base de pré-processamento (embora menos sofisticado do que a de ANSI C e C ++), e palavras-chave equivalentes de controle de fluxo tais como if e else, for, while, case etc, e possui compatibilidade com operadores de precedência. Um projeto Verilog consiste de uma hierarquia de módulos. Os módulos são encapsulados no projeto de forma hierárquica e se comunicam com outros módulos através de um conjunto declarado de portas de entradas e de saída de modo bidirecional. Internamente, um módulo pode conter declarações de variáveis (register, integer, etc), concorrente, declaração seqüencial e instâncias de outros módulos (sub-hierarquias). instruções seqüen-

23 CAPÍTULO 3. EMBASAMENTO TEÓRICO 12 ciais são colocadas dentro de begin/end do bloco e executadas em ordem seqüencial dentro do bloco. Mas os próprios blocos são executados simultaneamente, qualificando o Verilog como uma linguagem dataflow. O conceito de Verilog, de fio, é composto por dois valores de sinal (4 estado: 1, 0, flutuante, undefined), e as forças (forte, fraca, etc). Este sistema permite a modelagem abstrata do sinal de linhas compartilhadas, onde vários fontes de unidade de uma rede comum. Quando o fio tem vários drivers, o valor do fio (legível) é resolvida por uma função da fonte de condutores e seus pontos fortes. Um subconjunto de instruções na linguagem Verilog são sintetizados. Os módulos Verilog que atendem a sintetização do estilo de codificação, conhecido como RTL (Register Transfer Level), pode ser realizado materialmente por software de síntese. Isto transforma a fonte Verilog em um netlist, uma descrição logicamente equivalente consistindo apenas de primitivos lógica elementar (AND, OR, NOT, flip-flops, etc) que estão disponíveis em uma específica tecnologia VLSI VHDL A sigla VHDL é a abreviação de VHSIC Hardware Description Language (VHSIC é a abreviação de Very High Speed Integrated Circuits). VHDL é uma linguagem de descrição de hardware com foco em circuitos integrados de alta velocidade, que pode ser usada para modelar um sistema digital, desde uma simples porta lógica até um sistema digital completo. A necessidade de uma padronização de liguagem de descrição de hardware surgiu no Departamento de Defesa Americano. Por possuir vários fornecedores de CIs e cada um com sua própria liguagem, o departamento ficava preso a empresa fornecedora de CIs. Não sendo possível a continuação de um projeto por outra empresa, por não existir uma padronização de linguagem. Somente em 1986 o IEEE adotou a liguagem para padronização. Por causa da grande necessidade de padronizar linguagem, após a linguagem ter sido apresentada. O projetista pode usar três tipos de modelagens para implementar o sistema. Os três tipos são: o método de Fluxo de Dados, o método Comportamental (Behavioral), e o método Estrutural. No método de Fluxo de Dados o projetista define declarações Booleanas que são atribuídas a sinais. Essas declarações são executadas concorrentemente e são usadas para implementar funções Booleanas simples, que dependem de um ou vários sinais binários. O método Comportamental descreve os componentes por entradas e saídas. As declarações dentro de um processo são executadas consecutivamente e trabalham da mesma maneira que qualquer programa escrito em uma linguagem procedimental, como C. Dentro de um processo podemos usar estruturas de controles de fluxos, como if e else, for, while, case etc. No método Estrutural o projetista descrever os componentes em componentes mais primitivos. É usado para definir a interconexão lógica dos componentes de circuito. Os três tipo de modelagens podem fazer parte de um mesmo projeto. Cada parte de uma projeto pode ser utilizada a modelagem mais adequada.

24 CAPÍTULO 3. EMBASAMENTO TEÓRICO Estudo de Caso: Visão Computacional A área de Visão Computacional (VC) surgiu recentemente, tendo sido estabelecida como uma das áreas da pesquisa científica. Hierarquicamente, podemos incluí-la como uma das sub-áreas da grande área de Ciência da Computação. Resumidamente, a área de VC usa, entre outras, técnicas de processamento de imagem, específicas da área, para extrair informação importante de imagens ou vídeos. Os resultados destas operações (informação codificada) são geralmente usados em fases posteriores de sistemas mais complexos, tais como os sistemas de monitoramento e vigilância. Técnicas de visão tradicionalmente usadas em computadores são desenvolvidas com o objetivo de dar apoio aos sistemas maiores que precisam de alguma informação advinda das imagens. A parte física de um sistema de Visão Computacional é geralmente composta de dispositivos de captura e digitalização de imagens (câmeras e placas capturadas) e de um computador que processa e retira a informação essencial a uma determinada tarefa. Esses sistemas podem estar acoplados a sistemas mais complexos, como por exemplo um sistema de controle de uma planta (termo usado na engenharia para representar a parte física de um sistema), como por exemplo um sistema de controle de vazão. A estrutura geral dos algoritmos de Visão Computacional tradicionais é mostrada na figura 3.1. Em primeiro lugar, na fase de aquisição, as imagens do ambiente de trabalho são adquiridas e transformadas em dados digitais. Em seguida, a imagem é processada através de algumas técnicas de processamento de imagem que extraem dados da imagem. Esses dados são considerados brutos e precisam ainda ser processados visando realçar determinadas feições ou características, de acordo com a aplicação desejada. Figura 3.1: Estrutura comum dos sistemas de Visão Computacional O resultado (apenas dados relevantes) é processado novamente por outros métodos, visando extrair a informação essencial à realizaçõao da tarefa específica. Esses métodos de pós-processamento podem se utilizar de técnicas exatas ou de técnicas de Inteligência Artificial, não sendo esta etapa relevante ao escôpo de nosso trabalho. Por fim, o resultado (dados transformados em informação relevante) pode ser usado por um bloco específico

25 CAPÍTULO 3. EMBASAMENTO TEÓRICO 14 que finalmente realiza o trabalho para o qual o sistema foi concebido (apanhar um objeto, ativar uma válvula, prover o desvio de um obstáculo, ligar uma bomba, entre outras atividades físicas no mundo real). Algoritmos em hardware podem ser idealizados para executarem na fase de aquisição de imagens, utilizando o hardware para fornecer melhores imagens para a fase posterior de processamento de imagem, que, conseqüentemente, poderá necessitar de menos filtragem do que os exigidos por muitos algoritmos de visão de baixo nível. Claramente, vemos que uma grande parte do tempo de execução do sistema é dispendido na fase de processamento de imagem. Por exemplo, a realização de uma filtragem em imagens com 640x480 pixels pode demorar até centenas de milissegundos, dependendo da área ou do diâmetro do filtro. Isso pode ser um fator impeditivo em algumas aplicações. Por exemplo, considere um sistema de rastreamento que precisa seguir um determinado objeto em uma seqüência de imagens como a acima. Numa solução simples para este problema, a cada vez, o sistema precisa verificar toda a imagem à busca do objeto. Isto envolve realização de filtragens na imagem para extrair características (padrões) e verificar, para cada posição da imagem, se os padrões extraídos nesta posição batem com os padrões do objeto em questão (conhecido a priori), consequentemente determinando sua posição no quadro corrente. Se o objeto for encontrado, o sistema efetivamente consegue realizar o trabalho de rastreamento. Numa execução em tempo real, o problema é que o sistema precisa verificar toda a imagem em menos de 33 ms, a fim de ser capaz de restrear a 30 quadros por segundo (fps), sendo esta uma taxa de aquisição comum, para encontrar o objeto rastreado. A realização de filtragem na imagem toda certamente pode reduzir a velocidade de todo o sistema. Convém ressaltar que a extração de informação para uma dada análise geralmente toma menor tempo e algoritmos mais eficazes existem para resolver o problema mencionado Algoritmos de Visão Computacional baseado em eventos Para entender melhor a aplicação da abordagem proposta no presente trabalho, vejamos o sistema de tratamento de evento de teclado, como mostrado na figura 3.2. O processador principal está executando algum outro trabalho quando uma determinada interrupção é ativada, dando o alerta de que um evento de teclado chegou na fila de eventos. Assim, o processador chama uma rotina pré-configurado para lidar com este evento. Essa rotina agora pode obter os parâmetros do evento e em seguida passar para outras aplicações que podem estar esperando por esse tipo de evento. Podemos inserir um sistema de visão computacional numa abordagem semelhante, como uma fonte de eventos, podendo de alguma maneira avisar o processador sobre a ocorrência de algum tipo de evento. Desta forma, podemos, por exemplo, modularizar a parte do bloco de processamento de imagem reduzindo o tempo de processamento de todo o sistema de visão computacional. A Figura 3.3 mostra como o sistema de eventos ficaria com um módulo de visão que pode processar eventos em imagens e avisar o processador que alguns eventos ocorreram. Com a nossa abordagem, os sistemas de visão computacional podem se tornar mais simples e mais rápido porque num hardware paralelo fica o processamento de imagem, e em

26 CAPÍTULO 3. EMBASAMENTO TEÓRICO 15 Figura 3.2: Sistema de tratamento de evento do teclado outro hardware o controle, a fim de gerar eventos, e apenas quando tais eventos ocorrem os métodos de processamento de imagem são chamados. Um problema com essa abordagem é a especialização do sistema, isto é, a definição de eventos de imagem pode mudar de uma aplicação para outra. Isto significa que o que é considerado um evento para um sistema de rastreamento, que tem que seguir uma bola em uma imagem, pode não ser considerado em outro sistema, tal como como um robô automatizado que está programado para evitar obstáculos. Isto significa que o sistema que é o processamento das imagens tem de ser reconfigurado com base na aplicação em que está sendo utilizado. Na arquitetura projetada, encontramos uma boa solução para este problema. Uma vez que estamos falando de soluções integradas de hardware e software, é fácil definir alguns dos parâmetros de hardware para o aplicativo antes de iniciar o trabalho, tornando o sistema flexível, aplicável a mais de um propósito, incluindo mais de um caso. A implementação de um módulo de eventos em um sistema de processamento de visão pode afetar diretamente o modelo apresentado na figura 3.1. Isso acontece porque o modelo dessa figura tem que bloquear o processador durante o tempo que o bloco de processamento de imagem está funcionando. Com a nossa abordagem, isso não acontece porque muitos dos processamento é feito em um módulo de hardware, em paralelo. Isto levou-nos a um outro modelo que é mostrado na figura 3.4. O bloco de hardware é apresentado como o antigo bloco de processamento de imagem. A diferença é que ele não precisa bloquear o processador, a fim de executar. Outro bloco que está conectado com o bloco de aquisição de imagem, chamado processamente de imagem específico, foi adicionado a fim de tornar o modelo mais genérico. Este bloco é necessário no caso de algoritmos novos ou experimentais de processamento que não são implementadas direto no módulo de hardware, mas necessários para execução do

27 CAPÍTULO 3. EMBASAMENTO TEÓRICO 16 Figura 3.3: Módulo de visão modificado sistema. Este pode ser o pior caso do sistema, quando ele funciona de forma semelhante ao primeiro modelo, mas ainda assim o nosso modelo é mais rápido porque ele poupa muito tempo de computação nos módulos de hardware. Alguns métodos e/ou técnicas que podem ser implementados segundo nosso modelo são descritos a seguir Correlação e Filtragem A técnica conhecida como correlação é muito usada em algoritmos de visão computacional, geralmente quando se deseja verificar a similaridade entre padrões ou conjuntos de dados. Esta técnica pode ser implementada através do uso do operador matemático conhecido como convolução, em suas várias formas (minimização ou maximização). Geralmente, o modelo mais utilizado é a função de correlação cruzada normalizada, que pode ser facilmente derivada usando o teorema de Cauchy-Schuartz ou a desigualdade entre vetores [Anton & Busby 2003] e a média dos valores de cada conjunto de dados (template e região considerada na imagem). Neste modelo, a correlação é definida no intervalo de -1 a +1, sendo que o máximo desta função significa a maior semelhança entre os dois padrões. A filtragem de imagens é outra técnica que também se utiliza do operador de convolução. Basicamente, a idéia é definir empiricamente os valores de uma máscara (filtro), com a qual a imagem é convoluída. Na prática, implementar a filtragem para toda a imagem é calcular, para cada posição, o produto interno entre dois vetores, um definido pelos valores de uma certa vizinhança da posição da imagem considerada e outro definido pelos valores dados pela máscara, num espaço cuja dimensão é definida pelo tamanho da máscara e da região da imagem, que devem ser o mesmo. Dependendo dos valores atribuídos a cada posição da máscara, o efeito da filtragem pode ser diferente. Operações geralmente conhecidas como "achar a média"(filtro média), "realçar arestas"(filtro gradiente),

28 CAPÍTULO 3. EMBASAMENTO TEÓRICO 17 Figura 3.4: Resultado da adição do hardware de visão baseado em eventos "suavizar"(filtro gaussiano), "achar texturas"(filtro laplaciano) podem ser implementadas através deste artifício. Então, podemos peceber que a convolução é um operador básico, que pode e deve ser implementado diretamente em hardware. A convolução é implementada computacionalmente através da multiplicação e acumulação (soma) dos valores dos pixels de uma imagem em uma determinada vizinhança, seja por uma máscara (filtragem) ou por um template (ou pequena região) de outra imagem ou modelo (correlação). Geralmente esta função possui um suporte local limitado, ou seja, a função é limitada a uma vizinhança pequena da imagem Transformada de Hough A transformada Hough é uma técnica para extração de características de uma imagem. Inicialmente a transformada só detectava linhas, mas posteriormente passou a ser usada também para identificação de outras formas geométricas parametrizáveis. A idéia da transformada de Hough é transformar a imagem do espaço x,y para o espaço dos parâmetros que descrevem a curva que se deseja encontrar na imagem. Para isto, este espaço dos parâmetros é discretizado e representado na forma de uma matriz de inteiros, onde cada posição da matriz corresponde a um intervalo no espaço real dos parâmetros. Há várias parametrizações possíveis para o espaço de linhas. Hough usou a equação declive-intercepte, definida por y = a.x + b, como representação paramétrica de uma linha, o que conduziu a dificuldade prática de um espaço de parâmetro ilimitado para linhas que são paralelas ao eixo y. Como solução, é melhor utilizar coordenadas polares para a representação das linhas. Linhas poderiam ser completamente parametrizadas usando o comprimento, r, e a orientação, q, do vetor normal para a linha da imagem original (figura 3). Usando esta parametrização, todo o ponto (x,y) na linha satisfará a equação r

29 CAPÍTULO 3. EMBASAMENTO TEÓRICO 18 = x. cos ( q ) + y. sin ( q ). O algoritmo de Hough requer um acumulador de dimensão igual ao número de parâmetros desconhecidos na equação da família de curvas que são buscadas. Por exemplo, achar segmentos de linhas usando a equação y = ax + b requer achar dois parâmetros para cada segmento: a e b.as duas dimensões da matriz acumuladora para esta família correspondem aos valores quantizados para a e b. Assim, usando uma matriz acumuladora A, o procedimento de Hough examina cada pixel e calcula os parâmetros da curva (equação) especificada que passa pelo pixel. Caso esteja analisando uma imagem que não foi pré-processada com algoritmo de detecção de bordas, fato incomum na transformada de Hough, será examinado o pixel e sua vizinhança na imagem, para determinar se há evidência de extremidade naquele pixel. Somente se houver realizar-se-á o calculo dos parâmetros. Após calculados os parâmetros de um determinado pixel, eles são quantizados para um valor correspondente a e b, e o acumulador A(a, b) é incrementado. Quando todos pixels tiverem sido processados, é procurado no acumulador A os maiores valores (picos). Eles indicam os parâmetros de prováveis linhas na imagem. Um limiar pode ser utilizado quando procura-se o(s) máximo(s) no acumulador, a fim de determinar um valor mínimo de pontos colineares. Se o valor do acumulador não for superior ao do limiar então será considerado um ruído. As detecções de outras formas utilizando a transformada de Hough usam o mesmo princípio, há somente alteração no número de parâmetros da equação que será empregada, e em conseqüência na dimensão do acumulador Filtro Média Ao convoluir uma imagem com o filtro da média, obtém-se uma suavização de ruído na imagem, sendo este filtro muito usado no pré-processamento da imagem. Segundo Trucco [Trucco & Verri 1998]; sendo I uma imagem N x M, m um número impar menor que N e M, e A a matriz de filtro linear, uma máscara m x m. A imagem filtrada Ia da imagem I para cada pixel (i,j) é dada pela convolução discreta: I A (i, j) = I A = m 2 h= m 2 m 2 A(h,k)I(i h, j k) (3.1) k= m 2 sendo m/2 uma divisão inteira(i.e 3/2=1). Se todas as entradas A são positivas, o filtro realiza uma suavização média. Essa simples suavização é o filtro da média, que substitui os valores de cada pixel pela média deles com suas respectivas vizinhanças. A M edia =

30 CAPÍTULO 3. EMBASAMENTO TEÓRICO Filtro de Sobel O filtro de Sobel é um operador matemático que convoluido com uma imagem extrai os contornos da imagem. Por também se tratar de um filtro linear, assim como o filtro da média, a imagem filtrada também é obtida a partir de uma convolução discreta. Suas máscaras de convolução são divididas em duas, uma para os contornos verticais e outra para os contornos horizontais. A Sobelx = A Sobely = Portanto a magnitude e a direção do gradiente são dadas por: A Sobel = 2 (A 2 sobel x + A 2 sobel y ) θ = tan 1( A y A x ) 3.4 Sistema orientado a plataforma Nas pesquisas em hardware re-configurável, é comum o uso de modelagem a nível de transferência de registro (RTL) para projetar máquinas de estados e outras construções que estão diretamente relacionadas com o hardware. Esse tipo de construção é normalmente utilizado em conjunto com as FPGA que possuem uma função específica comumente desempenhada totalmente pelo hardware. Sistemas desse tipo são bastante comuns porém possuem problemas no que se diz respeito a parametrização e reusabilidade o que normalmente leva os desenvolvedores a refazer boa parte do sistema quando se deparam com a adição de novas funcionalidades ou a necessidade de alguma atualização do mesmo. Visando resolver esse tipo de problema em sistemas embarcados, surge o modelo de sistema baseado em plataforma. Este tipo de sistema possibilita a utilização de vários sub-componentes de hardware que são controlados por um ou mais processadores, integrados através de um barramento comum. Esta característica facilita os processos de atualização, gerenciamento e integração desses dispositivos, provendo assim um sistema mais complexo e de forma segura. Em geral, os sistemas baseados em plataforma não têm apenas componentes de hardware, que os tornaria estáticos e voltados completamente a um único tipo de aplicação. Normalmente, tais sistemas permitem que mudanças no tipo de aplicação possam ser realizadas em software, suportando a execução de códigos escritos por desenvolvedores em linguagens imperativas que podem ser utilizados para o controle, gerenciamento e execução de tarefas. Esta possibilidade de programação do hardware via software dá mais

31 CAPÍTULO 3. EMBASAMENTO TEÓRICO 20 flexibilidade e capacidade de configuração, principalmente na resolução de problemas que possuem muitas variáveis e parâmetros. Figura 3.5: Arquitetura comum a sistemas orientados a plataforma A Figura 3.5 mostra a arquitetura básica de um sistema orientado a platafoma contendo um processador e outros dispositivos. Se fosse usada a modelagem clássica de hardware embarcado, teríamos que integrar todos os dispositvos através de entradas e saídas fornecidas pelos mesmos, além de nos preocupar com a sincronização entre os diferentes tipos. Com o uso do modelo de sistemas orientados a plataforma, essa sincronização e ligação entre os componentes é realizada através de um código escrito alguma linguagem de alto nível. Embora o funcionamento de alto nível dos sistemas baseados em plataforma seja mais lento porque o software precisa interagir com os processadores através de uma interface de barramento compartilhado, a parte específica de processamento em hardware compensa isto. Isto é, funções antes realizadas em software agora podem ser realizadas em hardware, aumentando em dezenas de vezes a velocidade de processamento em muitas situações e casos. A flexibilidade deste tipo de sistema permite um ganho considerável, por exemplo, na área de visão computacional, onde muitas aplicações podem ser implementadas em hardware paralelo ou de processamento vetorial (array processors) para diminuir enormemente o trabalho sequencial em software. A Figura 3.5 mostra a arquitetura básica de sistemas orientados a platafoma, contendo um processador e outros dispositivos, usando modelagem clássica de hardware embarcado teríamos que integrar todos os dispositvos através de entradas e saídas fornencidas pelos mesmos, além de nos preocupar com a sincronização entre os diferentes tipos. Com sistemas orientados a plataforma essa sincronização e ligação entre os componentes é feita através de um código escrito alguma linguagem de auto nível. Embora os sistemas baseados plataforma sejam mais lentos porque precisam interagir com os processadores através de um interface de barramento compartilhado, em muitas situações e casos, a flexibilidade deste tipo de sistema é necessária, como na área de visão computacional onde muitas aplicações podem ser implementadas em hardware para simplificar o trabalho em software.

32 Capítulo 4 Implementações A fim de testar e validar a nossa idéia, partimos para a implementação em hardware do modelo proposto, construindo e inserindo componentes com a finalidade de observar a eficiência do sistema orientado a plataforma. Planejamos e implementamos um procedimento de atenção visual que é um dos comportamentos considerados como essenciais em sistemas de visão robótica [Gonçalves et al. 2000]. Basicamente, um mapa atencional (ou mapa de saliências) é construído a partir de características extraídas de imagens adquiridas de um ambiente onde se encontra o sistema visual, que pode, por exemplo, estar em um robô. O sistema deve combinar as características extraídas e calcular, segundo alguma função, o local para onde o robô deve voltar sua atenção. Como este não é o foco principal deste trabalho, aqui usamos simplesmette a função somátorio. Assim, o resultado do sistema é um mapa (matriz 2D) onde cada posição é um somatório dos resultantes dos filtros gaussianio, de Sobel, do laplaciano do gaussiano, do Gaussiano e da Média. Com este mapa de saliências, o robô consegue decidir para qual região ou local do ambiente ele deve voltar sua atenção ou se locomover, dependendo de sua tarefa. Então, em nosso procedimento simples de teste, as imagens capturadas em tempo real são os dados de entrada para nossa plataforma, sendo este tipo de sistema considerado massivo em processamento. Dentro do componente do mapa de atenção, foi também implementado os filtros anteriormente citados. A arquitetura, incluindo componente de filtragem, na plataforma, pode ser vista na figura 4.1. Nas implementações, usamos componentes disponíveis na ferramenta bem como planejamos e desenvolvemos componentes específicos, úteis para nossas aplicações de visão computacional, incluindo componentes de filtragem e um integrador. Esses componentes foram desenvolvidos usando o DSP Builder e programados em hardware usando uma placa FPGA Altera DE2. Figura 4.1: Arquitetura da plataforma desenvolvida No desevolvimento do projeto, escolhemos o VHDL como linguagem de discrição

33 CAPÍTULO 4. IMPLEMENTAÇÕES 22 de hardware. Além de ser uma linguagem de descrição com a qual já possuíamos uma familiarização, justificamos a sua escolha por ser uma das mais populares, tendo vasta documentação e fóruns de discussões que nos foram de grande valia na detecção e correção de erros. No nosso sistema de teste, usamos programação mista, software/hardware. Uma parte foi desenvolvida usando discrição em hardware (VHDL) e outra foi implementada em C padrão. Usamos a linguagem de programação C para fazer a interface com os componentes, incluindo o controle de todos eles. Figura 4.2: Vista superior da DE2 4.1 A Tecnologia Field Programable Gate Array Em nosso trabalho, utilizamos FPGA para a prototipagem dos componentes de hardware que implementarão funções parciais ou totais de algoritmos de visão computacional. Para esse desenvolvimento utilizamos uma placa específica a DE2, do fabricante Altera. A Altera DE2 é uma placa que foi desenvolvida para fins educacionais, visando implementação e teste de circuítos lógicos e circuítos integrados (prototipagem de placas) em áreas do ensino como Engenharia Elétrica, Eletrônica e Computação. Ela tem vários componentes acoplados que podem ser vistos na figura 4.2 e são melhores descritos no seu manual de usuário [ALTERA 2006]. Os componentes disponíveis na placa DE2 são: Dispositivo Altera Cyclone II 2C35 FPGA Altera Dispositivo de Comunicação Serial - EPCS16 USB blaster 512-Kbyte SDRAM 8-Mbyte SDRAM

34 CAPÍTULO 4. IMPLEMENTAÇÕES 23 4-Mbyte Memória Flash Entrada para cartão SD 4 pushbutton switches 18 toggle switches 18 LEDs vermelhos 9 LEDs verdes Osciladores de 50-MHz e 27-MHz para servirem como clock CODEC áudio de 24-bits com qualidade de CD com line-in, line-out, e microfonein VGA DAC (10-bit high-speed triple DACs) com conector VGA-out Decodificador de TV (NTSC/PAL) e conector TV-in Controlador ethernet 10/100 Ethernet Controlador USB Host/Slave com conectores USB do tipo A e B RS-232 transceiver e conector de 9 pinos Conector de mouse e teclado PS/2 IrDA transceiver Dois espaços para de 40 pinos para expansão com proteção à base de diodos Figura 4.3: Esquema da placa FPGA DE2 (diagrama de blocos) Dos componentes acima listados, nem todos são utilizados nas nossas aplicações, porém alguns elementos são extremamente importantes para nossas implementações como

35 CAPÍTULO 4. IMPLEMENTAÇÕES 24 os elementos de memória externos, incluindo a SDRAM e memória DRAM, para suprirem os requisitos de memória presentes em aplicações de visão computacional. Alguns outros componentes como switches e botões específicos (toogle buttons) são utilizados para depuração de implementações em hardware e para testes modulares. Por fim, utilizamos o pulsador (clock) dos osciladores externos, de 50 Mhz e 27 Mhz para funcionamento externo do processador. A figura?? mostra o diagrama de blocos da DE Simulink O dispositivo de filtragem foi inicialmente concebido usando o Simulink, que é uma ferramenta do Matlab [Mat 2010]. A edição e projeto de sistemas de hardware torna-se possível pela adição de uma ferramenta específica para este fim (um plugin) da Altera. Com este plugin, o Simulink torna-se, então, um ambiente amigável para a construção de sistemas em simulação, incluindo a opção de análise e síntese do Quartus, sua ferramenta de análise e síntese, e também permitindo a integração de sistemas construídos diretamente em VHDL ou Verilog. No Sumulink, cujo ambiente é mostrado na Figura 4.4, desenvolvemos um dispositivo de filtro genérico. Os valores das máscaras são entrados pelo software, tornando-o uma ferramenta em hardware com inicialização (programação dos parâmetros) em software. O dipositivo de filtragem foi incorporado à plataforma usando a ferramenta SOPC Builder(construtor de sistemas em um chip disponibilizado no Quartus II). No dipositivo de filtragem, o bus splitter serve como um habilitador, sendo usado, pela lógica de desenvolvimento como o responsável pela leitura dos pixels e da mascára. Dependendo do seu valor, podemos saber se está sendo lido um pixel ou um valor da mascára. O subsistema mask e o subsistema pixels são responsáveis pelo armazemamento dos dados. Um multiplexador é utilizado para determinar qual pixel/mascára está sendo lido, de acordo com os dados gerados pelo bussplitter. Registradores são usados para garantir que os dados estão sendo lidos corretamente, ao serem executadas as multiplicações e o somatório, operações básicas inerentes ao operador de convolução, necessário no processo de filtragem. Na figura 4.5, podemos ver o esquema de multiplicação dos pixels pelo respectivo pixel da mascára, seguido da acumulação dos valores (somátorio) e tendo como saída o pixel resultante. Ainda no Simulink, desenvolvemos o segundo dispositivo, que complementa o processo de atenção visual, integrando as características extraídas para gerar o mapa de saliências. A escrita e leitura de dados segue a mesma lógica do filtro genérico. Na figura 4.6 podemos observamos que as filtragem são feitas em pararelo, com isso conseguimos uma aceleração do algoritmo. 4.3 Incorporando dispositivos com o SOPC O filtro genérico desenvolvido foi incorporado a uma plataforma construída usando o SOPC (System On a Programmable Chip). O SOPC, mostrado na Figura 4.7, é uma

36 CAPÍTULO 4. IMPLEMENTAÇÕES 25 ferramenta disponivél no Quartus, responsável pela integração dos componentes na plataforma. Ele é responsável também pela interligação entre os componentes, via o barramento comum, mostrando o mapeamento em memória de I/O dos dispositivos. Possui alguns componentes importantes já definidos como alguns processadores (NIOS), controladores de barramento (Avalon), entre outros. Através dele podemos saber em que endereço da memória estão os dispositovos de entrada e saída. E podemos então usar esses endereços para o controle dos dispositivos. A nossa plataforma desenvolvida é composta por: Processador Nios II Memória on-chip Memória sdram Filtro e somador (dispositivo desenvolvido) 4.4 Quartus II O Quartus II é uma ferramenta de software desenvolvida e fornecida pela Altera para análise e síntese dos projetos de HDL. Esta ferramenta permite que o desenvolvedor possa compilar seus projetos, realizar análises de tempo e espaço, examinar diagramas RTL, simular a reação de um projeto para diferentes estímulos e configurar o dispositivo alvo com o programador. Ele integra o SOPC Builder,permitindo a otimização do hardware que vai ser gerado. Na figura 4.8 podemos vê o Quartus. 4.5 NIOS IDE II Foi desenvolvido um programa que é responsável por controlar toda a funcionalidade da plataforma. Implementamos um programa que foi desenvolvido no ambiente NIOS IDE II. O NIOS IDE II é um ambiente de desenvolvimento de códigos em C/C++. Fornece compilador dedicado a plataforma NIOS. Também fornece uma interface entre o NIOS e o desenvolvedor, permitindo que um código em C/C++ seja executado no NIOS. Nosso programa, desenvolvido para controlar o filtro genérico, é responsável pela leitura da imagem, pela definição de qual filtro iremos usar, definindo os valores da máscara. Através dele controlamos a leitura dos pixels e da mascára por nosso dispositivo e a escrita do pixel resultante. Esse programa controla o comportamento do sistema através do barramento Avalon Bus, que pode ser visto na figura 4.4. O programa apenas lê uma imagem e os pesos do filtro. Em seguida, ele grava os pixels e os pesos do filtro nos registradores do sistema e retorna o pixel filtrado.

37 CAPÍTULO 4. IMPLEMENTAÇÕES 26 Figura 4.4: Projeto do Simulink

38 CAPÍTULO 4. IMPLEMENTAÇÕES 27 Figura 4.5: Projeto do NMAC (numerical multiplier and accumulator)

39 CAPÍTULO 4. IMPLEMENTAÇÕES 28 Figura 4.6: Projeto do Mapa Atencional

40 CAPÍTULO 4. IMPLEMENTAÇÕES 29 Figura 4.7: SOPC

41 CAPÍTULO 4. IMPLEMENTAÇÕES 30 Figura 4.8: quartus

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

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

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

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

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

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

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

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

Introdução ao Desenvolvimento de Circuitos Digitais Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

Introdução ao Desenvolvimento de Circuitos Digitais Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h Introdução ao Desenvolvimento de Circuitos Digitais Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h A grande ideia! O processo de concepção de um produto (chip) é muito demorado. Tempo; Esforço;

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

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

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

ENGENHARIA DE SOFTWARE I

ENGENHARIA DE SOFTWARE I ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [cassio.costa@ulbra.br] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis

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

Itinerários de Ônibus Relatório Final

Itinerários de Ônibus Relatório Final CENTRO UNIVERSITÁRIO SENAC Itinerários de Ônibus Relatório Final Grupo 5 Caio Roque Daniel Nunes Elise Roese José Caneiro Marcos Grignani São Paulo Junho de 2007 1 ÍNDICE 1. Introdução... 3 2. Desenvolvimento...

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

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

Engenharia de Software

Engenharia de Software Engenharia de Software O que é a engenharia de software É um conjunto integrado de métodos e ferramentas utilizadas para especificar, projetar, implementar e manter um sistema. Método É uma prescrição

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Engenharia de Sistemas Computacionais

Engenharia de Sistemas Computacionais Engenharia de Sistemas Detalhes no planejamento UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Introdução Na aplicação de um sistema

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

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

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA

PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) Yegor Gomes de Mello (UFRN, Bolsista PIBIC/CNPq) E-mail: yegor_melo@crn.inpe.br

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

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

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

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

15 Computador, projeto e manufatura

15 Computador, projeto e manufatura A U A UL LA Computador, projeto e manufatura Um problema Depois de pronto o desenho de uma peça ou objeto, de que maneira ele é utilizado na fabricação? Parte da resposta está na Aula 2, que aborda as

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

ÁREA: CV ( ) CHSA ( ) ECET ( )

ÁREA: CV ( ) CHSA ( ) ECET ( ) ADAPTAÇÃO E INTEGRAÇÃO DO PROCESSADOR RISCO A UMA ARQUITETURA MULTI-CORE PARA SISTEMAS EMBARCADOS DE PROPOSITO GERAL Laysson Oliveira Luz (Bolsista PIBIC/CNPq), Ivan Saraiva Silva (Orientador, Departamento

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

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula

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

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

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

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Síntese de tópicos importantes PRESSMAN, Roger S. Conteúdo Componentes e tipos de software Problemas com o software e suas causas Mitologia que envolve o software Configuração de

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

Análise e Projeto de Software

Análise e Projeto de Software Análise e Projeto de Software 1 Mundo Real Modelagem Elicitação Análise Problemas Soluções Gap Semântico Mundo Computacional Elicitação de Requisitos Análise de Requisitos Modelagem dos Requisitos 2 Projeto

Leia mais

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

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

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Aprenda as melhores práticas para construir um completo sistema de teste automatizado Aprenda as melhores práticas para construir um completo sistema de teste automatizado Renan Azevedo Engenheiro de Produto de Teste e Medição -Américas Aprenda as melhores práticas para construir um completo

Leia mais

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br Análise de Sistemas Visão Geral: Orientação a Objetos Prof. José Honorato Ferreira Nunes Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br Resumo: VISÃO GERAL: Modelagem de sistemas

Leia mais

Prof. Esp. Lucas Cruz

Prof. Esp. Lucas Cruz Prof. Esp. Lucas Cruz O hardware é qualquer tipo de equipamento eletrônico utilizado para processar dados e informações e tem como função principal receber dados de entrada, processar dados de um usuário

Leia mais

Processos de Desenvolvimento de Software

Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software Gerenciamento de Projetos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e

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

CHECK - LIST - ISO 9001:2000

CHECK - LIST - ISO 9001:2000 REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da

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

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Air-Fi - sistema sem fio Sinta-se confortável com a confiança e o desempenho líderes do setor.

Air-Fi - sistema sem fio Sinta-se confortável com a confiança e o desempenho líderes do setor. Air-Fi - sistema sem fio Sinta-se confortável com a confiança e o desempenho líderes do setor. Corte os fios e sinta-se confortável com a solução sem fio Air-Fi da Trane. A comunicação sem fio Air-Fi da

Leia mais

1 Introdução. 1.1. Motivação

1 Introdução. 1.1. Motivação 15 1 Introdução Esta dissertação dedica-se ao desenvolvimento de um analisador de erro para Redes Ópticas através da utilização de circuitos integrados programáveis de última geração utilizando taxas que

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Solitaire Interglobal

Solitaire Interglobal Solitaire Interglobal POWERLINUX OU WINDOWS PARA IMPLANTAÇÃO SAP Escolher entre as plataformas concorrentes de sistema operacional Linux e Windows para SAP pode ser uma tarefa confusa para as organizações.

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis PARTE 1 - TEORIA Dispositivos Lógicos Programáveis Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis, que possuem um grande número de portas lógicas,

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial

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

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

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Admistração de Redes de Computadores (ARC)

Admistração de Redes de Computadores (ARC) Admistração de Redes de Computadores (ARC) Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José Prof. Glauco Cardozo glauco.cardozo@ifsc.edu.br RAID é a sigla para Redundant

Leia mais

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com Engenharia de Software: conceitos e aplicações Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com 1 Objetivos da aula Apresentar os conceitos de Engenharia de Software e explicar a sua importância.

Leia mais

Sua indústria. Seu show. Seu Futuro

Sua indústria. Seu show. Seu Futuro Sua indústria. Seu show. Seu Futuro Usinagem 5-Eixos para Moldes Sandro, Vero Software Vero Software está no topo do relatório de fornecedores de CAM da CIMData 2014 Com maior Market Share, crescimento

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

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

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

Projeto de Sistemas I

Projeto de Sistemas I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

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

Introdução à Engenharia de Software

Introdução à Engenharia de Software Introdução à Engenharia de Software Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Imagem Clássica Objetivo da aula Depois desta aula você terá uma visão sobre o que é a engenharia

Leia mais

Automação de Locais Distantes

Automação de Locais Distantes Automação de Locais Distantes Adaptação do texto Improving Automation at Remote Sites da GE Fanuc/ Water por Peter Sowmy e Márcia Campos, Gerentes de Contas da. Nova tecnologia reduz custos no tratamento

Leia mais

Memórias Prof. Galvez Gonçalves

Memórias Prof. Galvez Gonçalves Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores

Leia mais

Automação de Bancada Pneumática

Automação de Bancada Pneumática Instituto Federal Sul-rio-grandense Campus Pelotas - Curso de Engenharia Elétrica Automação de Bancada Pneumática Disciplina: Projeto Integrador III Professor: Renato Allemand Equipe: Vinicius Obadowski,

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

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

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

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

UNIVERSIDADE FEDERAL DE SANTA CATARINA

UNIVERSIDADE FEDERAL DE SANTA CATARINA UNIVERSIDADE FEDERAL DE SANTA CATARINA CIÊNCIAS DA COMPUTAÇÃO MÁQUINAS DE COMITÊ APLICADAS À FILTRAGEM DE SPAM Monografia submetida à UNIVERSIDADE FEDERAL DE SANTA CATARINA para a obtenção do grau de BACHAREL

Leia mais

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2 MEMÓRIA CONCEITO Bit- 0 1 Essência de um sistema chamado BIESTÁVEL Ex: Lâmpada 0 apagada 1 acesa 0 e 1 únicos elementos do sistema de numeração de base 2 A que se destina a memória: Armazenamento das instruções

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera

Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera Ricardo Menotti Orientador: Prof. Dr. Eduardo Marques Instituto de Ciências Matemáticas e de Computação

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br

Algoritmos. Cláudio Barbosa contato@claudiobarbosa.pro.br Algoritmos Partes básicas de um sistema computacional: Hardware, Software e Peopleware Hardware - Componentes físicos de um sistema de computação, incluindo o processador, memória, dispositivos de entrada,

Leia mais

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC Tiago Menezes Xavier de Souza¹, Igor dos Passos Granado¹, Wyllian Fressatti¹ ¹Universidade Paranaense (UNIPAR) Paranavaí- PR- Brasil tiago_x666@hotmail.com,

Leia mais

Componentes de um computador típico

Componentes de um computador típico Componentes de um computador típico Assim como em um videocassete, no qual é necessário ter o aparelho de vídeo e uma fita contendo o filme que será reproduzido, o computador possui a parte física, chamada

Leia mais