1 Micro Parte 1 (Conceitos Gerais) 2020 - EMC › ~jwilson › pdf › 1_Micro_Parte... ·...

Preview:

Citation preview

1Prof. José Wilson Lima Nerys1 Microprocessadores

MICROPROCESSADORES E

MICROCONTROLADORES

José Wilson Lima Nerys

www.emc.ufg.br/~jwilson

jwlnerys@gmail.com

jose_wilson_nerys@ufg.br

Parte 1

2Prof. José Wilson Lima Nerys2 Microprocessadores

Charge publicada no Jornal "The Electrical World 1893 na ocasião do Congresso Internacional de Engenharia Elétrica,

realizado em Chicago, em 21 de agosto de 1893.

Já se passaram pouco mais de 120 anos

3Prof. José Wilson Lima Nerys3 Microprocessadores

Quais são as possibilidades para daqui 50 anos?(comunicação, transporte, medicina...)

4Prof. José Wilson Lima Nerys4 Microprocessadores

Quais são as possibilidades para daqui 50 anos?(comunicação, transporte, medicina...)

5Prof. José Wilson Lima Nerys5 Microprocessadores

O que eles têm em

comum?

6Prof. José Wilson Lima Nerys6 Microprocessadores

Micro

proc

essa

dore

s

Micro

cont

rolado

res

7Prof. José Wilson Lima Nerys7 Microprocessadores

Linha do Tempo

Ábaco(4000 ac)

Octograma chinês

(4000 ac)

LogaritmoJohn NapierTabela de Logaritmo

(1614)

Calculadora de 4 funções

de Leibniz(1671)

Computadores Z1, Z2 e Z3

(1936)

Máquina de diferenças e

Analítica(Babbage)

(1822)

PascalineCalculadora de Blaise Pascal

(1642)

Tear automático com cartão perfurado

(1801)

Computador ColossoVálvulas

(Alan Turing)(1943)

Máquina de Von Newman

Programa armazenado

(1946)

IBM 7090Transistores

FortranCobolPascal(1960)

8Prof. José Wilson Lima Nerys8 Microprocessadores

Linha do Tempo

40044 bits(1971)

80088 bits(1972)

80808 bits(1974)

808616 bits(1978)

80518 bits(1980)

Atmel AVR8 bits(1996)

Pentium 200MMX64 bits(1997)

Raspberry pi(ARM)32 bits(2011)

80858 bits(1976)

808816 bits(1979)

PIC8 bits(1985)

Arduíno(Atmel AVR)

8 bits(2005)

ARM32 bits(1983)

ESP 32(Espressif)

32 bits(2016)

9Prof. José Wilson Lima Nerys9 Microprocessadores

Evolução dos Processadores

10Prof. José Wilson Lima Nerys10 Microprocessadores

Evolução dos Processadores

12Prof. José Wilson Lima Nerys12 Microprocessadores

Quantidade de Transistores

8085 (1976) 3.600 transistores (5 MHz)370.000 instruções/segundo8 bits.

Dual Core (2007): 820 milhões de transistores53.000 milhões de instruções/segundo64 bits. Tecnologia: 45 nm. 3,33 GHz

13Prof. José Wilson Lima Nerys13 Microprocessadores

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Quantidade de Transistores

2 transistores por bit

Quanto maior o número de transistores, maior a quantidade possível de registradores

Aumento no desempenho

14Prof. José Wilson Lima Nerys14 Microprocessadores

Registradores

Os microprocessadores possuem diversos

registradores.

Eles são usados para o armazenamento interno

da CPU.

Existem diversos registradores na CPU e o

principal deles é chamado de Acumulador.

Os registradores são construídos com flip-flops,

que podem reter (armazenar) dados.

15Prof. José Wilson Lima Nerys15 Microprocessadores

Unidade Lógica e Aritmética (ULA ou ALU) - realiza funções básicas

de processamento de dados (adição, subtração, funções lógicas, etc.).

16Prof. José Wilson Lima Nerys16 Microprocessadores

17Prof. José Wilson Lima Nerys17 Microprocessadores

Bit 3 Bit 2 Bit 1 Bit 01 nibble

Menor valor posi�vo 0 0 0 0 0

0 0 0 1 1

0 0 1 0 2

0 0 1 1 3

… … … …

Maior valor posi�vo 1 1 1 1 15

Capacidade: 24 = 16 nibbles

Decimal

0

1

2

3

F

Hexa

Número de bits dos Registradores

Quanto maior o número de bits dos registradores, maior a capacidade de processar informações, então maior o desempenho.

18Prof. José Wilson Lima Nerys18 Microprocessadores

Bit 3 Bit 2 Bit 1 Bit 0Bit 7 Bit 6 Bit 5 Bit 41 byte

Menor valor posi�vo 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

… … … … … … … …

Maior valor posi�vo 1 1 1 1 1 1 1 1

0

1

2

3

255

Decimal

Capacidade: 28 = 256 bytes

00

01

02

03

FF

Hexa1 byte = 8 bits

Intervalo dos valores positivos e negativos (notação com sinal): 0 a 127 = 00h a 7Fh e -1 a -128 = FFh a 80h

Número de bits dos Registradores

19Prof. José Wilson Lima Nerys19 Microprocessadores

Frequência de ClockAno Processador Frequência de Clock

Tecnologia(tamanho transistor)

1971 4004 108 kHz 10 µm

1972 8008 200 kHz

1976 8085 5 MHz

1978 8086 5 a 10 MHz

1979 8088 5 a 10 MHz

1989 80486 25 a 50 MHz

1997 Pen�um II 450 MHz 0,25 µm

1999 Pen�um III 500 MHz até 1,2 GHz 0,25 µm

2004Pen�um 4 (Presco*)

4 GHz 90 nm

2007 Core 2 3,33 GHz 45 nm

2010 Core i5 3,33 GHz 32 nm

Aum

ento

do d

ese

mpenho

20Prof. José Wilson Lima Nerys20 Microprocessadores

Arquitetura RISC

Arquitetura CISCComplex Instruc�on Set Compu�ng (Computador com Conjunto Complexo de Instruções)

Reduced Instruc�on Set Compu�ng (Computador com Conjunto Reduzido de Instruções)

21Prof. José Wilson Lima Nerys21 Microprocessadores

RISC CISC

Instruções básicas executadas em apenas 1ciclo – uso intenso de superposição na execução de instruções (através de pipeline)

No mínimo 4 ciclos de clock (8085) para executar uma instrução. Tem pouca ou nenhuma superposição na execução de instruções

Uso reduzido da memória – basicamente 2 instruções de acesso à memória (load/store).

Muitas instruções com acesso à memória. Uso intenso da memória (load, store, mov... )

Instruções de tamanho fixo. Exemplo: as instruções do PIC 16F628 têm tamanho fixo de 14 bits.

Instruções de tamanho variável. Exemplo: 8085 tem instruções de 1, 2 e 3 bytes.

Muitos registradores.Exemplo: PIC Fpico possui de 32 a 128 registradores.

Poucos registradores.Exemplo: 8085 possui 7 registradores de propósito geral (A, B, C, D, E, H e L)

Não há necessidade de decodificação das instruções antes de executá-las.As instruções são semelhantes às micro-instruções da arquitetura CISC. As instruções são executadas diretamente no hardware

Ciclo de busca inclui busca na memória e iden�ficação em decodificadores.Uso de micro-instruções gravadas no processador. Necessidade de interpretação das instruções

Instruções simples – 1 ciclo para execução Instruções complexas – múl�plos ciclos para execução.

Número pequeno (ou médio de instruções).Exemplo: PIC 12 e PIC 16 possuem 32 instruções.

Número elevado de instruções.Exemplo: 8085 possui cerca de 74 instruções, que resultam em cerca 255 códigos de operação (opcodes)

Algumas Características RISC X CISC:

22Prof. José Wilson Lima Nerys22 Microprocessadores

Índice de Desempenho de um Microprocessador(velocidade de processamento)

1. Aumento da frequência de clock

2. Aumento do número interno de bits

3. Aumento do número externo de bits

4. Aumento da capacidade e velocidade da memória cache

5. Redução do número de ciclos para execução de cada instrução

6. Execução de instruções em paralelo

23Prof. José Wilson Lima Nerys23 Microprocessadores

Desempenho RISC X CISC:

24Prof. José Wilson Lima Nerys24 Microprocessadores

Ferramentas do Curso:

1. Simulador do Microprocessador 8085: ABACUS

2. Programas aplicados ao microcontrolador 8051:

Edição e Compilação: MCU 8051 IDE

Simulação: MCU 8051 IDE e Proteus

3. Simulador do PIC – MPLAB X IDE

25Prof. José Wilson Lima Nerys25 Microprocessadores

CONJUNTO DE INSTRUÇÕES:

Grupos de instruções mais comuns em processadores de qualquer arquitetura:

Instruções de desvio (No CISC o valor de retorno é guardado na pilha; no RISC é guardado em um registrador.

Instruções de transferência entre registradores e memória

(No RISC: load/store; no CISC: load, store, mov etc)

Instruções de transferência entre registradores

Instruções de transferência entre posições de memória

Operações aritméticas (soma, subtração ...)

Operações lógicas (and, or, not, rotação ...)

26Prof. José Wilson Lima Nerys26 Microprocessadores

PIPELINE:

Técnica usada para acelerar a execução de instruções. A cada ciclo de clock,

enquanto uma instrução está na etapa de execução, a instrução seguinte está

sendo buscada.

O resultado global é que, a cada ciclo, uma nova instrução é iniciada e uma

instrução é encerrada.

No caso mostrado a instrução B faz referência à memória.

Ciclos 1 2 3 4 5

Busca da instrução A B C D E

Execução da instrução A B C D

Referência à memória B

27Prof. José Wilson Lima Nerys27 Microprocessadores

PIPELINE:

Enquanto a instrução A precisa de apenas um ciclo para busca e um para

execução, a instrução B precisa de dois ciclos para execução.

Caso a instrução B interfira na etapa de execução da instrução C (por

exemplo, usando o mesmo registrador ou quando a instrução C precisa do

resultado da instrução B) é necessário aguardar o término da instrução B

antes de executar a instrução C.

Ciclos 1 2 3 4 5 6

Busca da instrução A B C NOP D E

Execução da instrução A B NOP C D

Referência à memória B

28Prof. José Wilson Lima Nerys28 Microprocessadores

29Prof. José Wilson Lima Nerys29 Microprocessadores

Arquitetura do 8085 (detalhe)

31Prof. José Wilson Lima Nerys31 Microprocessadores

Arquitetura do PIC16F

32Prof. José Wilson Lima Nerys32 Microprocessadores

Princípio de Funcionamento 8085

B

A

C

D

LOAD

LOAD

LOAD

LOAD

ENABLE

ENABLE

ENABLE

ENABLE

CLOCK

CLOCK

CLOCK

CLOCK

Chave de 3 estados

33Prof. José Wilson Lima Nerys33 Microprocessadores

A = 15 H

Princípio de Funcionamento 8085

B

C

D

LOAD

LOAD

LOAD

LOAD

ENABLE

ENABLE

ENABLE

ENABLE

CLOCK

CLOCK

CLOCK

CLOCK

MOV D,A

D = 15 H

15 H

34Prof. José Wilson Lima Nerys34 Microprocessadores

Frequência de Clock

CLK

Ciclo de Clock

2

cristalclock

ff =

8085A: fcristal

= 500 kHz a 3,125 MHz

8085A-2: fcristal

= 500 kHz a 5 MHz

Exemplo: Se fcristal

= 2 MHz � fclock

= 1 MHz

Tclock

= 1 µs

35Prof. José Wilson Lima Nerys35 Microprocessadores

Ciclos de Clock, de Máquina e de Instrução

CLK

Estados T1 T2 T3 T4 T1 T2 T3

Ciclo de Máquina 1: M1 Ciclo de Máquina 2 : M2

Ciclo de Instrução

Ciclo de Instrução

Ciclo de Busca

Ciclo de Execução

Ciclo de Execução

36Prof. José Wilson Lima Nerys36 Microprocessadores

Diagrama de Temporização

Estados T1 T2 T3 T4 T1 T2 T3

PC FORA PC+1→PC INST →IR PC FORA PC+1→PC INST →IR

ALE

A15-A8 PC H PC H

AD7-AD0 PC L INST PC L INST

M1 M2

CLK

37Prof. José Wilson Lima Nerys37 Microprocessadores

T1 T2 T3 T4 T1 T2 T3

PC FORA PC+1→PC INST →IR SBE

PC FORA PC+1→PC INST →IR

A15-A8 PC H PC H

AD7-AD0 PC L INST PC L INST

ALE

RD\

WR\

IO-M\

M1 M2

38Prof. José Wilson Lima Nerys38 Microprocessadores

Princípio de Funcionamento 8051

Se f = 12 MHz �

Se f = 11.0592 MHz �

clock

clockf

T1

=clock

clockmáquinaf

TT12

12 =×=

sMHz

Tmáquina µ112

12==

sMHz

Tmáquina µ085,10592,11

12==

39Prof. José Wilson Lima Nerys39 Microprocessadores

Princípio de Funcionamento 8051

Estado S1: a próxima instrução é buscada na ROM, colocada no barramento principal e encaminhada para o registrador IR.

Estado S2: a instrução é decodificada e o PC é incrementado.

Estado S3: os operandos da instrução são preparados

40Prof. José Wilson Lima Nerys40 Microprocessadores

Princípio de Funcionamento 8051

Estado S4: os operandos são enviados para os registradores temporários TMP1 e TMP2, na entrada da ULA

Estado S5: a ULA executa a instrução

Estado S6: o resultado da ULA é colocado no barramento principal e encaminhado para o registrador final.

41Prof. José Wilson Lima Nerys41 Microprocessadores

Formato das Instruções do 8085

Tipo de instrução

Caracterís0cas Exemplos

1 byteO byte da instrução é o próprio Opcode (código de operação)

MOV A,CADD BRLCDCR C

2 bytesO primeiro byte é o Opcode e o segundo byte é o Dado de 8 bits necessário para a instrução

MVI A,35H ADI 05H ORI 01H

3 bytesO primeiro byte é o Opcode; o segundo e o terceiro bytes correspondem a um dado de 16 bits.

LDA 2030HSTA 2040HLXI H,2080H

42Prof. José Wilson Lima Nerys42 Microprocessadores

Formato das Instruções do 8051

OPCODE

OPCODE REG

OPCODE OPERANDO

OPCODE ENDEREÇO DE 11 BITS

OPCODE ENDEREÇO DE 16 BITS

OPCODE OPERANDO 1 OPERANDO 2

1 Byte

2 Bytes

3 Bytes

43Prof. José Wilson Lima Nerys43 Microprocessadores

Formato das Instruções do PIC 16F628

13 8 7 6 5 4 3 2 1 0

OPCODE d f (Endereço do registrador)

Todas as instruções tem 14 bits

Tipo 1: Operações com registradores orientadas por byte

OPCODE � Código da operação

d = 0 � o destino do resultado é o registrador W

d = 1 � o destino do resultado é o registrador f

f � Registrador de endereços de 7 bits (operando)

44Prof. José Wilson Lima Nerys44 Microprocessadores

Formato das Instruções do PIC 16F628

13 10 8 7 6 5 4 3 2 1 0

OPCODE b f (Endereço do registrador)

Tipo 2: Operações com registradores orientadas por bit

OPCODE � Código da operação

b � Endereço de 3 bits

f � Registrador de endereços de 7 bits (operando)

45Prof. José Wilson Lima Nerys45 Microprocessadores

Formato das Instruções do PIC 16F628

13 12 11 10 9 8 7 6 5 4 3 2 1 0

OPCODE k (literal)

Tipo 3: Operações de controle e literal

OPCODE � Código da operação

k � Indicam um valor constante ou literal

46Prof. José Wilson Lima Nerys46 Microprocessadores

Formato das Instruções do PIC 16F628

13 12 11 10 9 8 7 6 5 4 3 2 1 0

OPCODE k (literal)

Tipo 4: Operações de desvio

OPCODE � Código da operação

k � Indicam um valor constante ou literal de 11 bits

47Prof. José Wilson Lima Nerys47 Microprocessadores

Flags no 8085

Registrador F: Registra o estado da última operação realizada na ULA

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

S Z × AC × P × CY

48Prof. José Wilson Lima Nerys48 Microprocessadores

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

S Z × AC × P × CY

Flag de Sinal: Assume valor 0 para número positivo (bit 7 = 0) e 1 para negativo (bit 7 = 1)

Flag de Zero: Assume valor 0 para número diferente de zero e 1 para número igual a zero.

Flag Auxiliar de Carry: Assume valor 1 quando há transporte

do Bit 3 para o Bit 4

49Prof. José Wilson Lima Nerys49 Microprocessadores

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

S Z × AC × P × CY

Flag de Paridade: Assume valor 1 quando há uma quantidade par de dígitos 1 no acumulador. Assume valor 0 quando há uma quantidade ímpar.

Flag de Carry: Assume valor 1 quando há transporte do Bit 7 para o bit 8 (O Bit 8 é fora do acumulador)

50Prof. José Wilson Lima Nerys50 Microprocessadores

Exemplo de Operação com Flag do 8085

50

Vai 1 1 1 1 1

A = 85H 1 0 0 0 0 1 0 1

B = 9CH 1 0 0 1 1 1 0 0

A � A + B 0 0 1 0 0 0 0 1

S = 0 � O último bit (bit 7) do resultado, no acumulador, é zero

Z = 0 � O resultado da operação é diferente de zero

AC = 1 � Houve um “vai 1” do bit 3 para o bit 4

P = 1 � Há uma quantidade “par” de dígitos “1” no resultado

CY = 1 � Houve um “vai 1” do bit 7 para “fora” do acumulador (bit 8)

Bit 7 Bit 6 Bit5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

51Prof. José Wilson Lima Nerys51 Microprocessadores

Registrador de Flags – 8051

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

CY AC F0 RS1 RS0 OV × P

ParidadeOverflowUso Geral

Auxiliar de Carry

Carry

RS1 RS0 Banco Selecionado

0 0 0

0 1 1

1 0 2

1 1 3

52Prof. José Wilson Lima Nerys52 Microprocessadores

Registrador de Flags – 8051

OV � overflow � A flag de overflow é setada quando há um carry do bit 7, mas não do bit 6 ou um carry do bit 6, mas não bit 7.

A flag de overflow é útil em operações com número sinalizado representados na forma de complemento de 2. Há duas situações que resultam em OV setado:

• Se a soma de dois números positivos for maior que 7F H e menor que FFH a flag de overflow indica que o número não deve ser interpretado como número negativo.

• Se a soma de dois números negativos (bit 7 = 1) resultar em um número no intervalo de 00 H a 7F H (ou 100 H a 17F H, considerando a flag de carry, que sempre estará presente nessa situação), a flag de overflow indicará que o número não é pra ser interpretado como número positivo.

53Prof. José Wilson Lima Nerys53 Microprocessadores

Registrador de Flags – 8051

Exemplos para a flag de overflow:

1. MOV A,#100 � 64H = 0 1 1 0:0 1 0 0 ADD A,#44 � 2CH = 0 0 1 0:1 1 0 0

Resultado: 144 = 90 H = 1 0 0 1:0 0 0 0 (OV = 1)

Decimal Hexadecimal 1 1 1 1

100 64H 0 1 1 0 0 1 0 0

44 2CH 0 0 1 0 1 1 0 0

144 90H 1 0 0 1 0 0 0 0

Há transporte do bit 6 para o 7, mas não há do bit 7 para o bit 8.Os dois números (64H e 2CH) são positivos na operação com sinal. Assim, o resultado deve ser interpretado como número positivo, mesmo tendo bit 7 igual a 1.

54Prof. José Wilson Lima Nerys54 Microprocessadores

Registrador de Flags – 8051

Exemplos para a flag de overflow:

2. ADD,#01H (Ao resultado da operação anterior: 90H)

Resultado: 145 = 91 H = 1 0 0 1:0 0 0 1 (OV = 0)

144 90H 1 0 0 1 0 0 0 0

01 01H 0 0 0 0 0 0 0 1

145 91H 1 0 0 1 0 0 0 1

Não há transporte do bit 6 para o 7, nem do bit 7 para o bit 8.O número 90H é negativo nas operações com sinal e o número 01H é positivo. Nesse caso não há flag de overflow.

55Prof. José Wilson Lima Nerys55 Microprocessadores

Pilha no 8051

56Prof. José Wilson Lima Nerys56 Microprocessadores

Região de memória usada para guardar endereço de retorno e valores temporários

SP �

Endereço Mnemônico Código

2000 H LXI SP,20FFH 31 FF 20

2003 H

2004 H

xxxxx xxxxx

xxxxx xxxxx

20FF H

Instruções que usam a pilha:

CALL

RET

PUSH

POP

Interrupções

57Prof. José Wilson Lima Nerys57 Microprocessadores

Transferência de dados envolve sempre um par de bytes � 16 bits

O byte mais significativo é sempre guardado primeiro na pilha

O byte menos significativo é retirado primeiro da pilha

O Ponteiro de Pilha SP aponta sempre para o topo da pilha (último valor armazenado)

Registradores utilizados � PSW � A + FlagsB � B + CD � D + EH � H + L

58Prof. José Wilson Lima Nerys58 Microprocessadores

59Prof. José Wilson Lima Nerys59 Microprocessadores

Pilha no 8051

Transferência de dados envolve dados de 8 bits e 16 bits.

Registradores de 16 bits, como DPTR, são guardados em duas operações PUSH e retiradas em duas operações POP

Exemplos:PUSH ACC � Guarda conteúdo do acumuladorPUSH DPH � Guarda 8 bits mais significativos do DPTRPUSH DPL � Guarda 8 bits menos significativos do DPTRPOP ACC � Recupera conteúdo do acumulador

60Prof. José Wilson Lima Nerys60 Microprocessadores

61Prof. José Wilson Lima Nerys61 Microprocessadores

Diferenças básicas entre o uso da Pilha no 8051 e no 8085

Caracterís0ca 8085 8051

Variação do apontador de pilha SP

SP é decrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção)

SP é incrementado nas operações para guardar valores na pilha (PUSH, CALL, chamada de interrupção)

Região da memória A região da pilha é a mesma do programa do usuário, podendo haver sobreposição

A pilha é reservada na memória RAM e o programa na memória ROM, não havendo risco de sobreposição

Tamanho do dado guardado

São movimentados 16 bits em cada operação de pilha

São movimentados 8 bits nas operações PUSH e POP e 16 bits nas operações LCALL, RET e chamadas de interrupção.

62Prof. José Wilson Lima Nerys62 Microprocessadores

Bibliografia

[1] ZILLER, Roberto M., “Microprocessadores – Conceitos Importantes,” Edição

do autor, Florianópolis, 2000. ISBN 85-901037-2-2

[2] MALVINO, Albert Paul, “Microcomputadores e microprocessadores;

tradução Anatólio Laschuk, revisão técnica Rodrigo Araês Farias. São

Paulo: McGraw-Hill do Brasil, 1985.

[3] NERYS, José Wilson Lima, “Notas de Aula de Microprocessadores e

Microcontroladores. Página: http://www.emc.ufg.br/~jwilson/teoria.htm

Recommended