Você está na página 1de 33

Microcontroladores e

Microprocessadores
Prof. Pedro Fernandes
Aula 2
Conceitos Básicos
Blocos Básicos de um Microcontrolador
• Um microcontrolador tem 3 blocos básico:
Barramento do Sistema

Entrada Saída

A Unidade de Entrada e
O CPU executa todas as CPU do Elemento de Memória Unidade E/S Saída (E/S) transfere
instruções e faz as microcontrolador
dados entre o
operações lógicas e microcomputador e
aritméticas com os dados. dispositivos externo via
O CPU contém todos os A memória armazena
todas as instruções e registradores. Essa
registradores, unidades de transferência envolve
controle e circuitos lógico- dados. Tipicamente é
separada em memória dados, sinais de controle e
aritméticos. status.
ROM e RAM.
Blocos Básicos de um Microcontrolador
• Barramentos:
• Existem três tipos de barramentos: os barramentos de endereço, de dados e de controle.
Barramento de Endereço
Barramento de Dados
Quando a memória ou os
Barramento de Controle
registradores de E/S
recebem dados do
No barramento de endereço, a
microprocessador, ocorre
transferência de dados é
a operação WRITE.
unidirecional, do CPU para a
Quando a memória ou a
E/S memória ou E/S.
unidade E/S envia dados
ao CPU, então há uma O tamanho do barramento de
operação READ. endereços determina o número de
endereços de memória disponíveis
para execução de instruções pelo
microprocessador.
Blocos Básicos de um Microcontrolador
• Barramentos:
• Existem três tipos de barramentos: os barramentos de endereço, de dados e de controle.
Barramento de Endereço
Barramento de Dados
Quando a memória ou os
Barramento de Controle
registradores de E/S
recebem dados do
O tamanho do barramento de
microprocessador, ocorre
endereços é especificado pelo
a operação WRITE.
número total de bits de endereço
Quando a memória ou a
E/S requerido pela CPU. Desse modo,
unidade E/S envia dados
o barramento de endereço
ao CPU, então há uma
determina o tamanho da memória
operação READ.
principal do microcontrolador.

Quando um CPU com barramento de endereços de 8 bits quer transferir informação para uma certa
parte da memória, ela usa um registrador interno para gerar um endereço de 8 bits o qual irá aparecer
no barramento de endereços. Esses 8 bits são então decodificados para determinar o local de
memória desejado.
Blocos Básicos de um Microcontrolador
• Barramentos:
• Existem três tipos de barramentos: os barramentos de endereço, de dados e de controle.
Barramento de Endereço
Barramento de Dados
Quando a memória ou os
Barramento de Controle
registradores de E/S
recebem dados do
O barramento de dados é
microprocessador, ocorre
bidirecional.
a operação WRITE.
Quando a memória ou a
E/S O barramento de controle consiste
unidade E/S envia dados
ao CPU, então há uma de um número de sinais usados
operação READ. para sincronizar a operação de
cada elemento do
microcomputador. O CPU manda
os sinais para o elemento em
questão para indicar o tipo de
operação a ser realizada.
Blocos Básicos de um Microcontrolador
• Sinais de clock:
• O sinais de clock estão presente no barramento de controle;
• Os sinais geram períodos os quais devem ser obedecidos durante a execução de operações;
• A maioria dos microcontroladores possuem circuitos internos geradores de sinais de clock;
• O número de ciclos por segundo (Hertz) é chamado de frequência de clock;
• Quanto maior a frequência de clock, maior a velocidade do microprocessador;
• A frequência dos microcontroladores típicos variam entre 1 𝑀𝐻𝑧 e 40 𝑀𝐻𝑧.
• A duração de um ciclo de clock é o inverso da frequência;
Arquiteturas de um Microcontrolador
• Um microcontrolador requer memória para armazenar programas e dados;
• Cada instrução de um programa vem acompanhada de um dado (imediato) ou de
um endereço de dado;
• Sendo assim, o microprocessador precisa de duas memórias: a memória de
programa, o qual contém instruções e dados imediatos; e memória de dados,
contendo os dados cujos endereços são especificados nas instruções;
• Desse modo, os dois principais tipos de arquitetura de um microprocessador se
diferem principalmente na forma como essas duas memórias são organizadas.
Arquiteturas de um Microcontrolador
• Arquitetura von Neumann (de Princeton):
• Um único sistema de memória é utilizado com mesmos barramentos de endereço e de dados
para acessar as memórias de programas e de dados;
• As memórias não podem ser executados simultaneamente, o que diminui sua velocidade;
• O microprocessador MSP utiliza essa arquitetura;
Barramento
de Endereço

Memória de
Programa e
Barramento
de Dados
de Dados
Arquiteturas de um Microcontrolador
• Arquitetura de Harvard:
• Utiliza unidades diferentes de memória de programa e de dados, assim como barramentos
diferentes de endereço e de dados;
• Processadores com esta arquitetura necessitam de quatro barramentos para as memórias de
programa e de dados;
• Instruções e dados podem ser acessados simultaneamente;
• O PIC18F utiliza arquitetura de Harvard.
Barramento Barramento
de Endereço de Endereço

Memória Memória
de de Dados
Barramento Barramento
Programa de Dados de Dados
Arquiteturas de um Microcontrolador
• Usando arquitetura de Harvard é possível obter memória de programa e de
dados de tamanhos diferentes, por exemplo, o PIC18F4550 possui memória de
programa com 15 bits para endereços e memória de dados com 14 bits;
• A maioria dos microcontroladores utilizam a arquitetura de Harvard, uma vez que
não é caro implementar os barramentos em um microchipe;
• Apesar da arquitetura von Neumann ter desempenho mais lento, processadores
em geral utilizam esta arquitetura. Um exemplo é o processador Pentium.
Unidade Central de Processamento (CPU)
• O CPU é o cérebro de um microcontrolador. A frequência de clock do CPU
determina a velocidade. O número de bits de dados e endereços de um CPU
resulta na capacidade de memória. As características de E/S e interfaces
dependem dos bits de controle emitidos pela CPU;
• A lógica de um CPU pode ser dividida em três áreas principais: registradores,
unidade de controle e unidade lógico-aritmética (ULA);
Unidade Central de Processamento (CPU)
• Registradores:
• Registrador de Instrução (RI): Responsável por guardar instruções. O conteúdo desse
registrador é sempre decodificado como uma instrução na CPU. Depois de obter um código
de instrução da memória, essa instrução é armazenada neste registrador. Só neste momento
a instrução é decodificada internamente na CPU que então faz a operação requerida;

• Registrador de Endereço de Memória (REM): Contém o endereço de dados. A CPU usa este
endereço como um indicador direto para a memória.

• Acumulador (A): Armazena o resultado da maioria das operações na ULA. Muitas vezes é
utilizado para receber ou mandar bytes para dispositivos externos.
Unidade Central de Processamento (CPU)
• Registradores:
• Contador de Programa (CP): Contém o endereço de uma instrução ou de um código de
operação. Normalmente possui o endereço da próxima instrução a ser executada. Este
registrador possui as seguintes características:
1. Quando a CPU é ligada (ou resetada), a primeira instrução a ser executada é carregada
no CP;
2. Para executar uma instrução, a CPU põe o conteúdo do CP no barramento de
endereços e depois lê o conteúdo desse endereço na memória. O conteúdo do CP é
incrementado automaticamente pela lógica interna do CPU;
3. O conteúdo do CP normalmente é sequencial, contudo pode ser manipulado nas
instruções.
Unidade Central de Processamento (CPU)
• Registradores:
• Dependendo dos registradores, um microcontrolador pode ser classificado como máquina
acumuladora ou baseada em registradores de propósito geral:

• Microcontrolador acumulador: os dados são mantidos por acumuladores, sendo que toda
operação lógica e aritmética usa esses registradores como fontes de dados. O resultado da
operação também é mantido em acumuladores;

• Microcontrolador baseado em registradores de propósito geral: os registradores que


mantêm os dados não são dedicados somente a essa operação, podendo também guardar
endereços de memória e instruções.
Unidade Central de Processamento (CPU)
• Microcontrolador acumulador
• Suponha um microcontrolador cuja memória de programa tenha 16 bits e a memória de
dados tenha 8 bits;
• Será descrito o processo para adicionar o conteúdo da memória de dados no endereço 0x20;
• Considere que 0𝑥20 = 0𝑥05;
• Os passos para esta etapa são:
1. Carregar no acumulador (A) um dado para a soma (0x20);
2. Adicionar o conteúdo de A ao conteúdo do endereço da memória de dados [0x20];
3. Guardar o resultado em [0x20] da memória de dados.
Unidade Central de Processamento (CPU)
• Microcontrolador acumulador
• Suponha um microcontrolador cuja memória de programa tenha 16 bits e a memória de
dados tenha 8 bits;
• Será descrito o processo para adicionar o conteúdo da memória de dados no endereço 0x20;
• Considere que 0𝑥20 = 0𝑥05;
• Os passos para esta etapa são:
1. Carregar no acumulador (A) um dado para a soma (0x20);
2. Adicionar o conteúdo de A ao conteúdo do endereço da memória de dados [0x20];
3. Guardar o resultado em [0x20] da memória de dados.
Unidade Central de Processamento (CPU)
Memória de
0E02 – Carrega 0x02 em A; Programa
A
2620 – Adicionar [A] com RI
[0x20] e guardar em [0x20] CP

Memória de
Dados
Unidade Central de Processamento (CPU)
Memória de
Programa
A
RI As instruções começam
Incremento de 2 CP no endereço 0x0200 da
memória de programa

Conteúdos em A e RI são
desconhecidos neste
momento.
Memória de
Dados

Incremento de 1
Unidade Central de Processamento (CPU)
Memória de
Programa
A O conteúdo no endereço
RI de memória de programa
CP apontado pelo CP é
guardado no RI.

O CP é incrementado
através da ULA para o
próximo endereço de
memória de programa,
com novas instruções.
Memória de
Dados
Unidade Central de Processamento (CPU)
Memória de
Programa
A A CPU realiza a instrução
0E02, e carrega A com
RI
0x02
CP
O RI é carregado então
com a instrução apontada
pelo PC (0x0202)

O CP é incrementado
novamente pela ULA.
Memória de
Dados
Unidade Central de Processamento (CPU)
Memória de
Programa

A
RI
CP

Finalmente, a CPU realiza


a instrução 2620 indicada
Memória de pela RI.
Dados
Unidade Central de Processamento (CPU)
• Outros Registradores:
• Registrador de Índice: Tipicamente usado com contador para modificação de endereço para
uma instrução (endereçamento indireto). Bastante útil para instruções que acessam vetores
ou matrizes de dados. O endereço contido em determinada instrução é somado ao conteúdo
deste registrador para encontrar o verdadeiro endereço desejado. No PIC18F, um acumulador
é utilizado com essa função;

• Registrador Indicador de Pilha: Uma pilha é um número de localizações da memória RAM


separados para serem lidos ou escritos. Um endereço dentro desta pilha é guardado no
Indicador de Pilha. A memória de pilha tem geralmente o mesmo tamanho do contador de
programa, contudo o Registrador Indicador de Pilha costuma ser menor.
Unidade Central de Processamento (CPU)
• Outros Registradores:
• Registrador de Status: Contém bits individuais, cada um com algum significado, os quais são
chamados de flags. Um flag bastante conhecido é o carry:

Byte mais Byte menos


significativo significativo
00110101 11010001
00011000 10101001
1
____________ ____________
01001110 01111010

Outros exemplos de flags é o indicador de overflow, o qual indica se um valor é maior que a
capacidade dos registradores, o flag zero o qual indica se um valor é nulo e o flag de sinal,
indicando se um valor é negativo ou positivo.
Unidade Central de Processamento (CPU)
• Unidade de Controle:
• A unidade de controle deve ler e decodificar instruções da memória de programa. Esta
unidade deve interpretar os dados contidos no Registrador de Instrução e responder gerando
uma sequência de sinais de habilitação (enable) para ativar os blocos lógicos apropriados da
ULA;
• Os sinais de controle gerados pela Unidade de Controle podem ser enviados para outros
elementos do microprocessador e vice-versa. Esta comunicação se dá pelo barramento de
controle;
• Alguns sinais comuns de controle:
• 𝑅𝐸𝑆𝐸𝑇 - É uma entrada comum a qualquer CPU, uma vez que essa entrada é ativada, o
Contador de Programa é carregado com um endereço de memória predeterminado;
• 𝑅𝐸𝐴𝐷/𝑊𝑅𝐼𝑇𝐸: Essa é uma saída de comando comum a qualquer CPU, informando aos
outros elementos do microcontrolador se a CPU está lendo ou escrevendo;
• 𝐼𝑁𝑇𝐸𝑅𝑅𝑈𝑃𝑇 𝑅𝐸𝑄𝑈𝐸𝑆𝑇 : Os dispositivos E/S podem realizar um interrupção no
microcontrolador de acordo com a programação realizada. Quando esse comando é
acionado, a CPU pula para uma rotina de interrupção que o usuário deseja realizar. Quando
terminada a rotina, a CPU volta para a instrução onde tinha sido interrompida.
Unidade Central de Processamento (CPU)
• Unidade de Controle:
• Há duas operações básicas na Unidade de Controle:
• Interpretação: a unidade lê a instrução de um endereço de memória indicado no
Contador de Programa e põe seu conteúdo no Registrador de Instrução. A Unidade
reconhece o tipo de instrução, selecionando as operações necessárias e acionando as
unidades apropriadas para a sua execução. A Unidade de Controle então envia sinais
para que a execução seja feita de forma apropriada e transmite o resultado da operação
para o destino especificado;

• Sequenciamento: a Unidade de Controle gera o endereço da próxima instrução a ser


realizada e carrega esta informação no Contador de Programa.
Unidade Central de Processamento (CPU)
• Unidade de Controle:
• Há também dois métodos para projetar a Unidade de Controle:
• Hardwire: o projeto é feito usando circuitos síncronos sequenciais. O termo hardwired é
consequente do fato de haver ligações físicas entre diversos elementos de circuito como
latches e flip-flops;
• Microprogramação: as funções de controle são armazenadas em uma memória ROM
dentro da Unidade de Controle, chamada memória de controle. Os comandos de
controle são lidos nesta memória e os bits são transmitidos para execução das operações
adequadas.

• A microprogramação é geralmente mais cara, além de gerar microcontroladores mais


lentos. A sua grande vantagem está na flexibilidade.
• O PIC18F utiliza Unidades de Controle via hardwire.
Unidade Central de Processamento (CPU)
• Unidade Lógica e Aritmética (ULA):
• Unidade que realiza toda manipulação de dados;
• A capacidade da ULA é igual à capacidade do microcontrolador;
• Operações realizadas pela ULA:
• Operações lógicas e aritméticas;
• Complementação de dados;
• Rotação e deslocamento do conteúdo de registradores através de um carry.
Pipelining
• Considere que uma deve somar o conteúdo dos registradores X e Y, armazenando
o seu conteúdo em um registrador Z. Tais instruções passarão pelas seguintes
etapas:
1. A CPU pega uma instrução na memória de programa e a coloca no Registrador
de Instruções;
2. A Unidade de Controle decodifica o conteúdo para determinar o tipo de
instrução;
3. A Unidade de Controle gera sinais de habilitação para os registradores e para a
ULA fazerem as seguintes tarefas:
a. A Unidade de Controle transmite o conteúdo dos registradores X e Y para a ULA;
b. A ULA deve fazer a adição;
c. O resultado da adição é transmitido para o registrador Z.
Pipelining
• CPUs convencionais executam um programa realizando uma instrução por vez.
Dessa forma, a Unidade de Controle deve esperar a CPU passar o conteúdo da
memória de programa, assim como a ULA deve aguardar até obter os dados
necessários para as operações;
• As velocidades dos microprocessadores se tornaram consideravelmente maiores
do que as velocidades das memórias, desse modo a Unidade de Controle e a ULA
precisarão passar por um período ocioso enquanto a CPU adquire as próximas
instruções e os dados necessários;
• Para otimizar o desempenho, alguns microprocessadores, incluindo o PIC18F,
utilizam o conceito de pipeline para que a CPU continue pegando instruções e
dados nas memórias enquanto a Unidade de Controle e a ULA estão ocupadas;
Pipelining

Latch

Latch

Latch
Latch
Segmento 1 Segmento 2 Segmento 3 Segmento 4

Entrada

Clock
Arquiteturas de CPU
• Existem basicamente dois tipos de arquiteturas de CPU: CISC e RISC.
• Os primeiros microprocessadores utilizavam a arquitetura CISC (Computador com
Complexo Conjunto de Instruções). Estes CPUs contém uma grande gama de
instruções (muitos usados raramente) e modos de endereçamento. Como a
maioria das instruções fazem acesso à memória do sistema, normalmente a
arquitetura CISC funciona com ciclos de clock relativamente baixos e é difícil de
implementar o pipeline;
• No final dos anos 70, foi apresentada a arquitetura RISC (Computador com
Conjunto de Instruções Reduzido), possuindo somente um número considerado
necessário de instruções, uma vez que quase toda tarefa necessita de poucas
instruções para serem realizadas;
Arquiteturas de CPU
• Características da arquitetura RISC:
• É desenvolvido utilizando Unidade de Controle do tipo Hardwired, tendo
pouca ou nenhuma microcomputação envolvida;
• Um CPU RISC realiza a maioria das instruções em um único ciclo de clock;
• O conjunto de instruções do RISC normalmente tem apenas as instruções
REGISTRAR, CARREGAR e ARMAZENAR. As operações aritméticas utilizam a
instrução REGISTRAR e as manipulações da memória utilizam CARREGAR e
ARMAZENAR;
• As instruções possuem formato fixo;
• Um CPU RISC consegue realizar várias instruções simultaneamente,
facilitando a utilização de pipeline;