O documento descreve a organização básica de sistemas computacionais, incluindo cinco elementos essenciais: unidade lógica aritmética, unidade de memória, unidade de controle, unidade de entrada e unidade de saída. Também discute conceitos como instruções, programa, memória, interface e o papel da unidade de controle em coordenar as outras unidades.
Descrição original:
Introdução aos Microprocessadores e Microcontroladores
Título original
Introdução aos Microprocessadores e Microcontroladores
O documento descreve a organização básica de sistemas computacionais, incluindo cinco elementos essenciais: unidade lógica aritmética, unidade de memória, unidade de controle, unidade de entrada e unidade de saída. Também discute conceitos como instruções, programa, memória, interface e o papel da unidade de controle em coordenar as outras unidades.
O documento descreve a organização básica de sistemas computacionais, incluindo cinco elementos essenciais: unidade lógica aritmética, unidade de memória, unidade de controle, unidade de entrada e unidade de saída. Também discute conceitos como instruções, programa, memória, interface e o papel da unidade de controle em coordenar as outras unidades.
Engenharia Mecânica Objetivos • Descrever a função e o modo de operação de cada um dos cinco elementos presentes na organização de computadores ou sistemas com processadores digitais; • Entender que um computador repete continuamente operações de busca e execução; • Entender a diferença entre microprocessador, microcomputador e microcontrolador; • Analisar os ciclos de busca e execução durante a execução de um programa em linguagem de máquina; • Entender a função operacional dos diferentes tipos de barramentos e seus sinais num microcomputador; • Citar as principais funções executadas por um microprocessador; • Descrever os diferentes tipos de palavras de computadores; • Atualizar seus conhecimentos através do aprendizado de detalhes e conceitos avançados de sistemas baseados em microprocessadores. Introdução • Microprocessadores, microcomputadores e microcontroladores revolucionaram a indústria eletrônica e nosso dia-a-dia; • O tamanho e custo desses sistemas foram dramaticamente reduzidos enquanto sua versatilidade, potência e velocidade de processamento aumentaram na mesma proporção; • Será dado aqui maior ênfase em microcomputadores, porém estes conceitos se aplicam a qualquer tipo de sistema computadorizado; • O primeiro microprocessador foi fabricado pela Intel no início dos anos 70 e trabalhava com 4 bits (Intel 4004); • Nessa mesma época foram lançados os processadores de 8 bits: 8008, 8080, 8085, 6800, 6502, Z80, etc; • As aplicações destes microprocessadores se dividiram em duas áreas: – Computadores pessoais – a arquitetura desses sistemas não sofreram mudanças substânciais deste seus primórdios; – Utilização em sistemas de controle embarcados – aplicação coberta pelos modernos mircrocontroladores. O que é um computador digital?
• É uma combinação de dispositivos digitais e circuitos que executam
uma seqüência de operações programadas com um mínimo de intervenção humana. • A seqüência de operações é denominada programa; • Um programa é um conjunto de instruções codificadas que está armazenada na memória interna do computador juntamente com todos os dados que o programa necessita; • Quando o computador recebe um comando para executar o programa, ele executa as instruções na ordem em que as mesmas estão armazenadas em sua memória até que o programa seja concluído; • O programa é executado em velocidades extremamente altas. Como um computador raciocina?
• Computadores não pensam!
• O programador de computadores elabora um programa com instruções e dados que especificam cada detalhe de tudo que deve ser feito, como fazer, e quando fazer; • O computador é simplesmente uma máquina de alta velocidade que pode manipular dados, resolver problemas, e tomar decisões, tudo sob o controle de um programa; • Se o programador cometer algum erro no programa ou inserir dados errôneos, o computador produzirá resultados errôneos. • Um ditado popular no campo da computação diz “entra lixo / saí lixo”; O agente secreto 89 • O agente secreto 89 está tentando descobrir o número da pista de aterrissagem onde um conhecido terrorista irá descer. Seu contato lhe disse que esta informação está localizada numa série de caixas postais. Para garantir que ninguém mais obtenha esta informação, ela foi espalhada em 10 caixas postais diferentes. Seu contato lhe deu 10 chaves com as seguintes instruções: 1. A informação em cada caixa postal está escrita em código; 2. Abra a caixa 1 primeiro e execute a instrução que está lá; 3. Continue com as demais caixas mantendo a seqüência a menos que seja instruído para não o fazer; 4. Uma das caixas contém informações que irá fazer qualquer um perder a direção exceto o Agente 89 O agente secreto 89 O agente secreto 89 • Analogia com sistemas computacionais: – Caixas postais são como memórias num computador, onde instruções e dados são armazenados; – As caixas postais de 1 a 6 contém instruções que devem ser executadas pelo agente secreto, e as caixas 8, 9 e 10 contém os dados requeridos pelas instruções; – Os números em cada caixa são como endereços de locações de memórias; – Há três classes diferentes de instruções nas caixas de 1 a 6: • As caixas 1, 2, 3, e 5 são instruções que pedem operações aritméticas; • A caixa 4 contém uma instrução de tomada de decisão chamada de salto condicional ou desvio condicional que depende do resultado das operações aritméticas anteriores; • A caixa 6 contém uma simples instrução de controle que não necessita de dados e não se refere a nenhum outro endereço. Esta instrução de retorno diz ao agente que o procedimento terminou (o programa foi concluído). – Cada instrução aritmética ou de salto condicional possui duas partes: uma operação e um endereço. Esses dados são geralmente chamados de operando, e seu endereço é chamado de endereço do operando. A instrução na caixa 5 é um caso especial no qual o endereço de operando não é especificado. Ao invés disso o próprio operando é fornecido. Organização básica de sistemas computadorizados • Todo computador contém cinco elementos ou unidades essenciais: – Unidade Lógica Aritmética (ULA); – Unidade de memória; – Unidade de controle; – Unidade de entrada; – Unidade de saída. Unidade Lógica Aritmética
• Área onde as operações lógicas e aritméticas são executadas sobre os
dados; • O tipo de operação a ser executada é determinada por sinais vindos da unidade de controle (seta 1); • Os dados que serão processados pela ULA podem vir tanto da unidade de memória (seta 2) quanto da unidade de entrada (seta 3); • Os resultados das operações executadas pela ULA podem ser transferidos tanto para a unidade de memória (seta 4) quanto para a unidade de saída (seta 5). Unidade de Memória
• A memória armazena grupos de dígitos binários (palavras) que podem
representar instruções (programa) que o computador deve executar e dados que serão trabalhados pelo programa; • A memória também serve como local de armazenamento de resultados intermediários e finais de operações aritméticas. • A operação da memória é controlada pela unidade de controle, que envia sinais para operações de leitura e/ou escrita. • Uma dada locação na memória é acessada pela unidade de controle que fornece o código de endereço adequado. • Informações vindas da ULA ou da unidade de entrada podem ser escritas na memória sob o controle da unidade de controle. • Informações podem ser lidas da memória e transmitidas para a ULA ou para a unidade de saída. Unidade de Entrada
• Consiste de todos os dispositivos utilizados para adquirir informações
e dados externos ao computador e os colocar na unidade de memória ou na ULA. • A unidade de controle determina para onde as informações na entradas devem ser enviadas. • A unidade de entrada é utilizada para carregar programas e dados para a unidade de memória na inicialização do computador. • Esta unidade também é utilizada para carregar dados na ULA a partir de dispositivos externos durante a execução do programa. • Dispositivos de entradas mais comuns são: teclados, chaves seletoras, modems, leitores de cartões magnéticos, unidades de disco, e conversores de sinais analógicos para digital (ADCs). Unidade de Saída
• Consiste de dispositivos utilizados para transferir dados e informações
do computador para o mundo externo. • O dispositivo de saída é selecionado pela unidade de controle e pode receber dados da memória ou da ULA; • Os dados são então colocados em uma forma apropriada para uso externo. • São exemplos comuns de dispositivos de saída: LEDs, luzes indicativas, impressoras, unidades de disco e fita, monitores de vídeo, e conversores de sinais digitais para analógicos (DACs). • Quando um computador executa um programa, em geral os resultados ou sinais de controle gerados devem ser apresentados ao mundo externo. Interfaces • Os dispositivos que se ligam as unidades de entrada e saída são chamados de periféricos pelo fato de serem externos ao restante do computador. • O aspecto mais importante dos periféricos envolve o interfaceamento. • O interfaceamento é definido especificamente como transmissão de informação digital entre o computador e seus periféricos de uma forma compatível e sincronizada. • Muitos dispositivos de entrada/saída não são diretamente compatíveis com o computador devido a diferenças em algumas características como velocidade de operação, formato de dados (ex. BCD, ASCII, binário), modo de transmissão de ddos (ex. serial, paralelo), e nível de sinal lógico. • Tais dispositivos de E/S precisam de circuitos de interface especial que os permitam comunicar com as partes de controle, memória e ULA de um computador. Unidade de Controle • Dirige a operação de todas as outras unidades através de sinais de temporização e controle. • Contém circuitos lógicos e de temporização que geram os sinais necessários para executar cada instrução em um programa. • A unidade de controle busca uma instrução na memória enviando um endereço e um comando de leitura para a unidade de memória. • A instrução (palavra) armazenada na memória é então transferida para a unidade de controle. • Esta instrução (código binário) é decodificada pelos circuitos lógicos da unidade de controle para determinar qual instrução está sendo chamada. • A unidade de controle usa esta informação para enviar sinais adequados para as demais unidades de forma a executar a operação especificada. Unidade de Controle • A seqüência de busca de uma instrução (código) e execução da operação indicada é repetida continuamente pela unidade de controle. • O ciclo só termina quando o computador é desligado ou a tecla RESET é ativada. • RESET sempre faz com que o computador busque sua primeira instrução do programa, geralmente no endereço 0000. • O ciclo de execução pode ser diferente dependendo do tipo de instrução. Unidade Central de Processamento (CPU)
• Compreende a unidade de controle e a ULA.
• Num microcomputador a CPU é o microprocessador. • A CPU também contém um conjunto de registradores que desempenham funções especiais. • Estes registradores podem armazenar dados por curtos intervalos de tempo dentro da CPU e minimizar o acesso a memória externa. Elementos básicos de um µC • Diferença entre microcomputador (µC) e microprocessador (µP); • Um microcomputador possui diversos elementos, inclusive um microprocessador. Elementos básicos de um µC • A unidade de memória mostra dispositivos RAM e ROM; – RAM usada para armazenar programas e dados, que poderão ser alterados durante a operação em curso. Também é utilizada para armazenar resultados intermediários e finais de operações executadas por um programa. – ROM armazena instruções e dados que não são alterados e não podem ser perdidos após um desligamento. Armazena o programa bootstrap que o µC executa quando é energizado, ou pode armazenar uma tabela de códigos ASCII necessários para decodificar dados que serão enviados a monitores ou impressoras. • As seções de entrada e saída contém os circuitos de interface necessários para permitir a comunicação dos periféricos com o restante do computador. O Microprocessador (MPU) • É o coração do microcomputador. Executa as seguintes funções: 1. Fornece sinais de temporização e controle para todos os elementos do µC; 2. Busca instruções e dados na memória; 3. Transfere dados para e da memória e dispositivos de E/S; 4. Decodifica instruções; 5. Executa as operações aritméticas e lógicas solicitadas pelas instruções; 6. Responde aos sinais de controle gerados pelas E/S tais como RESET e INTERRUPÇÂO. • Pode-se controlar tudo o que ocorre dentro do MPU através das instruções em programas que são colocadas na memória para que o MPU as execute. Isso é o que confere versatilidade e flexibilidada ao MPU mudanças de operação são alterações em programas. O Microprocessador (MPU) • Há três seções básicas em um MPU: – Seção de controle e temporização função principal é buscar e decodificar (interpretar) instruções da memória de programa, e gerar os sinais de controle necessários pelas outras seções do MPU de forma que a instrução seja executada. Gera também sinais de temporização e controle para dispositivos externos (Ex. R/W, clock); – Seção de registradores contém diversos registradores que desempenham funções especiais. O mais importante é o PC (program counter), que indica o endereço da instrução que será buscada na memória. Outros registradores armazenam instruções a serem decodificadas, dados operados pela ULA. Todo processador tem um registrador principal chamado acumulador ou registrador A. – ULA executa uma grande variedade de operações aritméticas e lógicas em dados Palavras em computadores • A menor unidade de informação em um computador é o bit; • A principal unidade de informação em um computador é a palavra; • O número de bits que compõe uma palavra é chamado de tamanho da palavra. • Os computadores são caracterizados pelo tamanho de sua palavra (ex. 8 bits, 16 bits, etc); • O tamanho da palavra também indica o tamanho do barramento de dados; • Microcontroladores possuem tipicamente palavras de 4, 8, ou 16 bits. • PCs trabalham com 64 bits. • Em geral, computadores com tamanho de palavras grandes podem executar programas mais rápido porque mais dados e mais instruções estão agrupadas em uma palavra. • Um grupo de 8 bits é denominado byte por razões históricas e porque o código ASCII utiliza este formato de dados. • Uma palavra armazenada na memória de um computador pode conter dois tipos de informação: instruções ou dados; Instruções • O formato usado em palavras contendo dados varia muito pouco entre diferentes tipos de computadores; • O mesmo raciocínio não se aplica a instruções; estas palavras contém informações necessárias para um computador executar sua várias operações; • Para a maioria dos computadores, as instruções são compostas de duas unidades básicas: operação (op code) a ser executada e endereço do operando; Segue exemplo de instrução do microprocessador 8051:
• Se forem usados 5 bits para instruções 25 = 32 instruções + 3 bits para
endereços 23 = 8 endereços. Neste caso a capacidade do microprocessador estará severamente limitada se o tamanho da instrução não for aumentado. Instruções • O principal ponto a ser entendido desta forma de instrução é que os primeiros 5 bits dizem ao micro (microprocessador) o que fazer. Os últimos 3 bits dizem ao micro onde buscar o dado. • Exemplo: instrução MOVE do 8051 Op code = 1 1 1 0 1 endereço do registrador = 0 1 1 O op code significa mova um byte de dado para A (o acumulador) a partir do registrador. Os últimos 3 bits especificam que o byte de dado deve ser movido a partir do registrador 3 (0112). Este código binário de instrução representa uma única operação. Ao invés de usar código binário pode-se usar código hexadecimal (EBH) • Esta instrução pode ser armazenada na memória do microcomputador juntamente com outras instruções de forma a constituir um programa. • Num determinado instante, o micro busca a instrução na memória e a decodifica. Instruções Multibyte • Computadores com palavras de instruções grandes podem trabalhar no modo mencionado anteriormente, entretanto, para micros de 8 bits deve-se trabalhar com outros formatos de instruções: um byte, dois byte, e três bytes como mostrado abaixo: Instruções Multibyte • Exemplos: 1. Instrução de um byte: limpar (zerar) o acumulador (CLR A); 2. Instrução de dois bytes: o primeiro byte contém o op code e o segundo byte (operando) especifica um valor que será usado na operação. Existem vários métodos de especificar este dado. Estes métodos são chamados de modos de endereçamento. Os dois modos de endereçamento mais utilizados são: • endereçamento direto o operando representa um endereço que direciona o computador para o local onde o dado está armazenado; • Endereçamento imediato inclui o valor do dado como parte da instrução. Neste modo o operando é o valor do dado ao invés de um endereço. 3. Instrução de três bytes: necessária quando o operando deve ser um número de 16 bits. Os bytes devem ser armazenados sucessivamente na memória. Um exemplo é uma instrução que faz o computador saltar de volta a primeira instrução e reiniciar o programa novamente (ver página seguinte). Instruções Multibyte Linguagem de Máquina • As instruções descritas anteriormente são chamadas de linguagem de máquina porque ela é composta de 1s e 0s, a única linguagem que a máquina (micro) entende. • Diversas outras linguagens podem ser utilizadas para programar um computador. Estas linguagens de alto nível são projetadas para facilitar a escrita de um programa. • Programas escritos em tais linguagens devem ser convertidos para a linguagem de máquina e inseridos na mémoria interna do computador antes que o computador possa as executar. Para isto são utilizados programas chamados de compiladores. • Cada instrução em linguagem de máquina, geralmente também é descrita por um mnemônico ou abreviação para facilitar sua interpretação ou memorização pelo programador. • O conjunto completo de mnemônicos de um micro é chamado de linguagem assembly ou linguagem de montagem. Programas que combinam tais instruções são chamados de assembler (montador). Linguagem de Máquina Linguagem de Máquina
• Exemplo de programa em linguagem de máquina:
– Requisitos: 1. Iniciar no endereço 0000H 2. Saltar para o endereço correto para iniciar o progrma; 3. Verifique se o valor no acumulador é 0; 4. Se A ≠ 0, mostre o conteúdo do acumulador colocando-o na porta 1; 5. Espere 1 segundo; 6. Decremente o valor no acumulador de 1; 7. Repita a partir do passo 4 até que o valor no acumulador seja 0. Linguagem de Máquina Linguagem de Máquina • Uma aplicação típica de microprocessador embarcado é a de um sistema de controle de um forno de micro-ondas. • O programa anterior é uma parte do programa do forno. O número no acumulador representa o número em segundos que o forno deve assar um alimento. Execução do programa • A seguir é mostrado como o computador executa um programa. • O computador sempre está em um de seus dois ciclos de operação: – Ciclo de busca (fetch) busca a instrução (op code e endereço do operando) na mémoria; – Ciclo de execução a unidade de controle executa a operação indicada pelo op code. • A operação inicia quando o operador aciona o pino RESET ao ligar a alimentação. O contador de programa (PC) inicia a contagem em 0000. 1. A unidade de controle busca o primeiro byte no endereço 0000 como determinado pelo PC. O valor do byte é 02H, que é o op code da primeira instrução. Os circuitos dentro da unidade de controle determinam que este op code pede um salto (LJMP), e os dois próximos bytes indicam para onde saltar. A unidade de controle busca então a metade alta do destino e depois a metade baixa do endereço de destino Execução do programa 2. Para executar a instrução, os 16 bits do endereço de destino (0100H) é carregado no contador de programa (PC). A próxima instrução que será buscada será no endereço 0100H. 3. O op code 60H é buscado em 0100H e é decodificado como um salto condicional (JZ). A unidade de controle também sabe que esta é uma instrução de dois bytes, e ela busca o operando (08H). Isto diz a unidade de controle quão longe saltar se a condição for verdadeira. O salto irá ocorrer apenas se o acumulador for 0. A seção de controle examina o acumulador, e se Acc = 0, ela avança o contador de programa para o endereço 010AH. Se Acc ≠ 0, a unidade de controle irá buscar o próximo op code que ela achar na memória, neste caso a partir de 0102H. 4. A execução da instrução JZ simplesmente avança o PC para 0102H uma vez que Acc ≠ 0. Execução do programa 5. O op code é buscado no endereço 0102H. A instrução F5 diz a seção de controle para transferir o valor no acumulador. Para saber para onde transferir o valor, o próximo byte deve ser buscado na memória. Neste caso o endereço 90H significa que o valor deve ser escrito na porta #1. 6. A execução desta instrução copia o conteúdo do acumulador para o registrador da porta de saída. Este valor é escrito na porta de saída, que está conectada aos circuitos para mostrar o número para o usuário ver. 7. O PC é incrementado para 0104H, e o próximo op code é buscado. Esta instrução (12H) é uma chamada subrotina. Isto significa que o micro deixa esta parte do programa e vai executar algumas instruções que estão armazenadas em algum lugar da memória. Os próximos dois bytes (28H, 55H) dizem a CPU onde a subrotina está localizada. Execução do programa 8. Para executar a instrução de chamada (call), a CPU deve lembrar o lugar do programa ao qual ela deverá retornar após a execução da subrotina (endereço 0107H), e então carregar o PC com o valor 2855H. Nesse endereço ela encontrará a primeira instrução do programa que gera um atraso de 1 segundo. A última instrução na subrotina deve ser a instrução RET, a qual retorno o PC para o endereço 0107H um segundo mais tarde. 9. O op code no endereço 0107H é buscado e decodificado como um comando para decrementar o acumulador. É uma instrução de um byte, de forma que não é necessário um operando. A execução ocorre dentro da CPU, e o número armazenado em A deve ser decrementado de 1. O PC automaticamente avança para a próxima instrução no endereço O108H. 10. No endereço 0108H o op code da próxima instrução (70H) é buscado. Ela reconhece o op code como um JNZ (saltar se não for zero), e ela sabe que deve tomar uma decisão baseado no número contido no acumulador. Execução do programa 11. Se o valor no acumulador atingir 00H, então o alimento está pronto, e a CPU deve continuar com o restante do programa buscando uma instrução em 010AH. 12. Se o valor em A continuar maior do que 00H, o loop deve ser repetido e o contador de segundos decrementado até atingir 00H. Isto significa que ele deve saltar para trás para o endereço 0102H. De forma a saber quanto deve saltar para trás, ela deve buscar o operando que está armazenado no endereço 0109H. Este valor é combinado o conteúdo corrente no PC para modificar o PC para manter o endereço 0102H.
• Apesar do computador executar uma instrução por vez, ele o faz de
modo extremamente rápido. Cada instrução leva de 1 a 2 microsegundos num microcontrolador típico. Estrutura típica de um µC Estrutura típica de um µC • Sistema de barramentos transporta todas as informações e sinais envolvidos na operação do sistema. Quando a CPU está enviando informação para outro elemento do computador ela está executando uma operação de escrita. Quando está recebendo a operação é de leitura. • Tipos de barramentos: – Barramento de endereços barramento unidirecional (informação flui em apenas uma direção da CPU para as memórios os elementos de E/S). – Barramento de dados barramento bidirecional (depende se a CPU está executando uma operação de escrita ou de leitura). – Barramento de controle conjunto de sinais que é usado para sincronizar atividades de elementos separados do µC. Alguns desses sinais como ALE, PSEN, RD, e WR, são enviados pela CPU para outros elementos para dizer a eles que tipo de operação está em progresso. Estrutura típica de um µC • Portas de E/S – Durante a execução de um programa, a CPU está constantemente lendo ou escrevendo na memória. Cada elemento de E/S é normalmente conectado ao sistema de barramento do µC através de algum tipo de circuito de interface. A função da interface é fazer o µC compatível com o dispositivo de forma que os dados possam circular livremente. – Embora os dispositivos de E/S sejam tratados como locações de memória, eles diferem significativamente das memórias. Uma grande diferença é que os dispositivos de E/S tem a capacidade de interromper a CPU enquanto ela está executando um programa. A CPU irá suspender a execução do programa e executará uma operação apropriada com o dispositivo de E/S que a interrompeu. RAM e ROM normalmente não tem está capacidade. • Temporização – Em geral um µC contém um circuito oscilador no próprio chip que gera os sinais de clock básicos para operação do sistema. Estrutura típica de um µC
– Em geral um cristal externo é ligado ao chip para gerar uma freqüência de
clock estável. – Se está freqüência é conhecida pode-se prever a quantidade de tempo que cada instrução leva para ser executada. – Todas as operações do sistema, tais como a busca e execução de instruções, leitura de dados, e escrita de dados, cabem exatamente em períodos de tempo chamados de ciclos de máquina. – Se cada ciclo que máquina for composto de 12 ciclos de clock, então uma máquina trabalhando a 12MHz terá um ciclo de máquina de 1 microsegundo. Em geral uma máquina requer de 1 a 2 ciclos de máquina para executar a maioria de suas instruções. Estrutura típica de um µC – Apesar de que a execução da maioria das instruções envolvem operações internas a CPU, tais como movimentação de dados entre registradores, soma de números, dentre outras, há três tipos distintos de ciclos de barramento:
– Como as luzes de um semáforo numa interseção de ruas comandam quem
tem o direito de passar, pode-se observar os sinais ALE, PSEN, RD e WR e saber qual tipo de ciclo de barramento está sendo executado. – O diagrama de temporização a seguir mostra duas instruções sendo buscadas e executadas Estrutura típica de um µC