View
218
Download
0
Category
Preview:
Citation preview
UNIVERSIDADE FEDERAL DE SANTA CATARINACENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICACurso de Ciências da Computação
SEMINÁRIO ASSEMBLY:
Arquitetura PIC
DOUGLAS DAL POZZO
DIEGO VITTI
Florianópolis – Santa Catarina Fevereiro – 2007
UNIVERSIDADE FEDERAL DE SANTA CATARINACENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICACurso de Ciências da Computação
SEMINÁRIO ASSEMBLY:
Arquitetura PIC
DOUGLAS DAL POZZO
DIEGO VITTI
Florianópolis – Santa CatarinaFevereiro – 2007
Este trabalho destina-se a cumprir requisito de avaliação da disciplina INE5309 – Programação de sistemas, turma 0432 de 2006.2 ministrada pelo professor Dr. Antônio Augusto Fröhlich.
HistóricoOs micro-controladores PIC originaram-se em 1975 a partir do projeto de um
processador de 16 bits da General Instrument's Microelectronics Division. Esse
processador, denominado CP1600, apresentava baixa performance de I/O e então essa
mesma companhia desenvolveu o primeiro micro-controlador PIC (PIC1650) para ser
usado em conjunto com o processador CP1600, aumentando a performance desse
processador com a passagem do controle de tarefas de I/O para o micro-controlador
PIC.
Em 1985 a General Instrument's vendeu seu setor de microeletrônica. O novo
fabricante desativou quase todos os projetos que estavam então ultrapassados. No
entanto, os micro-controladores PIC foram renovados e continuaram a evoluir e hoje, a
Microchip Technology, atual fabricante dos micro-controladores PIC, oferece uma
ampla variedade de modelos.
O Que São Micro-controladoresMicro-controlador é um componente cujo núcleo possui os mesmos blocos funcionais
de um microprocessador. No entanto, sua aplicação é um pouco mais geral. Para isso,
no mesmo chip são embutidos interfaces de comunicação com o mundo externo. Nesse
sentido, um micro-controlador é um sistema completo, com sistema de memória,
sistema de entrada e saída, tudo isso em um único chip.
Caracterização da Arquitetura de Micro-controladores PICA arquitetura PIC possui uma família de micro-controladores de 12, 14 e 16 bits. É uma
arquitetura RISC baseada em outra arquitetura denominada arquitetura Harvard.
A arquitetura Harvard surgiu a partir da necessidade de melhorar o desempenho dos
micro-controladores. Para isso, ela define o uso de duas memórias separadas: uma
memória de dados e outra memória de programa (instruções). Essas duas memórias são
conectadas por barramentos distintos e isso permite o uso de diferentes tamanhos de
palavras para dados e instruções.
Diagrama de blocos da arquitetura Harvard e da arquitetura von-Neumann. A arquitetura Harvard possui memórias para dados e instruções separadas o que possibilita diferentes tamanhos de barramentos. Isso permite, no caso dos PICs, que todas as instruções ocupem uma única word de 14 bits, por exemplo, enquanto os dados ocupem somente 8 bits.
Por pertencer a arquitetura RISC, os micro-controladores PIC apresentam instruções
simples. Isso implica em maior código para a programação de funções mais avançadas.
Em geral esses micro-controladores apresentam um conjunto entre 30 e 40 instruções.
Algumas aplicações dos Micro-controladores PIC
Os micro-controladores possuem larga aplicação em dispositivos eletrônicos que
requerem algum tipo de controle digital. Máquinas de lavar roupas, microondas,
telefones, ar-condicionado são alguns exemplos. Isso acontece pelas suas características
como simplicidade, facilidade de programação, baixo preço.
Diagrama de blocos do PIC16F84
Análise comparativa: arquitetura PIC vs. arquitetura MIPS
Para fins de comparação da arquitetura PIC com a arquitetura MIPS será utilizado o
micro-controlador PIC16F84 e o processador MIPS-RS2000. Cada implementação
específica de cada uma dessas arquiteturas possuem pequenas mudanças que não irá
interferir de modo considerável nessa comparação.
Suporte a procedimentos
1. Parâmetros são carregados nos registradores de passagem de parâmetros
CALL <endereço do início do procedimento>
1. Endereço de retorno (PC + 1) é salvo no topo da pilha.2. Endereço do início do procedimento é carregado em PC.
...execução
...resultado é colocado em um endereço para retorno
...
RETURN
1. O elemento do topo da pilha é retirado e carregado em no PC
1. Parâmetros são carregados nos registradores de passagem de parâmetros
jal <endereço do início do procedimento>
1. Endereço de retorno (PC + 1) é salvo em $ra.2. Endereço do início do procedimento é carregado em PC.
...execução
...resultado é colocado em registrador de retorno
...
jr $ra
1. O endereço armazenado em $ra é carregado em no PC
ArquiteturaPIC MIPS
RISC – HarvardUm caminho de dados de 14 bits para instruções
Um caminho de dados de 8 bits para dados
RISC – Von NeumannUm único caminho de dados de 32 bits para
dados e instruções.
Número de instruçõesPIC MIPS-32
35 instruções65 instruções
(contém instruções para operações em ponto flutuante)
Modos de endereçamentoPIC MIPS-32
3 modos de endereçamentoEndereçamento direto
Endereçamento indiretoEndereçamento relativo
5 modos de endereçamento:- endereçamento em registrador
- endereçamento de base ou deslocamento- endereçamento imediato
- endereçamento relativo ao PC- endereçamento pseudo-indireto
Registradores / memóriaPIC MIPS-32
12 registradores 32 registradores de uso geralmemória acessada via instruções de
transferência de dados
Organização da Memória
A memória do micro-controlador PIC16F84 é dividida em 2 blocos: memória de
programa e memória de dados. Pela arquitetura Harvard, cada memória tem o seu
próprio barramento o que possibilita que ambas sejam acessadas dentro do mesmo ciclo
do relógio.
A memória de dados ainda pode ser dividida em 2 blocos: General Purpouse RAM
(GPR) e Special Function Registers (SFR). A memória denominada SFR é utilizada
para o controle do dispositivo. A memória GPR é usada para armazenamento das
variáveis e constantes do programa. Esta memória também contém a memória de dados
EEPROM (Electronically Erasable Programmable Read-Only Memory ) que mantém
seu estado mesmo quando o dispositivo estiver desligado e é acessada indiretamente
através de registradores de uso específico.
Organização da Memória de Dados
A memória de dados é dividida em dois blocos. O primeiro é a área de registro
de função especial (SFR) , enquanto o segundo é a área do registro de propósito
geral(GPR).
O SFR controla a operação do dispositivo.
Blocos de memória de dados são dispostos para ambos, a área de SFR e a área
de GPR. A área de GPR é alocada para deixar mais que 116 bytes de RAM de
propósito geral. As áreas alocadas do SFR são para os registradores que controlam as
funções periféricas. Alocações requerem o uso do controle para seleção do bank. Esses
controles são localizados no registro de STATUS.
Figura abaixo mostra o mapa de organização da memória de dados.
Instruções MOVWF e MOVF podem mudar valores do registro W para qualquer
local no arquivo de registro (“FF”), e vice-versa.
A memória de dados pode ser acessada diretamente usando o endereço absoluto
de cada arquivo do registro ou indiretamente através do FILE SELECT
REGISTER(FSR). Endereçamento indireto usa o valor presente do RPO bit para acesso
nas áreas alocadas da memória de dados
ARQUIVOS DO REGISTRO DE PROPOSITO GERAL
Cada registro de propósito geral (GPR) tem 8 bits de tamanho e é acessado
diretamente ou indiretamente pelo FSR( seção 2.5).
Os endereços do GPR em Bank 1 são mapeados para endereços em Bank 0.
como exemplo, o local de endereço 0Ch ou 8Ch vão acessar o mesmo GPR.
REGISTROS DE FUNÇÕES ESPCECIAIS
O registro de função especial é usado pelo CPU e funções periféricas para
controlar a operação do dispositivo. Esses registros são de RAM estática.
Os registros de funções especiais podem ser classificados em duas classes, o
núcleo e periférico.
STATUS REGISTER
O registro de STATUS contém a posição aritmética da ALU, a posição de
RESET e a seleção de BANK para a memória de dados.
O registro de STATUS pode ser o destino para qualquer instrução. Se o registro
de STATUS é a destino para uma instrução que afeta o Z, DC ou bits de C, então o
write para esses três bits é desabilitado.
Esses bits são programados ou zerados de acordo com a lógica do dispositivo.
Alem disso, os TO E PD bits não são writable. Portanto o resultado de uma
instrução com o registro de STATUS como destino pode ser diferente do que se
esperava.
Por exemplo, CLRF STATUS, vai limpar os três bits de cima e colocar o Z bit.
Isso deixa o registro de STATUS como ooou u1uu ( onde u = não mudado).
Só as instruções de BCF, BSF, SWAPF E MOVWF devem ser usados para
alterar o registro de STATUS, porque essas instruções não afetam qualquer bit de
STATUS.
PCL E PCLATH
O contador do programa especifica os endereços da instrução para localizar a
execução. O PC é 13bits de tamanho, o byte menor é chamado do registro de PCL. Esse
registro pode ser lido e escrito. O byte maior é chamado do registro de PCH. Esse
registro contem o PC<12;8> BITS.
STACK
A pilha contém o endereço de retorno da execução
A área de dados da pilha não faz parte do programa e o ponteiro da pilha não
pode ser lido ou escrito. O PC é deslocado na pilha quando uma instrução de chamada
é executada. A pilha é deslocada no evento de RETURN, TETLW ou em uma
execução de instrução de RETFIE.
Depois de a pilha ter sido deslocada oito vezes, o nono deslocamento
sobrescrever o valor que foi armazenado no primeiro deslocamento. O décimo
deslocamento sobrescrever o segundo deslocamento e assim por diante.
Conjunto de Instruções
As instruções da família PIC16CXX são formadas por words de 14 bits
divididas em um OPCODE que identifica a instrução e um ou mais operandos sobre os
quais a instrução irá operar. As instruções são classificadas em 3 tipos:
Byte-Oriented:
Para as instruções orientadas a bytes, f representa um file register e 'd' representa
o endereço de destino. O file register especifica qual registrador será usado pela
instrução.
Mnemonic, Operands Description Cycles 14-Bit Opcode StatusMSb LSb Affected Notes
BYTE-ORIENTED FILE REGISTER OPERATIONSADDWF f, d Add W and f 1 0 0 0111 dfff ffff C,DC,Z 1,2ANDWF f, d AND W with f 1 0 0 0101 dfff ffff Z 1,2CLRF f Clear f 1 0 0 0001 lfff ffff Z 2CLRW - Clear W 1 0 0 0001 0xxx xxxx Z COMF f, d Complement f 1 0 0 1001 dfff ffff Z 1,2DECF f, d Decrement f 1 0 0 0011 dfff ffff Z 1,2
DECFSZ f, d Decrement f, Skip if 0 1 (2) 0 0 1011 dfff ffff 1,2,3INCF f, d Increment f 1 0 0 1010 dfff ffff Z 1,2INCFSZ f, d Increment f, Skip if 0 1 (2) 0 0 1111 dfff ffff 1,2,3IORWF f, d Inclusive OR W with f 1 0 0 0100 dfff ffff Z 1,2MOVF f, d Move f 1 0 0 1000 dfff ffff Z 1,2MOVWF f Move W to f 1 0 0 0000 lfff ffff
NOP - No Operation 10 0 0000 0xx0 0000
RLF f, d Rotate Left f through Carry 1 0 0 1101 dfff ffff C 1,2RRF f, d Rotate Right f through Carry 1 0 0 1100 dfff ffff C 1,2SUBWF f, d Subtract W from f 1 0 0 0010 dfff ffff C,DC,Z 1,2SWAPF f, d Swap nibbles in f 1 0 0 1110 dfff ffff 1,2XORWF f, d Exclusive OR W with f 1 0 0 0110 dfff ffff Z 1,2
Bit-oriented:
Para as instruções orientadas a bit, 'b' representa a posição de um bit de um
campo do file register.
Mnemonic, Operands Description Cycles 14-Bit Opcode StatusMSb LSb Affected Notes
BIT-ORIENTED FILE REGISTER OPERATIONSBCF f, b Bit Clear f 1 0 1 00bb bfff ffff 1,2BSF f, b Bit Set f 1 0 1 01bb bfff ffff 1,2BTFSC f, b Bit Test f, Skip if Clear 1 (2) 0 1 10bb bfff ffff 3BTFSS f, b Bit Test f, Skip if Set 1 (2) 0 1 11bb bfff ffff 3
Literal and Control Instructions:
Mnemonic, Operands Description Cycles 14-Bit Opcode StatusMSb LSb Affected Notes
BIT-ORIENTED FILE REGISTER OPERATIONSADDLW k Add literal and W 1 1 1 111x kkkk kkkk C,DC,Z ANDLW k AND literal with W 1 1 1 1001 kkkk kkkk Z CALL k Call subroutine 2 1 0 0kkk kkkk kkkk CLRWDT - Clear Watchdog Timer 1 0 0 0000 0110 0100 TO,PD GOTO k Go to address 2 1 0 1kkk kkkk kkkk IORLW k Inclusive OR literal with W 1 1 1 1000 kkkk kkkk Z MOVLW k Move literal to W 1 1 1 00xx kkkk kkkk RETFIE - Return from interrupt 2 0 0 0000 0000 1001 RETLW k Return with literal in W 2 1 1 01xx kkkk kkkk RETURN - Return from Subroutine 2 0 0 0000 0000 1000 SLEEP - Go into standby mode 1 0 0 0000 0110 0011 TO,PD SUBLW k Subtract W from literal 1 1 1 110x kkkk kkkk C,DC,Z XORLW k Exclusive OR literal with W 1 1 1 1010 kkkk kkkk Z
Tabela : Descrição dos operandos das instruções.
O Algoritmo de Multiplicação
MULTCLRF RESULTADO ; clear file RESULTADO
MULT LOOP ; endereço simbólico do inicio da subrotinaMOVF TEMPX,W ; mover o conteúdo do endereço TEMPX para WBTFSC TEMPY,0 ; Bit test TEMPY, skip if 1th bit is clear ADDWF RESULTADO ; RESULT = W + fBCF STATUS,C ; bit clear STATUS, C = clear the carry flagRRF TEMPY,F ; rotate right file BCF STATUS,C ; bit clear STATUSRLF TEMPX,F ; rotate left file and store itself MOVF TEMPY,F ; mover o conteúdo do endereço TEMPY para WBTFSS STATUS,Z ; bit test, skip if clear GOTO MULTRETURN
Execução do algoritmoMOVF x,WMOVWF TEMPXMOVF y,WMOVWF TEMPYCALL MULTMOVF RESULTADO,WMOVWF z
Recommended