Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução - Microprocessadores e Microcontroladores A diferença entre o microprocessador e o microcontrolador, basicamente se deve ao poder de processamento do primeiro ser muito maior e de geralmente ser implementado para propósito geral, enquanto o segundo tem poder de processamento mais limitado e é geralmente implementado para um propósito dedicado em um sistema. Apesar de terem a capacidadde de processamento menor, os microcontroladores têm maior independência em relação a microprocessadores no que se refere à necessidade de periféricos para funcionar. Isto porque microcontroladores já possem periféricos embutidos: memória tanto para armazenar as instruções do programa quanto os dados, podendo também possuir timers internos, conversores analógico-digitais, módulos de comunicação serial, USB, I2C, etc. Ou seja, enquanto na fabricação de um microprocessador a inexistência de periféricos embutidos é compensada pelo maior poder de processamento ( decorrente de uma enorme complexidade interna ) no caso de um microcontrolador o menor poder de processamento ( decorrente de uma menor complexidade ) é compensado pela presença de periféricos embutidos na pastilha e por um custo muito menor. A maior complexidade interna do microprocessador faz com que seu custo seja muito mais elevado que o de um microcontrolador. Além de este possuir periféricos que realizam a interface com os atuadores dos dispositivos já embutidos em sua pastilha. Portanto para aplicações que requerem um poder de processamento menor compensa mais utilizar um microcontrolador, já que este possui periféricos e apresenta um custo mais baixo. Utilizar um microprocessador numa aplicação relativamente simples como controlar a velocidade de um motor, ou um simples sistema de temporização de uma máquina seria pagar um alto preço para utilizar apenas parte de seu poder computacional; além de se fazer necessário o uso de componentes adicionais para interfacear a atuação e o sensoreamento. Se é melhor fazer uso de um microprocessador ou de um microcontrolador, é uma escolha que depende então da aplicação: Para um projeto cujo objetivo é um controle de um ou mais dispositivos, sendo que não é exigida uma quantidade monumental de cálculos complexos computados numa velocidade crítica, então o uso de um microcontrolador naturalmente será a escolha mais adequada. Já para um sistema computacional de propósito geral, em que se pode exigir tanto a execução de um simples editor de texto quanto cálculos complexos de ponto- flutuante em tempo crítico como em um jogo 3-D é natural que o uso de microprocessadores será necessário. Assim, poderíamos concluir que o uso de microcontroladores se faz necessário em aplicações dedicadas, i.e. de propósito específico para a aplicação em questão, e que requerem baixo poder de processamento. Um microprocessador, por outro lado, tende a ser utilizado em aplicações de propósito geral para poder suportar tanto aplicações de processamento mais "leve" quanto mais "pesadas" ( como é o caso de computadores ); apesar de também poder ser utilizado em aplicações de propósito específico. Como exemplo de um microprocessador sendo utilizado num dispositivo dedicado podemos imaginar um sistema de aquisição e processamento de imagens: uma câmera digital acionada automaticamente por um radar de trânsito que deve fotografar o veículo e, a partir da imagem armazenada, executar um software que identifica a placa. A alta demanda de cálculos computacionais realizados justifica o uso de um processador mais complexo, e portanto, mais caro. Um Breve Histórico Os microcontroladores surgiram dez anos após os primeiros microprocessadores ( o 4004 foi o primeiro microprocessador, e foi lançado em 1971 ), tendo sido uma adaptação da indústria eletrônica digital para atender as necessidades do mercado. Os microprocessadores não possuíam requisitos básicos para a operação do sistema: os periféricos. Por exemplo, para controlar um elevador era necessário um microprocessador, um chip de memória ROM para armazenar o programa, um outro chip de memória RAM para armazenar os dados processados e um outro chip para realizar a interface de comunicação que poderia ser um protocolo serial. Os primeiros microcontroladores amplamente disseminados, foram os da família 8051. Muito utilizados nos anos 1980 e 1990. É um microcontrolador CISC ( Complex Instruction Set Computer - Conjunto Complexo de Instruções ), e arquitetura Von Neumann. Com memória RAM interna, 5 fontes de interrupção vetoradas. Já os microcontroladores da família PIC, que são o foco dessa disciplina, passaram a ser mais utilizados nos anos 2000. Possuem tecnologia RISC ( Reduced Instruction Set Computer - Conjunto Reduzido de Instruções ), Pipeline e arquitetura Harvard. O primeiro PIC a ficar amplamente conhecido no Brasil foi o PIC16F84, que possuía apenas um vetor de interrupção ( como todos os microcontroladores da família PIC16 ), no endereço 0x004 da memória de programa. Os microcontroladores da família PIC18 possuem dois vetores de interrupção. De alta e baixa prioridade. Localizados respectivamente nos endereços 0x008 e 0x018. Diferenças entre Aplicações envolvendo Microprocessadores e Microcontroladores Naturalmente é muito mais conveniente possuir todos esses elementos num único circuito integrado: um microcontrolador; que possui todas as características de um "computador de um único chip" já que possui memória para armazenar dados e programas além de periféricos para comunicação, podendo até possuir uma interface analógica. Apesar de os microcontroladores possuírem mais recursos do que os microprocessadores ( memória RAM, memória não volátil, periféricos ), eles possuem um custo bem mais baixo. Porque os microcontroladores são utilizados em sistemas embarcados como um chip dedicado para um propósito específico; portanto o poder computacional é mais baixo: apenas o suficiente para a função desejada. Os microprocessadores, por outro lado, servem para propósitos gerais ou que requerem um poder computacional mais alto. O chip que fornece a temporização para um forno microondas, por exemplo, possui baixo poder computacional, baixo custo e propósito específico. Já o chip do microprocessador do seu computador possui propósito geral, rodando programas com baixa ou alta demanda computacional ( como jogos ou aplicativos gráficos ). Todo microprocessador possui uma memória interna na forma de registradores, mas os microcontroladores também poder possuir memória para programa e dados. Ambos possuem uma Unidade Lógica e Aritmética ( ULA ), responsável pela implementação das operações e uma unidade de controle responsável pela decodificação e execução das instruções Microcontroladores em geral possuem poder de processamento muito mais baixo que microprocessadores. Enquanto esses trabalham com frequências de clock da ordem dos GigaHertz, microcontroladores trabalham com frequências da ordem dos Megahertz ou até mesmo dos kilohertz. Não faz sentido utilizar um microprocessador de última geração com clock de 4 GHz, e memória cache, se deseja-se controlar o acionamento de um portão eletrônico, por exemplo. O objetivo em sistemas embarcados, é projetar um sistema de custo mínimo ( em termos materiais e de energia ) para atender aos requisitos de uma tarefa desejada. Existem sistemas embarcados onde microprocessadores se fazem necessários, como por exemplo, os telefones celulares. Entretanto, os microprocessadores utilizados em tais aparelhos possuem baixo poder computacional e baixo consumo de energia.Tais microprocessadores geralmente possuem arquitetura ARM ( Advanced RISC Machine ). Microprocessadores Também conhecido como UCP ( Unidade Central de Processamento ) ou CPU ( Central Process Unit ) na sigla em inglês, processador é o cérebro do computador. Sua função é executar os programas armazenados na memória principal, buscando cada uma das instruções, examinando-as e executando-as uma após a outra. É constituído de diversas partes: a unidade de controle é responsável por buscar as instruções na memória principal e por determinar o tipo de cada instrução, isto é, decodificar as instruções. A unidade de lógica aritmética ( ULA ) realiza um conjunto de operações necessárias à execução das instruções. O processador possui uma pequena memória de alta velocidade,composta pelos registradores da CPU, utilizada para armazenar resultados temporários e informações de controle. Essa memória é formada por um conjunto de registradores, cada qual com determinado tamanho e função. O registrador mais importante é o Program Counter, ( PC ) cujo valor aponta para a próxima instrução a ser buscada na memória para ser executada. Outros registradores importantes são o Registrador de Instruções ( IR - Instruction Register ) que armazena a instrução que está sendo executada, o Registrador de Status, que armazena os bits ( flags ) referentes ao resultado da última operação executada ( se o resultado foi zero ou negativo, por exemplo ), e o Acumulador, utilizado pelos programas para armazenar os resultados das operações processadas. Figura 1- Estrutura de um Processador Quando diz-se que um processador é de 8, 16, 32 ou 64 bits, por exemplo, geralmente é uma referência ao número de bits armazenados nos registradores da CPU. Uma CPU de 64 bits, por exemplo, possui um registrador acumulador de 64 bits, conectado a um barramento também de 64 bits, sendo capaz de manipular dados com esse número de bits durante uma única operação. Para ser executada pelo processador, uma instrução precisa ser dividida em uma série de passos, denominada ciclo da busca-decodificação-execução, a saber: - busca da próxima instrução na memória e armazenamento no registrador de instruções, Programas de computador são constituídos por uma sequência de instruções que se encontram armazenados na memória do computador. Portanto, o processador deve ser capaz de mover ( buscar ) instrução por instrução antes de executá-las. Cada instrução buscada é armazenada no registrador de instruções ( Instruction Register - IR ) para ser decodificada, isto é, para o processador gerar os sinais de controle que implementam a execução da operação da forma correta. - atualização do valor do program counter, de modo a apontar para a instrução seguinte,para ser capaz de buscar instruções, o processador deve ser capaz de conhecer a localização das instruções, ou seja, do endereço de cada instrução na memória. O endereço da próxima instrução a ser buscada é armazenado em um registrador especial chamado PC ( Program Counter ou Contador de Programa ). Esse registrador é na realidade um ponteiro, pois contém o endereço da próxima instrução a ser buscada na memória. - determinação do tipo de instrução que está armazenada no registrador de instruções,conforme vimos, as instruções devem estar armazenadas no registrador de instruções ( IR ), para serem decodificadas. Na verdade, cada instrução é composta por dois campos de bits: o Opcode ( ou código da operação ) e o campo dos operandos. O primeiro contém o código binário que representa qual operação a instrução executa ( por exemplo, uma operação aritmética, lógica, de controle ou movimento de dados ). O segundo, representa a informação de entrada que será tratada. - Portanto, o Opcode é decodificado por um decodificador da Unidade de Controle do processador para que a instrução correta seja executada. - se a instrução precisar de uma palavra armazenada na memória, nesse passo deve ser determinado onde essa palavra está armazenada,O operando pode representar tanto o dado a ser tratado ( número ou caractere no formato binário ), quanto um endereço de memória onde o dado a ser tratado se encontra. No segundo caso, faz-se necessária uma segunda busca à memória. A diferença sobre a natureza do operando, encontra-se codificada no opcode da instrução. - busca da palavra, se necessário, e armazenamento em um dos registradores se o operando é um endereço, o dado é buscado para ser armazenado em um registrador da CPU. - execução da instrução,com todos os dados armazenados em registradores da CPU e o opcode da instrução já decodificado, a instrução está no ponto de ser executada, pois todas as informações necessárias tornara-se disponíveis ou já foram interpretadas pelo processador. Desse modo, a Unidade de Controle da CPU já pode coordenar os circuitos digitais da Unidade Lógica e Aritmética ( ULA ) para os dados serem processados pelos circuitos selecionados e os resultados serem obtidos. - armazenamento do resultado,os resultados obtidos, são os dados de saída da instrução executada. Resultados de operações aritméticas e lógicas tendem a ser armazenados em registradores da CPU ( geralmente no registrador acumulador ). Se deseja-se que tais dados resultantes sejam armazenados na memória principal, faz-se necessária a execução de outra instrução para movimentar o dado de um registrador da CPU para a memória. - retorno ao primeiro passo para iniciar a execução da próxima instrução. Durante a execução, o PC é incrementado ( isto é, seu valor aumenta ), de tal modo que ele aponta para a próxima instrução do programa. Geralmente a próxima instrução localiza-se no endereço seguinte ao da instrução anterior. Entretanto, no caso de nstruções de desvio, como saltos ( JUMPs, GOTOs ) condicionais e incondicionais chamadas a sub-rotinas ( CALL ) ou retorno de sub-rotina ( RETURN ), o endereço da instrução seguinte não é o seguinte ao da última instrução executada. Essas instruções alteram o valor do registrador PC, de modo que os programas não precisam seguir uma sequência rígida de processamento, mas podem realizar decisões condicionadas aos dados de entrada.
Compartilhar