ARQUITETURA Curso Técnico de Nível Médio Integrado – Eletrônica - 8o Período Disciplina de Microcontroladores 2 (EL08D) – 1º Sem @016 Professor Gabriel Kovalhuk Email: [email protected] Página pessoal: http://paginapessoal.utfpr.edu.br/kovalhuk EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Arquitetura Von-Neumann ● É a arquitetura tradicional utiliza o mesmo barramento para fazer a busca a instruções na memória de programa e para acessar (escrever ou ler) a memória de dados. ● Ciclo de execução do programa: (1)Busca instrução (OpCode – Código de operação); (2)Decodifica instrução; (3)Executa instrução; (4)Volta para o passo 1 buscando a instrução seguinte na memória EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Arquitetura Von-Neumann BARRAMENTO DE ENDEREÇOS MEMÓRIA (CONTÉM DADOS E CÓDIGO) CPU BARRAMENTO DE DADOS E CÓDIGO EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Arquitetura Harvard ●Possui barramentos e memória separados para dados e para programa, podendo ter inclusive tamanho de dados diferentes; ● A arquitetura Harvard permite a leituras da memória de código e a leitura/escrita da memória de dados simultaneamente; ● Mais rápido, mais caro (?), mais complexo (?); ● Como os dados e programas estão separados é possível que ambos sejam facilmente tratados em paralelo. EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Arquitetura Harvard MEMÓRIA DE PROGRAMA BARRAMENTO DE ENDEREÇOS DO CÓDIGO BARRAMENTO DE ENDEREÇOS DOS DADOS CPU BARRAMENTO DE CÓDIGO EL08D - MICROCONTROLADORES 2 MEMÓRIA DE DADOS BARRAMENTO DE DADOS 2016 – Gabriel Kovalhuk ARQUITETURA Conjunto de Instruções CISC ● CISC : Complex Instruction Set Computer ● Conjunto de instruções ampliado, ou seja, a CPU é capaz de executar um grande número de instruções (ex.: microcontrolador 8051, da Intel, com 256 instruções); ● As instruções não possuem uma forma padronizada; ● É geralmente associada a computadores com arquitetura von-Neumann. EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Conjunto de Instruções RISC ● RISC : Reduced Instruction Set Computer ● Conjunto de instruções reduzido (ex.: família PIC, da Microchip, com 35 instruções, e família MSP430, da Texas, com 24 instruções emuladas e 27 instruções físicas); ● A forma das instruções são padronizadas; ● É geralmente associada a computadores com arquitetura Harvard EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA Arquitetura do MSP430 EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA DO MSP430 Principais Características ● CPU RISC de 16bits, com sistema de clock flexível; ● Sistema de clock com até quatro fontes de clock; ● Arquitetura von-Neumann típica, com um barramento de dados (MDB) e um barramento de endereços (MAB); ● Periféricos mapeados em memória; ● Possui periféricos digitais e analógicos; ● Núcleo compacto, resultando em baixo consumo de energia e baixo custo; ● Otimizado para linguagens de alto-nível; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA DO MSP430 Principais Características ● Possui apenas 27 instruções físicas e 24 emuladas; ● Conjunto de instruções ortogonais, onde qualquer modo de endereçamento pode ser usado para qualquer instrução, facilitando a tarefa dos compiladores; ● Grande quantidade de periféricos, que vão desde timers e conversores A/D a controladores de LCD; ● Interface JTAG, facilitando a programação e depuração do firmware; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA DO MSP430 Principais Características ● Baixa tensão de operação: funcionam com tensões entre 1,8v e 3,6v; ● Baixo consumo: ● cerca de 230uA quando alimentado com 2,2v e com clock de 1MHz; ● ● 0,5uA no modo standby; ● 0,1uA no modo desligado (apenas mantém os dados da ● memória RAM) ; Possui 5 modos de economia de energia; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk ARQUITETURA DO MSP430G2553 Arquitetura da subfamília MSP430G2x53 Não disponível no MSP430G2553 ● Fonte: MSP430G2x53 Datasheet (SLAS735J), Texas Instruments. EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk CPU ● CPU ● Arquitetura von-Neumann com palavra de 16 bits; ● Possui 16 registradores internos de 16 bits (R0 a R15), sendo 4 específicos e 12 de uso geral; ● Qualquer um dos 16 registradores pode ser usado como acumulador/destino a qualquer instante; ● Os registradores são mapeados em memória, nos endereços 0h a Fh; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk CPU ● Registradores: Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk CPU ● Registradores: ● O registrador R0 é o contador de programa (PC): ● aponta para a próxima instrução a ser lida da memória; ● 15 pode endereçar até 64kBytes de memória; 14 13 12 11 PROGRAM COUNTER (PC) 10 7 6 9 8 5 Program Counter Bits 15 to 1 EL08D - MICROCONTROLADORES 2 4 3 2 1 0 0 2016 – Gabriel Kovalhuk CPU ● Registradores: ● O registrador R1 é o apontador de pilha (SP): ● indica o topo da pilha; ● a cada operação de empilhamento o SP é decrementado de 2 ● A cada operação de desempilhamento o SP é incrementado de 2; 15 14 13 12 11 STACK POINTER (SP) 10 7 6 9 8 5 Stack Pointer Bits 15 to 1 EL08D - MICROCONTROLADORES 2 4 3 2 1 0 0 2016 – Gabriel Kovalhuk CPU ● Registradores: ● O registrador R2 é dividido em duas partes: ● os 9 bits menos significativos são usados para indicar os estados e para controle da CPU (SR – Status Register); ● os 7 bits mais significativos são usados como gerador de constantes, em conjunto com o registrador R3; 15 14 13 12 11 STATUS REGISTER (SR) 10 7 6 9 8 5 Reserved RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 V SCG1 SCG0 RW-0 RW-0 RW-0 EL08D - MICROCONTROLADORES 2 OS C OFF RW-0 4 3 2 1 0 CPU OFF GI E N Z C RW-0 RW-0 RW-0 RW-0 RW-0 2016 – Gabriel Kovalhuk CPU ● Bits de estado e controle do Registrador R2: ● V (bit 8): indica que uma operação com valores sinalizados ultrapassou o limite de representação da variável; ● SCG1 (bit 7) e SCG0 (bit 6): controle do gerador de clock interno; ● OSCOFF (bit 5): controla o oscilador (de clock) LFXT1 (ativo ou inativo); ● CPUOFF (bit 4): controla a CPU (ativo ou inativo); EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk CPU ● Bits de estado e controle do Registrador R2: ● GIE (bit 3): habilita ou desabilita as interrupções mascaráveis; ● N (bit 2): indica um resultado negativo em uma operação; ● Z (bit 1): indica que a última operação gerou um resultado nulo (igual a zero); ● C (bit 0): indica que a última operação gerou um carry; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk CPU ● Os registradores R4 a R15 são registradores de propósito geral (chamados de GPR) e podem ser usados conforme a escolha do programador; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória ● Mapa de Memória ● O espaço de memória, de 64kBytes, é compartilhado entre memória ROM (FLASH), memória RAM, registradores da CPU e periféricos; ● Nem todos os endereços dos 64kBytes são usados, mas as funções estão sempre na mesma região; ● Alguns dispositivos possuem um espaço de memória de 128kBytes; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória ● Mapa de Memória Disponível apenas nos dispositivos com mais de 64 kbytes Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; 2016 – Gabriel Kovalhuk EL08D - MICROCONTROLADORES 2 Mapa de Memória ● Memória ROM (Flash): ● O início da memória ROM depende da quantidade de memória disponível no dispositivo; ● O fim da memória ROM é sempre em 0xFFFF; ● Pode ser usado tanto para programa como para dados; ● O vetor de interrupções está no topo desta área, ocupando as últimas 16 words; ● Dispositivos com mais de 64kBytes de memória possuem uma região de memória ROM (flash) acima do vetor de interrupções; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória ● Memória RAM: ● O início da memória RAM é sempre no endereço 0x0200; ● O fim da memória RAM depende da quantidade de memória disponível no dispositivo e cresce em direção ao início da memória flash; ● Pode ser usado tanto para programa como para dados; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória Periféricos: ● São mapeados em memória; ● Periféricos de 16 bits ocupam a faixa de 0x0100 a 0x01FF; ● Periféricos de 8 bits ocupam a faixa de 0x0010 a 0x00FF; Registradores de Funções Especiais (SFR): ● Ocupam a parte mais baixa da memória (de 0x0000 a 0x000F); EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória ● Organização da Memória ● Bytes são alocados tanto em endereços pares como em endereços ímpares; ● Words são alocadas sempre em endereços pares, com a parte menos significativa armazenada no endereço par e a parte mais significativa armazenada no endereço ímpar imediatamente acima; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Mapa de Memória ● Organização da Memória Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk SISTEMA DE CLOCK DO MSP430G2553 Sistema de Clock do MSP430G2553 BCS+ (Basic Clock Sistem Plus) EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) Sistema de Clock (BCS+) ● BCS = Basic Clock Module; ● Projetado para permitir o desenvolvimento de sistemas de baixo custo e baixo consumo de energia; ● Gera três sinais de clock internos: ● Permite uma melhor relação entre performance e consumo de energia; ● Permite selecionar qual sinal de clock será usado com qual periférico; ● Possui até quatro fontes de clock; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: ● LFXT1CLK: oscilador de clock de baixa e alta frequência. Pode usar tanto cristais, ressonadores ou fontes externas de 32768Hz quanto da ordem de MHz (0,4 a 16 MHz); ● XT2CLK: oscilador opcional de alta frequência. Pode usar cristais, ressonadores ou fontes externas da ordem de MHz (0,4 a 16 MHz). Não está disponível no MSP430G2553; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: ● ● DCOCLK: oscilador interno digitalmente controlado: ● Permite ajustar a sua frequência em até 16MHz; ● O MSP430G2553 vem pré-ajustado em 1,126MHz; VLOCLK: oscilador interno de muito baixo consumo e muito baixa frequência, 12KHz; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sinais de clock: ● MCLK (Master Clock): clock principal: ● É usado pela CPU; ● Pode ser selecionado de qualquer uma das fontes de clock; ● ● Sua frequência pode ser dividida de 1, 2, 4 ou 8 SMCLK (sub-main clock): clock “subprincipal”: ● Possui as mesmas características do clock principal, mas é destinado aos periféricos; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sinais de clock: ● ACLK (Auxiliaty Clock): clock auxiliar: ● É destinado aos periféricos; ● Pode ser selecionado das fontes de clock LFXT1CLK ou VLOCLK; ● Sua frequência pode ser dividida de 1, 2, 4 ou 8 EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sistema de clock: Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: DCO Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: LFXT1CLK No MSP430G2553 não é possível usar com alta frequência Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: XT2CLK Não disponível no MSP430G2553 Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Fontes de clock: VLOCLK Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sinais de clock: Bits SELMx selecionam qual será a fonte de clock Bits DIVMx selecionam a divisão da frequência MCLK Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sinais de clock: Bits SELSx selecionam qual será a fonte de clock Bits DIVSx selecionam a divisão da frequência SMCLK Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sinais de clock: ACLK Bits DIVAx selecionam a divisão da frequência selecionam qual será a fonte de clock Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) ● Sistema de clock: ● Depois do reset, os sinais MCLK e SMCLK vem do DCOCLK, com uma frequência de ~1,1 MHz e o ACLK vem do LFXT1CLK no modo de baixa frequência; ● Os bits SCG0, SCG1, OSCOFF e CPUOFF, do registrador de status, controlam a habilitação dos sinais de clock do BCS+; ● Os registradores DCOCTL, BCSCTL1, BCSCTL2 e BCSCTL3 configuram o BCS+, inclusive a frequência de operação do DCO e ativação dos osciladores; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) Registradores do Sistema de clock: DCOCTL, DCO Control Register 7 6 5 4 3 DCOx RW-0 ● DCOx Bits 7-5 ● MODx Bits 4-0 RW-1 2 1 0 RW-0 RW-0 MODx RW-1 RW-0 RW-0 RW-0 DCO Frequency Select. Modulator Selection EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) Registradores do Sistema de clock: BCSCTL 1, Basic Clock System Control Register 1 7 6 XT2 OFF XTS RW-0 RW-1 5 4 DIVAx RW-1 RW-0 3 2 1 0 RSELx RW-0 RW-0 RW-0 RW-0 ● XT2OFF Bits 7 Ativa/Desativa o oscilador XT2. ● XTS Bits 6 Define o modo do oscilador XT1. ● DIVAx Bits 5–4 Define o fator de divisão do sinal ACLK ● RSELx Bits 3 - 0 Seleciona uma frequência numa faixa de 6 frequências diferentes EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) Registradores do Sistema de clock: ● Valores predefinidos do DCO: ● #define CAL_DCO_16MHZ (0x0000u) /* Index for DCOCTL Calibration Data for 16MHz */ ● #define CAL_BC1_16MHZ (0x0001u) /* Index for BCSCTL1 Calibration Data for 16MHz */ ● #define CAL_DCO_12MHZ (0x0002u) /* Index for DCOCTL Calibration Data for 12MHz */ ● #define CAL_BC1_12MHZ (0x0003u) /* Index for BCSCTL1 Calibration Data for 12MHz */ ● #define CAL_DCO_8MHZ (0x0004u) /* Index for DCOCTL Calibration Data for 8MHz */ ● #define CAL_BC1_8MHZ (0x0005u) /* Index for BCSCTL1 Calibration Data for 8MHz */ ● #define CAL_DCO_1MHZ (0x0006u) /* Index for DCOCTL Calibration Data for 1MHz */ ● #define CAL_BC1_1MHZ (0x0007u) /* Index for BCSCTL1 Calibration Data for 1MHz */ EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Sistema de Clock (BCS+) Registradores do Sistema de clock: ● Comando em C: BCSCTL1 = CAL_BC1_1MHZ; DCOCTL = CAL_DCO_1MHZ; EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk Referência Bibliográfica ● ● MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013; MSP430G2x53 Datasheet (SLAS735J), Texas Instruments, 2011/2013. EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk