Microcontroladores

Microcontroladores

(Parte 1 de 4)

Microcontroladores

1. Introdução

Atualmente um grande número de microcontroladores, integrados em diversos equipamentos, exercem um papel importante no dia a dia das pessoas. Despertar ao som de um CD Player programável, tomar café da manhã preparado por um microondas digital, e ir ao trabalho de carro, cuja injeção de combustível é microcontrolada, são apenas alguns exemplos.

O mercado de microcontroladores apresenta-se em franca expansão, ampliando seu alcance principalmente em aplicações residenciais, industriais, automotivas e de telecomunicações. Segundo dados da National Semiconductor (1997), uma residência típica americana possui 35 produtos baseados em microcontrolador. Estima-se que, em 2010, em média uma pessoa interagirá com 250 dispositivos com microcontroladores diariamente.

Em um passado recente, o alto custo dos dispositivos eletrônicos limitou o uso dos microcontroladores apenas aos produtos domésticos considerados de alta tecnologia (televisão, vídeo e som). Porém, com a constante queda nos preços dos circuitos integrados, os microcontroladores passaram a ser utilizados em produtos menos sofisticados do ponto de vista da tecnologia, como máquinas de lavar, microondas, fogões e refrigeradores. Assim, a introdução do microcontrolador nestes produtos cria uma diferenciação e permite a inclusão de melhorias de segurança e de funcionalidade. Alguns mercados chegaram ao ponto de tornar obrigatório o uso de microcontroladores em determinados tipos de equipamentos, impondo um pré-requisito tecnológico.

Muitos produtos que temos disponíveis hoje em dia, simplesmente não existiriam, ou não teriam as mesmas funcionalidades sem um microcontrolador. É o caso, por exemplo, de vários instrumentos biomédicos, instrumentos de navegação por satélites, detetores de radar, equipamentos de áudio e vídeo, eletrodomésticos, entre outros.

Entretanto, o alcance dos microcontroladores vai além de oferecer algumas facilidades. Uma aplicação crucial, onde os microcontroladores são utilizados, é na redução de consumo de recursos naturais. Existem sistemas de aquecimento modernos que captam a luz solar e, de acordo com a demanda dos usuários, controlam a temperatura de forma a minimizar perdas. Um outro exemplo, de maior impacto, é o uso

1Prof. Gustavo Weber Denardin de microcontroladores na redução do consumo de energia em motores elétricos, que são responsáveis pelo consumo de, aproximadamente, 50% de toda eletricidade produzida no planeta. Portanto, o alcance dessa tecnologia tem influência muito mais importante em nossas vidas, do que se possa imaginar.

O universo de aplicações dos microcontroladores, como já mencionado, está em grande expansão, sendo que a maior parcela dessas aplicações é em sistemas embarcados. A expressão “sistema embarcado” (do inglês embedded system) se refere ao fato do microcontrolador ser inserido nas aplicações (produtos) e usado de forma exclusiva por elas. Como a complexidade desses sistemas cresce vertiginosamente, o software tem sido fundamental para oferecer as respostas às necessidades desse mercado. Tanto é, que o software para microcontroladores representa uma fatia considerável do mercado de software mundial. Segundo Edward Yourdon (consultor na área de computação, pioneiro nas metodologias de engenharia do software e programação estruturada) a proliferação dos sistemas embarcados, juntamente com o advento da Microsoft, são os responsáveis pela retomada do crescimento da indústria de software nos Estados Unidos da América.

2. Definição de Microcontrolador

Um microcontrolador é um sistema computacional completo, no qual estão incluídos uma CPU (Central Processor Unit), memória de dados e programa, um sistema de clock, portas de I/O (Input/Output), além de outros possíveis periféricos, tais como, módulos de temporização e conversores A/D entre outros, integrados em um mesmo componente. As partes integrantes de qualquer computador, e que também estão presentes, em menor escala, nos microcontroladores são: ●Unidade Central de Processamento (CPU)

●Sistema de clock para dar seqüência às atividades da CPU

●Memória para armazenamento de instruções e para manipulação de dados

●Entradas para interiorizar na CPU informações do mundo externo

●Saídas para exteriorizar informações processadas pela CPU para o mundo externo

●Programa (firmware) para definir um objetivo ao sistema

2Prof. Gustavo Weber Denardin

2.1 Unidade Central de Processamento (CPU)

A unidade central de processamento é composta por uma unidade lógica aritmética

(ULA), por uma unidade de controle e por unidades de memória especiais conhecidas por registradores. Para que a CPU possa realizar tarefas é necessário que se agregue outros componentes, como unidades de memória, unidades de entrada e unidades de saída. A figura a seguir apresenta um diagrama de blocos com uma possível interface entre a CPU e outros dispositivos.

A unidade de memória permite armazenar grupos de dígitos binários que podem representar instruções que o processador irá executar ou dados que serão manipulados pelo processador. A unidade de entrada consiste em todos os dispositivos utilizados para obter informações e dados externos ao processador. A unidade de saída consiste em dispositivos capazes de transferir dados e informações do processador para o exterior.

A ULA é a área de uma CPU na qual as operações lógicas e aritméticas são realizadas sobre os dados. O tipo de operação realizada é determinada pelos sinais da unidade de controle. Os dados a serem operados pela ULA podem ser oriundos de uma memória ou de uma unidade de entrada. Os resultados das operações realizadas na ULA podem ser transferidos tanto para uma memória de dados como para uma unidade de saída.

3Prof. Gustavo Weber Denardin

A função da unidade de controle é comandar as operações da ULA e de todas as outras unidades conectadas a CPU, fornecendo sinais de controle e temporização. De certa maneira, a unidade de controle é como um maestro que é responsável por manter cada um dos membros da orquestra em sincronismo. Essa unidade contém circuitos lógicos e de temporização que geram os sinais apropriados necessários para executar cada instrução de 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 palavra da instrução armazenada na posição de memória é transferida para um registrador conhecido por registrador de instruções (RI) da unidade de controle. Essa palavra de instrução, que está de alguma forma de código binário, é então decodificada pelos circuitos lógicos na unidade de controle para determinar a instrução que está sendo invocada. A unidade de controle usa essa informação para enviar os sinais apropriados para as unidades restantes a fim de executar a operação específica.

Essa seqüência de busca de um código de instrução e de execução da operação indicada é repetida indefinidamente pela unidade de controle. Essa seqüência repetitiva de busca/execução continua até que a CPU seja desligada ou até que o RESET seja ativado. O RESET sempre faz a CPU buscar sua primeira instrução no programa.

Uma CPU, também conhecida por processador, repete indefinidamente as mesmas operações básicas de busca e execução. Naturalmente, os diversos ciclos de execução serão diferentes para cada tipo de instrução à medida que a unidade de controle envia sinais diferentes para as outras unidades de execução de uma instrução em particular.

Um registrador é um tipo de memória de pequena capacidade porém muito rápida, contida na CPU, utilizado no armazenamento temporário de dados durante o processamento. Os registradores estão no topo da hierarquia de memória, sendo desta forma o meio mais rápido e de maior custo para armazenar um dado.

Cada registrador de um processador possui uma função especial. Um dos mais importantes é o contador de programa (program counter – PC), que armazena os endereços dos códigos das instruções à medida que são buscadas da memória. Outros registradores são utilizados para realizar funções como: armazenamento de códigos de instrução (RI), manutenção dos dados operados pela ULA (acumulador), armazenamento de endereços de dados a serem lidos na memória (ponteiro de dados), além de outras funções de armazenamento e contagem. Todos os processadores possuem um registrador em especial muito utilizado chamado de acumulador ou registrador A. Ele

4Prof. Gustavo Weber Denardin armazena um operando para quaisquer instruções, lógica ou matemática. O resultado da operação é armazenado no acumulador após a instrução ser executada.

Para que exista comunicação entre as unidades que formam um processador devemos definir uma forma de conexão entre estas unidades. Em um processador tradicional com arquitetura Von Neuman este meio é o barramento de dados. A largura do barramento de dados em bits é o que determina o número de bits para um dado processador. A figura a seguir apresenta a interface dos principais dispositivos que compõem um sistema microprocessado através de um barramento de dados.

A CPU é o centro de todo sistema computacional, e não é diferente quando se trata de microcontroladores. O trabalho da CPU é executar rigorosamente as instruções de um programa, na seqüência programada, para uma aplicação específica. Um programa computacional (software) instrui a CPU a ler informações de entradas, ler e escrever informações na memória de dados, e escrever informações nas saídas. O diagrama de blocos simplificado da CPU presente nos microcontroladores da família HC08, também denominado de CPU08, é apresentado na figura a seguir. Esta arquitetura de processador será utilizada como modelo neste documento.

5Prof. Gustavo Weber Denardin

As principais funções de cada um dos componentes da CPU08 serão apresentadas a seguir.

Unidade Lógica/Aritmética (ULA): A ULA é utilizada para realizar operações lógicas e aritméticas definidas no conjunto de instruções da CPU. Vários circuitos implementam as operações aritméticas binárias decodificas pelas instruções e fornecem dados para a execução da operação na ULA. A maioria das operações aritméticas binárias são baseadas em algoritmos de adição e subtração (adição com o valor negativo). A multiplicação é realizada através de uma série de adições e deslocamentos com a ULA sob controle lógico da CPU.

Controle da CPU: O circuito de controle da CPU implementa o sequeciamento de elementos lógicos necessários para a ULA realizar as operações requisitadas durante a execução do programa. O elemento central da seção de controle da CPU é o decodificador de instruções. Cada opcode (código de instrução) é decodificado para determinar quantos operandos são necessários e qual seqüência de passos será necessária para completar a instrução em curso. Quando uma instrução é executada completamente, o próximo opcode é lido e decodificado.

6Prof. Gustavo Weber Denardin

Registradores da CPU: A CPU08 contém 5 registradores como apresentado na figura anterior. Os registradores da CPU são memórias especiais que não fazem parte do mapa de memória. O conjunto de registradores da CPU é freqüentemente chamado de modelo de programação.

O acumulador, também chamado de registrador A, é freqüentemente utilizado para armazenar um dos operandos ou o resultado de operações.

O registrador H:X é um registrador de 16 bits de índice que possibilita ao usuário endereçar indiretamente o espaço de memória de 64Kbytes. O byte mais significativo do registrador de índice é denominado H, e o byte menos significativo denominado X. Sua principal função é servir de apontador para uma área na memória onde a CPU irá carregar (ler) ou armazenar (escrever) informação. Quando não estiver sendo utilizado para apontar um endereço na memória, ele pode ser utilizado como registrador genérico.

O registrador Program Counter (PC) é usado pela CPU para controlar e conduzir ordenadamente a busca do endereço da próxima instrução a ser executada. Quando a CPU é energizada ou passa por um processo de reset, o PC é carregado com o conteúdo de um par de endereços específicos denominados vetor de reset (reset vector). O vetor de reset contém o endereço da primeira instrução a ser executada pela CPU. Assim que as instruções são executadas, uma lógica interna a CPU incrementa o PC, de tal forma que ele sempre aponte para o próximo pedaço de informação que a CPU vai precisar. O número de bits do PC coincide exatamente com o número de linhas do barramento de endereços, que por sua vez determina o espaço total disponível de memória que pode ser acessada pela CPU.

7Prof. Gustavo Weber Denardin

O registrador Condition Code (CCR) é um registrador de 8 bits que armazena os bits de estado (flags) que refletem o resultado de algumas operações da CPU. A instruções de desvio usam estes bits de estado para tomar suas decisões.

A descrição dos bits do registrador de condição é apresentada abaixo:

V (Bit de Overflow) - A CPU leva o bit de overflow para nível lógico alto quando houver estouro no resultado de uma operação em complemento de 2. O bit V é utilizado pelas instruções de desvios condicionais BGT, BGE, BLE, e BLT.

H (Bit de Half-carry) - A CPU leva o bit de half-carry para nível lógico alto quando ocorrer estouro entre os bits 3 e 4 do acumulador durante as operações ADD e ADC. O bit H é importante nas operações aritméticas codificadas em binário (BCD). A instrução DAA utiliza o estado dos bits H e C para determinar o fator de correção apropriado.

I (Máscara de Interrupções) - Quando o bit I está em nível lógico alto, todas as interrupções são mascaradas (desabilitadas). As interrupções são habitadas quando o bit I é levado a nível lógico baixo. Quando ocorre uma interrupção, o bit que mascara as interrupções é automaticamente levado a nível lógico alto. Depois que os registradores da CPU são armazenados na pilha este bit volta ao nível lógico baixo. Se uma interrupção ocorrer enquanto o bit I estiver setado, seu estado será guardado. As interrupções são atendidas, em ordem de prioridade, assim que o bit I for a nível lógico 0. A instrução retorno da interrupção (RTI) retorna os registradores da CPU da pilha, e restaura o bit I no seu estado de nível lógico 0. Após qualquer reset, o bit I é colocado em nível lógico alto e só pode ser limpo por uma instrução de software (CLI).

N (Bit Negativo) - A CPU coloca o bit N em nível lógico alto quando uma operação aritmética, lógica ou de manipulação de dados produzir um resultado negativo. Corresponde ao 8o bit do registrador que contém o resultado.

Z (Bit Zero) - A CPU leva o bit Z para nível lógico alto quando uma operação aritmética, lógica ou de manipulação de dados produzir um resultado igual a 0.

C (Bit Carry/Borrow) - A CPU coloca o bit C em nível lógico alto quando uma operação de adição produzir um valor superior a 8 bits ou quando uma subtração

8Prof. Gustavo Weber Denardin necessitar um empréstimo. Algumas operações lógicas e as instruções de manipulação de dados também podem modificar o estado do bit C.

O Stack Pointer (SP) é um registrador cuja função é apontar para a próxima localização disponível (endereço livre) de uma pilha (lista de endereços contíguos). A pilha pode ser vista como um monte de cartas empilhadas, onde cada carta armazena um byte de informação. A qualquer hora, a CPU pode colocar uma carta nova no topo da pilha ou retirar uma carta do topo da pilha. As cartas que estão no meio da pilha não podem ser retiradas até que todas que estejam acima dela sejam removidas primeiro. A CPU acompanha o efeito da pilha através do valor armazenado no SP. O SP sempre aponta para a localização de memória disponível para se colocar a próxima carta (byte).

(Parte 1 de 4)

Comentários