Você está na página 1de 143

Universidade Federal de Santa Catarina Centro Tecnolgico CTC Departamento de Engenharia Eltrica

EEL7030 Microprocessadores

Prof. Eduardo Augusto Bezerra


Eduardo.Bezerra@computer.org

Florianpolis, maro de 2010.

Microprocessadores
Links:
http://eduardo.bezerra.name/ http://www.eel.ufsc.br/hari/ http://www.eel.ufsc.br/eel7030/

EEL7030 Microprocessadores

2/143

Plano de Aula
Microprocessadores: arquitetura CISC e RISC

Objetivos:
Conhecer a arquitetura de um microprocessador CISC Conhecer a arquitetura de um microprocessador RISC Descrever estudo comparativo das arquiteturas RISC e CISC Estudar e avaliar um estudo de caso de projeto com microprocessadores

EEL7030 Microprocessadores

3/143

Reviso

Projeto e Implementao de Produtos Tecnolgicos Baseados em Circuitos Eletrnicos

Sem Projeto de Dispositivos

Com Projeto de Dispositivos

Sistemas computacionais programveis (e.g. PC)

Sistema digital dedicado, programvel (microcontroladores e/ou DSPs)

Chip Sets

Dispositivos personalizveis (FPGAs e CPLDs)

Dispositivos projetados e fabricados sob encomenda ASIC (gate-arrays ou standard cells)

Aumento de desempenho (maior velocidade e menor potncia dissipada), sigilo de projeto, custo de desenvolvimento Diminuio da complexidade de projeto
EEL7030 Microprocessadores

4/143

RISC e CISC

EEL7030 Microprocessadores

5/143

Microprocessadores
Componentes bsicos de sistemas computacionais processados: CPU Memria de dados e programa Sistema de entrada/sada Microcontroladores so computadores em um nico chip Os perifricos esto embarcados no mesmo chip da CPU Algumas caractersticas: tamanho e custo reduzidos, alto desempenho com baixo consumo de energia, uso eficiente de espao no PCB, baixo clock, endereamento bit-a-bit Microprocessadores so computadores de propsito geral So necessrios componentes perifricos, externos, para apoio execuo das aplicaes

EEL7030 Microprocessadores

6/143

CISC Complex Instruction Set Computer


Arquiteturas projetadas para facilitar a programao (assembly), e com acesso eficiente a memria Memria cara e lenta representava na poca situao ideal para CISC Exemplos de arquiteturas da poca incluem o PDP-11 e o DEC system 10 e 20 Por razes semelhantes, arquiteturas de microprocessadores largamente utilizados no passado tais como o Intel 80x86 e o Motorola 68K tambm seguiram a filosofia CISC Avanos na tecnologia de software e hardware levaram a uma reavaliao na filosofia CISC, resultando em novas arquiteturas hbridas implementando princpios RISC CISC foi desenvolvido para facilitar o desenvolvimento de compiladores. Por exemplo, o compilador no precisa gerar longas seqncias de instrues para calcular uma raiz quadrada, uma vez que existe no hardware das arquiteturas CISC instrues com essa funcionalidade.
EEL7030 Microprocessadores

7/143

CISC Complex Instruction Set Computer


Restries de projeto/tecnolgicas que direcionaram o desenvolvimento da arquitetura CISC (programas em assembly e memria lenta, escassa e cara) resultaram em algumas caractersticas marcantes. Formato de instrues com dois operandos (fonte, destino). Instrues do tipo Registrador/Registrador, Registrador/Memria e Memria/Registrador. Diversos modos de endereamento a memria, incluindo modos especiais para acesso a arrays indexados. Instrues de tamanho varivel, de acordo com o modo de endereamento.

Instrues que necessitam diversos ciclos de clock.


O Pentium um exemplo de arquitetura CISC da atualidade.

EEL7030 Microprocessadores

8/143

CISC Complex Instruction Set Computer


Arquiteturas CISC compartilham diversas caractersticas. Lgica de decodificao de instrues complexa devido a necessidade de

suporte a instrues com vrios modos de endereamento.


Conjunto reduzido de registradores de uso geral, devido a existncia de instrues que acessam diretamente a memria. rea reduzida no chip para lgica de decodificao de instrues, execuo e armazenamento de microcdigo. Diversos registradores de uso especial ponteiros para pilha, manipulao de interrupes, strings, entre outros.

Isso facilita o projeto do hardware, porm o conjunto de instrues se torna


mais complexo. Registrador de condio para armazenar o resultado da ltima operao (informando se foi igual a zero, se menor ou igual a, ...).
EEL7030 Microprocessadores

9/143

CISC Complex Instruction Set Computer


Desvantagens das arquiteturas CISC
Aumento na complexidade do conjunto de instrues e hardware de novas geraes de processadores, que incluem as geraes anteriores na forma de um subconjunto por questes de compatibilidade binria. Devido aos requisitos de memria, arquiteturas CISC tendem a armazenar o mximo possvel de instrues, de tamanhos diferentes, evitando qualquer desperdcio. Dessa forma, instrues diferentes iro necessitar de nmero de ciclos de clocks diferentes para execuo, reduzindo a velocidade de processamento. Instrues especializadas no so executadas com frequncia suficiente para justificar sua existncia. Apenas 20% do total de instrues so utilizadas em um programa. A atualizao dos flags de condio realizada por diversas instrues representa custo de processamento, e o programador precisa lembrar de verificar esses flags antes que a prxima instruo seja os altere.

EEL7030 Microprocessadores

10/143

RISC Reduced Instruction Set Computer


Processadores RISC possuem um nmero reduzido de instrues, e altamente otimizadas Primeiros projetos RISC foram desenvolvidos pela IBM (IBM 801), Stanford (MIPS) e Berkeley (RISC 1 e 2) no final dos anos 70 e incio dos anos 80. Uma instruo por ciclo: processadores RISC possuem CPI = 1, devido a otimizao das instrues na CPU e tambm pelo uso de pipeline.

Pipeline: tcnica que possibilita a execuo em paralelo de parte (ou


estgios) das instrues. Aumento na quantidade de registradores: utilizados, por exemplo, para

evitar acessos seguidos a memria.


EEL7030 Microprocessadores

11/143

RISC

EEL7030 Microprocessadores

12/143

RISC Reduced Instruction Set Computer


Processadores CISC:

Nmero considervel de instrues


Instrues complexas e eficientes Diversos modos de endereamento para operaes na memria Poucos registradores Processadores RISC possuem caractersticas opostas: Quantidade reduzida de instrues Instrues simples, menos complexas Poucas opes de endereamento a memria, basicamente por meio de instrues LOAD e STORE Quantidade considervel de registradores simtricos, organizados em uma tabela de registradores
EEL7030 Microprocessadores

13/143

RISC Reduced Instruction Set Computer


Desvantagens do RISC: Comunidade RISC defende que a arquitetura rpida e econmica, sendo a escolha ideal para os computadores do futuro Porm, ao simplificar o hardware, arquiteturas RISC transferem uma grande responsabilidade para o software Com os avanos tecnolgicos, arquiteturas no RISC acabam se tornado tambm rpidas e econmicas, vale a pena o esforo a nvel de software imposto pelas arquiteturas RISC?

EEL7030 Microprocessadores

14/143

CISC e RISC
Implementaes CISC e RISC vem se tornando cada vez mais similares
Arquiteturas RISC da atualidade possuem um nmero de instrues equivalente as arquiteturas CISC de geraes anteriores Com o aumento da velocidade da tecnologia atual, arquiteturas CISC passaram a executar mais de uma instruo por ciclo, utilizando pipeline Com o aumento da densidade de transistores em um chip, arquiteturas RISC passaram a incorporar instrues mais complexas, semelhantes as CISC

Com esses avanos tecnolgicos, CISC e RISC passaram a possuir diversas


similaridades, e a distino entre as mesmas deixa de ser to relevante Porm, apesar do aumento no conjunto de instrues, RISC continua utilizando instrues de um ciclo, com um grande nmero de registradores. Alm disso, continua utilizando apenas instrues LOAD/STORE para acesso a memria.
EEL7030 Microprocessadores

15/143

CISC e RISC
CISC RISC

nfase no hardware
Instrues complexas multi-ciclo

nfase no software
Instrues simples de um ciclo (pipeline)

Memria para memria: "LOAD" e "STORE" incorporados nas instrues


Binrios (executveis) reduzidos, alta taxa de ciclos por segundo Transistores usados para armazenar instrues complexas

Registrador para registrador: "LOAD" e "STORE" so instrues independentes


Binrios (executveis) longos, baixa taxa de ciclos por segundo Transistores utilizados na implementao de registradores

EEL7030 Microprocessadores

16/143

CISC e RISC
Equao de desempenho:
Tempo de CPU = segundos programa = instrues programa x ciclos instruo x segundos ciclo

EEL7030 Microprocessadores

17/143

CISC e RISC
Equao de desempenho:
Tempo de CPU = segundos programa = instrues programa x ciclos instruo x segundos ciclo

Arquitetura RISC diminui tempo de execuo ao reduzir o nmero de ciclos por instruo (instrues simples so decodificadas mais

rapidamente)

EEL7030 Microprocessadores

18/143

CISC e RISC
Equao de desempenho:
Tempo de CPU = segundos programa = instrues programa x ciclos instruo x segundos ciclo

Arquitetura RISC diminui tempo de execuo ao reduzir o nmero de ciclos por instruo (instrues simples so decodificadas mais

rapidamente)
Arquitetura CISC diminui tempo de execuo ao reduzir o nmero de instrues em um programa

EEL7030 Microprocessadores

19/143

CISC e RISC
CISC mov ax, 10 RISC mov ax, 0 mov bx, 10 mov cx, 5

mov bx, 5
mul bx, ax

Inicio: add ax, bx


loop Inicio

CISC:
(2 movs x 1 ciclo) + (1 mul x 30 ciclos) = 32 ciclos RISC:

(3 movs x 1 ciclo) + (5 adds x 1 ciclo) + (5 loops x 1 ciclo) = 13 ciclos


EEL7030 Microprocessadores

20/143

CISC e RISC Arquitetura Intel IA32 CISC de sucesso

Alto volume de fabricao de chips


Compatibilidade binria com enorme quantidade de

software legado padro IBM-PC


Converso interna CISC para RISC aumenta eficincia do pipeline Escala suficiente para suportar todo o hardware extra
EEL7030 Microprocessadores

21/143

CISC e RISC
Comparao entre CISC (Alpha) e RISC (Pentium Pro) no SPEC
Pentium Pro converte instrues CISC para RISC, on the fly, gerando uops. Para esse tipo de converso em hardware, e por instruo, espera-se um nmero maior de uops do que o gerado por um compilador. Para benchmarks de inteiros e para o spice (menor contedo de FP), o nmero de uops prximo ao de instrues RISC. Em benchmarks FP, RISC gera menos instrues, exceto para ora onde Alpha precisa de diversas instrues para calcular SQRT.
EEL7030 Microprocessadores

Milhes

22/143

CISC e RISC

Arquitetura ideal?
Solues hbridas
Core RISC com interface CISC

ISA desejado
Meio termo entre RISC e CISC Poucas instrues complexas, cuidadosamente escolhidas e teis

EEL7030 Microprocessadores

23/143

CISC: Pentium Pro - Arquitetura IA32

EEL7030 Microprocessadores

24/143

CISC: Pentium Pro Diversas instrues complexas, com tamanhos variando de 1 a 15 bytes Necessidade de recursos considerveis de hardware para implementao da lgica de decodificao e execuo de instrues Uma nica instruo pode realizar uma ou mais leituras/escritas na memria e uma ou mais operaes na ULA Desafio para execuo de mais de uma instruo por ciclo em um hardware super-escalar
EEL7030 Microprocessadores

25/143

CISC: Pentium Pro


Instrues CISC obtidas da memria (geradas por compilador) so colocadas nas caches L2 e L1 instrues possuem tamanhos variados Arquitetura realiza traduo das instrues CISC contidas em L1, decodificando e transformando em instrues RISC de tamanho fixo (micro-operaes ou uOPs) As uOPs so colocadas em reservatrio com capacidade para armazenar 40 instrues, onde aguardam para entrar no fluxo de execuo Quando os operandos necessrios por uma determinada instruo estiverem disponveis, e quando a unidade de execuo a ser utilizada estiver livre, a instruo retirada do reservatrio e executada EXECUO FORA DE ORDEM Aps execuo da uOP, os resultados so escritos nos registradores, na ordem original do fluxo do programa Esse processo descrito a seguir, onde estgios 1 a 14 so operaes do reservatrio de uOPs, e do estgio 15 em diante uOPs so executadas
EEL7030 Microprocessadores

26/143

CISC: IA32

TC Nxt IP: Trace Cache Next Instruction Pointer

Ponteiro do Branch Target Buffer indica a localizao da prxima uOP (j transformada p/ RISC)

EEL7030 Microprocessadores

27/143

CISC: IA32

TC Fetch: Trace Cache Fetch

Realiza leitura da uOP RISC na Execution Trace Cache

EEL7030 Microprocessadores

28/143

CISC: IA32

Drive: Atraso nos barramentos

Direciona as uOPs para a unidade de alocao

EEL7030 Microprocessadores

29/143

CISC: IA32

Alloc: Allocate Alocao de recursos necessrios para execuo da uOP como, por exemplo, buffers para load/store, entre outros

EEL7030 Microprocessadores

30/143

CISC: IA32

Rename: Register renaming

Renomeia os registradores locais (EAX, ...) associando aos registradores de trabalho existentes no hardware (128 no total)

EEL7030 Microprocessadores

31/143

CISC: IA32

Que: Write into the uOP Queue

As uOPs so colocadas nas filas, onde permanecem at que os escalonadores estejam disponveis

EEL7030 Microprocessadores

32/143

CISC: IA32

Sch: Schedule Escrita nos escalonadores e verificao de dependncias. Procura dependncias a serem resolvidas

EEL7030 Microprocessadores

33/143

CISC: IA32

Disp: Dispatch

Envio das uOPs para a unidade de execuo apropriada

EEL7030 Microprocessadores

34/143

CISC: IA32

RF: Register File

Leitura dos registradores, que contm os operandos das operaes pendentes (operandos das ULAs, ...)

EEL7030 Microprocessadores

35/143

CISC: IA32

Ex: Execute

Executa as uOPs na unidade apropriada (recurso alocado)

EEL7030 Microprocessadores

36/143

CISC: IA32

Flgs: Flags

Clculo dos flags (zero, negativo, ...). Flags normalmente servem de entrada para instrues de desvio.

EEL7030 Microprocessadores

37/143

CISC: IA32

Br Ck: Branch Check

Esse estgio compara o resultado obtido (calculado) para uma operao de desvio, com a predio realizada originalmente

EEL7030 Microprocessadores

38/143

CISC: IA32

Drive: Atraso no barramento

Resultado da verificao do desvio (erro ou acerto na predio) informado para o incio do processo

EEL7030 Microprocessadores

39/143

CISC: IA32

EEL7030 Microprocessadores

40/143

MIPS: arquitetura interna

EEL7030 Microprocessadores

41/143

MIPS arquitetura interna


Instrues simples, todas de 32 bits Bastante estruturada, sem componentes desnecessrios Apenas trs formatos de instruo
R I J op op op rs rs rt rt rd shamt funct 16 bit address

26 bit address

Depende dos compiladores para alcanar desempenho Auxlio ao compilador sempre que possvel

EEL7030 Microprocessadores

42/143

MIPS arquitetura interna


Instrues:
bne $t4,$t5,Label beq $t4,$t5,Label j Label

Formatos:
I J op op rs rt 16 bit address

26 bit address

Endereos de desvio no so de 32 bits

EEL7030 Microprocessadores

43/143

MIPS arquitetura interna


MIPS operands Name 32 registers Example Comments $s0-$s7, $t0-$t9, $zero, Fast locations for data. In MIPS, data must be in registers to perform $a0-$a3, $v0-$v1, $gp, arithmetic. MIPS register $zero always equals 0. Register $at is $fp, $sp, $ra, $at reserved for the assembler to handle large constants. Memory[0],
Accessed only by data transfer instructions. MIPS uses byte addresses, so sequential words differ by 4. Memory holds data structures, such as arrays, and spilled registers, such as those saved on procedure calls.

30

memory Memory[4], ...,


Memory[4294967292]

words

Category
add

Instruction

MIPS assembly language Example Meaning add $s1, $s2, $s3 $s1 = $s2 + $s3 sub $s1, $s2, $s3 $s1 = $s2 - $s3 $s1 = $s2 + 100 $s1 = Memory[$s2 + 100] Memory[$s2 + 100] = $s1 $s1 = Memory[$s2 + 100] Memory[$s2 + 100] = $s1 $s1 = 100 * 2
16

Comments
Three operands; data in registers

Arithmetic

subtract

Three operands; data in registers

Data transfer

addi $s1, $s2, 100 lw $s1, 100($s2) load word sw $s1, 100($s2) store word lb $s1, 100($s2) load byte sb $s1, 100($s2) store byte load upper immediate lui $s1, 100
add immediate branch on equal

Used to add constants Word from memory to register Word from register to memory Byte from memory to register Byte from register to memory Loads constant in upper 16 bits

beq bne slt slti j jr jal

$s1, $s2, 25 $s1, $s2, 25 $s1, $s2, $s3

if ($s1 == $s2) go to PC + 4 + 100 if ($s1 != $s2) go to PC + 4 + 100 if ($s2 < $s3) $s1 = 1; else $s1 = 0 else $s1 = 0

Equal test; PC-relative branch

branch on not equal

Not equal test; PC-relative

Conditional branch

set on less than

Compare less than; for beq, bne

set less than immediate jump

$s1, $s2, 100 if ($s2 < 100) $s1 = 1; 2500 $ra 2500

Compare less than constant

Unconditional jump

jump register jump and link

Jump to target address go to 10000 For switch, procedure return go to $ra $ra = PC + 4; go to 10000 For procedure call

EEL7030 Microprocessadores

44/143

MIPS Bloco de dados (data path)

0 M u x 1

I F /I D

ID /E X

E X/ M E M

M E M /W B

Ad d 4 S h if t l e ft 2 Ins truc tio n R ea d re g i s t e r 1 A dd A dd res u lt

PC

A d d re s s In s tr u c t i o n m e m o ry

R e ad d at a 1 R ea d re g i s t e r 2 R e g i s t e rs R e a d W ri t e d at a 2 re g i s t e r W ri t e d a ta

Z e ro 0 M u x 1 A LU A LU re s u l t A d d re s s D a ta m e m o ry W r i te d at a R ea d d a ta 1 M u x 0

16

S i gn e x te n d

32

EEL7030 Microprocessadores

45/143

MIPS Forwarding e Hazard Detection Unit


Unidade de deteco de hazard: parada no pipeline, deixando um nop prosseguir
Hazard detection unit IF/IDW r ite ID/EX.MemRead ID/EX WB M u x

EX/MEM WB

Control 0

MEM/WB WB

IF/ID

EX

P C W r it e

In str uctio n

M u x Registers ALU M u x Data memory

PC

Instruction memory

M u x

IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRd ID/EX.RegisterRt

Rt
Rd Rs Rt

M u x Forwarding unit

EX/MEM.RegisterRd

MEM/WB.RegisterRd

EEL7030 Microprocessadores

46/143

MIPS - Flush
IF.Flush Hazard detection unit M u x M u x ID/EX WB Control 0 IF/ID M EX EX/MEM WB M MEM/WB WB

Shift left 2 M u x ALU M u x Data memory

Registers PC Instruction memory

M u x

Sign extend

M u x Forwarding unit

EEL7030 Microprocessadores

47/143

PIC: arquitetura interna

EEL7030 Microprocessadores

48/143

PIC arquitetura interna

Fabricante Microchip Arquitetura Harvard RISC Srie 16 possui 35 instrues Barramento de dados separados para memria de dados e memria de programa.

EEL7030 Microprocessadores

49/143

PIC arquitetura interna


Memria de programa Pilha para chamada de sub-rotinas Portas (I/O) Memria de dados Timers Serial sncrona Serial assncrona Conversor A/D

EEL7030 Microprocessadores

50/143

PIC arquitetura interna


Max 8 calls aninhados PC de 13 bits Programa
0x0000 a 0x1FFF 1k x 14bits

Dados

RAM: 0x0C a 0x4F EEPROM: 0x00 a 0x3F SFR x GPR


64 bytes 68 registradores (GPR)

4 bancos, cada um com SFR e GPR prprios


EEL7030 Microprocessadores

51/143

PIC arquitetura interna


Apenas 35 instrues

EEL7030 Microprocessadores

52/143

AVR: arquitetura interna

EEL7030 Microprocessadores

53/143

AVR arquitetura interna


Microcontrolador RISC Arquitetura Harvard Licena Atmel (http://www.atmel.com)

Projetado para atender aplicaes especficas


Operao com consumo bastante reduzido de energia 118 instrues

Uma instruo por ciclo para maioria das instrues (pipeline)


Operaes registrador-registrador Projetado para implementar solues single chip
EEL7030 Microprocessadores

54/143

AVR arquitetura interna

Core RISC com ~100 instrues Velocidades de clock modestas (4-16 MHz) Barramento de 8 bits e 32 registradores de uso geral de 8 bits Flash programvel in-circuit (~1000 ciclos) Pequena quantidade de EEPROM e SRAM Diversos perifricos embarcados (UART, SPI, ADC, PWM, WDT)
EEL7030 Microprocessadores

55/143

AVR arquitetura interna


Memria Flash Memory EEPROM Data Memory SRAM Data Memory General Purpose Registers (Accumulators) External data memory interface (64kB) MCU Clock Frequency Supply Voltage Sleep Modes Hardware Multiplier I/O Pins On Chip Oscillator Interrupts Interrupts, External pins Brown-out Detection Power-on Reset Fully Static Operation On-Chip Debug support via JTAG port IEEE 1149.1 (JTAG) Boundary Scan
EEL7030 Microprocessadores

128 kB 4096 B 4096 B 32 Sim 0 - 16 MHz 4.5 - 5.5 V 6 Sim 53 Sim 34 8 Sim Sim Sim Sim Sim
56/143

AVR arquitetura interna


Temporizadores / Contadores Timer/Counters (8-bit) Watchdog Timer with On-chip Oscillator Real Time Counter Timer/Counters (16-bit) Pulse Width Modulator Entrada / sada analgica Analog Comparator Analog-to-Digital Converter (10-bit) Analog Gain Stage Modos de programao In-System Programming via SPI Port High Voltage Parallel Programming (12V) Self-Programming via on-chip Boot Program In-System Programming via JTAG port Entrada / sada serial Full Duplex Serial Peripheral Interface (SPI) 2-wire Serial Interface (I2C compatible) Full Duplex USART
EEL7030 Microprocessadores

2 Sim Sim 2 6+2 ch Sim 8 ch 2 ch Sim Sim Sim Sim

Sim Sim 2
57/143

AVR ATMega 128 arquitetura interna

EEL7030 Microprocessadores

58/143

AVR ATMega 128 arquitetura interna

Pinagem: pinos compartilhados uso de latches e mux

EEL7030 Microprocessadores

59/143

AVR ATMega 128 arquitetura interna

Registradores: 32 registradores de 32 bits (r0 a r31) Os seis primeiros (r0 .. r5) podem ser utilizados como trs registradores de ndice de 16 bits (x, y e z)

EEL7030 Microprocessadores

60/143

AVR ATMega 128 arquitetura interna

Organizao da memria:
Espaos de endereamento separado para programas e dados. Endereamento at 8 Mbytes

EEL7030 Microprocessadores

61/143

Prxima aula Microcontroladores: arquitetura interna, aplicaes e limitaes


Arquitetura de um microcontrolador genrico Arquitetura de famlias de microcontroladores largamente utilizados Aplicaes de microcontroladores Estudo de caso de projeto com microcontroladores Limitaes para o uso de microcontroladores em projetos de sistemas digitais

EEL7030 Microprocessadores

62/143

Microcontroladores

EEL7030 Microprocessadores

63/143

Microcontroladores
Componentes bsicos de sistemas computacionais processados: CPU Memria de dados e programa Sistema de entrada/sada Microprocessadores so computadores de propsito geral So necessrios componentes perifricos, externos, para apoio execuo das aplicaes Microcontroladores so computadores em um nico chip

Os perifricos esto embarcados no mesmo chip da CPU Algumas caractersticas, tamanho e custo reduzidos, alto desempenho com baixo consumo de energia, uso eficiente de espao no PCB, baixo clock, endereamento bit-a-bit

EEL7030 Microprocessadores

64/143

Microcontroladores
Memria Cache

Memria

Componentes bsicos de sistemas embarcados:


CPU Memria de dados e programa Sistema de entrada/sada
EEL7030 Microprocessadores

65/143

Microcontroladores

Memria

Memria

MICROCONTROLADOR
Conversor A/D Conversor D/A

Microcontroladores so computadores em um nico chip


Os perifricos esto embarcados no mesmo chip da CPU Algumas caractersticas, tamanho e custo reduzidos, alto desempenho com baixo consumo de energia, uso eficiente de espao no PCB, baixo clock, endereamento bit-a-bit
EEL7030 Microprocessadores

66/143

Microcontroladores

Memria

MICROCONTROLADOR Sensores

Conversor A/D

Conversor D/A

Atuadores

Interface humana

Ferramentas diagnsitco

Sistemas auxiliares power, ...

Eletromecnicos (by-pass e segurana) Ambiente externo

EEL7030 Microprocessadores

67/143

Microcontroladores
MCU Microcontroller Unit
Composta por CPU e perifricos no mesmo encapsulamento

- Memria de Dados e Programa; Portas de Entrada e Sada (I/O); Temporizadores (Timers); EEPROM; Conversores AD/DA; USB.

EEL7030 Microprocessadores

68/143

Microcontroladores
MCU Microcontroller Unit
Composta por CPU e perifricos no mesmo encapsulamento

Registradores RAM Flash EEPROM Portas digitais Portas Analgicas Timers Gerador de relgio DMA

I/O

Perifricos

CPU

Memria

EEL7030 Microprocessadores

69/143

Microcontroladores Fluxo de dados

EEL7030 Microprocessadores

70/143

Microcontroladores

Diversidade de fabricantes e modelos LINHA PIC (Microchip) LINHA AVR (Atmel) LINHA 8051 (Philips, Dallas, Intel, Cygnal, Texas, TDK, Siemens ... ) Z8 Encore (Zilog) HC08 (Motorola) ...

Escolha do dispositivo Capacidade de processamento


8 bits, 16 bits, 32 bits Clock, 4MHz, 40Mhz, ...

Perifricos necessrios Capacidade de memria


Programa Dados

Outros fatores
Ferramentas disponveis Formato fsico Continuidade / Reaproveitamento de projeto

EEL7030 Microprocessadores

71/143

8051: arquitetura interna

EEL7030 Microprocessadores

72/143

8051 arquitetura interna


Caractersticas do 8051: 111 Instrues: - 1 ciclo 64 58% - 2 ciclos 45 40% - 4 ciclos 2 2% - 1 byte 49 44% - 2 bytes 46 41% - 3 bytes 16 15% 98% de 1 ou 2 ciclos velocidade

85% de 1 ou 2 bytes compacto


EEL7030 Microprocessadores

73/143

8051 arquitetura interna

5 Interrupes (2 externas, 2 dos timers/counters e 1 da porta serial)


EEL7030 Microprocessadores

74/143

8051 arquitetura interna


Arquitetura Harvard - 64 KB de Memria de Programa (PC=16 bits) - 64 KB de Memria de Dados

4 KB de ROM interna ativada pelo pino EA (External Access Enable): se EA=0 64 KB de programa externo se EA=1 4 KB de ROM interna e 60 KB de programa externo

EEL7030 Microprocessadores

75/143

8051 arquitetura interna

RAM interna

EEL7030 Microprocessadores

76/143

8051 arquitetura interna

Bancos de registradores para salvamento de contexto (ex. interrupes). Troca de contexto executando apenas uma instruo. Exemplo de uso dos bancos:

BK3 interrupo porta serial BK2 interrupo INT1 BK1 interrupo INT0 BK0 trabalho

EEL7030 Microprocessadores

77/143

8051 arquitetura interna

RAM interna com 256 bytes com nomes simblicos para acesso direto

128 bytes (dos 256) reservados para Registros de Funes Especiais (SFR).
8051 possui conjunto mnimo, outros 51 podem possuir mais SFRs

EEL7030 Microprocessadores

78/143

8051 arquitetura interna

Mapa da RAM interna

EEL7030 Microprocessadores

79/143

8051 arquitetura interna


Bit de uma das portas paralelas

EEL7030 Microprocessadores

80/143

Famlia 8051
Memria Reset

Sada porta paralela (LEDs)


Entrada porta paralela e INT

Cristal clock externo

Chip 8051

Comunicao serial

Single step

EEL7030 Microprocessadores

81/143

Fontes de Interrupo

IE - Interrupt Enable Register - Bit Addressable


7 EA 6 5 4 ES 3 ET1 2 EX1 1 ET0 0 EX0

A8H

sable all interrupts Serial interface interrupt enable bit


EEL7030 Microprocessadores

External interrupt 0 enable Timer 0 interrupt enable bit External interrupt 1 enable bit Timer 1 interrupt enable bit
82/143

Fontes de Interrupo
IE - Interrupt Enable Register - Bit Addressable
7 EA 6 5 4 ES 3 ET1 2 EX1 1 ET0 0 EX0

A8H

sable all interrupts Serial interface interrupt enable bit

External interrupt 0 enable Timer 0 interrupt enable bit bit External interrupt 1 enable bit Timer 1 interrupt enable

MOV IE,#10000101B;

habilita INT0 E INT1

EEL7030 Microprocessadores

83/143

Interrupes Externas

As interrupces externas INT0 e INT1 podem ser ativadas por nvel ou borda.

Depende dos bits IT0 e IT1 do registrador TCON.

Os flags que identificam ocorrncia destas interrupces externas so os flags IE0 e IE1 de TCON.

EEL7030 Microprocessadores

84/143

Temporizadores / Contadores Registradores TCON

MSB TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

LSB 88H

ITx - Interrupt control bit. 1 => borda de descida 0 => nvel lgico baixo

IEx - External Interrupt flag. Setado pelo hardware quando interrupo detectada. Apagada pelo software qdo salta para o tratador int.
EEL7030 Microprocessadores

85/143

Temporizadores / Contadores Registradores

TCON

MSB TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

LSB 88H

MOV A,TCON ORL A,#00000101B; habilita INTs por borda MOV TCON,A
EEL7030 Microprocessadores

86/143

Interrupes

IP - Interrupt Priority Register - Bit Addressable 6 5 4 3 2 1 0


PS PT1 PX1 PT0 PX0

B8H

Serial interface interrupt priority bit


EEL7030 Microprocessadores

External interrupt 0 priority Timer 0 interrupt priority bit External interrupt 1 priority bit Timer 1 interrupt priority bit
87/143

Interrupes

IP - Interrupt Priority Register - Bit Addressable 6 5 4 3 2 1 0


PS PT1 PX1 PT0 PX0

B8H

Serial interface interrupt priority bit

External interrupt 0 priority Timer 0 interrupt priority bit External interrupt 1 priority bit Timer 1 interrupt priority bit

MOV IP,#00000100B;

prioridade INT1 superior s demais


EEL7030 Microprocessadores

88/143

Faa um programa que aceite int0 (acionada por borda). Qdo a int0 for solicitada, escrever na porta P1, caractere por caractere, a cadeia de 16 caracteres: Microcontrolador.

EEL7030 Microprocessadores

89/143

reset ltint0 state

equ 00h equ 03h ; local tratador equ 20h ;PC=0 depois de reset

volta:

org reset jmp inicio org ltint0 jmp handler

cjne mov mov movc mov inc cjne jmp

@r0,#1,volta state,#0h a,r1 a,@a+dptr p1,a r1 r1,#16,volta $ state,#1h

inicio: mov ie,#10000001b ; habilita int mov tcon,#00000001b ; borda mov state,#0h ;inicializao mov r0,# state mov dptr,#tabela mov r1,#0

handler: mov reti

tabela: db 'Microcontrolador' end

EEL7030 Microprocessadores

90/143

PIC: arquitetura interna

EEL7030 Microprocessadores

91/143

PIC arquitetura interna

Fabricante Microchip Arquitetura Harvard RISC Srie 16 possui 35 instrues Barramento de dados separados para memria de dados e memria de programa.

EEL7030 Microprocessadores

92/143

PIC arquitetura interna


Memria de programa Pilha para chamada de sub-rotinas Portas (I/O) Memria de dados Timers Serial sncrona Serial assncrona Conversor A/D

EEL7030 Microprocessadores

93/143

PIC arquitetura interna


Max 8 calls aninhados PC de 13 bits Programa
0x0000 a 0x1FFF 1k x 14bits

Dados

RAM: 0x0C a 0x4F EEPROM: 0x00 a 0x3F SFR x GPR


64 bytes 68 registradores (GPR)

4 bancos, cada um com SFR e GPR prprios


EEL7030 Microprocessadores

94/143

PIC arquitetura interna


Apenas 35 instrues

EEL7030 Microprocessadores

95/143

AVR: arquitetura interna

EEL7030 Microprocessadores

96/143

AVR arquitetura interna


Microcontrolador RISC Arquitetura Harvard Licena Atmel (http://www.atmel.com)

Projetado para atender aplicaes especficas


Operao com consumo bastante reduzido de energia 118 instrues

Uma instruo por ciclo para maioria das instrues (pipeline)


Operaes registrador-registrador Projetado para implementar solues single chip
EEL7030 Microprocessadores

97/143

AVR arquitetura interna

Core RISC com ~100 instrues Velocidades de clock modestas (4-16 MHz) Barramento de 8 bits e 32 registradores de uso geral de 8 bits Flash programvel in-circuit (~1000 ciclos) Pequena quantidade de EEPROM e SRAM Diversos perifricos embarcados (UART, SPI, ADC, PWM, WDT)
EEL7030 Microprocessadores

98/143

AVR arquitetura interna


Memria Flash Memory EEPROM Data Memory SRAM Data Memory General Purpose Registers (Accumulators) External data memory interface (64kB) MCU Clock Frequency Supply Voltage Sleep Modes Hardware Multiplier I/O Pins On Chip Oscillator Interrupts Interrupts, External pins Brown-out Detection Power-on Reset Fully Static Operation On-Chip Debug support via JTAG port IEEE 1149.1 (JTAG) Boundary Scan
EEL7030 Microprocessadores

128 kB 4096 B 4096 B 32 Sim 0 - 16 MHz 4.5 - 5.5 V 6 Sim 53 Sim 34 8 Sim Sim Sim Sim Sim
99/143

AVR arquitetura interna


Temporizadores / Contadores Timer/Counters (8-bit) Watchdog Timer with On-chip Oscillator Real Time Counter Timer/Counters (16-bit) Pulse Width Modulator Entrada / sada analgica Analog Comparator Analog-to-Digital Converter (10-bit) Analog Gain Stage Modos de programao In-System Programming via SPI Port High Voltage Parallel Programming (12V) Self-Programming via on-chip Boot Program In-System Programming via JTAG port Entrada / sada serial Full Duplex Serial Peripheral Interface (SPI) 2-wire Serial Interface (I2C compatible) Full Duplex USART
EEL7030 Microprocessadores

2 Sim Sim 2 6+2 ch Sim 8 ch 2 ch Sim Sim Sim Sim

Sim Sim 2
100/143

AVR ATMega 128 arquitetura interna

EEL7030 Microprocessadores

101/143

AVR ATMega 128 arquitetura interna

Pinagem: pinos compartilhados uso de latches e mux

EEL7030 Microprocessadores

102/143

AVR ATMega 128 arquitetura interna

Registradores: 32 registradores de 32 bits (r0 a r31) Os seis primeiros (r0 .. r5) podem ser utilizados como trs registradores de ndice de 16 bits (x, y e z)

EEL7030 Microprocessadores

103/143

AVR ATMega 128 arquitetura interna

Organizao da memria:
Espaos de endereamento separado para programas e dados. Endereamento at 8 Mbytes

EEL7030 Microprocessadores

104/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

105/143

FPGA: aplicaes

EEL7030 Microprocessadores

106/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

107/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

108/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

109/143

Microcontroladores: aplicaes

Embarcados em:
Sistemas automotivos Avinicos Brinquedos Dispositivos mdicos Eletrodomsticos

Bilhes de unidades

EEL7030 Microprocessadores

110/143

Microcontroladores: aplicaes
Produtos de uso pessoal: Celulares, pagers, relgios,
gravadores portteis, calculadoras, cmeras fotogrficas Laptops: mouse, teclado, modem, fax, placa de som, carregador de bateria Domtica: tranca eletromagntica, despertador, termostato, ar condicionado, controle remoto de TV, secador de cabelo, aparelho de DVD, geladeira, lavadora de roupa/loua, forno de microondas

EEL7030 Microprocessadores

111/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

112/143

Microcontroladores: aplicaes

Esptula eletrnica

EEL7030 Microprocessadores

113/143

Microcontroladores: aplicaes

Esptula eletrnica

EEL7030 Microprocessadores

114/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

115/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

116/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

117/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

118/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

119/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

120/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

121/143

Microcontroladores: aplicaes

EEL7030 Microprocessadores

122/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Reunies com o cliente para levantamento de requisitos, funcionalidades, restries, prazos, ... Uso de ferramentas para modelagem da soluo proposta (ex. FSMs; fluxogramas; diagramas UML; entre outros) auxilia o entendimento no apenas da equipe de software/hardware, mas tambm a interface com o cliente

Requisitos Especificaes Restries

EEL7030 Microprocessadores

123/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Reunies com o cliente para levantamento de requisitos, funcionalidades, restries, prazos, ... Uso de ferramentas para modelagem da soluo proposta (ex. FSMs; fluxogramas; diagramas UML; entre outros) auxilia o entendimento no apenas da equipe de software/hardware, mas tambm a interface com o cliente Se disponvel, uso de simulador, cross-compiler e plataforma de protipao para desenvolvimento do software e primeiros contatos com o projeto de hardware

Requisitos Especificaes Restries

Desenvolvimento do software embarcado: Simulador, crosscompiler

Teste do software embarcado e idias para projeto do hardware: plataforma de prototipao com processador alvo
EEL7030 Microprocessadores

124/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes

Reunies com o cliente para levantamento de requisitos, funcionalidades, Requisitos restries, prazos, ... Uso de ferramentas para modelagem da soluo proposta (ex. FSMs; Especificaes fluxogramas; diagramas UML; entre outros) auxilia o entendimento no Restries apenas da equipe de software/hardware, mas tambm a interface com o cliente Se disponvel, uso de simulador, cross-compiler e plataforma de protipao para desenvolvimento do software e primeiros contatos com o projeto de hardware Busca e compra de componentes (procurement) Uso de ferramentas de CAD (ex. Orcad) para projeto do hardware. Projeto do PCB, roteamento, layout, planta baixa. Uso de simuladores de hardware para validao do circuito (ex. Spice)
EEL7030 Microprocessadores

125/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes

Requisitos Especificaes Restries


Para projetos simples, interessante uma prototipagem inicial do circuito em um proto-board, de forma a corrigir bugs de SW/HW a partir dos requisitos iniciais. O desenvolvimento das placas finais e soldagem possui um custo mais elevado em relao ao prottipo em proto-board.
EEL7030 Microprocessadores

126/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes

Requisitos Especificaes Restries

EEL7030 Microprocessadores

127/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Projetar o circuito de controle para gerncia das operaes de uma mquina de venda de refrigerantes.

Especificao: A mquina fornece dois tipos de refrigerantes, denominados MEET e ETIRPS. Estes esto disponveis para escolha pelo usurio a partir de duas teclas no painel com o nome dos refrigerantes. Ambos refrigerantes custam R$1,50 e existe na mquina uma fenda para inserir moedas com um sistema eletromecnico capaz de reconhecer moedas de R$1,00, R$0,50 e R$0,25, e capaz de devolver automaticamente qualquer outro tipo de moeda ou objeto no reconhecido. Alm disso, durante a compra, o usurio pode desistir da transao e apertar a tecla DEV que devolve as moedas inseridas at o momento. Somente aps acumular um crdito mnimo de R$1,50 o usurio pode obter um refrigerante. A devoluo de excesso de moedas automtica sempre que o valor inserido antes de retirar um refrigerante ultrapassar R$1,50. Uma terceira simplificadora consiste em ignorar a composio exata das moedas inseridas na mquina, atendo-se apenas ao montante total inserido. Link para a especificao completa.
EEL7030 Microprocessadores

128/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Soluo: Diagrama de blocos

Informaes fornecidas pelos sensores

Informaes enviadas para os atuadores (eletromecnicos

EEL7030 Microprocessadores

129/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Soluo: Tabela de estados

EEL7030 Microprocessadores

130/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Soluo: Tabela de estados

EEL7030 Microprocessadores

131/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Soluo: Representao grfica

Reset

EEL7030 Microprocessadores

132/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes

EEL7030 Microprocessadores

133/143

Estudo de caso: Controlador mquina refrigerantes

Link para a soluo completa

EEL7030 Microprocessadores

134/143

Estudo de caso: Controlador de uma mquina de


venda de refrigerantes
Microcontrolador Renesas: plataforma de prototipao Renesas foi criada por divises da Mitsubishi e Hitachi Microcontrolador da famlia M16C/26 M16C/26 MCU de 16 bits com CPU da srie M16C/60 Kit QSK26A conectado via USB (usado tambm como fonte)

EEL7030 Microprocessadores

135/143

Prxima tarefa: desenvolvimento de aplicao com smart-card I2C e cdigo de barras no microcontrolador Renesas

EEL7030 Microprocessadores

136/143

Microcontroladores: Limitaes

EEL7030 Microprocessadores

137/143

Limitaes
Limitao importante: velocidade de processamento No adequados para aplicaes com tempo de resposta abaixo de poucos microsegundos

Ambiente de desenvolvimento (compiladores, montadores, linkers,


bibliotecas, plataformas de software e hardware, ...) pode ser de uso complexo e custo elevado Tamanho dos programas e dados (recursos de memria escassos) Programas sequenciais

EEL7030 Microprocessadores

138/143

Limitaes
PIC Disponibilidade em encapsulamento DIP para uso direto em placas de prototipao Valores na ordem de US$1 a US$9

Limitao: Custo das ferramentas Compilador ~US$200; Debug ~US$150.

AVR Ferramentas gratuitas (gcc) IDE disponvel para Windows, Mac e Linux, incluindo debug AVR-Dragon da Atmel custa em torno de US$50 e pode ser utilizado para programao e depurao

Limitao: poucas famlias de dispositivos disponveis (pouca variedade) ao se


comparar com o PIC
EEL7030 Microprocessadores

139/143

Limitaes
Microcontrolador: Vantagens: - Mais verstil que CPLD, especialmente para aplicaes analgicas (A/D, D/A). - Facilidade para implementar algoritmos complexos e funes densas Desvantagens: - Temporizao difcil de ser determinada para aplicaes mais complexas (em C) - Normalmente, menos desempenho em tempo de execuo do que CPLD

CPLD: Vantagens: - Temporizao eficiente e precisa - Normalmente, melhor desempenho em tempo de execuo do que microcontroladores Desvantagens: - Limitao para aplicaes complexas e lgicas densas
EEL7030 Microprocessadores

140/143

Limitaes

Programa Exemplo: Loop


/* pulses pin PORTB<3> eight times */ pulse: movlw 0x08 movwf counter /* pulses pin PORTB<3> eight times */ void pulse() { int i; for (i=0; i<8; i++) { output_high(PIN_B3); output_low(PIN_B3); } return; }

pulse_lp0: bsf PORTB, 3 bcf PORTB, 3 decfsz counter, F goto pulse_lp0 return

Assembly
EEL7030 Microprocessadores

C
141/143

Limitaes

Compilador Ineficiente
/* pulses pin PORTB<3> eight times */ 0000: 0001: 0002: 0003: 0004: movlw movwf bsf bcf decfsz 0x8 0x20 0x6,0x3 0x6,0x3 0x20
/* pulses pin PORTB<3> eight times */
0005: 0006: 0007: 0008: 0009: 000A: 000B: 000C: 000D: 000E: 000F: 0010: 0011: 0012: 0013: CLRF MOVF SUBLW BTFSS GOTO BSF BCF BCF BSF BSF BCF BCF BCF INCF GOTO 21 21,W 07 03,0 014 03,5 06,3 03,5 06,3 03,5 06,3 03,5 06,3 21,F 006

Assembly escrito pelo desenvolvedor

Assembly gerado pelo compilador


EEL7030 Microprocessadores

142/143

Prxima aula Microprocessadores: arquitetura CISC e RISC


Arquitetura de um microprocessador CISC Arquitetura de um microprocessador RISC Estudo comparativo das arquiteturas RISC e CISC Estudo de caso de projeto com microprocessadores

EEL7030 Microprocessadores

143/143