Buscar

Introdução à Lógica Programável em Sistemas Embarcados

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.

Continue navegando