Introdução aos sistemas embarcados e microcontroladores

Este artigo apresenta uma breve introdução aos sistemas embarcados, direcionando o assunto para sistemas microcontrolados. O objetivo é apresentar detalhes de um sistema computacional genérico, descrevendo os módulos básicos e suas respectivas funções. Esses conceitos são fundamentais para entender a arquitetura de microcontroladores e a interface entre hardware e software.

Em alguns momentos tópicos são apresentados superficialmente, em outros de modo mais detalhado. Sempre que necessário, são apresentadas outras referências para artigos publicados aqui no Embarcados para que você, leitor, possa ter uma visão ampla de um tópico específico. Além disso, alguns tópicos apresentados serão retomados posteriormente em outros artigos.

O conteúdo apresentado aqui será mantido neste acervo: Bit by Bit - Embedded Systems. A ideia é criar uma referência de consulta na área de sistemas embarcados, apresentando conceitos fundamentais e também assuntos mais complexos.

Introdução aos sistemas embarcados

É nítido que a tecnologia faz cada vez mais parte de nossas vidas. Presenciamos nas últimas décadas uma rápida evolução da eletrônica, dos computadores pessoais, dos equipamentos eletrônicos etc. Vivenciamos hoje uma transformação que caminha em direção à computação ubíqua. Nesse cenário, os sistemas computacionais embarcados tornam-se cada vez mais importantes e presentes no dia a dia.

Atualmente, bilhões de sistemas computacionais são produzidos anualmente e aplicados em produtos dos mais variados segmentos [1]. Considerados como computadores dedicados, ou embutidos, tais sistemas são muitas vezes chamados de computadores pervasivos ou ubíquos [2], no sentido que os usuários muitas vezes não os veem [3].

Alguns segmentos de aplicação são apresentados a seguir [1, 4]:

  • Eletrodomésticos: ar condicionado, cafeteira elétrica, microondas, geladeira, máquina de lavar;
  • Aparelhos de comunicação: Equipamentos de rede como switch e roteador; telefones;
  • Periféricos de computadores;
  • Equipamentos de Entretenimento: TVs e players de mídia, console de games;
  • Aparelhos de reprodução de imagens e som;
  • Equipamentos médicos: sistemas de suporte à vida;
  • Sistemas de armamentos militares: sistemas bélicos;
  • Dispositivos de vendas/atendimento: biometria, leitor de código de barras, caixa de autoatendimento ATM;
  • Brinquedos;
  • Automotivo: Computadores de bordo automotivos, freio ABS, interface de vídeo e voz;
  • Industrial: Sistemas de controle, robótica.

Definição - Microcontroladores

Computadores embutidos, às vezes chamados de microcontroladores [4] ou computadores em um único chip [1], podem ser considerados – essencialmente – dispositivos compostos por um processador dedicado com finalidade de executar uma aplicação específica, diferentemente de computadores de propósito geral [1, 6]. Para tal, esses dispositivos apresentam, em menor quantidade, os mesmos elementos de um computador reunidos um único chip.

São utilizados em projetos de sistemas eletrônicos, tendo como principal função a execução de uma aplicação, ou conjunto de aplicações, relacionadas como um único sistema [3]. Isto é, existe um programa que é embutido no microcontrolador e que interage com o meio externo. Considerando isso, tais sistemas são chamados de sistemas eletrônicos embarcados. A seguir são destacadas outras definições:

  1. Refere-se a um produto que envolve uso de eletrônica e software [1];
  2. Combinação entre hardware e software desenvolvida para desempenhar uma tarefa específica. [9].

Para uma discussão ampliada do termo, acesse Just What Is an Embedded System?

Características e Organização

Sistemas embarcados também são caracterizados como sistemas reativos. Pois, como destacado, a aplicação executada é dependente do ambiente [1]. Portanto, o microcontrolador pode ser visto como uma caixa preta, em que as entradas são fornecidas ao sistema, processadas, e por fim geram uma ação, representada pelas saídas. Nesse cenário, entradas e saídas representam elementos como: sensores, atuadores, dispositivos de comunicação, dispositivos de interface gráfica, entre outros.

Sistemas embarcados e microcontroladores
Figura 1: Visão geral de um sistema embarcado com microcontrolador.

Em alguns casos, os sistemas embarcados estão relacionados ao ambiente de operação de tal maneira que surgem algumas restrições [1,4], por exemplo:

  • Limitações físicas – espaço físico limitado, peso;
  • Limitações elétricas – consumo de energia elétrica;
  • Limitações mecânicas;
  • Recursos computacionais – capacidade de memória, velocidade de processamento;
  • Restrições temporais – tempo de processamento, resposta a estímulos.

Sistemas Microcontrolados

De fato, o projeto de sistemas eletrônicos embarcados envolve áreas de conhecimento variadas e, devido ao avanço da tecnologia, a fronteira entre hardware e software começa a se tornar tênue [2]. Nesse sentido, para o programador, especificamente de microcontroladores, é essencial conhecer a estrutura interna do dispositivo, pois o programa interage diretamente com os elementos de hardware. Sabendo disso, é importante conhecer fundamentos de organização e arquitetura de sistemas computacionais.

Visão geral da organização de um sistema computacional

Um computador digital é uma combinação de dispositivos e circuitos digitais que realizam uma sequência programada de operações [7, 8]. A sequência de operações é chamada de programa [5]. Resume-se a um conjunto de instruções codificadas e dados que serão processados para alcançar o objetivo computacional pretendido, sendo ambos armazenados na memória [5, 7]. Considerando isso, a função do computador é acessar a memória para obter e processar as operações indicadas. Para tal, um sistema computacional possui um conjunto de estruturas para possibilitar que esses procedimentos possam ser executados.

Figura 2: Ciclo de instrução.

Um dos principais componentes de um sistema computacional é o processador [6]. Tem função de realizar cálculos, processar e enviar requisições para dispositivos periféricos e efetuar todos os processos que permitem o funcionamento do sistema [3]. Embora seja o principal componente, o processador deve ser capaz de interagir com dispositivos periféricos, como memórias, dispositivos de entrada e saída, conversores de sinais, entre outros.

Embora os sistemas computacionais tenham suas peculiaridades, a estrutura interna pode ser generalizada em algumas unidades especificas. Sabendo disso, um sistema computacional pode ser representado por cinco blocos convencionais: a unidade lógica e aritmética - ULA, a unidade de memória, a unidade de controle - UC, e as unidades de entrada e saída [7].

Sistemas Embarcados e Microcontroladores
Figura 3: Principais componentes de um sistema computacional.

Definição de memória

A memória pode ser definida como um conjunto de elementos que armazenam informação. Em uma memória semicondutora, o elemento básico é chamado célula de memória [1]. A célula de memória é capaz de armazenar a informação de 1 bit, isto é, apresenta dois estados estáveis, 1 ou 0. Além disso, deve possibilitar que a informação seja definida (gravada) e verificada (lida).

Figura 4: Célula de memória.

O conjunto de células de memória formam uma palavra. De modo geral, a memória consiste de um grupo de palavras, sendo cada uma identificada de maneira unívoca por um endereço. Uma característica da palavra é a sua capacidade de armazenar informação, isto é, a quantidade de bytes – ou bits - que a palavra representa.

Figura 5: Memória com N elementos de M bits.

Sistema de interconexão

A conexão entre todos esses módulos é realizada pelo sistema de interconexão, também chamado de barramento [1, 6]. Por meio do barramento os módulos do sistema podem se comunicar, isto é, trocar informações. Para tal, deve admitir os seguintes tipos de transferências [1]:

  • Memória para processador;
  • Processador para memória;
  • E/S para processador;
  • Processador para E/S;
  • E/S de ou para a memória.

Em geral, um barramento é organizado como um grupo de vias – conexões físicas – em que cada via é capaz de transmitir sinais representando o binário 1 e o binário 0. Existem três tipos de barramentos em um sistema.

Barramento de Dados:

  • Caminho para movimentação de dados entre os módulos;
  • Largura é uma das chaves do desempenho (8,16,32 bits).

Barramento de Endereço:

  • Determinam a origem ou o destino dos dados no barramento de dados;
  • Largura determina capacidade máxima de memória.

Barramento de Controle:

  • Informações de tempo e controle;
  • Sinais de leitura/escrita de memória, requisições de interrupção.

Estrutura da unidade de processamento

Internamente, o processador – unidade central de processamento - é dividido em duas unidades, cada uma com um propósito específico. Compõe-se basicamente de uma ULA e uma UC. Tem como função principal buscar e executar instruções [1].

A ULA é capaz de operar os dados binários, executando operações simples sobre um ou mais operandos [5]. Já a unidade de controle é utilizada para coordenar as operações entre as outras unidades, determinando o fluxo de operações do sistema [1,5].

É importante também citar que a UCP possui registradores especiais e registradores de propósito geral. Registrador refere-se a um elemento de memória com uma determinada capacidade de armazenamento.

Figura 6: Arquitetura genérica de um sistema.

Em algumas arquiteturas há somente um registrador de propósito geral, chamado de acumulador [5]. O acumulador tem função de servir como operando da ULA e para armazenar o resultado da operação realizada. Em arquiteturas com vários registradores de propósito geral, todos podem servir à mesma função do acumulador.

Os registradores especiais desempenham funções específicas na unidade controle [1, 4, 5, 7]:

  • Contador de programa – Esse registrador tem como função apontar o endereço de memória da próxima instrução que será buscada e executada;
  • Registrador de instrução – Utilizado para armazenar a instrução codificada que é lida da memória no endereço apontador pelo contador de programa;
  • Registrador de estado – Sempre que uma operação é executada pelo processador algumas informações são armazenadas nesse registrador, por exemplo, se uma operação na ULA resultou em zero.

Para saber mais

Para conhecer os detalhes de implementação de um sistema bem simples, criado a partir de portas lógicas, leia o artigo de Introdução ao microprocessador básico. Acesse também: Visão geral de microprocessadores e Processadores Programáveis.

Modelos de Arquitetura

O modelo genérico apresentado destaca os principais componentes de um sistema computacional. Os recursos presentes em um sistema e as ligações entre os componentes são definidos pela arquitetura do sistema computacional. Existem duas arquiteturas clássicas que servem como base para o desenvolvimento de sistemas reais: Arquitetura de von Neumann e Arquitetura de Harvard.

Arquitetura de von Neumann

Modelo que tem como essência o conceito de programa armazenado, em que instruções e dados são armazenados em memória. A principal característica é que não há distinção entre o espaço de instruções e o espaço de dados. Isto é, tais informações trafegam pelo mesmo barramento, pertencendo ao mesmo espaço de endereçamento [1,10]. Verifique também: Arquitetura de John von Neumann.

Figura 7: Arquitetura de von Neumann.

Arquitetura de Harvard

Modelo caracterizado por apresentar dois espaços de endereçamento distintos para o programa e para os dados. Dito de outra maneira, são utilizados barramentos distintos, possibilitando acesso simultâneo a instruções e dados [10].

Figura 8: Arquitetura de Harvard.

Estrutura básica de um microcontrolador genérico

Internamente, um microcontrolador possui diversos módulos. Assim como um computador, cada módulo possui uma função específica. Em geral, apresentam uma unidade de processamento simples, memória e dispositivos de entrada e saída [8]. Em uma visão superficial, o sistema pode ser apresentado conforme o diagrama.

Microcontroladores
Figura 9: Microcontrolador genérico.

Nesse diagrama estão os principais elementos de um microcontrolador. O núcleo (Core) é o processador que coordena a operação do sistema. Na memória são colocadas informações que coordenarão a operação do processador, isto é, as instruções que o processador executará. Para interagir com o meio externo são usados periféricos, representados pelo módulo de entradas e saídas. Cabe destacar os terminais, ou pinos, que fazem a interface entre o microcontrolador e o meio externo.

Microcontroladores - Terminais: Interface com o Hardware

Microcontroladores apresentam diversos terminais com funções variadas:

Alimentação – Para que os microcontroladores funcionem é preciso uma fonte de tensão contínua que atenda aos requisitos elétricos do dispositivo. Dependendo do encapsulamento do chip, e das características do microcontrolador, um ou mais terminais devem ser conectados na fonte.

Reset – A função principal desse pino é reiniciar o microcontrolador, isto é, definir um estado conhecido – lembre-se que é circuito digital sequencial – para iniciar a execução do programa armazenado na memória. Esse pino também é utilizado para funções de programação do dispositivo.

Controlados por periféricos – Podem ser usados como entradas e saídas de propósito geral. Ou ainda, exercer uma função específica em um periférico do microcontrolador. Diversos microcontroladores apresentam terminais com funções multiplexadas e podem assumir diferentes funções dependendo da configuração realizada.

Analógicos – Alguns periféricos do microcontrolador atuam com sinais analógicos. Por exemplo, comparadores analógicos e conversores de sinais (A/D ou D/A).

Clock – As operações executadas pelo processador são governadas por um sinal de sincronismo, denominado clock [1]. O sinal de sincronismo pode ser gerado internamente ou externamente. Externamente, o modo mais comum de gerar esse sinal é com a utilização de circuitos eletrônicos em conjunto com elementos piezoelétricos, formando um sistema chamado de oscilador Pierce [11, 12]. Em geral, tais sistemas utilizam cristal de quartzo ou ressonador cerâmico como oscilador [11, 12].

oscilador microcontroladores
Figura 10: Oscilador.

Internamente, alguns microcontroladores apresentam circuitos osciladores RC. Independente da fonte, cabe ressaltar que velocidade do processador é ditada pela frequência do sinal de clock [1], que corresponde à taxa de pulsos por segundo. Além disso, o tempo necessário para executar uma instrução é medido com relação à quantidade de ciclos do sinal de clock [1, 8].

Periféricos de Microcontroladores

Todo microcontrolador possui internamente uma seleção de periféricos que podem variar em quantidade e complexidade [6]:

Complexidade: Nível Baixo

  • Conversor de sinal (D/A e A/D);
  • Comparador analógico;
  • Barramentos: I2C, SPI, CAN;
  • Temporizadores e contadores;
  • Watchdog;
  • Interface serial assíncrona e síncrona.

Complexidade: Nível Médio

  • USB;
  • IrDA cde alta velocidade;
  • Ethernet;
  • Controlador de memória: SRAM externa.

Complexidade: Nível Alto

  • Unidade de gerenciamento de memória (MMU);
  • Barramento PCI e PCIe;
  • Codificadores e decodificadores de vídeo;
  • Controlador de memória: DRAM/SDRAM externa.

Memórias

Para manter o programa armazenado, microcontroladores possuem memória não volátil do tipo Flash [6]. Alguns ainda integram uma EEPROM, sendo que é usada para manter dados de configuração da aplicação, por exemplo, dados de calibração. Já os dados são carregados em memória volátil do tipo SRAM [6] durante a inicialização do programa.

Volatilidade: refere-se à retenção do conteúdo na memória, sendo voláteis ou não-voláteis. Isto é, a informação é perdida ou mantida na ausência de energia elétrica.

Saiba mais sobre Sistemas Embarcados e Microcontroladores

Sistema Embarcado - O que é? Qual a sua importância?

Webinar: Ensino em sistemas embarcados no Brasil

Relatório da Pesquisa sobre o Mercado Brasileiro de Desenvolvimento de Sistemas Embarcados 2017

Referências - Introdução aos sistemas embarcados e microcontroladores

[1] STALLINGS, W. Arquitetura e organização de computadores. Pearson Prentice-Hall, 10ª ed., São Paulo. 2017.

[2] Li, Q. Real-time Concepts for Embedded Systems. 2003.

[3] PATTERSON, D. A.; HENNESSY, J. L. Computer Organization and Design: The Hardware/Software Interface 5th Edition. Morgan Kaufmann-Elsevier. 2013.

[4] TANENBAUM, A. Organização Estruturada de Computadores. 6ª Edição, 2013.

[5] WEBER, R. F. Fundamentos de arquitetura de computadores. 4ª ed. Bookman. Porto Alegre. 2012.

[6] HILL, W.; HOROWITZ, P. A Arte da Eletrônica. 3ª ed. 2018.

[7] TOCCI, R. J; WIDMER, N.S; MOSS, G. L. Sistemas Digitais - Princípios e Aplicações. Prentice-Hall, 11ª ed. São Paulo. 2011.

[8] ALMEIDA, M. A.; MORAES, C. H. V.; SERAPHIM, T. F. P. Programação de Sistemas Embarcados. 2016. Elsevier.

[9] BARR, M.; MASSA, A. Programming Embedded Systems. O'REILLY. 2006.

[10] GU, C. Building Embedded Systems: Programmable Hardware. 2016. Apress.

[11] AVR186: Best Practices for the PCB Layout of Oscillators.

[12] AN2867: Oscillator design guide for STM8AF/AL/S and STM32 microcontrollers.

Crédito da imagem destacada.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Conceito de Engenharia » Introdução aos sistemas embarcados e microcontroladores
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
gabrielportinha
gabrielportinha
28/02/2019 21:28

Que Legal!!!!!!!!!!!!!!!

Leonardo Godói
Leonardo
24/07/2018 09:08

Muito bom! Conteúdo claro e compacto. Parabéns!

Talvez você goste:

Séries

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link