Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMAS EMBARCADOS AULA 6 Prof. Rafael Vilas Boas Wiecheteck CONVERSA INICIAL Até o momento, estudamos as aplicações com sistemas embarcados por meio da utilização de microcontroladores e microprocessadores. Os microcontroladores são mais utilizados em sistemas embarcados por apresentarem vários periféricos implementados no mesmo chip. Além dos controladores tradicionais, é possível utilizar controladores programados conforme a necessidade do projetista. Esses controladores são conhecidos como PLD. Os dispositivos PLD utilizam a lógica programável, ou seja, o chip pode ser programado com a função lógica necessária, apagado e reprogramado a qualquer momento. Essa característica torna os dispositivos PLD muito úteis, principalmente durante o desenvolvimento de um protótipo, em que o projeto do hardware pode sofrer diversas alterações até chegar ao produto final. Nesta aula, veremos algumas características desses dispositivos. TEMA 1 – INTRODUÇÃO À LÓGICA PROGRAMÁVEL Basicamente, até o momento discutimos sobre os microprocessadores e os microcontroladores, que são componentes de propósito geral capazes de executar várias funções diferentes, e os circuitos integrados, que apresentam funções específicas para realizar tarefas bem definidas. No entanto, há também os dispositivos de lógica programável, que podem ser programados, apagados e reprogramados a qualquer momento. Estes componentes são muito versáteis, pois podem projetar e testar circuitos lógicos. 1.1 Microprocessadores e microcontroladores Os microcontroladores são considerados componentes versáteis devido à sua programabilidade, de modo que a programação permite sua aplicação em diversos tipos de controles industriais, comerciais e residenciais. Para executar essas diferentes funções, é necessária a execução de programas que controlam o que deve ser feito. Para isso, os microcontroladores realizam ciclos de busca e execução, de forma sequencial, das várias instruções que os compõem. É interessante lembrar que os ciclos de busca realizados pelos controladores programáveis são essenciais ao funcionamento de desses 3 dispositivos. No entanto, demandam determinado tempo dos microcontroladores, os quais poderiam ser utilizados para a execução de tarefas relacionadas ao processo a ser controlado. Os microprocessadores e microcontroladores, apesar de apresentarem vários periféricos incorporados em seu chip, podem necessitar de funcionalidades adicionais para atender às exigências de uma aplicação específica. Para isso, os circuitos integrados digitais, com essas funções internas predefinidas, são integrados à eletrônica do projeto. Os circuitos integrados são chamados de ASICs (Aplication Specific Integrated Circuits – Circuitos Integrados de Aplicação Específica). Como característica de um componente ASIC, podemos citar o processo de fabricação especial, sendo obrigatório o uso de máscaras específicas para cada projeto, e fazendo com que o tempo de desenvolvimento se torne longo e o custo de produção muito alto. Para diluir esse custo, é necessária a produção em grande escala, inviabilizando o desenvolvimento para protótipos e produções em baixas quantidades. Nessas situações, o projetista precisa de aplicações específicas sobre os componentes que serão utilizados, por exemplo, qual processador, se ele terá outros dispositivos incorporados na mesma pastilha (SoC) ou se será necessário projetar circuitos externos para acrescentar outros chips que executem funções não implementadas no microcontrolador ou processador. 1.2 Lógica programável Na lógica programável, por outro lado, é realizado o desenvolvimento de projetos de circuitos digitais com a utilização de ferramentas de software chamadas de EDA (Eletronic Design Automation – Automação de Projetos Eletrônicos) e dos componentes eletrônicos PLDs (Programmable Logic Devices – Dispositivos Lógico Programáveis). Os PLDs são circuitos integrados (chips) que podem ser configurados pelo projetista dos circuitos eletrônicos. Esses componentes não têm qualquer função ou circuitos lógicos pré-definidos, sendo totalmente configurados pelo usuário. Com isso, elimina-se o processo de fabricação do circuito integrado, simplificando e agilizando o ciclo de projeto do produto, e também facilitando mudanças que possam ocorrer no projeto de hardware. 4 Para as etapas de projeto e protótipo, a tecnologia de lógica programável permite um ciclo de projeto e custos reduzidos. Outra característica de um dispositivo lógico programável é o fato de o algoritmo de controle ser implementado em hardware, ou seja, não há ciclos de busca e execução de instruções, como ocorre em um microprocessador ou microcontrolador comum. Basicamente, o objetivo é implementar uma arquitetura de hardware eficiente para executar um algoritmo de controle sem a necessidade de fazer a compilação do código. Além disso, esses dispositivos são capazes de definir vários blocos de hardware, ou, em outras palavras, variadas funções, as quais podem ser executadas em paralelo. Isso aumenta a capacidade computacional do sistema. A figura 1 apresenta uma placa de desenvolvimento para sistemas embarcados utilizando um processador com a tecnologia de lógica programável. É possível observar que o kit tem tamanho significativamente reduzido em relação aos kits de desenvolvimento com controladores tradicionais. Figura 1 – Kit de desenvolvimento utilizando um controlador por lógica programável Fonte: Elecfreaks. 5 TEMA 2 – CLASSIFICAÇÃO DOS PLDS Os dispositivos PLDs são classificados em função da quantidade de portas lógicas que os compõem. Esses dispositivos podem ser divididos em dois grupos principais: SPLDs (Simple Programmable Logic Devices – Dispositivos Lógico Programáveis Simples): este grupo é classificado como dispositivos simples por possuírem baixa capacidade. Normalmente, apresentam menos de 600 portas lógicas. HCPLDs (High Complex Programmable Logic Devices – Dispositivos Lógico Programáveis de Alta Complexidade): neste grupo encontram-se os dispositivos considerados de alta capacidade, pois, de modo geral, apresentam mais de 600 portas lógicas. Este grupo compreende os CPLDs (Complex Programmable Logic Devices – Dispositivos Lógico Programáveis Complexos) e FPGAs (Field Programmable Gate Arrays – Arranjo de Portas Programáveis em Campo), que podem alcançar em torno de 250 mil portas lógicas. 2.1 SPLDs Os primeiros dispositivos lógico-programáveis simples desenvolvidos foram os PLAs (Programmables Logic Arrays), com o objetivo específico de desenvolver circuitos lógicos. Este tipo de componente possui dois níveis de portas lógicas, sendo um plano de portas AND seguido por outro plano de portas OR. Ambos os planos podem ser programáveis. A estrutura de um dispositivo PLA é constituída de forma que seja possível configurar o plano AND, o qual deve realizar as operações em função das entradas, e que essas saídas AND possam ser utilizadas como entradas para o plano OR produzir o resultado de suas operações. A figura 2 apresenta a estrutura simplificada de um PLA. 6 Figura 2 – Estrutura simplificada de um PLA Fonte: Oliveira; Aguiar; Fontanini. O alto custo da tecnologia PLA tem alto custo de produção, pela dificuldade de fabricação, e baixo desempenho, devido aos atrasos de propagação de sinal, sendo que essas desvantagens ocorrem por consequência dos dois níveis de lógica configurável. Para resolver os problemas da tecnologia PLA, foi desenvolvida a tecnologia PAL (Programmable Array Logic), em que é utilizado somente um plano AND. As saídas dessas portas são os sinais de entrada das portas OR. A figura 3 apresenta uma estrutura simplificada dessa tecnologia.Figura 3 – Estrutura simplificada de um PAL Fonte: Oliveira; Aguiar; Fontanini. 7 2.2 HCPLDs Como dito anteriormente, os dispositivos HCPLDs são mais complexos que os dispositivos do grupo anterior. De modo geral, são divididos em dois outros grupos: os CPLDs e os FPGAs. As principais diferenças entre esses dispositivos são a estrutura interna das células lógicas e o modo como são realizadas as interligações entre essas células. 2.2.1 Dispositivos CPLD Os dispositivos CPLDs são uma combinação de uma matriz AND/OR programável, que pode executar uma grande quantidade de funções lógicas, e um banco de macrocélulas, que realiza lógicas combinatórias ou sequenciais bastante flexíveis e capazes de se comunicar por diversos caminhos diferentes. Estes dispositivos podem ser reprogramáveis, possuem alto desempenho, alta capacidade de integração e baixo custo por função. Devido a essa versatilidade, podem ser utilizados como máquina de estados ou decodificador de sinais, substituindo vários circuitos digitais. Os CPLDs têm capacidade lógica de até 50 dispositivos PLDs típicos. Como principais vantagens, podemos citar: Programação: as funções lógicas podem ser alteradas, facilitando o desenvolvimento de protótipos; Escalabilidade: com a eliminação de vários componentes discretos, o tamanho das placas de circuitos impressos é reduzido; Tempo de desenvolvimento: capaz de diminuir o tempo de desenvolvimento do circuito impresso. Por exemplo, é possível definir que as entradas e saídas ocupem o mesmo terminal do dispositivo; Testes: a programação do dispositivo permite que sejam realizadas simulações, testes e depurações no protótipo. O outro grupo de dispositivos, o FPGA, será abordado no próximo tema. TEMA 3 – TECNOLOGIA FPGA Os dispositivos vistos até o momento permitem que uma variedade de circuitos lógicos possa ser desenvolvida. Entretanto, com exceção dos CPLDs, devido à baixa capacidade desses componentes, as suas utilizações ficam 8 restritas a pequenas aplicações. Dependendo da aplicação, até mesmo os CPLDs podem não atender às exigências do projeto pelo fato da necessidade de implementação de circuitos lógicos de grande capacidade. Para os casos onde há a necessidade de implementar grande quantidade de circuitos lógicos, os FPGAs são utilizados. Esses dispositivos apresentam um arranjo de blocos lógicos configuráveis, sendo cada bloco capaz de implementar funções lógicas e efetuar um roteamento de comunicação entre eles. Os FPGAs são constituídos por blocos lógicos, blocos de entrada e saída, e chaves de interconexão. Os blocos lógicos têm como objetivo implementar uma matriz bidimensional. As chaves de interconexão operam como canais de roteamento entre os blocos lógicos, permitindo a conexão entre eles, tanto entre as linhas quanto entre as colunas. A figura 4 apresenta a estrutura simplificada de um dispositivo FPGA. Figura 4 – Estrutura simplificada de um FPGA Fonte: Oliveira; Aguiar; Fontanini. 3.1 Blocos lógicos de FPGA Para a implementação das funções lógicas, internamente ao bloco lógico de um FPGA, o caminho mais utilizado é o do bloco de memória LUT (Look-Up Table). Nesses blocos, são armazenadas as funções lógicas implementadas e cada célula é capaz de armazenar apenas um único bit. Normalmente, os LUTs 9 possuem 4 ou 5 entradas, permitindo endereçar 16 ou 32 células de armazenamento. Ao sintetizar um circuito lógico, os blocos são preparados para realizar as funções necessárias e os canais de roteamento são configurados para executar as interconexões entre os blocos lógicos. Vale ressaltar que essas células de armazenamento são voláteis, ou seja, perdem sua programação na falta de energia elétrica. Para contornar essa situação, utiliza-se a memória EEPROM ou Flash para reprogramar o FPGA quando este for novamente energizado. 3.2 Granularidade A menor unidade configurável de um dispositivo FPGA é denominada de grão. Esta característica dos FPGAs é dividida em alguns grupos: Grão grande: neste grupo um grão pode implementar unidades lógicas aritméticas, pequenos microprocessadores e memórias. Grão médio: neste grupo um grão possui mais de um LUT. Normalmente, essas arquiteturas utilizam 4 entradas para as LUTs. Grão pequeno: esse grupo possui uma grande quantidade de blocos lógicos simples, normalmente com uma função lógica de duas entradas. TEMA 4 – APLICAÇÕES DA LÓGICA PROGRAMÁVEL Na grande maioria dos problemas em que a computação é utilizada, a implementação de sistemas computacionais é feita por um hardware e por um software que executam determinado conjunto de instruções em um processador. Por mais que esse conjunto seja bastante flexível, a utilização do software não consegue atender à demanda de desempenho exigida pelas aplicações para alguns tipos de problemas. Esse problema de desempenho, em algumas situações específicas, ocorre porque o processador precisar ler, interpretar e executar cada instrução individualmente. Com a computação reconfigurável, que utiliza dispositivos FPGA, é possível unir as vantagens de ambas as implementações, ou seja, a versatilidade e a flexibilidade do software e a capacidade de desempenho e execução da computação paralela do hardware. 10 Portanto, esses sistemas são plataformas em que o hardware pode se modificar em tempo real para se adequar à aplicação executada. 4.1 Aplicações com utilização de FPGA Os dispositivos FPGA podem ser aplicados em uma grande quantidade de situações. Coelho, Ferting e Ferting (2016) dão alguns exemplos, citando três áreas específicas: Sistemas embarcados: atualmente, existem novos paradigmas com relação a aplicações de sistemas embarcados, exigindo, cada vez mais, grande paralelismo no processamento de dados de fontes variadas - como sistemas automotivos ou robóticos de controle e navegação. Para essas aplicações, há processadores de propósito geral com instruções dedicadas a determinadas aplicações, como microcontroladores ou processadores de sinais digitais – DSPs. Quando, em sistemas embarcados, há um limite reduzido para custo de energia, é necessária uma alternativa aos processadores tradicionais e os processadores de sinais (DSP), aplicando-se, portanto, computadores reconfiguráveis. A possibilidade de uso de computadores reconfiguráveis e hardwares programáveis se encontra nos FPGAs e ASICs, que permitem um projeto concorrente de hardware e software em um único chip, essencial às aplicações de sistemas embarcados. A necessidade de FPGAs em robótica influi na sua usabilidade em sistemas embarcados, pois, em sua maioria, os robôs em pesquisa e desenvolvimento são móveis e autônomos, necessitando de sistemas de hardware igualmente autônomos, nos quais melhor se encaixam os sistemas embarcados. Entre as diversas aplicações de robótica com sistemas embarcados desenvolvidos usando FPGAs, estão: aplicações na educação, lazer, sistemas de visão computacional, sistemas de localização e mapeamento. Sistema de controle de robôs: em sistemas de controle em robôs reais, uma alternativa é a utilização de FPGAs para implementar módulos de software e hardware do sistema de controle. Para os sistemas de controle, usam-se algoritmos computacionais que, em sua maioria, apresentam o gargalo de von Neumann. Este gargalo consiste em um conjunto de limitações que os processadores de propósito geral (GPPs), fundamentados no modelo de von Neumann, apresentam. Dentre tais limitações: degradação acentuada de 11 velocidade de processamento devido a execuções sequenciais de código e às limitações de barramento de dados (Hartenstein, 2006). Assim, basicamente, a constante repetição de instruções pode tornar determinando algoritmo lento. Tendo ciência da presença do paralelismo inerente aos algoritmos de controle,surge a necessidade de empregar estruturas de hardware dedicadas, que acelerem parcial ou totalmente a execução destes algoritmos, tornando-os mais ágeis. Algoritmos computacionais: até pouco tempo atrás, existiam duas formas de executar um algoritmo computacional (Compton, 1999); por meio de ASICs ou de microprocessadores. Os ASICs são conhecidos como hardwares totalmente customizados usados para realizar operações com alto grau de especificidade, sendo, consequentemente, extremamente rápidos e eficientes para as operações designadas. Um ASIC, entretanto, não pode ser modificado depois de implementado, de modo que se houver uma mudança de especificação da operação, será desenvolver um novo ASIC para executar cada nova alteração. Isso incorre em um alto custo financeiro, além do tempo demandado. Além de ASICs, os microprocessadores podem executar qualquer operação digital e, por apresentarem a flexibilidade como característica principal, o tempo decorrido em instruções de decodificação e busca é maior em relação aos ASICs, resultando, assim, em um desempenho menor. Devido a estes impasses tecnológicos, os FPGAs surgem como solução na aceleração e implementação de algoritmos computacionais no que diz respeito a aplicações robóticas. TEMA 5 – TECNOLOGIA FPAA Com a rápida evolução da tecnologia, atualmente, o desenvolvimento de circuitos eletrônicos específicos (ASIC) para a etapa de prototipagem é muito caro. Caso mudanças ocorram, um novo circuito deve ser projetado e produzido. Os dispositivos FPGA já atendem às necessidades dos circuitos digitais, porém há a mesma necessidade para os circuitos analógicos. Para atender à carência de circuitos analógicos reconfiguráveis, existem os dispositivos FPAA (Field Programmable Analog Array). Muitas aplicações precisam ser implementadas no domínio analógico e, apesar da complexidade ao se projetar os circuitos analógicos, eles são muito eficientes em termos de energia. Estes circuitos são adequados, por exemplo, 12 para aplicações móveis. Geralmente, consistem em circuitos integrados específicos (ASICs). Os FPAAs são circuitos integrados flexíveis que contêm diversos blocos de função programável (FB), ou blocos analógicos configuráveis (CABs), que podem ser reconfigurados ou reprogramados para diferentes funções de processamento de sinal analógico, e são interligados entre si por uma rede de roteamento, que também é programável. Ao programar os FBs / CABs e alterar suas conexões, várias funções analógicas podem ser implementadas. O objetivo principal desses dispositivos é a prototipagem rápida de circuitos analógicos. Devido ao fato de os circuitos analógicos serem mais complexos, os FPAAs apresentam aplicações bem mais específicas em relação aos dispositivos FPGA. A figura 5 apresenta o diagrama de blocos genéricos de um FPAA. Figura 5 – Diagrama de blocos genéricos de um FPAA Fonte: Fonseca, 2015. A memória de roteamento armazena uma string de bits usada para realizar a conectividade da rede de interconexão. A memória de função armazena, também, uma string de bits, mas, neste caso, é utilizada para a geração da função desejada nos FBs/CABs e em seus parâmetros de ajustes. 13 As redes de interconexão podem assumir formas diversas, como de árvore, barra ou caminho de dados, de modo a conectar FBs / CABs com os sinais de entrada e saída para atender aos diferentes requisitos de sistema. Cada FB / CAB pode ser programado para implementar algumas funções analógicas básicas, como somadores, multiplicadores, amplificadores, integradores etc. Os blocos de E/S são dispostos ao redor do chip que fornecem a ele a interface de entrada e saída. 5.1 Classificação tecnológica Os sinais analógicos podem ser divididos em dois grupos quando falamos de funções no domínio do tempo: os sinais de tempo contínuo e os sinais de tempo discreto. Essa divisão é importante porque determinará a classificação principal dos circuitos reconfiguráveis, que podem ser: Circuitos reconfiguráveis para tempo discreto – baseados principalmente no chaveamento de capacitores (SC) ou no princípio do chaveamento de corrente (SI). Circuitos reconfiguráveis para tempo contínuo – baseados nos amplificadores operacionais de transcondutância (OTA), conversores de corrente (CC) e circuitos RC ativos (RC). As técnicas de desenvolvimento para tempo contínuo proporcionam uma largura de banda maior, menor potência de consumo e uma área menor no circuito integrado. Por outro lado, a técnica de desenvolvimento para tempo discreto permite uma programação mais fácil e é menos sensível a variações no processo de fabricação, entretanto, consome mais energia e é limitada a uma largura de banda de operação menor. Além disso, esta segunda técnica ocupa um espaço maior no chip. FINALIZANDO Nesta última aula, pudemos conhecer um pouco mais sobre a lógica programável e os dispositivos lógico programáveis (PLD). Falamos sobre as diversas categorias de dispositivos, desde os mais simples até o mais complexo, que, no caso, é o dispositivo FPGA. 14 Demos mais atenção ao FPGA pelo fato de ele ser o dispositivo mais utilizado, devido à sua grande capacidade de implementação de circuitos lógicos. Vimos também que estes dispositivos são capazes de executar aplicações realmente paralelas, considerando que toda a sua lógica está implementada em hardware e, portanto, não depende de instruções de leitura e execução como nos controladores tradicionais. Em um sistema embarcado, é possível desenvolver aplicações onde o processador e todos os periféricos estão implementados dentro de um mesmo chip, como também podemos utilizar um processador tradicional como mestre e o dispositivo FPGA como escravo, implementado com todos os periféricos necessários à aplicação. Neste último caso, por exemplo, é possível que o dispositivo seja reprogramado em tempo real para executar outro circuito lógico totalmente diferente do primeiro. Por fim, falamos sobre o dispositivo FPAA, dispositivo similar ao FPGA, porém com a função de implementar circuitos analógicos. Esses dispositivos são mais complexos e ainda não alcançaram o mesmo estágio de desenvolvimento dos FPGA, mas há muitos estudos e pesquisas sendo desenvolvidos nessa área. 15 REFERÊNCIAS COELHO, L. A.; FERTIG, K. S.; FERTIG, K. S. Aplicações de FPGA em Robótica. 2016. Disponível em: <https://wiki.sj.ifsc.edu.br/wiki/images/a/a2/DLP29006-AE1-Tema2-2016- 1.pdf>. Acesso em: 2 dez. 2017. ELECFREAKS. Altera Cyclonell – EP2C5T144 FPGA mini development board. Disponível em: <http://www.elecfreaks.com/store/altera-cycloneii-ep2c5t144- fpga-mini-development-board-p-132.html>. Acesso em: 2 dez. 2017. FONSECA, P. J. R. Controller implementation using analog reconfigurable hardware (FPAA). 2015. Dissertação (Mestrado em Computação e Engenharia Elétrica) – Departamento de Engenharia Elétrica, Instituto de Engenharia do Porto. Porto: Isep, 2015. Disponível em: <http://recipp.ipp.pt/bitstream/10400.22/8126/1/DM_PauloFonseca_2015_MEE C.pdf>. Acesso em: 2 dez. 2017. OLIVEIRA, C.; AGUIAR, J.; FONTANINI, M. Dispositivos lógicos programáveis. Universidade Estadual Paulista – UNESP. Campus de Guaratinguetá. Disponível em: <http://www.feg.unesp.br/Home/PaginasPessoais/ProfMarceloWendling/logica- programavel.pdf>. Acesso em: 2 dez. 2017.
Compartilhar