Curso Técnico de Nível Médio Integrado Eletrônica - 8o Período Disciplina de Microcontroladores 2 (EL08D) Professor Gabriel Kovalhuk Email: kovalhuk@utfpr.edu.br Página pessoal: http://paginapessoal.utfpr.edu.br/kovalhuk
ARQUITETURA DE PROCESSADORES
Existem basicamente duas arquiteturas diferentes para microprocessadores/ microcontroladores: Von-Neumann Harvard
Arquitetura Von-Neumann É a arquitetura tradicional, utiliza o mesmo espaço de memória para programas e para dados (faz acesso ao programa e aos dados pelos mesmos ). 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
Arquitetura Von-Neumann Processador Barramento de Endereços Barramento de Dados Memória (contém dados e código)
Arquitetura Harvard Possui conjunto de memória separados para dados e para programa, podendo inclusive terem tamanhos de dados diferentes; A arquitetura Harvard permite a leituras da memória de código e a leitura/escrita da memória de dados simultâneamente; Mais rápido, mais caro, mais complexo (?); Como os dados e programas estão separados é possível que ambos sejam facilmente tratados em paralelo.
Arquitetura Harvard Barram. de Endereços Barram. de Endereços Memória de programa Processador Memória de dados Barram. de Código Barram. de Dados
CONJUNTOS DE INSTRUÇÕES
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.
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;
MICROCONTROLADOR MSP430
Principais Características CPU RISC de 16bits; 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;
Principais Características Possui apenas 27 instruções físicas e mais 24 instruções 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;
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;
Arquitetura (MSP430G2x53) Não disponível no MSP430G2553 Fonte: MSP430G2x53 Datasheet (SLAS735J), Texas Instruments.
CPU Arquitetura von-neumann com palavra de 16 bits; 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; São mapeados em memória, sendo localizados nos endereços mais baixos (0x0000 a 0x000F);
CPU O registrador R0 é o contador de programa (PC) e aponta para a próxima instrução a ser lida da memória, pode endereçar até 64kBytes de memória; O registrador R1 é o apontador de pilha (SP), indica o topo da pilha. A cada operação de empilhamento o SP é decrementado de 2 e a cada operação de desempilhamento o SP é incrementado de 2;
CPU O registrador R2 é dividido em duas partes: os 9 bits menos significativos são usados para indicar os estados da CPU (registrador de flags ou registrador de estado); os 7 bits mais significativos como gerador de constantes para as instruções emuladas;
CPU Registrador de estados (SR) possui os bits de estados e controle da CPU: 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);
CPU Registrador de estados (SR) continuação: 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;
CPU Parte do registrador R2 e o registrador R3 são usados como geradores de constantes usadas na emulação de diversas instruções da CPU; Os registradores R4 a R14 são registradores de propósito geral (chamados de GPR) e podem ser usados conforme a escolha do programador;
Fonte: MSP430x2xx Family User's Guide (slau144), Texas Instruments
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;
Mapa de Memória Não disponível no MSP430G2553 Fonte: MSP430x2xx Family User's Guide (slau144), Texas Instruments
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;
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;
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);
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;
Organização da Memória Fonte: MSP430x2xx Family User's Guide (slau144), Texas Instruments
Referências Bibliográficas MSP430x2xx Family User's Guide (documento SLAU144J no site da Texas Instruments); Datasheet do MSP430G2553 e do MSP430G2452 (site da Texas Instruments);