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óriaonde, 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" .                                                                                

- Devido a complexidade de manipulação dos Op.codes na sua forma binária original, o Programa em "Linguagem de Máquina" é, normalmente, apresentado numa sequência de Op.codes representados na forma Hexadecimal correspondente.   

- 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