ARTIGO 030601 "Conceitos fundamentais dos “Microcontroladores”, “do princípio”."
• Apresenta os Conceitos fundamentais dos Microcontroladores, desvendando: ◦ De que partes são constituídos, e como ocorrem os Processos dentro destes Microcontroladores na sua essência. ◦ A inter-relação entre o Hardware e o Software, também entre: Microcódigo, Op Codes, Instruções, Programa, Memória, CPU, Periféricos, Portas.
ELETRÔNICA
Carlos Antonio Garcez Mury
6/6/202516 min ler
Objetivo:
Apresenta os Conceitos fundamentais dos Microcontroladores, desvendando:
◦ De que partes são constituídos, e como ocorrem os Processos dentro destes Microcontroladores na sua essência.
Palavras chaves:
#Maker,#Eletrônica, #Microcontroladores, #Sistemas Computacionais, #Hardware, #Software, #Programa, #CPU, #ALU, #Control Unit, #Op Code, #Linguagem de Máquina
Metodologia:
Construção do conhecimento de forma aplicada.
Metodologia: “do princípio”.
A quem se destina:
Qualquer pessoa que tenha como objetivo:
◦ Entender o princípio de Operação interna dos “Microcontroladores”.
Motivação:
Para o Desenvolvimento da Parte Eletrônica dos Artefatos que produzo (www.artefakftus.com.br), surgiu a necessidade de migração para “Microcontroladores” com maior facilidade de aquisição.
• Ao encontrar a Família de Microcontroladores CH32 da Empresa Chinesa WCH”, decidi gerar um Artigo de como fiz para utilizá-lo (ARTIGO250401 - link na Descrição).
• A partir deste ponto, para seguir a Metodologia “do princípio”, que desenvolvi nos 30 anos de experiência como Professor de Eletrônica, surgiu a necessidade de apresentar os Conceitos fundamentais dos Microcontroladores, desvendando : De que partes são constituídos, e como ocorrem os Processos ocorrem dentro destes Microcontroladores na sua essência.
• Basicamente vou aproveitar um Material que produzi em 2003 para ser usado em Sala de Aula na “Escola Técnica de Eletrônica FMC de Santa Rita do Sapucaí - MG”.




1 INTRODUÇÃO
• Todo Sistema Computacional, no qual o "Computador e o “Videogame” também fazem parte, possui como principal característica a propriedade de ser “programável ”.
• No caso do “Videogame”, observa-se que, num mesmo “Console” pode-se atuar com infinitos tipos de jogos, bastando para isso fazer a troca do "Cartucho” (onde está o “Programa”).




• Todo "Sistema Computacional" é constituído de duas partes fundamentais: O "Hardware” e o "Software".
• O "Hardware" constitui a parte física de todo o Sistema.
• O "Software" é a parte maleável do Sistema, constituído pelo "Programa" .
2 HARDWARE
• Todo "Sistema Computacional" tem seu "Hardware" organizado segundo a estrutura básica apresentada na Figura.
• Em um "Microcontrolador" toda esta estrutura é encapsulada em um único "Chip".


• CPU
Unidade Central de Processamento.
• A "CPU" é responsável pela Controle de todo o Sistema e pela manipulação dos dados.
• Num Microcomputador a CPU é implementada por um único Chip, o Microprocessador.
EXs: 80386, 80486, Pentium , Duron (AMD)
• MEMÓRIAS
• As Memórias armazenam não só os dados que serão manipulados, mas também o próprio Programa a ser executado pela CPU.
• Tipos: ROM, RAM
ROM: Programa e tabelas de dados fixos.
RAM: Memória de dados
• I/O =DISPOSITIVOS DE ENTRADA E SAÍDA
• Os "Periféricos" são os vários tipo de Dispositivos que permitem a comunicação entre o Sistema e o exterior, através das "Portas".
Exemplos de PERIFÉRICOS:
• Teclado, Mouse, Vídeo.
• As "Portas" estabelecem padrões, para os "Periféricos" serem conectados ao "Sistema".
Exemplos de PORTAS:
• USB, HDMI, Áudio e Vídeo
• Padrões:
- Físico (conector)
- Elétrico (tensão nos pinos, por exemplo)
- Sinalização (seqüência de comunicação)
• BARRAMENTOS
• Os "Barramentos" fazem a interconexão de todas as partes do Sistema.
• Tipos de Barramentos:
- Dados
- Endereço
- Controle
• Devido a impossibilidade de se conectar a "CPU" aos inúmeros "Blocos" do Sistema um a um...
• A solução adotada para este problema foi a utilização de uma Via única de transferência (Via de dados - data bus) para as informações, o que permite obter Sistemas com um tipo de estrutura bastante organizada.
• A Este tipo de estrutura exigiu a utilização de mais duas “Vias”:
- “Via de endereços”: Indica qual dispositivo será acessado.
- “Via de controle” : Determina a maneira como será feito o acesso.
No Exemplo da Figura:
- A "CPU" habilita o "Bloco 2" para receber o"Dado 1".
Processo de "Escrita" (Write) no "Dispositivo" de "Endereço 2".
• A "CPU" habilita o "Bloco 3" para fornecer o seu Dado (data 2).
Processo de "Leitura" (Read) no "Dispositivo" de "Endereço 3".


MICROCONTROLADOR
- Todo o Sistema é integrado em um único Chip, o "Microcontrolador".
-Além dos Elementos básicos, como as Memórias e o "Processador" (CPU), o Microcontrolador contém também vários "Periféricos", tais como:
- Portas Seriais de Comunicação:
- i2C, SPI, UART, por exemplo.
- Temporizadores (Timers).
- Conversores A/D.
- Geradores PWM.
- Dentre vários outros.
Por isso a versatilidade destes Componentes para inúmeras Aplicações.


HARDWARE
• COMPARAÇÃO ENTRE SISTEMAS:
MICROCOMPUTADOR
- A "Placa Mãe" contém todos os elementos, onde a "CPU" é um "Chip", o "Microprocessador".
- Os "Periféricos" são conectados à "Placa Mãe", através de suas "Portas".
- Os "Slots" permitem a conexão de novos "Adaptadores + Portas" para conexão de novos "Periféricos".




COMPUTADOR:
• INSTRUÇÕES:
São tarefas elementares que podem ser processadas em um Computador, tais como:
- Somar 2 números;
- Transferir um número da Memória para a CPU;
- Transferir um dado da CPU para uma Porta;
- etc.
• PIANO :
• NOTAS:
São os sons elementares que podem ser tocados em um Piano:
- Do
- Ré
- Mi
- etc.


COMPUTADOR
• HARDWARE:
- Estrutura física de todo o Sistema.
- A escolha do Hardware implicará na capacidade de processamento do Sistema.
EX: Tipo de Processador
PIANO :
- Estrutura física do Piano.
- A escolha da parte física do Piano implicará em sua capacidade de execução das Músicas.
EX: Piano de 4 oitavas ou Piano de 5 oitavas


3 SOFTWARE: conceituação
• Um modo interessante de facilitar o entendimento do funcionamento dos SISTEMAS COMPUTACIONAIS, é fazer uma analogia destes Sistemas com o PIANO.


COMPUTADOR:
• “SET” DE INSTRUÇÕES:
- É o conjunto de todas as Instruções disponíveis, quando da construção do Processador, escolhido para implementar o Sistema.
- Um Processador Pentium, possui um conjunto maior de Instruções do que um 386.
PIANO :
• CONJUNTO DE NOTAS:
- É o conjunto de todas as Notas disponíveis, quando da construção do Piano.
- Um Piano de 5 oitavas, possui um conjunto maior de Notas do que um outro de 4 oitavas.


COMPUTADOR:
• PROGRAMA (SOFTWARE):
- É a seqüência de Instruções, escolhidas pelo Programador, com o objetivo de atender a uma determinada finalidade .
- O Programador escolhe no “Set de Instruções”,as Instruções e a forma de fazer uma combinação entre elas.
- De forma à obter uma seqüência que consiga atender sua necessidade.
PIANO :
• MÚSICA:
- É a seqüência de Notas, escolhidas pelo Compositor, com o objetivo de produzir uma combinação harmônica de sons.
- O Compositor escolhe no conjunto disponível de Notas: as Notas e a forma de fazer uma combinação entre elas.
- De forma à obter uma seqüência harmônica que satisfaça sua exigência.


COMPUTADOR:
• LISTAGEM DO SOFTWARE/
“OP.Codes”:
É a representação em forma símbolos, de cada Instrução que constitui o Programa.
“OP.Code”: Código da Instrução
Código numérico, que representa a Instrução, e que pode ser compreendido pelo Processador = “Linguagem de Máquina”.
Na Listagem cada Instrução é representada por um nome, mas na Máquina, o Programa é armazenado na Memória, na forma de “Op.Codes”.
PIANO
• PARTITURA:
É a representação em forma de símbolos de cada Nota que constitui a Música.




COMPUTADOR:
• PROCESSAMENTO DO PROGRAMA:
Estando o Programa já escrito pelo Programador e já armazenado na Memória, o processamento do Programa passa por:
1 - Leitura do “Op.Code”
2 - Interpretação do código
3 - Execução da Instrução
4 - volta ao passo 1, para a próxima Instrução.
Este processo é feito pela CPU, por isso o nome “Processador”.
PIANO
• EXECUÇÃO DA MÚSICA:
Estando a Música já escrita pelo Compositor e disponibilizada na Partitura, o processo de tocar a Músicapassa por:
1 - Leitura do símbolo da Nota
2 - Interpretação do símbolo
3 - Execução da Nota
4 - volta ao passo 1, para a próxima nota.


Desta maneira, o mesmo Piano (Hardware) permite gerar inúmeras Músicas (Softwares) através das diferentes combinações do mesmo Conjunto de Notas musicais disponível (Set de Instruções).




UNIDADE LÓGICA E ARITMÉTICA
A “Unidade Lógica e Aritmética” é a parte da CPU responsável pelas operações com os dados.
As principais operações que a ALU, geralmente pode executar são:
Aritméticas:
Adição e Subtração Multiplicação e Divisão
Incremento e Decremento
Comparação
Lógicas: E,OU,NÃO,
OU_EXCLUSIVO
Set, Reset e Test de bit Shift (Right e Left)


UNIDADE DE REGISTROS
A “Unidade de Registros” é composta por um grupo de Registradores, onde ficam armazenados os dados, temporariamente, durante a execução dos Programas ou, onde ficam armazenadas informações necessárias ao controle do próprio Sistema.
REGISTRO DE INSTRUÇÃO - IR
Registro responsável pela armazenagem do "Código de Instrução" (Operation Code- Op.Code) .


5 ESTRUTURA BÁSICA DA "CPU"
A “Unidade Central de Processamento” - CPU, é composta por três unidades básicas, a saber:
- A Unidade de Controle (Control Unit)
- A Unidade de Registros (Register Unit)
- A Unidade Lógica e Aritmética (ALU)


UNIDADE DE CONTROLE
A “Unidade de Controle” utiliza a “Via interna de controle” e a “Via externa de controle” para atuar sobre todos os controles do Sistema. Onde:
- "Via interna” atua sobre:
- "Unidade de Registros”
- “Unidade Lógica e Aritmética”
- “Via externa” atua sobre:
- “Banco de Memórias”
- “Dispositivos de I/O”




UNIDADE LÓGICA E ARITMÉTICA
A “Unidade Lógica e Aritmética” é a parte da CPU responsável pelas operações com os dados.
As principais operações que a ALU, geralmente pode executar são:
Aritméticas:
Adição e Subtração Multiplicação e Divisão
Incremento e Decremento
Comparação
Lógicas: E,OU,NÃO,
OU_EXCLUSIVO
Set, Reset e Test de bit Shift (Right e Left)


UNIDADE DE REGISTROS
A “Unidade de Registros” é composta por um grupo de Registradores, onde ficam armazenados os dados, temporariamente, durante a execução dos Programas ou, onde ficam armazenadas informações necessárias ao controle do próprio Sistema.
REGISTRO DE INSTRUÇÃO - IR
Registro responsável pela armazenagem do "Código de Instrução" (Operation Code- Op.Code) .


5 ESTRUTURA BÁSICA DA "CPU"
A “Unidade Central de Processamento” - CPU, é composta por três unidades básicas, a saber:
- A Unidade de Controle (Control Unit)
- A Unidade de Registros (Register Unit)
- A Unidade Lógica e Aritmética (ALU)


UNIDADE DE CONTROLE
A “Unidade de Controle” utiliza a “Via interna de controle” e a “Via externa de controle” para atuar sobre todos os controles do Sistema. Onde:
- "Via interna” atua sobre:
- "Unidade de Registros”
- “Unidade Lógica e Aritmética”
- “Via externa” atua sobre:
- “Banco de Memórias”
- “Dispositivos de I/O”




UNIDADE DE REGISTROS
- Os "Registros A e B“ armazenam, temporariamente, os "Dados " a serem manipulados durante o processamentos das "Instruções", tais como os "Operandos" das Operações Aritméticas, por exemplo.
- O "Registro REM“ armazena, temporariamente, o valor do "Endereço de Memória" a ser acessado durante o Processamentos de um "Instrução".
- O "Registro PC“ (Program Counter) armazena especificamente, o "Endereço da próxima Instrução" a ser processada. Funciona como um "Ponteiro", indicando a localização das "Instruções" na varredura do "Programa". Analogamente: Visão do tocador de Piano varrendo a Partitura.


UNIDADE DE CONTROLE
Esta Unidade é composta por um Circuito "Sequenciador" que recebe o "Código da Instrução" a ser processada (INPUT), proveniente do "Registro de Instrução - RI".
A partir daí, o "Contador" vai incrementando os endereços menos significativos da ROM - "Decodificador de Instruções", que, irá disparar a sequência de sinais de controle necessária ao processamento da Instrução (OUTPUT).
Esta Unidade possui acesso a todos os Controles dos Dispositivos internos e Externos. Com isso consegue executar todas as ações necessárias para o processamento das Instruções que recebe.
- O Circuito "Sequenciador" do "DECODIFICADOR DE INSTRUÇÕES" contém uma "Tabela" gravada numa "Memória não volátil" - ROM (não perde o conteúdo após ser desligada).
- Esta "Tabela" é dividida em "Blocos", um para cada "Instrução".
- O "Contador" varre o conteúdo do "Bloco" selecionado ("Op.Code" da "Instrução"), gerando a "Sequência de Sinais de Controle" necessária para o Processamento da "Intrução" (OUTPUTs).
- A "Unidade de Controle" (CONTRL UNIT) recebe o sinal de "Clock" do Sistema (CK).


6 PRINCÍPIO DE OPERAÇÃO DE UM SISTEMA COMPUTACIONAL
A Figura apresenta um “Sistema Computacional Hipotético”, que concebi para aprofundar a conceituação da Operação dos Sistemas Computacionais.
Trata-se de uma Arquitetura do tipo CISC (Set Complexo de Intruções) para operação com palavras de dados de 8 bits.
A Arquitetura CISC é utilizada em alguns Microprocessadores Z80, 8086 e vários outros, também no Microcontrolador 8051.
Esta Arquitetura caracteriza-se por ter um "Op Code" pequeno (8 bits neste caso) e um "Set de Instruções" com uma grande quantidade de "Instruções".
Isto é possível devido ao seu "Decodificador de Instruções" de grande capacidade.


UNIDADE LÓGICA E ARITMÉTICA - ALU
A “ALU” deste "Sistema Hipotético" é capaz de operar duas palavras de 8 bits (J0..J7,K0..K7), carregadas através dos controles "STJ" e "STK", e cujo resultado é apresentado nas saídas de F0 a F7.
- As operações possíveis de serem executadas por esta ALU são selecionadas através dos controles "M", "S1" e "S0" do modo exposto abaixo.




6.1 CONJUNTO DE INSTRUÇÕES ou"SET DE INSTRUÇÕES"
- Uma vez construído o "Hardware" do "Sistema Computacional", o "Fabricante" fornece ao "Usuário" um Conjunto de possibilidades de utilização deste "Hardware", o chamado "Set de Instruções".
6.1.1 DESCRIÇÃO DE ALGUMAS INSTRUÇÕES POSSÍVEIS PARA O HARDWARE APRESENTADO
- Uma "Instrução" pode ser entendida como sendo "uma das possibilidades de utilização do Hardware numa tarefa elementar".
Cada Instrução do "Set de Instruções" possui, para sua identificação, um "Mnemônico" e um correspondentes "Código de operação - Op. Code".
- A escolha do "Op.code" é definida no Projeto da "CPU" durante a Implementação da "Unidade de Controle".
-A "Sequência de ações necessária para a realização de uma "Instrução" é denominada “Microcódigo”.
-Cabe ao "Programador" (Músico) combinar as "Instruções" (Notas) disponíveis, de forma a fazer com que a "Máquina" (Piano) execute a tarefa que deseja, formando o "Programa" (Música).
- Assim, inúmeros "Programas" (Músicas) podem ser executados pela mesma "Máquina" (Piano), bastando recombinar as "Instruções" disponíveis no mesmo "Set de Instruções" (Conjunto de Notas).




6.2 SEQUÊNCIA DE AÇÕES PARA O PROCESSAMENTO DAS INSTRUÇÕES
- Exemplo, da "Sequência de ações" para o "Ciclo de Execução" da "Instrução ADD A,B" gravada na ROM - "Decodificador de Instruções" do "Sistema Hipotético" apresentado.
PASSOS:
1 - O Valor do "Registro A" é enviado para o "Operando 1" da "ALU". J < A
2 - O Valor do "Registro B" é enviado para o "Operando 2" da "ALU". K < B
3 - A "ALU" é configurada para a operação de Adição, que apresenta o resultado em sua saída (F). F < J plus K
4 - O "Registro A" é habilitado para receber o "Dado" disponível na "Via de Dados" (DATA BUS), neste caso o valor de F da ULA). A < F










6.3 PROCESSAMENTO DAS INSTRUÇÕES
1. A Inicialização do "Sistema Computacional" depende do acionamento do “RESET”, para que todos os Registros sejam “zerados”.
2. Com o acionamento do RESET, o primeiro passo da CPU reside em executar uma “Busca de Instrução” no endereço 0000H da Memória, onde, necessariamente, deve haver um “Código de Instrução - Op.Code” de um "Programa".
3. De posse deste primeiro Op.code, a CPU passa a fazer, em seguida, a “Execução” desta Instrução e a Busca da próxima.
4. O processo de “Busca” e “Execução” é repetido até o final da “Sequência de Instruções” (“Programa”).
Exemplo de Programa
- A análise do processamento do “Programa” abaixo permitirá demonstrar o princípio de operação dos Sistemas Computacionais.
IN A
AND 8BH
LD B,A
OUT B
HALT
- A linguagem apresentada neste "Programa" não pode ser interpretada pelo Circuito, já que este só opera na forma Binária.
- Esta representação das Instruções na forma de "Mnemônicos" é denominada Linguagem Assembly (Assembly Language).
- Desta maneira, o "Programa" deve, então, ser convertido para a chamada "Linguagem de Máquina", que nada mais do que a Sequência de Instruções do Programa escrita na forma dos seus correspondentes "Op.codes" .




- Pode-se concluir, então, que o Programa é uma mera sequência de palavras binárias colocadas na Memória. Cada Op.Code "instrui" a CPU qual ação deve tomar. O "Op.Code "é, então, interpretado pelo "Decodificador de Instruções" da "Unidade de Controle" da "CPU", que dispara toda a sequência de sinais de controle necessária à execução de cada uma das Instruções, e assim sucessivamente, até o término do Programa.
- O Processamento de cada Instrução é feito pela atuação da Unidade de Controle sobre todos os controles do Sistema (Via interna e Via externa), numa sequência de tempo bem definida, de modo a produzir o resultado esperado para a Instrução em execução.
- Esta sequência de controles para o processamento da Instrução é chamado de "Ciclo de Instrução", sendo subdividido em:
- Ciclo de Busca (Fetch) e
- Ciclo de Execução
- O “Ciclo de Busca” ou "Fetch de Instrução" é constituído pelo conjunto de sinais de controle que permitem fazer com que a Instrução seja “lida” na Memória onde se encontra, e trazida para o “Registro de Instrução” (IR). A partir de onde será, posteriormente, interpretada pelo “Decodificador de Instruções” da “Unidade de Controle”.
- O “Ciclo de execução” da Instrução é constituído pelo conjunto de sinais de controle (gerada pela “Unidade de Controle”) que fazem com que a Instrução seja executada.




7 CISC x RISC
- O Sistema apresentado, possui uma Arquitetura denominada de CISC = “Complex Instruction Set CPU”.
- Este tipo de Arquitetura é caracterizada por oferecer uma grande variedade de Instruções (diferentes “Modos de endereçamento”).
Para oferecer esta grande variedade de Instruções, a construção deste tipo de Processador faz uso do Circuito Sequenciador para fazer a implementação do seu “Decodificador de Instruções”.
Desta forma, um pequeno “Op.code”, enviado ao Decodificador, dispara o “Microcódigo” (gravado na ROM do Decodificador - Sequenciador), gerando toda a sinalização necessária para o processamento da Instrução.


- Já a Arquitetura RISC = “Reduced Instruction Set CPU” possui um pequeno e simples conjunto de Instruções (do tipo: de carga).
- Estas Instruções possuem um comprimento fixo e longo, que permite a utilização de um Decodificador de Instruções bastante simplificado, onde, praticamente, o Op.code atua diretamente sobre os controles dos dispositivos do Sistema (eliminando o microcódigo e, consequentemente, o Sequenciador que implementam o CISC).
- No entanto, estatisticamente, os "Compiladores" usados para traduzir os "Programas de Alto nível", tais como de "Linguagem C", por exemplo, (C Compiler), acabam por utilizar mais as Instruções básicas da "linguagem de Máquina".
- Como na Arquitetura RISC a velocidade de Processamento é maior do que a dos Processadores CISC e o Circuito interno dos Processadores RISC é mais simples, atualmente a maioria dos Microcontroladores de Mercado são do tipo "RISC".
- Estas características fazem com que o processamento das Instruções seja muito rápido.
- Além destas características, esta Arquitetura apresenta:
- Um maior número de Registradores .
- Uma Via dedicada para os Op.codes.
- Estas características implicam nas seguintes consequências:
- Exigem Memórias de programa que tenham um comprimento de "palavra" maior, para comportar o Op.code mais longo.
- Exigem a repetição das Instruções em um número maior de vezes, para se conseguir gerar a lógica desejada (que muitas vezes já existe disponível em uma única Instrução do CISC).




6 DÚVIDAS E SUGESTÕES
Caso tenha alguma Dúvida ou queira dar alguma sugestão ou apenas comunicar sua experiência, utilize um dos canais a listados.
E-mail: artefaktus@artefaktus.com.br
Página Web: www.artefaktus.com.br/contato

