Escolar Documentos
Profissional Documentos
Cultura Documentos
PROPÓSITO
Compreender a motivação que conduziu o desenvolvimento dos primeiros microcontroladores
e os diferentes tipos de arquitetura que surgiram com o tempo é essencial para alicerçar a
formação do projetista de sistemas embutidos, pois facilitará o seu trabalho de especificação e
aprendizado de novos modelos de microcontroladores.
OBJETIVOS
MÓDULO 1
MÓDULO 2
MÓDULO 3
MÓDULO 4
INTRODUÇÃO
Por muito tempo, os designers (projetistas) de produtos eletrônicos usaram componentes
discretos para construir, primeiro, os sistemas analógicos, e depois os digitais.
O projetista de sistemas integrados não é apenas um novo rótulo para uma atividade antiga.
Esse projetista enfrenta hoje novos desafios. Eles são solicitados a produzir sistemas cada vez
mais complexos usando as tecnologias mais recentes, mas essas tecnologias estão mudando
mais rápido do que nunca, da mesma forma que são solicitados a produzir projetos de melhor
qualidade com um menor tempo de colocação no mercado e implementando novas
funcionalidades.
Mas, mais importante, a satisfazer várias outras restrições. Não é suficiente, por exemplo, ter
um smartphone com o qual você possa se comunicar. Ele também deve ter tela ampla, tirar
boas fotos, ser leve, ter um custo razoável, ter boa duração de bateria e proteger o conteúdo
nas aplicações que você utiliza, dentre outras características.
Comunicar ainda pode ser a funcionalidade principal, mas o tamanho, peso, consumo de
energia e o uso de criptografia para troca segura de dados são restrições que devem ser
alcançadas para um smartphone aceitável. Para atingir os objetivos atuais do design, o
projetista deve estar ciente dessas restrições e, mais importante, dos fatores que têm um efeito
direto sobre elas.
Daremos um passo essencial para poder atuar bem como um projetista de sistemas
embarcados (ou embutidos), começando pelo entendimento da evolução do principal
dispositivo desses sistemas, o microcontrolador.
MÓDULO 1
Embora não seja essencial que você entenda como os microcontroladores se desenvolveram
até o ponto em que estão hoje, esta é uma história importante, que vai ajudá-lo a entender
onde um determinado microcontrolador, que você considere para um projeto, se encaixa na
hierarquia geral de tecnologia da informação e produtos eletrônicos.
Figura 1: Foto Ilustrativa de aluno trabalhando na estação de trabalho do laboratório
fazendo programação de microcontrolador. Fonte: Shutterstock.
Mais importante, por ter esse conhecimento, você fará melhores escolhas e tomará melhores
decisões sobre quando e onde usar um microcontrolador, em vez de outras alternativas.
MICROCONTROLADORES E O AUMENTO
NA INTEGRAÇÃO DOS CIRCUITOS
Se você abrir um equipamento eletrônico da década de 1980, como um CD player ou um
videocassete (se você nunca viu um, pesquise na internet), você descobrirá que eles estão
absolutamente recheados de placas de circuito e que cada placa de circuito é densamente
povoada por circuitos integrados (chips) e componentes que fazem tudo funcionar.
Por outro lado, abrindo um Blu-ray player fabricado nos últimos anos, você provavelmente
encontrará bastante espaço vazio, e apenas uma pequena placa de circuito contendo talvez
dois ou três chips bem grandes e um punhado de outros componentes. No entanto, o
dispositivo mais moderno oferece qualidade e robustez muito melhores, com muito mais
recursos e opções do que seu predecessor dos anos 1980.
Podemos identificar dois fatores principais para essa transformação, que ocorreu em toda a
indústria de produtos eletrônicos:
A crescente miniaturização de componentes eletrônicos, o que permitiu que mais e mais
circuitos fossem colocados em chips únicos, reduzindo a contagem de chips necessária
para qualquer função.
(lançados no início dos anos 1970) mediam, cada um, cerca de 10 mícrons (10-6 metros) de
diâmetro. Só para se ter uma ideia da escala, um fio de cabelo humano tem, em média, cerca
de 100 mícrons de largura.
VOCÊ SABIA
nanômetros (10-9 metros) de diâmetro, apenas 14 vezes mais largos que as moléculas de
DNA. Isso dá uma ideia do ritmo de miniaturização que ocorreu nos circuitos integrados desde
os anos 1970.
Essa transição de funções para os microcontroladores só foi possível porque mais integração
de dispositivos é realizada nessas arquiteturas em cada geração. Isso permite a redução no
custo de fabricação dos equipamentos, aumentando também a velocidade com que novas
funcionalidades podem ser agregadas com o controle desses dispositivos no mesmo firmware.
EXEMPLO
Por exemplo, um projetista certamente terá mais facilidade para implementar um protocolo de
comunicação Wi-Fi em um produto se este dispositivo estiver integrado no modelo de
microcontrolador escolhido. Sem dúvida, este modelo de microcontrolador pode ser muito bem
aceito pelo mercado, desde que integre também bom desempenho, confiabilidade e preço
acessível. Não por acaso, microcontroladores mais recentes com estas características, como o
ESP8266 e ESP32, têm despertado grande interesse entre projetistas.
VOCÊ SABIA
Foi durante 1970 e 1971, quando a Intel estava trabalhando na invenção do primeiro
microprocessador do mundo, que Gary Boone, da Texas Instruments (TI), estava trabalhando
em um conceito bastante semelhante e inventou o microcontrolador.
Fonte:Shutterstock
Figura 2: A sede mundial da Texas Instruments localizada em Dallas. Fonte: Shutterstock.
Boone projetou um único chip de circuito integrado que poderia conter quase todos os circuitos
essenciais para formar uma calculadora; apenas o display e o teclado não foram incorporados.
Embora, vistos de hoje, pareçam óbvios os benefícios de integrar circuitos em um único chip,
este não foi um pensamento que tenha dominado as mentes nas empresas projetistas de chips
tão rapidamente. Mas, é fato conhecido que requisitos e necessidades levam a invenções e
descobertas.
RESPOSTA
RESPOSTA
Com isso, eles pensaram em uma matriz de necessidades do cliente de uma maneira e
pedaços de circuitos ou blocos funcionais de outra. Boone pôde descobrir o que há em comum
entre os dois, cobrindo todas as especificações do cliente. Como resultado desse excelente
pensamento, surgiu o primeiro chip microcontrolador da série TMS1000. Este dispositivo
inovador surgiu de uma visão de pontos em comum e alta demanda que estavam sendo
atendidos de forma inadequada pela implantação de grandes equipes com muitos chips.
Este microcontrolador foi usado na Texas Instruments (TI) internamente em seus produtos de
calculadora entre 1972 e 1974. O dispositivo foi aprimorado ainda mais ao longo dos anos. A TI
ofereceu este microcontrolador para venda à indústria eletrônica em 1974. Ele foi
disponibilizado em diferentes configurações de tamanhos de memória. Em 1983, quase 100
milhões de TMS1000 já haviam sido vendidos. Ano após ano, os microcontroladores estavam
tendo um grande crescimento e uso.
O MICROCONTROLADOR ANTE AO
MICROPROCESSADOR
Mesmo com o pioneirismo da Texas Instruments, a popularização do microcontrolador em
várias aplicações derivou do crescimento dos microprocessadores.
Até meados da década de 1980, a maioria dos produtos eletrônicos ainda era construída
usando circuitos combinacionais lógicos extremamente intrincados e inteligentes,
implementados com uma enorme quantidade de chips. A partir do início da década de 1980,
uma minoria de fabricantes começou a incorporar microprocessadores em seus produtos para
reduzir a contagem de chips, o que diminuiu os custos de fabricação e, portanto, os preços
para o usuário final.
Fonte:Shutterstock
Figura 3: Foto Ilustrativa com close de mãos com peças eletrônicas do microprocessador
da placa principal do computador. Fonte: Shutterstock.
Os primeiros microprocessadores de 8 bits, como o Intel 8080 ou o Zilog Z80, apareceram pela
primeira vez no final dos anos 1970 e representaram um avanço significativo em relação ao
que existia antes.
Muitos defeitos do produto agora poderiam ser resolvidos usando mão de obra para
reprogramar o software em vez de ter que usar mão de obra para retrabalhar ou substituir
milhares de placas de circuito completas. À medida que os anos 1980 avançavam, mais e mais
produtos tinham um microprocessador em seu núcleo.
Uma vez que os microcontroladores começaram a ser usados em bens de consumo e sistemas
de controle durante a década de 1990, as já impressionantes miniaturizações eletrônicas das
duas décadas anteriores deram outro grande salto, tanto em termos de redução de tamanho
quanto na capacidade de oferecer mais opções e recursos do que nunca.
Na primeira década dos anos 2000, ninguém pensaria seriamente em projetar outra coisa
senão o dispositivo elétrico mais simples do consumidor sem o uso de algum tipo de
microcontrolador.
Eles estão por todas as partes. Eles se tornam mais capazes e mais complexos com o passar
do tempo. Como projetista, você estará em considerável desvantagem se não entender os
microcontroladores em um bom nível.
Fonte:Shutterstock
Figura 4: Microchip/microprocessador semicondutor integrado em placa de circuito. Fonte:
Shutterstock.
Em resumo, a onipresença dos microcontroladores é o principal motivo pelo qual você deve
saber algo sobre eles. No entanto, também é muito satisfatório usar e projetar com
microcontroladores. Você pode fazer com que as coisas funcionem muito rapidamente, o que
antes levaria muito mais tempo para ser concluído. Você também pode se divertir bastante no
processo, isto é garantido.
Algumas famílias de microcontroladores são muito econômicas, sendo uma maneira fácil de
implementar seus projetos. A popularidade cada vez maior significa que existe uma
comunidade de suporte online enorme e muito ativa para ajudá-lo se você ficar preso a um
problema. Isto também significa que há uma grande quantidade de software gratuito disponível,
o que torna seus projetos muito mais fáceis e rápidos de concluir.
A EVOLUÇÃO DOS
MICROPROCESSADORES
VERIFICANDO O APRENDIZADO
1. QUAL O FATOR E POR QUE ESTE FATOR POPULARIZOU TANTO O
USO DE MICROCONTROLADORES EM APLICAÇÕES EMBARCADAS DE
CONTROLE E MONITORAÇÃO?
GABARITO
1. Qual o fator e por que este fator popularizou tanto o uso de microcontroladores em
aplicações embarcadas de controle e monitoração?
A alternativa "B " está correta.
MÓDULO 2
MICROPROCESSADOR
É uma CPU (UCP - Unidade Central de Processamento) normal, como você pode encontrar em
um PC. A comunicação com dispositivos externos é obtida por meio de um barramento de
dados, portanto, o chip apresenta principalmente pinos de dados e endereços, bem como
alguns pinos de controle. Todos os dispositivos periféricos (memória, controlador de disco,
controlador de USB, temporizador etc.) estão conectados ao barramento.
PROCESSADOR EMBUTIDO
Este termo geralmente ocorre em associação com sistemas embutidos, e as diferenças para os
controladores costumam ser muito confusas. Em geral, o termo “processador embutido” é
usado para dispositivos de última geração (32 bits), enquanto “controlador” é tradicionalmente
usado para dispositivos de baixo custo (4, 8, 16 bits).
SISTEMAS BASEADOS EM
MICROCONTROLADORES
O microprocessador, como mencionado antes, não pode funcionar sozinho. Deve ser
suportado por algumas unidades de hardware externas e módulos de software para formar um
sistema funcional. Em geral, o microprocessador, as unidades de suporte e o software formam
o que é chamado de “sistema baseado em microprocessador”, como mostrado na figura 5.
Os sistemas baseados em microprocessador são sistemas de uso geral que podem ser
programados e reprogramados dependendo da tarefa ou do aplicativo e normalmente os
chamamos de computadores. O computador pessoal destaca-se como uma das aplicações
mais importantes e úteis dos sistemas baseados em microprocessadores.
SAIBA MAIS
CPU
Fonte:Shutterstock
Figura 7: Ícone relacionado ao chip do processador. Fonte: Shutterstock.
Os registradores da CPU são como áreas de armazenamento da memória interna. Eles são
úteis para resultados de cálculos provisórios. Isso reduz o número de leituras/gravações na
memória externa, que geralmente é mais lenta. Alguns registradores têm funções especiais,
como controlar onde a próxima instrução deve vir da memória.
A unidade lógica aritmética é responsável por realizar os cálculos. Em algumas CPUs, são
bastante simples, com suporte apenas a adicionar, subtrair e operações lógicas básicas. Em
CPUs mais sofisticadas, pode haver várias unidades aritméticas, algumas capazes de realizar
operações avançadas de ponto flutuante.
O barramento de endereços é outra coleção de fios/trilhas. Seu objetivo é selecionar qual dos
dispositivos externos (ou locais de memória) tem permissão para usar o barramento de dados.
Lembre-se de que cada fio do barramento de dados é apenas uma condução simples e só é
capaz de transmitir um bit de dados por vez. Se, por exemplo, dois dispositivos tentarem gravar
no barramento de dados ao mesmo tempo, seus sinais ficarão confusos e perdidos. Em
sistemas simples, a CPU sozinha controla o barramento de endereço.
Figura 8: Ilustração para Modelo Barramento de Sistema. Fonte: Adaptado de IME ‒ USP.
MEMÓRIAS
A RAM (Memória de acesso aleatório) é usada para armazenar valores que podem mudar
durante a execução de um programa. A RAM é volátil, ou seja, o seu conteúdo é perdido toda
vez que os sistemas são desligados. Como resultado disso, a RAM não é muito útil para
armazenamento de programas de longo prazo.
A ROM (Memória somente de leitura) não perde seu conteúdo quando a alimentação é
removida. Portanto, é geralmente usada para armazenar programas, mas não variáveis.
Existem diferentes tecnologias usadas para implementar memória de programa ROM, como
EPROM, EEPROM e memória Flash.
Lembre-se de que um grupo de oito bits é conhecido como byte. 1 byte pode representar
números entre zero (00000000) e 255 (11111111), ou 28 = 256 posições distintas. Na prática, a
memória é medida em kilobytes (KB) ou megabytes (MB). Um kilobyte não é exatamente, como
se poderia esperar, 1000 bytes. Em vez disso, a quantidade correta é 210, ou seja, 1024 bytes.
Da mesma forma, um megabyte não é 1.000.000 bytes, mas, em vez disso, 1.0242, ou seja,
1.048.576 bytes. Esta é uma diferença notável.
Se existe, por exemplo, um total de 64kB de memória (entre memória de dados e programa)
para endereçar, temos 64 x 1024 = 65536 de posições de memória para endereçar.
Um barramento de endereços, neste caso, precisaria ter n bits, onde n é calculado pela
equação 2n = 65536. Como n é um valor inteiro, ele deve ser o suficiente para tornar 2n maior
ou igual a 65536. Assim, n = 16, ou seja, o barramento para endereçar 64kB de memória deve
ter pelo menos 16 bits.
No caso de portas paralelas, cada bit no registrador da porta é conectado a um pino no chip.
Se um determinado bit está em nível lógico alto, o pino é acionado para qualquer tensão que
represente a lógica '1' para aquele sistema (geralmente 5V ou 3,3V). Da mesma forma, bits na
lógica '0' conduzem 0V no pino apropriado.
E/S SERIAL
As comunicações seriais exigem que o remetente envie dados de 1 bit por vez, a uma taxa
acordada com o receptor pretendido. Cada bit recebe um “intervalo de tempo”, que define o
fio/trilha de transmissão para o nível lógico correto para cada intervalo de tempo do bit.
O receptor mede a voltagem que chega do emissor no meio de cada intervalo de tempo de bit.
Ele pode, portanto, decidir se um '1' ou '0' foi enviado para um determinado bit. A operação
confiável requer um tempo preciso. O receptor deve olhar os tempos corretos para cada bit.
Existem duas maneiras comuns de se conseguir isso:
TRANSMISSÃO ASSÍNCRONA
O emissor e o receptor têm sinais periódicos (clock) muito precisos que são realinhados
periodicamente ‒ isto é chamado de transmissão assíncrona. Neste caso, um parâmetro muito
importante é o Baud Rate, que especifica a velocidade de recepção e envio, sendo que os dois
dispositivos devem utilizar a mesma taxa.
TRANSMISSÃO SÍNCRONA
O outro método requer que ambas as partes compartilhem uma única fonte de clock ‒
transmissão síncrona. A transmissão de dados seriais é mais barata do que a transmissão
paralela, pois há menos condutores envolvidos. Mouses, teclado, USB e Ethernet são
exemplos de transmissão serial.
TEMPORIZADORES
Um contador de 8 bits, por exemplo, pode contar apenas até 255 decimais; mais uma entrada
de período fará com que ele transborde e reverta para zero. Um contador decrescente de 16
bits diminuirá para zero e, dada mais uma entrada, ele rolará para 65535 (0xffff em
hexadecimal). Os contadores podem ser usados simplesmente como contadores de eventos,
permitindo que a CPU execute outras tarefas.
ADCS E DACS
EXEMPLO
Por exemplo, um ADC interno de 10 bits que opera com faixa do sinal de entrada de 0 a 5V. O
ADC, por comando da CPU, tira um instantâneo (amostra e espera) da entrada analógica e,
neste caso, usa uma aproximação sucessiva para mapear este sinal para um número digital
proporcional. O programa monitora o status do sinal de “conversão concluída” em um bit de um
registrador específico. Quando a conversão for concluída, o resultado de 10 bits convertido
pode ser lido em um registrador. Alguns ADCs têm entradas multiplexadas que permitem
converter vários sinais de entrada em sequência.
E o que implica um maior ou menor número de bits em uma ADC? Imagine que a conversão de
uma tensão de entrada em um número binário significa dividir este valor de tensão em dados
discretos, ou seja, que podem ter apenas valores específicos. Os valores de tensão são
contínuos, ou seja, podem assumir infinitos valores em um intervalo. A Figura 9 ilustra a
conversão de valores de um sinal contínuo (as curvas em vermelho) para valores discretos (em
azul) no caso de dados digitais representados com 2 e 3 bits.
Fonte: Wikimedia
Figura 9 – Representação de sinal contínuo em valores discretos com 2 e 3 bits. Fonte:
Wikimedia.
ADC de 10 bits, a representação do sinal de entrada terá 1024 (210) valores discretos.
(10-3 V).
Ou seja, os valores
digital
---------- resultantes da
maior
---------- do ADC representam
Os conversores digitais para analógico (DACs) executam o inverso dos ADCs. Eles aceitam um
sinal de entrada digital e emitem um sinal analógico proporcional. Historicamente, os DACs
raramente foram encontrados integrados a microcontroladores por motivos de fabricação. Se
uma saída analógica for necessária para um microcontrolador sem um DAC interno, um IC
externo e um circuito de suporte devem ser adicionados.
EXEMPLO
Alternativamente, pode ser possível gerar uma saída pseudoanalógica controlando o ciclo de
trabalho de um pino da porta digital de saída. Por exemplo, se um pino de saída digital gasta
metade de seu tempo em 5V e o resto em 0V, sua tensão média é 2,5V. Variando a
porcentagem de “tempo em alto”, a tensão média de saída pode ser controlada. Isto é
conhecido como modulação por largura de pulso (PWM). A saída pulsada pode ser filtrada para
criar um sinal analógico contínuo, usando um filtro simples.
CONTROLE DE INTERRUPÇÕES
Frequentemente, são construídos sistemas embutidos muito simples que executam apenas
uma tarefa. Por exemplo, um sistema de alarme contra roubo pode gastar todo o seu tempo
lendo o status de vários sensores e verificando uma condição de alarme.
Da mesma forma, um microprocessador em um cartão musical pode gastar seu tempo gerando
saídas analógicas. Algumas vezes, são necessários sistemas de microprocessador mais
complexos para monitorar e controlar as entradas e saídas do usuário. Em tais circunstâncias,
a alocação de tempo de CPU para conduzir as saídas e monitorar as entradas deve ser
cuidadosamente balanceada. Uma maneira de fazer isso é espalhar as chamadas para as
várias rotinas de E/S por todo o código do programa.
RESPOSTA
RESPOSTA
As interrupções são sinais que fazem com que a CPU suspenda sua atividade atual e
execute outra tarefa.
COMENTÁRIO
As CPUs são comumente projetadas para lidar com interrupções de várias fontes. Cada sinal
de interrupção está associado a um local de memória particular que contém o endereço da
sub-rotina que deve ser executada no recebimento desta interrupção. Os programadores de
sistema podem preencher esses locais de memória especiais com os endereços do código de
tratamento de interrupção.
A ARQUITETURA DE UM
MICROCONTROLADOR
VERIFICANDO O APRENDIZADO
A) 8 bits
B) 10 bits
C) 14 bits
D) 16 bits
E) 32 bits
A) ADC de 10 bits
B) DAC de 16 bits
C) ADC de 14 bits
D) ADC de 16 bits
E) ADC de 8 bits
GABARITO
1. Um microcontrolador deve ser usado em uma aplicação que requer 1 kbyte de
memória de dados e um programa de 8 kbytes. Quantos bits seriam necessários para o
barramento de endereço?
2. Você foi designado para especificar um microcontrolador que deve medir uma tensão
com resolução de pelo menos 80μV (80x10-6 volts). Qual dispositivo este
microcontrolador deve integrar e de quantos bits este dispositivo deve ser? Considere
que a tensão de referência deste dispositivo é 5V.
bits, pois 5 / 216 = 5 / 65536 = 76,29μV - um valor de resolução que atende ao especificado.
MÓDULO 3
Figura 10: Foto Ilustrativa macro do módulo de microcontrolador wireless wi-fi programável.
Fonte: Shutterstock.
SAIBA MAIS
A computação RISC é uma estratégia de projeto de UCP baseada na visão de que o conjunto
de instruções básicas oferece grande desempenho quando combinado com uma arquitetura de
microprocessador que tem a capacidade de executar as instruções usando alguns ciclos de
microprocessador por instrução. Neste caso, espera-se que cada instrução atinja tarefas muito
pequenas.
Nestas arquiteturas, os conjuntos de instruções são modestos e simples, o que ajuda a
compreender comandos mais complexos. Cada instrução tem um comprimento semelhante;
estes são compostos para realizar tarefas em uma única operação. A maioria dos comandos
são concluídos em um ciclo da máquina. O pipelining (tunelamento) é uma técnica crucial
usada para acelerar máquinas RISC.
DICA
Um método útil de demonstrar isso é a analogia da lavanderia. Digamos que haja quatro
cargas de roupa suja que precisam ser lavadas, secas e dobradas. Poderíamos colocar a
primeira carga na lavadora por 30 minutos, secar por 40 minutos e depois levar 20 minutos
para dobrar as roupas. Em seguida, pegue a segunda carga e lave, seque e dobre e repita
para a terceira e a quarta cargas. Supondo que começássemos às 18h e trabalhássemos da
forma mais eficiente possível, ainda estaríamos lavando roupa até meia-noite.
No entanto, uma abordagem mais inteligente para o problema seria colocar a segunda carga
de roupa suja na lavadora depois que a primeira já estivesse limpa e girando na secadora.
Então, enquanto a primeira carga estava sendo dobrada, a segunda carga secaria e uma
terceira carga poderia ser adicionada à lavanderia. Usando esse método, a roupa estaria
terminada às 21h30.
Mesmo que diferentes processadores tenham diferentes números de etapas, estas são
basicamente variações desses cinco:
Buscar instruções da memória.
Se você olhar novamente para o esquema de operação da lavanderia, perceberá que, embora
a lavadora termine em meia hora, a secadora leva dez minutos extras e, portanto, as roupas
molhadas devem esperar dez minutos para que a secadora seja liberada. Portanto, o
comprimento do pipelining depende do comprimento da etapa mais longa.
Como as instruções RISC são mais simples do que as usadas em processadores CISC, elas
são mais propícias ao pipelining. Enquanto as instruções CISC variam em comprimento, as
instruções RISC têm todas o mesmo comprimento e podem ser obtidas em uma única
operação.
Idealmente, cada um dos estágios em um pipelining de processador RISC deve levar 1 ciclo de
clock para que o processador termine uma instrução a cada ciclo de clock e obtenha a média
de um ciclo por instrução (CPI).
A ABORDAGEM CISC
O objetivo principal da arquitetura CISC é completar uma tarefa com o mínimo de linhas de
instrução possível. Isso é conseguido construindo um hardware de processador que é capaz de
compreender e executar uma série de operações. Para esta tarefa em particular, um
processador CISC poderia ser preparado com uma instrução específica (vamos chamá-la de
"MULT").
Quando executada, esta instrução carrega os dois valores em registros separados, multiplica
os operandos na unidade de execução e, a seguir, armazena o produto na posição de memória
indicada (21). Assim, toda a tarefa de multiplicar dois números pode ser concluída com uma
única instrução:
MULT 21, 49
MULT é o que é conhecido como "instrução complexa". Ela opera diretamente nos bancos
de memória do computador e não exige que o programador chame explicitamente nenhuma
função de carregamento ou armazenamento. É muito parecido com um comando em uma
linguagem de alto nível.
EXEMPLO
Por exemplo, se deixarmos "a" representar o valor na posição 21 da memória e "b" representar
o valor na posição 49, então este comando é idêntico à instrução em linguagem C "a = a * b."
Uma das principais vantagens desse sistema é que o compilador precisa fazer muito pouco
trabalho para traduzir uma instrução em linguagem de alto nível para linguagem de montagem
(assembly). Como o comprimento do código é relativamente curto, muito pouca RAM é
necessária para armazenar as instruções. A ênfase é colocada na construção de instruções
complexas diretamente no hardware.
A ABORDAGEM RISC
Os processadores RISC usam apenas instruções simples que podem ser executadas em um
ciclo de clock. Assim, o comando "MULT" descrito acima pode ser dividido em três comandos
separados: "LOAD", que move os dados do banco de memória para um registrador, "PROD",
que encontra o produto de dois operandos localizados dentro dos registradores, e " STORE,
"que move os dados de um registrador para os bancos de memória. Para executar a série
exata de etapas descritas na abordagem CISC, um programador precisaria codificar quatro
linhas de montagem:
LOAD A, 21
LOAD B, 49
PROD A, B
STORE 21, A
A princípio, essa pode parecer uma forma muito menos eficiente de concluir a operação. Como
há mais linhas de código, mais RAM é necessária para armazenar as instruções no nível de
montagem. O compilador também terá mais trabalho para converter uma instrução de
linguagem de alto nível em código de máquina desta forma.
No entanto, a estratégia RISC também traz algumas vantagens muito importantes. Como cada
instrução requer apenas um ciclo de clock para ser executada, o programa inteiro será
executado aproximadamente na mesma quantidade de tempo que o comando "MULT" de
vários ciclos. Essas "instruções reduzidas" RISC requerem menos transistores em espaço de
hardware do que as instruções complexas, deixando mais espaço para registradores de uso
geral. Como todas as instruções são executadas em um período de tempo uniforme (ou seja,
um ciclo de clock), o pipelining é possível.
RISC OU CISC?
A escolha da maioria dos fabricantes hoje recai nos modelos RISC. Mas, existe uma tendência
histórica que mantem o seu computador pessoal como CISC. Antigamente, as memórias eram
pequenas e, portanto, os programas eram forçosamente pequenos. Além disso, os
compiladores não eram muito inteligentes e muitos programas eram escritos em assembly.
Desta forma, era considerado bom poder escrever um programa usando poucas instruções. Os
pipelines de instrução eram simples e os processadores pegavam uma instrução de cada vez
para executá-la. A arquitetura dentro do processador era bastante complexa de qualquer
maneira e as instruções de decodificação não eram consideradas um grande fardo.
A família x86 da Intel, que provavelmente está em seu computador pessoal, é um pouco
diferente. Era originalmente uma arquitetura CISC destinada a sistemas com memória muito
pequena, sem espaço para grandes instruções, e passou por várias versões sucessivas.
Embora seus chips CISC estivessem se tornando cada vez mais pesados e difíceis de
desenvolver, a Intel tinha os recursos para explorar o desenvolvimento e produzir
processadores poderosos.
Fonte:Shutterstock
Figura 12 : Intel Galileo, placa de sistema embarcada Arduino da Intel para educação de
desenvolvedores ou fabricante de IoT, baseada no microcontrolador Intel x86 de 32 bits,
mostrada em evento de venda pública. Fonte: Shutterstock.
No mundo de hoje, RISC e CISC não são mais a distinção preto e branco que poderiam ter
sido antes. A maioria das arquiteturas de CPU evoluiu para diferentes tons de cinza. Do lado
do RISC, algumas variantes modernas de arquiteturas adicionaram instruções de multiplicação
e divisão, com uma codificação não uniforme, mais próxima da abordagem CISC.
Hoje, o Intel x86 é o único chip que mantém a arquitetura CISC. Isso se deve principalmente ao
fato que manter a compatibilidade é uma prioridade. O preço da RAM diminuiu drasticamente e
a tecnologia de compiladores também se tornou mais sofisticada, o que conduz a um melhor
aproveitamento da arquitetura RISC. No caso dos microcontroladores, não foi diferente e o uso
da arquitetura RISC se tornou predominante. Mas, um microcontrolador de muito sucesso e
ainda utilizado em algumas áreas, o 8051, é de arquitetura CISC.
RISC OU CISC?
MICROCONTROLADORES E ARQUITETURA
DE MEMÓRIA
No projeto de uma arquitetura de processador, uma decisão importante diz respeito ao acesso
à memória, onde se define se a faixa de endereços da memória de dados será a mesma da
memória de instruções (memória de programa). De acordo com o uso da memória, pode-se
classificar duas arquiteturas de processador: Arquitetura von Neumann e arquitetura
Harvard.
Em uma arquitetura von Neumann, a mesma memória e barramento são usados para
armazenar dados e instruções que executam o programa. Como você não pode acessar a
memória de programa e memória de dados simultaneamente, a arquitetura von Neumann é
suscetível a gargalos e o desempenho do sistema é afetado. A Figura 13 mostra a
configuração de memória nesta arquitetura.
Neste caso, as instruções estariam em uma faixa de endereços que ative a memória que
possui as instruções e os dados estão em outra faixa de endereços que ative outra memória,
onde se pode ler e escrever os dados. Nesta arquitetura, só é possível o acesso a uma
memória de cada vez.
ARQUITETURA HARVARD
Comparando, pode-se verificar que a arquitetura Harvard é mais veloz, mas exige mais um
barramento. Assim, o custo de produção tende a ser maior. A arquitetura Harvard é bastante
utilizada nos microcontroladores pelo fato das memórias estarem integradas no próprio
componente, sendo mais fácil a sua realização.
Fonte:Shutterstock
Figura 15: Kit de integração do microprocessador 8051. Fonte: Shutterstock.
VERIFICANDO O APRENDIZADO
GABARITO
2. Por que a arquitetura von Neumann tende a ser mais lenta do que a arquitetura
Harvard?
MÓDULO 4
NÚMERO DE BITS EM
MICROCONTROLADORES
Um microcontrolador de n bits possui uma ALU (Unidade Lógica e Aritmética) capaz de
processar operandos com n bits de cada vez. Ou seja, seus registradores são de n bits e
podem manipular n bits por vez. Normalmente, o microcontrolador também terá n bits de
barramento de dados e n bits de largura para endereçamento de memória, mas isso não é
verdadeiro para todos os casos.
SAIBA MAIS
Considerando um microcontrolador de 8 bits, temos um intervalo que varia de 0 a 255 para um
inteiro sem sinal e de -128 a 127 para um inteiro com sinal. Adicionar ou subtrair números
dentro desse intervalo é bastante simples e pode ser feito em um ciclo de processamento. No
entanto, quando o operando fornecido ultrapassa o intervalo da ALU, ainda é possível, mas o
processo fica um pouco mais complexo.
Digamos que gostaríamos de adicionar 640 a 150. O primeiro operando (640) está além da
capacidade de uma ALU de 8 bits. Então, ao invés de obter o resultado em apenas um ciclo de
processamento, ele levará mais tempo, já que somente 8 bits podem ser processados por vez
pela ALU.
COMENTÁRIO
CUSTO
COMENTÁRIO
Com relação aos conjuntos de habilidades, uma vez que os engenheiros dominam a curva de
aprendizado para dispositivos de 32 bits, o valor se estende a um alcance mais amplo em
aplicativos. O escopo de um microcontrolador de 8 bits é significativamente limitado em
relação aos microcontroladores de 32 bits.
Os custos de mão de obra também podem ser menores trabalhando com um microcontrolador
de 32 bits, à medida que mais opções, recursos, ferramentas e um corpo maior de código
existente se desenvolvem em torno do ecossistema de 32 bits. A tecnologia de ponta não
evolui mais em torno dos 8 bits.
TAMANHO DO CÓDIGO
Quanto maior a largura, mais denso será o código. Uma redução de 30% no tamanho do
código é uma estimativa aproximada do benefício que o código escrito para 32 bits oferece em
relação ao código de 8 bits.
ATENÇÃO
Programar com 32 bits é muito mais desafiador em código assembly do que em 8 bits, é claro,
mas as ferramentas de desenvolvimento modernas permitem que os engenheiros trabalhem
em C/C++, uma linguagem frequentemente portátil entre arquiteturas e com cadeias de
ferramentas e IDEs semelhantes entre arquiteturas.
No entanto, os microcontroladores de 8 bits podem ser codificados com mais eficiência com o
código de montagem para engenheiros que dedicam tempo para pensar na eficiência das
operações.
RECURSOS
Muitos microcontroladores de 8 bits são escolhidos principalmente com base no custo por
microcontrolador, reutilização de código legado e familiaridade pessoal com arquiteturas de 8
bits. Os microcontroladores de 8 bits podem realizar o trabalho com requisitos mínimos, mas o
conjunto de habilidades necessárias para desenvolver produtos com microcontroladores de 8
bits é diferente, mais perceptível quando se trabalha no nível mais baixo de programação, o
código em assembly. O código em assembly pode ser escrito com muito mais eficiência do que
um compilador pode produzir em programação de nível superior em C/C ++, por exemplo.
FAMÍLIAS PRINCIPAIS DE
MICROCONTROLADORES
MICROCONTROLADOR 8051
O conjunto de microcontroladores mais universalmente empregado vem da família 8051 de
arquitetura CISC. Microcontroladores 8051 ainda persistem como escolha para um grande
grupo de entusiastas e especialistas. Ele foi originalmente inventado pela Intel em 1981. Possui
variantes, mas basicamente se oferece com 8 bits, 4kB de memória ROM (Espaço
programável no chip) , 128 bytes de espaço RAM e, se desejado, 64kB de memória externa
que pode ser associada ao 8051.
Existem quatro portas paralelas de 8 bits que são facilmente programáveis e endereçáveis. Um
oscilador de cristal integrado no microcontrolador possui frequência de cristal de 12MHz. No
microcontrolador, existe uma porta serial de entrada/saída. Dois temporizadores de 16 bits
também são incorporados a ele; esses temporizadores podem ser empregados como
temporizadores para o funcionamento interno, bem como para o funcionamento externo.
Interrupção do temporizador 1.
Interrupção externa 0.
Interrupção do temporizador 0.
Interrupção externa 1.
MICROCONTROLADORES AVR
São os mais populares, com boa quantidade de memória (até 256 kB),
MegaAVR maior número de periféricos embutidos e adequados para aplicações
moderadas a complexas.
Atenção! Para visualização completa da tabela utilize a rolagem horizontal
23 Pinos de E/S.
Conversor A/D.
MICROCONTROLADORES PIC
Peripheral Interface Controller (PIC) é fornecido pela Microchip Technology a partir de 1993.
Esses microcontroladores foram extremamente bem-sucedidos dentre os de 8 bits.
Fonte:Shutterstock
Figura 18: Escritórios da Microchip Technology. Fonte: Shutterstock.
A principal causa por trás disso é que a Microchip tem atualizado constantemente a arquitetura
do dispositivo e incluído muitos periféricos para atender às necessidades dos desenvolvedores.
COMENTÁRIO
Microcontroladores PIC são muito populares entre amadores e na indústria, causa de ampla
disponibilidade, baixo custo, grande base de usuários e capacidade de programação serial.
Existem muitos PICs, iniciados com PIC16F84 e PIC16C84. Mas esses eram os únicos PICs
flash acessíveis. A Microchip lançou depois chips flash com tipos atraentes entre 8 e 16 bits,
como 16F628, 16F877 e 18F452. O 16F877 tem cerca de duas vezes o preço do antigo 16F84,
mas tem oito vezes mais espaço para código, muito mais RAM, muito mais pinos de E/S, uma
UART e conversor A/D.
MICROCONTROLADORES ARM
Fonte:Shutterstock
Figura 19: Sede no Vale do Silício da ARM. Fonte: Shutterstock.
Atenção! Para visualização completa da tabela utilize a rolagem horizontal
O ARM é um dispositivo sensível ao custo e de alto desempenho que tem sido usado em uma
ampla gama de aplicações, como sistemas de controle de instrumentos industriais, redes e
sensores sem fio e sistemas automotivos.
MICROCONTROLADORES MSP
MSP significa Mixed Signal Processor e é a família da Texas Instruments. Construído em torno
de uma CPU de 16 bits, o MSP foi projetado para instruções incorporadas de baixo custo e
baixíssima dissipação de energia, a característica principal do microcontrolador.
MICROCONTROLADOR ESP32
Criado pela Espressif Systems, o ESP32 é um sistema de baixo custo e baixo consumo de
energia em um chip com recursos de Wi-Fi e Bluetooth de modo duplo. Em seu coração há um
microprocessador Tensilica Xtensa LX6 de núcleo único ou dual com uma frequência de até
240MHz. O ESP32 é altamente integrado com antena embutida, amplificador de potência,
amplificador de recepção de baixo ruído, filtros e módulos de gerenciamento de energia.
Figura 20: Foto de um microcontrolador ESP32 usado em projetos DIY. Fonte: Shutterstock.
Projetado para dispositivos móveis, eletrônicos vestíveis e aplicativos de Internet das Coisas, o
ESP32 atinge um consumo de energia ultrabaixo por meio de recursos de economia de
energia, modos de energia múltiplos e dimensionamento dinâmico de energia.
VERIFICANDO O APRENDIZADO
A) I e II
B) I e III
C) II e IV
D) II e III
E) III e IV
A) 16 bits de barramento.
C) Uma Unidade Lógica Aritmética capaz de processar operandos com 16 bits de cada vez.
GABARITO
Como a maioria dos microcontroladores, o PIC usa RISC porque esta é mais adequada para a
construção de arquiteturas mais simples e de menor custo. Com o sentido de buscar melhor
desempenho, o PIC usa arquitetura Harvard, que permite a um processador acessar as
memórias de dados e programa simultaneamente.
CONCLUSÃO
CONSIDERAÇÕES FINAIS
Discutimos os motivos que levaram ao desenvolvimento e à grande aceitação dos
microcontroladores. Além disso, verificamos por que estes são mais eficientes para as
aplicações de controle e monitoração em sistemas embarcados, integrando diversos
dispositivos.
PECKOL, J. K. Embedded Systems: A Contemporary Design Tool. 1. ed. New Jersey, USA:
Wiley, 2019.
SHARMA, K. Microcontroller Market by Product Type (8-Bit, 16 Bit, and 32 Bit) and
Application (Industrial, Consumer Goods, Automotive, Communication, and Computers)
‒ Global Opportunity Analysis and Industry Forecast, 2014-2022. In: Premium. Publicado em
meio eletrônico em: jan. 2017
EXPLORE+
CONTEUDISTA
Marcos Santana Farias
CURRÍCULO LATTES