Baixe o app para aproveitar ainda mais
Prévia do material em texto
Indaial – 2021 Teoria de MicroconTroladores e Microprocessadores Prof. Kevin Rabelo Costa 1a Edição Copyright © UNIASSELVI 2021 Elaboração: Prof. Kevin Rabelo Costa Revisão, Diagramação e Produção: Centro Universitário Leonardo da Vinci – UNIASSELVI Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri UNIASSELVI – Indaial. Impresso por: C837t Costa, Kevin Rabelo Teoria de microcontroladores e microprocessadores. / Kevin Rabelo Costa – Indaial: UNIASSELVI, 2021. 192 p.; il. ISBN 978-65-5663-735-8 ISBN Digital 978-65-5663-736-5 1. Monitoramento de dados. - Brasil. II. Centro Universitário Leonardo da Vinci. CDD 004 apresenTação Caro acadêmico, apresentamos a você o livro de Microcontroladores e Microprocessadores. Através dele, você terá acesso ao conhecimento necessário para realizar os seus primeiros projetos e acompanhar uma área que é base para as mais recentes inovações tecnológicas, como: internet das coisas, robótica, monitoramento de dados, entre muitos outras. Esperamos que esse livro didático seja um diferencial no seu futuro profissional. De modo a facilitar o seu entendimento, este livro foi dividido em três unidades, apresentadas a seguir, cada uma delas com três tópicos. Ao final de cada tópico estão presentes questões de autoatividade com o intuito de proporcionar uma melhor retenção do conteúdo, sendo primordial a realização delas. Lembre-se, muito em Eletrônica e Programação está relacionado à prática e ao exercício de determinadas atividades básicas. A Unidade 1 apresenta um panorama histórico do desenvolvimento dos microprocessadores e microcontroladores, partindo desde o conceito de máquinas programáveis até os últimos lançamentos nessa indústria. Na unidade, nós estudaremos também a arquitetura de um microprocessador, utilizando o conhecimento adquirido para o estudo do microcontrolador Atmega328 no final da unidade. Na Unidade 2, nós estudaremos a programação de dispositivos microcontrolados. Teremos como ponto de partida a lógica de programação e seguiremos estudando os principais tipos de dados e estruturas utilizadas na linguagem C++. Ao final, nos utilizaremos desse conhecimento para estudar o básico da placa de desenvolvimento Arduino Uno. Na Unidade 3, desenvolveremos nossos primeiros projetos práticos, utilizando uma visão profissional de: abordagem do problema, utilização de recursos do microcontrolador, simulação e resultados. Nessa fase, você será capaz de desenvolver seus primeiros projetos, a partir de um entendimento pleno do hardware e software à disposição. Pretendemos, assim, caro acadêmico, contribuir com a sua formação na área através de um conteúdo bem elaborado e consoante com a tecnologia atual. Prof. Kevin Rabelo Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi- dades em nosso material. Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato mais prático, que cabe na bolsa e facilita a leitura. O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra- mação no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo. Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente, apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilida- de de estudá-lo com versatilidade nas telas do celular, tablet ou computador. Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assun- to em questão. Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa continuar seus estudos com um material de qualidade. Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de Desempenho de Estudantes – ENADE. Bons estudos! NOTA Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela um novo conhecimento. Com o objetivo de enriquecer seu conhecimento, construímos, além do livro que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você terá contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complemen- tares, entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento. Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo. Conte conosco, estaremos juntos nesta caminhada! LEMBRETE suMário UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES ........................... 1 TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES ..................................................................................... 3 1 INTRODUÇÃO .................................................................................................................................... 3 2 OS PRIMEIROS COMPUTADORES ............................................................................................... 4 3 EIS QUE SURGEM OS TRANSISTORES ...................................................................................... 6 4 OS PRIMEIROS MICROPROCESSADORES ............................................................................... 8 5 MICROCONTROLADORES ............................................................................................................. 9 6 ESTADO DA ARTE ........................................................................................................................... 10 6.1 LANÇAMENTOS RECENTES EM MICROPROCESSADORES ........................................... 10 6.2 LANÇAMENTOS RECENTES EM MICROCONTROLADORES ......................................... 11 RESUMO DO TÓPICO 1..................................................................................................................... 14 AUTOATIVIDADE .............................................................................................................................. 15 TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR ............................................. 19 1 INTRODUÇÃO .................................................................................................................................. 19 2 UNIDADE LÓGICO ARITMÉTICA – ULA ................................................................................. 20 3 UNIDADE DE CONTROLE ............................................................................................................ 21 4 REGISTRADORES ............................................................................................................................ 23 5 BARRAMENTOS ............................................................................................................................... 24 6 SET DE INSTRUÇÕES ..................................................................................................................... 25 6.1 ELEMENTOS DE UMA INSTRUÇÃO ...................................................................................... 25 6.2 TIPOS DE INSTRUÇÕES ............................................................................................................. 27 6.3 NÚMERO DE ENDEREÇOS ....................................................................................................... 28 6.4 TIPOS DE OPERANDOS ............................................................................................................. 29 6.4.1 Números ................................................................................................................................ 29 6.4.2 Dadoslógicos ....................................................................................................................... 30 6.4.3 Caracteres .............................................................................................................................. 30 6.5 ENDEREÇAMENTO .................................................................................................................... 31 6.5.1 Imediato ................................................................................................................................ 31 6.5.2 Direto ..................................................................................................................................... 31 6.5.3 Indireto .................................................................................................................................. 32 6.5.4 Por registrador ..................................................................................................................... 32 6.5.5 Indexado ............................................................................................................................... 32 6.5.6 Base mais deslocamento .................................................................................................... 33 7 AS ARQUITETURAS RISC E CISC ............................................................................................... 33 8 AS ARQUITETURAS VON NEUMANN E HARVARD ............................................................ 35 RESUMO DO TÓPICO 2..................................................................................................................... 37 AUTOATIVIDADE .............................................................................................................................. 39 TÓPICO 3 — O MICROCONTROLADOR ATMEGA328 ............................................................ 41 1 INTRODUÇÃO ................................................................................................................................. 41 2 FAMILIA AVR .................................................................................................................................... 42 3 ARQUITETURA ................................................................................................................................. 43 4 MEMÓRIAS DE PROGRAMA ....................................................................................................... 46 5 MEMÓRIA DE DADOS ................................................................................................................... 48 6 REGISTRADORES ............................................................................................................................ 49 7 INTERRUPÇÕES ............................................................................................................................... 52 8 PINAGEM ........................................................................................................................................... 53 LEITURA COMPLEMENTAR ............................................................................................................ 56 RESUMO DO TÓPICO 3..................................................................................................................... 61 AUTOATIVIDADE .............................................................................................................................. 63 REFERÊNCIAS ...................................................................................................................................... 66 UNIDADE 2 — PRIMEIROS PASSOS NA PROGRAMAÇÃO DE DISPOSITIVOS MICROCONTROLADOS ....................................................................69 TÓPICO 1 — INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO C++ .......................... 71 1 INTRODUÇÃO .................................................................................................................................. 71 2 LÓGICA DE PROGRAMAÇÃO ..................................................................................................... 72 2.1 DESCRIÇÃO ................................................................................................................................. 72 2.2 FLUXOGRAMA ........................................................................................................................... 73 2.3 PSEUDOCÓDIGO ........................................................................................................................ 74 3 A LINGUAGEM C++ ......................................................................................................................... 75 4 TIPOS DE DADOS E VARIÁVEIS ................................................................................................ 76 4.1 TIPOS DE DADOS ........................................................................................................................ 76 4.2 DECLARANDO VARIÁVEIS ...................................................................................................... 77 4.3 CONSTANTES ............................................................................................................................. 79 5 OPERADORES LÓGICOS E RELACIONAIS ............................................................................. 80 5.1 OPERADORES RELACIONAIS ................................................................................................. 80 5.2 OPERADORES LÓGICOS ........................................................................................................... 81 6 ESTRUTURAS DE SELEÇÃO ......................................................................................................... 83 7 ESTRUTURA DE REPETIÇÃO ....................................................................................................... 85 8 VETORES ............................................................................................................................................ 88 9 STRINGS ............................................................................................................................................. 89 10 FUNÇÕES .......................................................................................................................................... 90 RESUMO DO TÓPICO 1..................................................................................................................... 94 AUTOATIVIDADE .............................................................................................................................. 95 TÓPICO 2 — APRESENTAÇÃO DA PLACA DE DESENVOLVIMENTO ARDUINO ......... 97 1 INTRODUÇÃO ................................................................................................................................. 97 2 HARDWARE E SOFTWARE LIVRE ............................................................................................. 98 3 A FAMILIA ARDUINO .................................................................................................................. 100 3.1 ARDUINO UNO ......................................................................................................................... 101 3.2 ARDUINO NANO ...................................................................................................................... 101 3.3 ARDUINO LEONARDO ........................................................................................................... 101 3.4 ARDUINO MEGA ...................................................................................................................... 102 4 ARQUITETURA ............................................................................................................................... 102 RESUMO DO TÓPICO 2................................................................................................................... 105 AUTOATIVIDADE ............................................................................................................................106 TÓPICO 3 — CONFIGURANDO E CONHECENDO A IDE DO ARDUINO ....................... 109 1 INTRODUÇÃO ................................................................................................................................ 109 2 INSTALAÇÃO E CONFIGURAÇÃO DA IDE ........................................................................... 110 3 CONECTANDO O ARDUINO ..................................................................................................... 112 4 FUNÇÕES SETUP() E LOOP() ...................................................................................................... 114 5 MONITOR SERIAL ......................................................................................................................... 115 6 ENVIANDO O PRIMEIRO SKETCH .......................................................................................... 116 7 IMPORTANDO BIBLIOTECAS ................................................................................................... 118 LEITURA COMPLEMENTAR .......................................................................................................... 122 RESUMO DO TÓPICO 3................................................................................................................... 128 AUTOATIVIDADE ............................................................................................................................ 129 REFERÊNCIAS .................................................................................................................................... 131 UNIDADE 3 — DESENVOLVIMENTO DE PROJETOS COM ARDUINO ........................... 133 TÓPICO 1 — SIMULANDO O ARDUINO ATRAVÉS DO TINKERCAD ............................. 135 1 INTRODUÇÃO ................................................................................................................................ 135 2 PRIMEIROS PASSOS COM O TINKERCAD ........................................................................... 136 3 AJUSTANDO PARAMÊTROS ...................................................................................................... 139 3.1 OSCILOSCÓPIO ......................................................................................................................... 140 3.2 GERADOR DE FUNÇÃO .......................................................................................................... 141 3.4 FONTE DE ENERGIA ................................................................................................................ 142 3.3 MULTÍMETRO ............................................................................................................................ 142 4 DEPURADOR ................................................................................................................................... 143 5 ADICIONANDO BIBLIOTECAS ................................................................................................. 144 6 EXEMPLO PRÁTICO ...................................................................................................................... 145 RESUMO DO TÓPICO 1................................................................................................................... 148 AUTOATIVIDADE ............................................................................................................................ 149 TÓPICO 2 — EXPLORANDO RECURSOS NATIVOS DO ARDUINO ................................. 151 1 INTRODUÇÃO ................................................................................................................................ 151 2 ENTRADAS E SAÍDAS DIGITAIS .............................................................................................. 151 3 CONVERSORES ANALÓGICO-DIGITAIS .............................................................................. 152 4 SAIDAS PWM .................................................................................................................................. 155 5 TRANSMISSÃO SERIAL .............................................................................................................. 158 6 TIMERS .............................................................................................................................................. 160 RESUMO DO TÓPICO 2................................................................................................................... 164 AUTOATIVIDADE ............................................................................................................................ 165 TÓPICO 3 — PROJETOS COM SENSORES E ATUADORES .................................................. 167 1 INTRODUÇÃO ................................................................................................................................ 167 2 CONHECENDO OS SENSORES E ATUADORES ................................................................... 167 2.1 SENSORES DE LUMINOSIDADE ........................................................................................... 168 2.2 SENSORES DE TEMPERATURA ............................................................................................. 169 2.3 SENSORES DE DISTÂNCIA ..................................................................................................... 171 2.4 MOTOR CC .................................................................................................................................. 172 2.5 MOTOR DE PASSO .................................................................................................................... 174 2.6 DISPLAY LCD ............................................................................................................................. 175 3 PROJETO DE UM POSTE ELETRÔNICO.................................................................................. 176 4 PROJETO DE UM ALARME DE PRESENÇA ............................................................................ 178 5 PROJETO DE UM TERMÔMETRO DIGITAL .......................................................................... 179 LEITURA COMPLEMENTAR .......................................................................................................... 183 RESUMO DO TÓPICO 3................................................................................................................... 189 AUTOATIVIDADE ............................................................................................................................ 190 REFERÊNCIAS .................................................................................................................................... 192 1 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES OBJETIVOS DE APRENDIZAGEM PLANO DE ESTUDOS A partir do estudo desta unidade, você deverá ser capaz de: • conhecer a evolução da tecnologia de microprocessadores e microcon- troladores, através da análise de fatos históricos e detalhes de arquite- tura; • entender a arquitetura e organização dos processadores, bem como cada módulo se comunica para realizar o processamento de dados; • compreender os detalhes construtivos do Atmega328, microcontrolador presente no Arduino Uno; • compreender como é realizada a configuração de um microcontrolador em nível de máquina. Esta unidade está dividida em três tópicos. No decorrer da unidade, você encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado. TÓPICO 1 – HISTÓRIA DOS MICROCONTROLADORES e MICROPROCESSADORES TÓPICO 2 – ARQUITETURA DE UM MICROPROCESSADOR TÓPICO 3 – O MICROCONTROLADOR ATMEGA328 Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure um ambiente que facilite a concentração, assim absorverá melhor as informações. CHAMADA 2 3 TÓPICO 1 — UNIDADE 1 HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 1 INTRODUÇÃO A automatização de tarefas, ou as rotinas, como é mais comum falarmos, estão presentes na vida de todos.Você, todos os dias acorda e, provavelmente, escova os dentes, arruma a cama e toma café da manhã, antes de iniciar seus estudos ou outra atividade. As rotinas são ações sequenciais realizadas diariamente, que você realiza muitas vezes sem perceber e de forma automática. Da mesma forma que uma rotina, como ir à academia todos os dias, pode ser aprendida, as máquinas podem ser programadas para executar uma sequência de ações ininterruptamente. Hoje isso já é extremamente comum: você programa o seu despertador para tocar todos os dias no mesmo horário, programa a sua geladeira para manter acima de uma determinada temperatura, ou a sua Alexa para dizer “Oi” quando você chegar em casa. Mas nem sempre foi assim. As primeiras máquinas consideradas programáveis não eram nem elétricas. Como você vai ver nesse tópico foi preciso longos anos de estudo para chegar onde chegamos. Mesmo a humanidade já tendo avançado bastante, a ponto de chegarmos a miniaturizações como o celular, ainda existe espaço para muito mais. O estudo histórico dos microprocessadores e microcontroladores é principalmente importante para acompanharmos as tendências na área. Como esses dispositivos evoluíram? Qual a tendência dessa evolução? Está na miniaturização? Está na velocidade de processamento? Isso tudo além de estudarmos a tecnologia que foi utilizada na época, porque ao contrário do que se pensa, muita tecnologia dita “antiga” ainda é usada atualmente nos mais diversos dispositivos, como veremos neste tópico. Pensando nisso, você estudará como os computadores se desenvolveram até chegarem às máquinas complexas que são hoje e que servem como bases para as mais diversas aplicações. Dessa forma, a leitura desse tópico agregará a você, acadêmico, não apenas o conhecimento histórico do assunto, mas também a base tecnológica que levou à evolução dos computadores. Assim, você terá, ao fim deste tópico, a base necessária para iniciar o estudo efetivo dos microcontroladores e microprocessadores de que trataremos no restante desse livro. UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES 4 2 OS PRIMEIROS COMPUTADORES Em vez de já irmos explorando os primeiros computadores, é interessante primeiro entendermos por que eles surgiram. Como vimos, o nosso dia a dia é formado de rotinas, em outras palavras, atividades repetitivas, que fazemos sempre da mesma forma e normalmente com os mesmos materiais. Ao longo da história a tendência sempre foi de melhorar mais esses processos, de forma a deixá- los mais rápidos, menos onerosos e mais simples. Foi a partir dessa tendência de facilitar processos que surgiram as primeiras máquinas programáveis. A primeira delas, conforme afirma Pereira (2009), foram os teares, que eram programadas através de cartões perfurados para repetir padrões em tecidos. Essas máquinas são consideradas as percussoras dos computadores justamente por exibir esse padrão programado e repetitivo que vemos ainda hoje em vários códigos computacionais. Há ainda quem afirme que os computadores surgiram da necessidade de se fazer cálculos de forma rápida e precisa. De qualquer modo, as calculadoras também são consideradas parte importante no processo de concepção dos computadores. Caso você esteja se perguntando, a primeira calculadora foi inventada por William Schickard, ainda no início do século XVII. Ela era mecânica e capaz de realizar as quatro operações básicas em um girar de alavancas. Durante muito tempo se achou que a primeira calculadora foi inventada por Pascal, contudo após o estudo de cartas trocadas entre Schickard e Kepler, se descobriu que o alemão, na verdade, estava 20 anos adiantado em relação à Pascal (WAZLAWICK, 2017). A Figura 1 apresenta a vista da famosa Pascaline, criada por Pascal. Apesar da importância histórica, essas máquinas não são consideradas programáveis, simplesmente por não haver a entrada de instruções informando o que fazer com os números. FIGURA 1 – PASCALINE, DURANTE MUITO TEMPO FOI CONSIDERADA A PRIMEIRA CALCULADORA A SER INVENTADA FONTE: <https://www.britannica.com/technology/Pascaline>. Acesso em: 23 mar. 2021. TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 5 Os cartões perfurados no qual os teares são baseados foram utilizados ainda em várias outras máquinas até chegarem ao engenheiro alemão Konrad Zuse, que construiu o primeiro computador eletromecânico utilizando-se dos cartões perfurados e relés, o Z1. Para você entender melhor, os relés foram inventados anos antes por Joseph Henry, e se utilizavam de um fenômeno eletromagnético conhecido como indução magnética. Vamos entender melhor esse fenômeno: basicamente, ao induzirmos uma corrente elétrica em um enrolamento de fios, um campo magnético é gerado, sendo capaz de atrair objetos metálicos, da mesma forma que um ímã. A partir desse princípio, o relé, formado por uma bobina e um contato móvel metálico foi utilizado para gerar estados binários de zeros e uns. Inicialmente, com a bobina desenergizada, o contato permanece aberto, não havendo condução de corrente, o que corresponde digitalmente ao estado “0”, em contrapartida, ao energizar a bobina, o campo magnético gerado aproxima o contato, permitindo o fluxo de corrente, o que corresponde ao estado digital “1”. Na Figura 2, você confere o esquema prático de um relé, bem como os estados de comutação que falamos. Vale dizer que apesar dos relés terem proporcionado grandes ganhos em relação às máquinas mecânicas, estes ainda era muito lentos e foram rapidamente substituídos pelas válvulas mecânicas na construção de computadores. Um dos primeiros computadores à válvula conhecido foi o famoso ENIAC, fabricado pelo EUA durante a segunda guerra mundial. Apesar de ser extremamente pesado (em torno de 27 toneladas), e consumir em torno de 150 kW, o ENIAC apresentou um grande avanço em relação ao seu antecessor Mark I, que operava a 8Hz enquanto o ENIAC chegava a alcançar 5 kHZ (TECHTUDO, 2012). O ENIAC também foi o primeiro computador a utilizar a arquitetura Von Neumman, que como veremos adiante, é utilizada até hoje em certos microprocessadores. Mesmo com a capacidade de programação, os computadores anteriores à década de 1950, necessitavam terem cabos reposicionados, chaves ligadas ou desligadas e um novo programa devia ser carregado sempre que houvesse a necessidade de reprogramação (TECMUNDO, 2011). As coisas começaram a mudar, e principalmente a diminuir, quando um certo componente foi inventado. Apesar de os relés não terem sido utilizados por muito tempo na construção de computadores, eles são utilizados ainda hoje, principalmente para o chaveamento de cargas em corrente alternada. Um exemplo interessante é o acionamento remoto de uma lâmpada através de um microcontrolador. O relé permite, nesse caso, o acionamento de uma carga em corrente alternada, normalmente conectada em 220V ou 110V, através de um pulso de 5V gerado pelo microcontrolador. INTERESSA NTE UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES 6 FIGURA 2 – ESTADOS DE CONDUÇÃO DE UM RELÉ FONTE: Adaptado de <https://bit.ly/371sfY4>. Acesso em: 23 mar. 2021. 3 EIS QUE SURGEM OS TRANSISTORES O grande mérito por transformar os computadores antigos, que ocupavam o tamanho de uma sala, em aparelhos portáteis que carregamos hoje na bolsa está em um componente: o transistor. A invenção de Bardeen, Brattain e Shockley foi patenteada em 1947 e revolucionou a eletrônica da época. O transistor substituiu as válvulas eletromecânicas e deu espaço para uma redução no tamanho dos dispositivos eletrônicos em geral. Basicamente, o transistor é um dispositivo eletrônico composto por pelo menos três terminais, nomeados como base, coletor e emissor. Uma tensão aplicada na base faz com que a corrente flua entre coletor e emissor. Dessa forma, o transistor também pode atuar como uma chave eletrônica, uma vez que uma tensão na base permite o fluxo de corrente(chave fechada) e quando não existe tensão, a corrente fica impedida de circular (chave aberta). Esse comportamento reproduz os zeros e uns amplamente utilizados na computação para cálculo e processamento de dados. Tudo bem, mas você deve se perguntar o que levou os transistores a serem utilizados tão amplamente na construção de computadores, uma vez que os relés e até mesmo as válvulas replicam esse mesmo estado de zero e uns. O grande diferencial do transistor está na velocidade e também no tamanho desses dispositivos. Como isso é possível? De forma básica, o processo de condução do transistor (o fluxo de corrente através dele) acontece de forma extremamente rápida. Além disso, são necessários apenas pequenas porções de materiais dopados para a montagem de um transistor, o que garantiu também uma miniaturização dos computadores. A partir da sua invenção, o transistor passou a ser utilizado na construção de computadores e também na amplificação de sinais e na implementação de dispositivos lógicos. a) Estado 0: a bobina desenergizada não proporciona o campo magnético necessário para unir os dois contatos. b) Estado 1: a energização da bobina proporciona a aproximação dos contatos e o fluxo de corrente. TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 7 Como você deve lembrar, as portas lógicas desempenham papel fundamental na Eletrônica Digital. Uma curiosidade é que todas as portas lógicas podem ser recriadas utilizando transistores, assim como memórias, microprocessadores e microcontroladores. Por isso enfatizamos tanto a importância da invenção dos transistores. As figuras 3 e 4 apresentam uma porta lógica AND e NOT implementadas apenas com transistores discretos. FIGURA 3 – IMPLEMENTAÇÃO DE UMA PORTA AND USANDO TRANSITORES FONTE: O autor (2021) FONTE: O autor (2021) FIGURA 4 – IMPLEMENTAÇÃO DE UMA PORTA NOT USANDO TRANSISTORES A dopagem eletrônica é o procedimento em que um determinado material semicondutor é acrescido de impurezas de modo a proporcionar uma condução controlada (PEREIRA, 2010). No caso do transistor, a condição de condução acontece quando uma tensão é induzida no terminal base. Para saber mais sobre a relação da dopagem com a condução de semicondutores acesse: http://www.quimica.seed.pr.gov.br/modules/ conteudo/conteudo.php?conteudo=179. NOTA A fim de ampliar os conhecimentos acerca dos transistores e a sua importância para computação, recomenda-se a leitura do seguinte artigo: https://tecdicas.com/criando- portas-logicas-com-transistores/. DICAS UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES 8 O surgimento dos transistores proporcionou um grande avanço na computação da época: computadores passaram a ser produzidos de forma menos dispendiosa, em menor espaço e consumindo menos energia. É aí que nascem os primeiros microprocessadores, como veremos a seguir. 4 OS PRIMEIROS MICROPROCESSADORES No final dos anos 1960, os transistores passaram a ser utilizados na construção dos mais diferentes tipos de circuitos lógicos. Entre eles, começaram a surgir dispositivos capazes de executar sequência de instruções, assim como os microprocessadores modernos. Inicialmente, esses circuitos eram formados pela conexão discreta de diversos circuitos integrados e transistores. Só no início da década de 1970 surgiram os primeiros microprocessadores totalmente integrados e encapsulados em um único chip, como conhecemos hoje (TECHTUDO, 2012). Conforme afirma Pereira (2009), o primeiro microprocessador foi lançado em 1969 pela Intel e ficou conhecido na época como i4004. O chip era destinado para o desenvolvimento de calculadoras, e possuía na época 4 bits, cerca de 46 instruções, um clock base de 740 kHz, e era o resultado do encapsulamento de mais de 2000 transistores em um único chip. A vista do i4004 pode ser vista na Figura 5. FIGURA 5 – INTEL I4004: CONSIDERADO O PRIMEIRO MICROPROCESSADOR DA HISTÓRIA. FONTE: <https://bit.ly/376u8Tw>. Acesso em: 15 jul. 2021. O i4004 deu início a um intenso desenvolvimento tecnológico nos anos subsequentes. Como veremos, a busca a partir de agora foi por viabilizar dispositivos cada vez mais rápidos. Em 1972, a Intel lançou o i8008, processador de 8 bits, com barramento externo de 14 bits e capaz de endereçar 48 instruções e um clock de 800 kHz. O sucesso do i8008 foi tão grande que o microprocessador passou a integrar os primeiros computadores pessoais da época. O i8008 foi o percursor de um dos microprocessadores mais importantes da história: o i8080, o primeiro microprocessador a implementar um barramento de 16 bits, com clock de 3 MHz e 78 instruções. O i8080 equipou o IBM-PC, TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 9 enquanto o Macintosh da Apple foi equipado com os processadores 6800 da Motorola, que também já concorria nesse mercado na época. Foi com base no i8080 que surgiram a família de processadores x86. O primeiro processador da família, o i8086, alcançou um clock com velocidade de 5 MHz, usando instruções de 16 bits. A família x86 foi lançada no final da década de 70 e ainda serve como base para boa parte dos computadores atuais (TECHTUDO, 2012). 5 MICROCONTROLADORES Você já deve ter percebido que nos computadores modernos os microprocessadores não atuam de forma autônoma, sendo necessários componentes externos como: memória RAM (para armazenamento de dados e variáveis) e memória ROM (para armazenamento de programas), além de geradores de clock externo, endereçamento, dispositivos de regulação, entre outros. A partir dessa necessidade, surgiu ainda em meados de 70, o primeiro MCU (Micro Controller Unit), ou microcontroladores como passaremos a chamar aqui. O primeiro microcontrolador foi inventado pela Texas Instrument e era basicamente o encapsulamento de um microprocessador com memórias RAM e ROM integradas (AUGARTEN, s.d.). Ao contrário dos microprocessadores, um microcontrolador já possui todos os dispositivos necessários para o seu funcionamento integrados em um mesmo chip. Como veremos mais adiante, muitos microcontroladores hoje já possuem até tecnologias como Bluetooth e WiFi integradas, além de diversos protocolos de comunicação. Os primeiros microcontroladores derivaram também do i8080. Chips como o 8048, e posteriormente o 8050 da Intel, se tornaram os mais populares na época e os mais utilizados em tarefas de automação. Nos anos subsequentes, os microcontroladores continuaram evoluindo para chips mais rápidos, mas ainda havia uma limitação nesses dispositivos: a reprogramação. Geralmente era necessária programação especializada (realizada pelo próprio fabricante), mudança de hardware e a remoção do dispositivo do circuito, o que deixava o desenvolvimento mais lento e mais oneroso. Foi com o desenvolvimento das memórias flash, durantes os anos 1990, que os microcontroladores passaram a ser programados ou apagados através de sinais elétricos, não sendo necessário nem a retirada do dispositivo do circuito, nem muito menos o retorno ao fabricante (AYCOCK, 2017). Atualmente fabricantes como Microchip e Atmel se utilizam largamente desse tipo de memória para os seus dispositivos. UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES 10 Além dos microcontroladores, outros tipos de microprocessadores merecem destaque. Os processadores de sinais digitais, ou DSPs, como são conhecidos, são tipos de microprocessadores empregados no processamento de sinais digitais, estando presentes em televisões digitais e em aparelhos de CD e DVD. Já as GPU são chips especializados em processar gráficos. É muito comum hoje que alguns processadores já venham com uma GPU integrada para o processamento de vídeo e jogos em geral. 6 ESTADO DA ARTE As aplicações para microcontroladores e microprocessadores crescem dia após dia, do mesmo modo que a pesquisa nessas áreas. A necessidade por miniaturização e eficiência trouxe a eletrônicaa um nível fantástico nos dias de hoje. Em menos de 70 anos, computadores passaram de dispositivos imensos para pequenas telas que carregamos no nosso bolso, e não para por aí. A seguir é apresentado o estado da arte de microcontroladores e microprocessadores, o que nada mais é do que estado atual de conhecimento nessa área. Por ser uma área muito grande e com diversas ramificações, principalmente, no que se refere às aplicações dessas tecnologias, focaremos nos lançamentos recentes de microprocessadores e microcontroladores que estão ao nosso alcance, e que como profissionais da área temos grandes chances de um dia chegar a trabalhar com eles. 6.1 LANÇAMENTOS RECENTES EM MICROPROCESSADORES Os microprocessadores estão presentes na maioria dos equipamentos eletrônicos que conhecemos hoje: celulares, tablets, notebooks, placas de vídeos, servidores, bombas de gasolina, máquinas de cartão de crédito, dispositivos médicos, se utilizam de algum tipo de microprocessador para gerar valor à sociedade. Cada microprocessador serve perfeitamente para cada aplicação, o que significa que são escolhidos de acordo com os requisitos práticos. Os microprocessadores presentes nos computadores modernos, por exemplo, possuem uma capacidade de processamento de dados bem maior que uma máquina de cartão de crédito, mas são ainda normalmente menores em capacidade Artigos que apresentam o estado da arte de uma determinada tecnologia são sempre bem-vindos pela comunidade acadêmica por servirem de base para vários outros trabalhos. Que tal se aprofundar no estado da arte de microprocessadores e microcontroladores, se juntar com um ou mais colegas e escrever um artigo? DICAS TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 11 que os dos servidores. Como você verá na sua trajetória profissional, cada centavo economizado na escolha correta de um componente eletrônico, significa uma economia de milhares em equipamentos que são produzidos em série. Como você deve imaginar, os microprocessadores continuaram evoluindo em velocidade, recursos e capacidade de processamento. Já a AMD lançou recentemente, em janeiro de 2021, a nova linha de processadores Ryzen 5000, com arquitetura Zen 3 para notebooks. Segundo a fabricante, o Ryzen 7 5800U promete ser o melhor processador para notebooks ultrafinos, com 8 núcleos e clock de até 4,4 GHz, além de ter melhor eficiência energética, capaz de reproduzir vídeos por 21 horas com uma única carga. Para desktops (computadores de mesa) a empresa lançou o Ryzen 9 5900, com incríveis 12 núcleos e performance até 24% melhor em jogos que o seu antecessor. 6.2 LANÇAMENTOS RECENTES EM MICROCONTROLADORES Recentemente, em janeiro de 2021, a empresa Raspberry anunciou o lançamento da Raspberry Pi Pico, por um valor de aproximadamente $4. A placa é baseada no microcontrolador RP2040, o primeiro desenvolvido pela empresa e conta com dois núcleos, um clock base de 133 MHz (perceba a diferença em relação aos primeiros micros), memória RAM de 256 kB e flash de 2MB, além de possuir 30 pinos GPIO (pinos com opção de uso como entrada ou saída de dados, exploraremos mais sobre isso adiante), sensor de temperatura e comunicação SPI, I2C, UART, integradas (RASPBERRY, s.d.). A placa foi desenvolvida para ser uma opção de baixo custo para desenvolvimento de protótipos. O microcontrolador vai equipar ainda outras placas com o Arduino Nano RP2040 e o Adafruit Feather RP2040. Uma das pioneiras em placas de desenvolvimento foi a Arduino. O intuito desde o início era criar um dispositivo que fosse barato, fácil de programar e acessível para estudantes e projetistas amadores. Assim, surgia o Arduino Uno, A Raspberry Pi Pico trata-se de uma placa de desenvolvimento, enquanto o RP2040 é o microcontrolador que integra essa placa. As placas de desenvolvimento normalmente são mais indicadas para iniciantes por possuir toda a estrutura para a aprendizagem, como: interface para programação via USB, regulação de tensão, pinos para conexão com os GPIOs e outras facilidades. IMPORTANT E UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES 12 baseado no microcontrolador Atmega328 da Atmel, e facilmente programado em C++, através da conexão USB ao computador. Depois de programada a placa pode ser conectada e usada de forma independente para o acionamento de um robô, controle de temperatura, acionamento remoto de bombas e muitas outras aplicações. Existem placas Arduino para as mais diversas aplicações sendo as mais comuns o Arduino Uno, o Nano e o Mega. Com o recente desenvolvimento do conceito de Internet das Coisas (IoT), mais e mais projetos passaram a ter como premissa a conexão com a Internet. Vendo essa necessidade, placas de desenvolvimento com o ESP8266, e o seu sucessor, o ESP32 surgiram. Essas placas contam com módulos de conexão WiFi e Bluetooth integrados, facilitando o desenvolvimento para a área de IoT. Contudo, nem sempre as placas de desenvolvimento são a melhor opção. Em projetos comerciais que requerem protótipos menores, é comum a utilização do microcontrolador em si, sem todo o aparato que as placas de desenvolvimento possuem. Microcontroladores muito utilizados nesse tipo de aplicação são os PICs. Os PICs são gravados através da conexão de pinos específicos do microcontrolador com o PICKIT, que por sua vez se conecta ao computador via cabo USB. Os microcontroladores PIC possuem famílias com núcleos de processamento de 8, 16 e mais recentemente de 32 bits e atingem velocidades de até 48 MHz. Voltados normalmente para aplicações de maior desempenho, temos a nova linha de microcontroladores STM32G0, da fabricante ST. Lançados em 2019, os microcontroladores são uma boa opção para aplicações industriais, oferecendo uma memória RAM de até 128 kB e flash de até 512 kB (SEMICONDUCTORS, s.d.). Para você ter uma ideia de como os microcontroladores desempenham papel fundamental no desenvolvimento de novos projetos, vamos analisar alguns dos mais interessantes a seguir. A fim de reduzir o tempo gasto procurando por vagas de estacionamento e, consequentemente, a poluição, Melnyk, Djahel e Nait-Abdesselam (2019) propuseram uma solução inteligente que verifica as vagas disponíveis em um estacionamento e disponibiliza ao usuário através de um aplicativo Android, de modo que ele possa ir diretamente a vaga indicada. O papel do microcontrolador nessa aplicação é receber os dados dos sensores que indicam se determinada vaga está ocupada ou não. Já Mtshali e Khubisa (2019) propuseram um sistema de casas inteligentes voltados para pessoas com deficiência física. Através do sistema o usuário consegue ligar e desligar aparelhos e ainda pedir ao assistente virtual que mostre o interior desses aparelhos. O sistema conta ainda com sistema de monitoramento em caso de queda da pessoa com deficiência e chama imediatamente o serviço de saúde mais próximo. TÓPICO 1 — HISTÓRIA DOS MICROCONTROLADORES E MICROPROCESSADORES 13 Os incêndios florestais sejam eles espontâneos ou criminosos, resultam em grandes perdas para fauna e flora local. Dessa forma, Zhu, Xie e Yuan (2012) propuseram um sistema de monitoramento capaz de coletar informações de fogo na floresta em qualquer momento, sendo possível prevenir o incêndio, em seu estágio inicial. Em muitas cidades, a alta incidência de crimes se torna um problema para o governo, e o efetivo de policiais, muitas vezes, não é suficiente para monitorar todos os pontos. Assim, surgiram aplicações, como apresentado por Singh et al. (2018), que utilizam de microprocessamento de imagens para detectar e alertar sobre movimentos considerados perigosos ou violentos. A grande variedade de microcontroladores vista atualmente facilita bastante a implementação dos mais diversos projetos, e, como vimos, proporciona avanços significativos no bem-estar da sociedade. E você, tem ideias que seriam possíveis com o uso de microcontroladores? 14 Nestetópico, você aprendeu que: • Os microprocessadores evoluíram de dispositivos eletromecânicos que pesavam toneladas para pequenos chips que integram a maioria dos dispositivos eletrônicos de que conhecemos hoje. • A invenção do transistor representou um grande avanço para o desenvolvimento da computação, por ser uma chave mais compacta, econômica e confiável que as antecessoras eletromecânicas. • Os transistores são a base de diversos dispositivos lógicos como microprocessadores, memórias e portas lógicas. • Enquanto os microprocessadores precisam de componentes externos para funcionar, como: memórias RAM e ROM, endereçadores e clocks externos, os microprocessadores já possuem todos esses componentes internos e encapsulados em um único CI. • Além dos microcontroladores, outros tipos de microprocessadores são importantes e estão presentes no nosso dia a dia, como: as GPUs, responsáveis pelo processamento de gráficos, e os DSPs, responsáveis pelo processamento de sinais digitais. • Placas de desenvolvimento normalmente são melhores para iniciantes por já virem com todo o hardware necessário para o desenvolvimento de protótipos. • O mercado na área de microprocessadores cresce a cada ano, e que os principais fabricantes: Intel e AMD, fazem lançamentos anuais buscando sempre reduzir custo, melhorar a capacidade de processamento e velocidades dos chips. • Vários fabricantes de microcontroladores estão alinhados com as novas tendências, estando disponíveis no mercado placas de desenvolvimento como o ESP32 que já possuem módulos WiFi e Bluetooth integrados, voltados para o desenvolvimento na área de IoT. • A grande variedade de microcontroladores proporciona uma maior facilidade na escolha do dispositivo de acordo com a aplicação. • O desenvolvimento de sistemas microcontrolados vem proporcionando solução para vários problemas da sociedade. RESUMO DO TÓPICO 1 15 1 Apesar de ter evoluído enormemente nos últimos anos, o desenvolvimento da computação não se deu de forma linear, existindo nos primeiros computadores problemas que propiciaram um campo para o desenvolvimento de novas tecnologias. Acerca dos problemas presentes nos primeiros computadores, classifique V para as sentenças verdadeiras e F para as falsas: ( ) A capacidade de reprogramação esteve presente nos primeiros computadores, não sendo um problema. ( ) O ENIAC, um dos primeiros computadores inventados, apresentou um grande avanço em relação ao Mark I, apesar de possuir um consumo elevado de energia. ( ) O relé, dispositivo eletromecânico inventado por Joseph Henry, foi rapidamente substituído pelas válvulas por ser muito lento. ( ) A utilização dos transistores permitiu uma diminuição no tamanho dos computadores da época, assim como uma maior velocidade de processamento. Assinale a alternativa que apresenta a sequência CORRETA: a) ( ) V – V – F – F. b) ( ) F – V – V – V. c) ( ) V – F – F – V. d) ( ) F – V – V – F. 2 Ao longo da história dos processadores, vários dispositivos ficaram conhecidos e acabaram contribuindo para o desenvolvimento tecnológico que temos hoje nessa área. Sobre os dispositivos que fizeram parte da história dos processadores, associe os itens, utilizando o código a seguir: I- Teares. II- Pascaline. III- Z1. IV- ENIAC. V- i4004. ( ) Deu início ao desenvolvimento dos microprocessadores como conhecemos hoje, sendo o resultado do encapsulamento de mais de 2000 transistores. ( ) É considerado o primeiro computador eletromecânico construído, o dispositivo funcionava a partir de cartões perfurados e relés ( ) É considerado a primeira máquina programável, seu funcionamento era baseado na repetição de padrões gravados em cartões perfurados ( ) Acreditou-se durante muito tempo ser a primeira calculadora inventada, quando na verdade o feito pertence a William Schickard. AUTOATIVIDADE 16 ( ) Um dos primeiros computadores a válvula a ser construído, atingindo velocidades de até 5 kHz. Assinale a alternativa que apresenta a sequência CORRETA: a) ( ) V – III – I – II – IV. b) ( ) II – IV – I – V – III. c) ( ) V – I – II – III – IV. d) ( ) II – I – III – IV – V. 3 Apesar de serem derivados também do i8008, os microcontroladores possuem uma topologia diferente dos microprocessadores, servindo também para aplicações diferentes. A respeito da diferença entre microcontroladores e microprocessadores, assinale a alternativa CORRETA: a) ( ) É comum que microcontroladores possuam maior velocidade de processamento que os processadores. b) ( ) O microcontrolador ao contrário do microprocessador possui memória RAM e ROM, além de outros recursos, integrados em um mesmo encapsulamento, apesar de normalmente atingir menores velocidades de processamento. c) ( ) O microprocessador ao contrário do microcontrolador possui memória RAM e ROM, além de outros recursos, integrados em um mesmo encapsulamento. d) ( ) Projetos com microcontroladores necessitam da conexão externa de memórias RAM e ROM, ao contrário dos microprocessadores que não tem essa limitação. 4 A história dos computadores foi marcada por novas tecnologias, que possibilitaram avanços na forma como esses equipamentos processavam informações. Contudo, uma invenção em específico contribuiu significantemente na redução do tamanho dos computadores. O que contribuiu para o que os computadores atuais sejam significantemente menores que os seus antecessores eletromecânicos? Justifique sua resposta. 5 Os transistores estão presentes na maioria dos eletrônicos que conhecemos hoje: desde os computadores até as máquinas de lavar modernas possuem esses pequenos componentes. Sabendo disso, explique o princípio elétrico que faz com que os transistores sejam utilizados na maioria dos dispositivos eletrônicos modernos. 6 Após a sua invenção, os transistores passaram a ser utilizados nos mais diversos circuitos lógicos, reduzindo também o tamanho de calculadoras e outros dispositivos matemáticos. Pesquise e explique como os transistores podem ser utilizados para realizar uma adição simples. 17 7 Dependo da foram como são construídos, os microcontroladores podem ser utilizados nas mais diversas aplicações, sendo esse um fator decisivo na escolha de um componente ou outro. Sobre os microcontroladores utilizados na indústria aeroespacial e militar, disserte acerca do que esses dispositivos possuem de diferente dos convencionais. 18 19 TÓPICO 2 — UNIDADE 1 ARQUITETURA DE UM MICROPROCESSADOR 1 INTRODUÇÃO Como estudamos no Tópico 1, os microprocessadores são parte fundamental dos computadores modernos, todo o processamento de dados, cálculos e requisições para dispositivos periféricos passam por ele. Ainda assim, o microprocessador depende de outros dispositivos para funcionar: como periféricos, memórias e um barramento. De forma geral, pode-se dizer que a união desses dispositivos com o microprocessador resulta em um computador. Apesar da importância dos demais componentes, iremos focar apenas na arquitetura do microprocessador propriamente dito. Você pode visualizar a estrutura detalhada de um computador na Figura 6, nela também é apresentada a estrutura do microprocessador, que será o alvo do nosso estudo. FIGURA 6 – ESTRUTURA DETALHADA DE UM MICROPROCESSADOR FONTE: Stallings (2010, p. 10) 20 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES A estrutura de blocos que vemos na Figura 6 se repete para a maior parte dos fabricantes, de modo que, estudando essa estrutura básica, você terá uma facilidade maior que entender a estrutura específica da família de microprocessadores ou microcontroladores que por ventura você vier a estudar. Neste tópico, além da estrutura lógica de um microprocessador, veremos também o seu princípio de funcionamento. Assim, entenderemos como as unidades lógicas se comunicam e qual a função de cada uma no contexto de processamento. Esse entendimento é primordial para o desenvolvimentode projetos robustos e otimizados, independente da linguagem de programação ou família de processadores que você irá trabalhar. 2 UNIDADE LÓGICO ARITMÉTICA – ULA A ULA, ou ALU (Arithmetic and Logic Unit), do inglês, é a unidade do microprocessador responsável pelas operações lógicas e aritméticas como: soma, subtração, multiplicação, divisão, comparação, diferenciação e outras. Conforme afirma Stallings (2010), a ULA é a essência do processador, e pode ser considerada umas das partes mais importantes pelo simples fato de receber e processar dados de todos as outras partes do processador. Dito isso, vamos analisar como ela funciona. A ULA possui basicamente duas entradas: uma para os registradores e outra para a unidade de controle, e duas saídas: uma de flags e a outra de registradores. Sempre que uma operação for realizada, os dados a serem calculados são apresentados através de registradores (que como veremos mais adiante armazenam esses valores), ao passo que a unidade de controle informa o que deve ser feito com eles. A ULA realiza então essa operação e o resultado é armazenado novamente em um registrador. Ao final da operação uma flag pode ainda ser gerada. As flags normalmente passam alguma informação ao bloco que receberá o resultado. Ao executar uma operação de soma em que o resultado for maior que o espaço destinado para o seu armazenamento, por exemplo, uma flag de overflow (transbordamento, em uma tradução direta) é gerada informando que o resultado não foi corretamente salvo no registrador por conta do espaço disponível ser insuficiente. Dessa forma, a ULA funciona com uma calculadora que recebe comandos através da unidade de controle e entrega esses dados através de registradores as demais partes do microprocessador. TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 21 3 UNIDADE DE CONTROLE Chegamos à unidade de controle do microprocessador. Você tem ideia do que essa unidade faz? Bem, a unidade de controle é quem gera os gatilhos para que ações sejam tomadas dentro do processador. Basicamente, a unidade de controle emite sinais para dispositivos externos ao processador como: periféricos e memórias, e internamente para a ULA, de modo que determinada função interna seja realizada, recebendo como entrada instruções, flags e sinais de controles de fontes externas, através dos registradores. Em termos práticos podemos dizer que a unidade de controle é quem garante a correta execução das tarefas, ou instruções como passaremos a chamar daqui em diante, no microprocessador. Veremos a seguir como as instruções são processadas, dessa forma, entenderemos melhor como a unidade de controle funciona. A operação de um programa depende da execução de uma sequência de instruções, como uma lista de tarefas que executamos ao longo dia. Contudo, como é descrito a seguir, as instruções ainda não são as menores unidades de execução de um programa. [...] Para resumir, a execução de um programa consiste da execução sequencial de instruções. Cada instrução é executada durante um ciclo de instrução feito de subciclos menores (por exemplo, busca, indireto, execução, interrupção). A execução de cada subciclo envolve uma ou mais operações mais curtas, ou seja, micro-operações (STALLINGS, 2010, p. 462). Pode parecer complexo, mas na verdade tudo o que foi falado aqui pode ser resumido na Figura 7. Como você deve se lembrar, uma das entradas da ULA vem justamente da unidade de controle. É ela que informa a ULA o que deve ser feito com os dados nos registradores. LEMBRETE 22 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES FIGURA 7 – ESTRUTURA DE EXECUÇÃO DE UM PROGRAMA FONTE: Stallings (2010, p. 462) O ciclo de máquina se refere ao tempo que um processador leva para finalizar um ciclo de clock, ou, como vimos anteriormente, para executar uma instrução. Esse tempo é inversamente proporcional a frequência de clock do processador. Ou seja, Onde t é o ciclo de máquina e f a frequência do clock do microprocessador. Você consegue descobrir quanto tempo um processador com clock de 3,10GHz leva para executar uma instrução? NOTA Como veremos, é a unidade de controle que organiza e gera os sinais de controle para que cada instrução seja executada na sequência correta e também com os subciclos, ou subpassos como passaremos a nos referir, corretos. Cada um dos subpassos tem sua importância no processo de execução de um programa, dessa forma, eles são detalhados a seguir (STALLINGS, 2010). Busca: nesse subpasso a unidade de controle busca pela instrução fornecida na memória e a decodifica, deixando-a pronta para ser executada, a seguir um registrador específico é incrementado de forma que no próximo ciclo a instrução presente no próximo endereço de memória seja lida e decodificada. Esse comportamento garante a sequência de execução das instruções, como se fossem uma lista de tarefas. Lembra dessa analogia? TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 23 Execução: com a instrução pronta para ser executada, a unidade de controle já sabe exatamente o que deve ser feito, com quais registradores fazer e para onde mandar o resultado. Nesse subpasso, os sinais de controle são fornecidos para a ULA e/ou os demais periféricos envolvidos. Esses são os dois principais subpassos executados necessariamente a cada instrução. Contudo, não podemos esquecer os outros dois, que apesar de não acontecerem em todos os momentos, são importantes em alguns casos. Indireto: em algumas situações o endereço presente na instrução não faz referência direta ao endereço da memória que contém o operador. Nesses casos, a instrução passa um ponteiro que aponta para o endereço de memória que está o operador. Fazendo uma analogia é como se você pedisse para algum colega lhe indicar para uma vaga. O entrevistador ficaria sabendo quem você é, mesmo sem você falar nada para ele. Nessa situação, seu colega seria o ponteiro, ao passo que o entrevistador seria a instrução e você o operador. Perceba que a instrução é capaz de encontrar o operador, mas somente através do ponteiro. Pois bem, em situações que um ponteiro é fornecido, o subpasso indireto deve ser executado antes do subpasso de execução. Nele acontece a transformação de um endereço indireto, endereçado através de um ponteiro, para um direto, que diz respeito exatamente para onde o operador está. Interrupção: como vimos anteriormente, os subpassos de busca e execução acontecem de forma recorrente no microprocessador. Mas o que aconteceria se durante a execução de uma soma um botão no teclado fosse pressionado? Como o tratamento desses eventos não pode esperar, a unidade de controle pausa a execução do que está sendo feito, salva o estado do processo atual nos registradores e a interrupção começa a ser tratada. Após o tratamento da interrupção os dados são recuperados do registrador e a execução é retomada. Essa abordagem garante um processamento efetivo, uma vez que o processador não precisa aguardar que uma interrupção aconteça para ela ser tratada (HENRIQUE, 2016). 4 REGISTRADORES Não sei se você percebeu, mas falamos bastante de registradores nos dois subtópicos anteriores, isso porque eles também desempenham um papel fundamental no funcionamento de um processador. Para entendermos os registradores, precisamos saber primeiramente que eles tratam de memórias, ou seja, são capazes de armazenar bits durante o funcionamento do processador. Em uma escala hierárquica, os registradores são as memórias mais compactas, rápidas e caras que existem em um computador. Mas por que elas precisam ser tão rápidas assim, você deve se perguntar. Pois bem, são os registradores que guardam os dados que são processados em todo o microprocessador. Por exemplo, os operadores de uma soma realizada pela ULA? São salvas em registradores. O resultado dessa operação? Também. O byte que informa a próxima instrução 24 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES EMICROPROCESSADORES a ser lida pelo microprocessador? Também. Como essa informação é lida/ armazenada centenas ou milhares de vezes por segundo, os registradores devem ser necessariamente feitos de memórias muito rápidas e confiáveis. Como os registradores estão presentes na maioria das operações realizadas por um microprocessador, e alguns são bem específicos, é difícil explicar um por um. O que podemos fazer é dividi-los em grupos, e entender como cada um é importante para o processador. A primeira distinção que podemos fazer é entre os registradores que são visíveis ou não ao usuário (MACÊDO, 2012), como você já deve ter deduzido, a primeira classe diz respeito a registradores que podem ser acessados e alterados pelo usuário, ao passo que a segunda classe é interna ao registrador. Podemos dividir ainda os registradores visíveis em duas classes: os de uso geral e de uso específico, bem intuitivo, não? Os de uso geral como o nome sugere podem ser utilizados pelo usuário como bem entender. Já os de uso específico estão atrelados a uma determinada função do processador. Para você entender de quanta especificidade estamos falando, vamos a um exemplo. Dois registradores bastante utilizados pela ULA são os registradores MAR e MBR. Sempre que a ULA vai executar uma operação que precisa acessar dados na memória, o endereço dos dados é armazenado no registrador MAR, sendo encontrado o operando no endereço especificado, ele é armazenado no registrador MBR, sendo assim utilizado para realizar a operação. 5 BARRAMENTOS Tente imaginar agora como todos esses dados vão para lá e para cá. Como a ULA recebe os operandos, como a unidade de controle é informada que um overflow aconteceu, ou como os dados são passados para os registradores. Obviamente toda essa informação tem que ter um meio para ser transmitida, e este meio são os barramentos. Os barramentos são linhas que interligam os mais diversos dispositivos em um computador. Memórias, periféricos e placas de vídeo são todas conectadas ao processador através de barramentos. Internamente, o processador possui barramentos para endereços, para dados e para controle, que interligam a ULA, a unidade de controle e os registradores. Durante o subpasso de busca conversamos sobre um “registrador específico” que é incrementado a cada ciclo de execução, de modo que no próximo ciclo um novo endereço de memória seja lido para buscar a próxima instrução a ser executada. Descubra e pesquise a respeito desse registrador. Uma dica: O registrador IR recebe a instrução após ela ser encontrada no endereço salvo nesse registrador. NOTA TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 25 6 SET DE INSTRUÇÕES Falamos bastante anteriormente sobre as instruções. Como você deve ter percebido as instruções são comandos que são interpretados pelo processador a fim de executar uma determinada função, seja a divisão entre dois operandos, ou mover o conteúdo de um registrador para outro. Assim, podemos dizer que as instruções são a forma mais primitiva de um código de programação. Isso significa que todo código que desenvolvermos utilizando linguagens de alto nível como C, Phyton, Java, será convertido pelo compilador em forma de instruções que serão interpretadas pelo processador. Para todos os efeitos, as linguagens de alto nível são desenvolvidas para facilitar a vida do programador e aproximar mais ainda a forma como nos comunicamos com a forma que de programar. Contudo, mesmo programando sempre em alto nível, as instruções nos dizem muito sobre como o microprocessador funciona, e são bastante importantes para você que está se habituando com eles. 6.1 ELEMENTOS DE UMA INSTRUÇÃO Vamos iniciar vendo os elementos que compõem uma instrução. Inicialmente, precisamos imaginar cada instrução como uma sequência de bits. Essa sequência é dividida em campos e cada um deles tem um significado lógico para o processador. Considere, por exemplo, uma instrução de 16 bits. Nessa instrução, os quatro primeiros bits representam o opcode, ao passo que os outros dois campos de seis bits representam os operandos. O formato da nossa instrução com dois operandos pode ser visto na Figura 8. O opcode de uma instrução representa basicamente o código da operação a ser realizada em binário, podendo especificar operações aritméticas e lógicas, transferência de valores entre registradores, dados de controle, entre outros. Dessa forma, o microprocessador identifica a operação a ser executada através da leitura desse trecho de código. Os outros dois campos são destinados para referenciar os operandos. Veja que referenciar nesse caso significa dizer que os operandos podem ou não estão exatamente presentes nesses campos. Quando não, eles são acessados através de um registrador ou de um endereço de memória. Da mesma forma, podem ser referenciados ainda nesse campo o operador de destino, ou em outras palavras, o resultado da operação. Você sabe o que é um compilador? Os compiladores são programas que se dedicam a traduzir o código escrito de uma determinada linguagem em outra. No texto, o compilador que nos referimos traduz o código escrito em uma linguagem de alto nível em linguagem Assembly. Aprenda mais sobre os compiladores em: https://www.dca.fee. unicamp.br/cursos/EA876/apostila/HTML/node37.html. NOTA 26 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES FIGURA 8 – FORMATO DE UMA INSTRUÇÃO COM DOIS OPERADORES FONTE: O autor (2021) A representação de uma instrução, como vimos, é completamente compreensível para o processador, no entanto, muito complicada para o programador. Imagine ter que lidar com sequências intermináveis de bits, uma completa confusão! Vendo isso, o opcode das instruções é frequentemente referenciado pelos programadores através de símbolos, conhecidos como mnemônicos, que indicam qual operação está sendo executada. Já os operandos são representados também de forma genérica através de números ou palavras. Veja o exemplo de um código utilizando mnemônicos a seguir. FIGURA 9 – EXEMPLO DE UM CÓDIGO EM LINGUAGEM DE MÁQUINA FONTE: O autor (2021) O trecho de código mostrado move o valor presente no registrador A para o registrador W, adiciona 10 (expresso em hexadecimal) a esse valor e o move o resultado para o registrador B. Essa representação da instrução de máquina em forma de mnemônicos, é na verdade a linguagem de programação conhecida como Assembly. Esse nome é novo para você ou você já ouviu falar nele outras vezes? Se reescrito em linguagem C, por exemplo, o código anterior poderia ser expresso como: TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 27 FIGURA 10 – CÓDIGO DA FIGURA 5 REESCRITO EM LINGUAGEM C FONTE: O autor (2021) Bem mais simples, não acha? Com esses exemplos podemos ver a diferença entre as linguagens de baixo e alto nível. Enquanto o Assembly foca muito mais em mover dados para registradores, a linguagem de alto nível utiliza variáveis, tornando a forma algébrica nesse último caso bem mais simples. 6.2 TIPOS DE INSTRUÇÕES Como vimos anteriormente, todo código em alto nível é traduzido em linguagem de máquina por um compilador. Dessa forma, o set de instruções do processador, que nada mais é que o conjunto de instruções possíveis, deve conter instruções capazes de executar qualquer expressão em uma linguagem de alto nível. Conforme afirma Stallings (2010), as instruções necessárias podem ser categorizadas em: lógicos e aritméticas, armazenamento de dados, teste e desvio e instruções de entrada e saída para o usuário. O Quadro 1 apresenta instruções comuns utilizadas em processadores, divididos conforme essa categorização. Imagino que você esteja agora se perguntando sobre a importância do Assembly para um engenheiro. De fato, existe uma boa discussão em torno desse assunto, mas que não é o objetivo principal aqui. Dessa forma, a leitura do artigo pode ajudar muito e instruir a respeito. Disponível em: https://www.profissionaisti.com.br/vale-a-pena-aprender-o-bom-e-velho-assembly/. DICAS https://www.profissionaisti.com.br/vale-a-pena-aprender-o-bom-e-velho-assembly/ https://www.profissionaisti.com.br/vale-a-pena-aprender-o-bom-e-velho-assembly/ 28 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES QUADRO 1 – INSTRUÇÕES COMUMS EM SET DE INSTRUÇÕES FONTE: Stallings (2010, p. 297) Analisando as instruções anteriores, vemos que muito do que o computador executa e faz já é contemplado por essas instruções. No entanto, essa lista está longe de ser exaurível. Cada fabricante determina suas próprias instruções cabendo a você estudar essas especificidades à medida que for tendo essa necessidade. 6.3 NÚMERO DE ENDEREÇOS Quando falamos em número de endereços, qual a primeira coisa que vem a sua cabeça? Provavelmente, você associou ao número de endereços na memória, o que não deixa de estar certo, mas aqui vamos ver a respeito da quantidade de endereços contidos em cada instrução. Na Figura 8, por exemplo, utilizamos dois endereços por instrução, perceba que os valores eram sempre transferidos Categoria Mnemônico Descrição Aritmética Add Calcula a soma entre operandos. Subtract Calcula a subtração entre operandos. Incremente Incrementa o operando. Decrement Decrementa o operando. Negate Troca o sinal do operando. Lógica AND Realiza o AND lógico entre dois operandos. OR Realiza o OR lógico entre dois operandos. NOT Realiza o NOT lógico. Test Teste o operando em uma condição especificada. Compare Faz a comparação lógica entre dois operandos. Armazenamento Move Transfere valor da origem ao destino. Store Transfere valor do processador para a memória. Exchange Troco o valor da origem e do destino. Set Transfere palavra de 1s para o destino. Reset Transfere palavra de 0s para o destino. Teste/Desvio Jump Transfere a execução do programa para a instrução presente no endereço especificado. Jump (condicional) Testa uma determinada condição, caso seja satisfeita um Jump é executado. Execute Executa o operando do endereço especificado. Skip Salta para a próxima instrução. Entrada/Saída Input Transfere dados de um periférico para o destino especificado. Output Transfere dados da origem especificada para o periférico. Start Transfere instruções para um periférico e inicia sua operação. TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 29 de um operador para o outro. Apesar de instruções com dois endereços serem mais comuns, podem-se encontrar ainda processadores com uma e até com três endereços. Com três endereços uma instrução é capaz de especificar dois operadores e um destino para o resultado. Veja na Figura 11 como o código da Figura 9 seria reescrito com três endereços. FIGURA 11 – EXEMPLO DA FIGURA 8 REESCRITO EM INSTRUÇÕES COM TRÊS ENDEREÇOS FONTE: O autor (2021) Perceba como reduzimos duas operações em apenas uma. Muito bom, não é? Contudo, apesar da vantagem para o programador que faz mais escrevendo menos, instruções com três endereços são instruções maiores, com mais campos, e que requerem registradores maiores para armazenar e executar essas instruções. Quanto maior o registrador, como você já deve imaginar, mais caro o processador. 6.4 TIPOS DE OPERANDOS Analisando novamente os exemplos da Figura 9 e Figura 11, percebemos que operamos com basicamente um número (0x0A), apesar das instruções anteriores também referenciarem registradores, esses não são um tipo de dados. Além dos números, temos ainda os caracteres, os dados lógicos e os endereços como tipos de dados. Veremos um pouco mais a seguir sobre cada um deles, pode parecer óbvio de início, mas o estudo particularizado deles vai ajudar muito a sua jornada. 6.4.1 Números O que você precisa entender aqui é que a representação dos números em um computador vai mais além do que representar algarismos. Os números em um computador são utilizados também para representar endereços, contadores e o tamanho do campo das instruções. No entanto, ao contrário dos números utilizados na matemática, que são um conjunto infinito, os números em um computador têm um limite. Esse limite vai tanto com relação à magnitude dos números inteiros como também a precisão (em termos práticos, a quantidade 30 UNIDADE 1 — HISTÓRIA E ARQUITETURA DOS MICROCONTROLADORES E MICROPROCESSADORES de casas após a vírgula em números ponto flutuante) dos números do ponto flutuante. Dessa forma, é bom ficar atento ao overflow e underflow. Explicado isso, podemos extrair tópicos da explanação anterior a fim de facilitar a sua compreensão. Dois tipos de números estão presentes nos computadores: - Números inteiros: são utilizados em endereços, contadores, tamanho de campos de instrução e valores matemáticos, sendo limitados pela magnitude, internamente são representados em valores binários, enquanto para o usuário são apresentados valores decimais. - Números ponto flutuante: são normalmente utilizados para representar variáveis físicas como a temperatura em uma sala ou a velocidade de um veículo. São os famosos números com valor após a vírgula. A precisão desses números, assim como a magnitude, é limitada em computadores. 6.4.2 Dados lógicos Como sabemos, os bits carregam uma natureza lógica por si só, sendo que um bit 1 normalmente significa verdadeiro e um bit zero significa falso. Assim, um conjunto de bits 1001, por exemplo, pode significar a representação binária do número decimal 5, como também um conjunto de resultados lógicos onde o primeiro e último resultado são verdadeiros e os demais são falsos. O computador, naturalmente, é capaz de distinguir entre essas duas situações e realizar operações lógicas com esses operandos. 6.4.3 Caracteres Frequentemente há a necessidade de se representar textos, usando sistemas de computação. Esses dados são complemente compreensíveis para o usuário, mais difícil de serem representados pelo computador, basicamente pela natureza binária dele. Contudo, como você está lendo esse texto possivelmente em um computador, é de se imaginar que alguém já propôs uma solução para isso. A solução veio através da representação de cada caractere por um conjunto de bits. Na tabela ASCII (American Standard Code for Information Interchange), por exemplo, cada caractere é representado por uma sequência única de 7 bits, sendo possível até 128 caracteres diferentes. TÓPICO 2 — ARQUITETURA DE UM MICROPROCESSADOR 31 6.5 ENDEREÇAMENTO Estudando os elementos de instrução (Tópico 6.1), nós temos a tentação de achar que o valor dos operadores pode ser diretamente informado na instrução, ou até diretamente obtidos em um endereço de memória, contudo não são essas as únicas formas de endereçamento. O endereçamento diz respeito à forma como referenciamos o operador em uma instrução. Indiretamente estudamos ao longo desse tópico várias formas de endereçamento: como quando estudamos o ciclo indireto, ou quando referenciamos diretamente um valor em hexadecimal nos exemplos da Figura 9 e Figura 11. Vamos agora apresentar os demais casos e consolidar esse conhecimento. Segundo Monteiro (2007) são seis os tipos de endereçamento mais comuns desenvolvidos para processadores: • Imediato. • Imediato. • Direto. • Indireto • Por registrador. • Indexado. • Base mais deslocamento. Vamos analisar cada um desses modos a seguir. 6.5.1 Imediato Esse é o modo de endereçamento mais simples que veremos. Na Figura 9, quando adicionamos 0x0A ao valor de W, estávamos endereçando diretamente o valor 0x0A como operador. Desse modo, no endereçamento imediato sempre apresentamos diretamente o operando na instrução. Apesar da praticidade, o valor que endereçamos (operando) deve sempre ser menor que o valor máximo para o operador, ou seja, caso tenhamos 6 bits de operador na instrução, é impossível endereçar no modo imediato um valor com 8 bits. A vantagem desse método, como já vimos, é que um subpasso na execução da instrução é economizado, sendo o tipo de endereçamento mais rápido. Dessa forma, podemos
Compartilhar