Parte 2 PIC® - UFSJ
-
Upload
khangminh22 -
Category
Documents
-
view
3 -
download
0
Transcript of Parte 2 PIC® - UFSJ
25/04/2017
1
125/04/2017
Parte 2PIC
225/04/2017
1. DEFINIÇÃO2. MCU’S DE 8 BITS3. MCU’S DE 16 E DE 32 BITS4. PIC16F877-20/P5. FILE REGISTERS6. PROGRAM MEMORY7. ULA
DEFINIÇÃO1
DEFINIÇÃO
325/04/2017
DEFINIÇÃO1
425/04/2017
• Ideal para sistemas embarcados (embedded systems).• Possui uma unidade de microprocessamento, como um P.• Possui periféricos específicos não encontrados em um P.
MCU
DEFINIÇÃO1
525/04/2017
• MCU Possui periféricos não essenciais aoprocessamento, como:• Memória para programa• Memória para dados permanentes• Memória para dados temporários• Oscilador• Contador• Temporizador• Comparador• Conversor A/D• Conversor série/paralelo e paralelo/série• PWM
Diferenças entre P e MCUDEFINIÇÃO1
625/04/2017
• PIC – Programmable Interface Controller.• Nome oficial: PICmicro®.• Comercializado pela Microchip Technology Inc..• Lançado em 2001.• É um tipo de microcontrolador (MCU).• Também fabrica DSC´s – Digital Singal Controllers• Os DSC´s da Microchip são chamados de dsPIC®.
PIC
http://www.microchip.com
25/04/2017
2
DEFINIÇÃO1
725/04/2017
• Harvard Architecture• Long Word Instructions• Single Word Instructions• Single Cycle Instructions• Register File Architecture• Instruction Pipelining• Reduced Instruction Set• Orthogonal (Symmetric) Instructions
CaracterísticasPIC16F877
DEFINIÇÃO1
825/04/2017
Família ArquiteturaPIC10F2XX, PIC12X5XX, PIC16X5X, PIC16X5XX Harvard PIC12X6XX, PIC16 Harvard PIC18 Harvard
PIC24, dsPIC ModifiedHarvard
PIC32 MIPS
Famílias PIC
DEFINIÇÃO1
925/04/2017
Arquitetura Harvard versus Von-Neumann
• Alguns engenheiros consideram aarquitetura Harvard melhor.
• Alguns engenheiros consideram aarquitetura Von-Neumann melhor.
• Não há consenso.• Ambas arquiteturas são usadas.• Diversos outros parâmetros são
dependentes desta escolha.
DEFINIÇÃO1
1025/04/2017
Arquitetura Harvard versus Von-Neumann
http://ithare.com/w p-content/uploads/BB_part55_v2.png
DEFINIÇÃO1
1125/04/2017
Arquitetura Harvard versus Von-Neumann
8-bitcore
8-bit 14-bit 8-bit
PIC16F877 8-bit MCU
• Se estamos falando de µP ou CPU,os blocos estão em chips separados.
• Se estamos falando de MCU, osblocos estão no mesmo chip.
8-bitcore
DEFINIÇÃO1
1225/04/2017
Arquitetura Harvard versus Von-NeumannIntel® 8051
ProgramData
data bus
data bus
data bus
File registers
25/04/2017
3
DEFINIÇÃO1
1325/04/2017
• Com o lançamento da memória flash, EEPROM em umaMCU tornou-se sinônimo de data memory e flash deprogram memory.
• Antes do lançamento da memória flash, program memorye data memory eram construídas em EEPROM, o quepermitia que ambas fossem implementadas em umaúnica matriz ou célula.
• Por causa disso, antes do lançamento da flash, aarquitetura Von-Neumann era mais atraente.
• Com o uso da flash program memory em arquitetura Von-Neumann, uma lógica de endereçamento deve fazer aseleção entre flash e EEPROM; geralmente por meio dosbits mais significativos.
• Isso torna o uso da arquitetura Harvard mais interessante.
Arquitetura Harvard versus Von-NeumannDEFINIÇÃO1
1425/04/2017
• Não é correto afirmar que a diferença entre umaarquitetura e a outra é o fato das duas memóriasestarem juntas ou não, pois na arquitetura Von-Neumann as duas memórias podem ser separadas.
• O correto é afirmar que na arquitetura Von-Neumann as duas memórias tem os seus dadosacessados através do mesmo barramento.
• Na arquitetura Harvard, as memórias sãoacessadas por meio de barramentos separados.
Arquitetura Harvard versus Von-Neumann
DEFINIÇÃO1
1525/04/2017
• Não faz sentido falar nestas arquiteturasquando se lida com µP´s, pois as duasmemórias localizam-se fora do chip.
• Mesmo assim, estes princípios podemser aplicados no que diz respeito aosbarramentos externos ao chip.
Arquitetura Harvard versus Von-NeumannDEFINIÇÃO1
1625/04/2017
Harvard Instrução 1Instrução 2Instrução 3Instrução 4Instrução 5Instrução 6Instrução 7
13 0
Von-NeumannInstrução 1Instrução 2Instrução 3Instrução 4
Instrução 5
Instrução 6Instrução 7Instrução 8
Instrução 9
7 0
• Exemplo Harvard: MCU PIC16F877.• Exemplo Von-Neumann: MCU Intel® 8051.
Arquitetura Harvard versus Von-NeumannProgram memory
DEFINIÇÃO1
1725/04/2017
HarvardInstrução 1Instrução 2Instrução 3Instrução 4Instrução 5Instrução 6Instrução 7
15 0
PIC18 Two-Word Instructions
• A maioria das instruções da PIC18 (8-bit) usam um único 16-bit word.
• Outras instruções da PIC18 usam dois 16-bit words.• CALL, GOTO e LFSR.• Estas instruções são chamadas de Double Word Instructions.• Elas requerem duas buscas em dois ciclos de instrução.
DEFINIÇÃO1
1825/04/2017
• O uso da arquitetura Harvard foi um dos grandesatrativos apresentados nas MCU’s PIC.
• O lançamento das MCU’s PIC, em 2001, logo após apopularização das memórias flash, em 2000, dá aimpressão de que a comercialização das MCU’s PIC
estava condicionada à popularização das memórias flash.• As primeiras MCU’s PIC foram lançadas com program
memory implementada em EEPROM, em arquiteturaHarvard, mesmo já existindo memória flash, porém essesmodelo não são mais fabricados.
• Há outros fabricantes usando a arquitetura Harvard.
PIC16F877Arquitetura Harvard
25/04/2017
4
DEFINIÇÃO1
1925/04/2017
CORE
256-byteEEPROM
DATAMEMORY
8-bitData/AddressControl BUS
8k-instruction14-bit
FLASHPROGRAMMEMORY
14-bitInstruction
BUS
13-bitAddress
BUS
PIC16F877Arquitetura Harvard
0
7
0
13
0
12
DEFINIÇÃO1
2025/04/2017
8-bitData
Memory
8-bitDataBus 8-bit
PIC®
CORE
14-bitProgramMemory
14-bitBus
13-bitBus• A data memory recebe a palavra de dado e a
palavra de endereço no mesmo barramento.• Dado e endereço não podem ser manipulados
ao mesmo tempo.• Como o barramento é o mesmo, dado e
endereço possuem o mesmo tamanho, 8 bits.• A program memory possui barramentos
separados para dado e endereço, por issoestas palavras podem ter tamanhos diferentes.
PIC16F877Arquitetura Harvard
DEFINIÇÃO1
2125/04/2017
• Por usar barramentos separados para instrução eendereço, a leitura de uma instrução é feita em umúnico ciclo de instrução.
• A flash program memory tem endereçamento separadodo endereçamento da EEPROM data memory.
• O opcode não precisa ter o mesmo tamanho dos dados.• Permite a otimização opcode independente do tamanho
das palavras de dados, pois este tamanho não precisaser um múltiplo de oito.
• Na família mid-range, o dado é de 8 bits e o opcode éde 14 bits. Na família base line, o opcode é de 12 bits.
PIC16F877Arquitetura Harvard
DEFINIÇÃO1
2225/04/2017
0130000h
1FFFh
13-bit address bus
14-bit data bus(Program Bus)
012
013
0700h
FFh
8-bit address bus
8-bit data bus
07
07
EEPROM data memoryflash program memory
• O address bus da EEPROM não é o mesmo da flash.• O data bus da EEPROM não é o mesmo da flash.
8-bit MCUdata bus
PIC16F877Arquitetura Harvard
DEFINIÇÃO1
2325/04/2017
• A multiplexação não é feita por hardware.• O programa assembly realiza a multiplexação.
PIC16F877Arquitetura Harvard
0700h
FFh
8-bit address bus
8-bit data bus
07
07
EEPROM data memory
8-bit MCUdata bus 8-bit
31MUX 8-bit control bus
07
DEFINIÇÃO1
0700h
FFh
8-bit address bus
8-bit data bus
EEPROM data memory
8-bit MCUdata bus
SFR
SFR
8-bit control bus
2425/04/2017
PIC16F877Arquitetura Harvard
• Os barramentos da data memory são registrados.• Essa registração permite a multiplexação por software.
SFR
25/04/2017
5
DEFINIÇÃO1
2525/04/2017
8-bitMCU
8-bitPrg/Dt
Memory
8-bitBus
• O endereço e o dado da memória usa o data bus.• Endereço e dado são de oito bits.
Arquitetura Von-NeumannMCU Intel™ 8081
DEFINIÇÃO1
2625/04/2017
• A instrução ADCA usa 1 byte (8Fh).• A instrução ADI usa 2 bytes (C6h , 8-bit data).• A instrução LDA usa 3 bytes (3Ah, 16-bit address).
Von-NeumannP Intel™ 8085
Instrução 1Instrução 2Instrução 3Instrução 4
Instrução 5
Instrução 6Instrução 7Instrução 8
Instrução 9
7 0
DEFINIÇÃO1
2725/04/2017
• ORL A,@R0 usa 1 byte (46h).• ORL A,#data usa 2 bytes (44h , 8-bit data).• ORL iram addr,#data usa 3 bytes (43h, 16-bit address).
Von-Neumann
Instrução 1Instrução 2Instrução 3Instrução 4
Instrução 5
Instrução 6Instrução 7Instrução 8
Instrução 9
7 0
MCU Intel™ 8051
DEFINIÇÃO1
25/04/2017 28
Exemplo fictício para memória única, MCU/P de 16 bits
0150000h
3FFFh
15-bit address bus<A14:A0>
16-bit data bus<D15:D0>
014
015
4000h
4FFFh
EEPROM
ProgramMemory
<A13:A0>A14=0
DataMemory
<A11:A0>A12=0A13=0A14=1
16-bit MCU/Pdata bus
Von-Neumann
DEFINIÇÃO1
25/04/2017
• Opcode e dado de 16 bits.• Program Memory de 16k instruções (16384).• Data Memory de 2k palavras (2048).• O bit 14 do endereço identifica a memória.
29
Exemplo fictício para memória única, MCU/P de 16 bits0150000h
3FFFh
15-bit address bus
16-bit data bus
014
015 4000h
4FFFh
EEPROM
Von-NeumannDEFINIÇÃO1
12-bit EEPROM address bus
25/04/2017 30
0150000h
3FFFh
Exemplo fictício para memórias separadas, MCU/P de 16 bits
4000h
4FFFh
EEPROM data memory
flash program memory
14-bit flash address bus
16-bit data bus
013
015
011
16-bit data bus
15-bit address bus014
Von-Neumann
• Capacidade e endereçamento iguais ao exemplo anterior.
16-bit data bus
25/04/2017
6
DEFINIÇÃO1
25/04/2017 31
Exemplo fictício para memórias separadas, MCU/P de 16 bitsVon-Neumann
0150000h
3FFFh
4000h
4FFFh
EEPROM data memory
flash program memory
CS = A14 × /A13 × /A12
CS = /A14
Faixa proibida: (A14×A13) + (A14×A12)
DEFINIÇÃO1
25/04/2017 32
EEPROM data memory
flash program memory
ProgramMemory
DataMemory
EEPROM
Modo antigoModo moderno
• Antigamente, EEPROM era usada para programa e paradados.
• Sendo tudo em EEPROM, é possível usar uma única matriz.• Atualmente, EEPROM é usada para dados (mais rápida) e
flash é usada para programa (mais densa).• Sendo tecnologias diferentes, há duas matrizes.
Von-NeumannNão é a PIC16F877
DEFINIÇÃO1
25/04/2017 33
• Os dois modos seguem o mesmo endereçamento.• O address bus e o data bus da memória são acessados
através do MCU/P data bus.• Program word e data word têm o mesmo tamanho (embora
isso não seja obrigatório).• Address word pode ser menor do que program/data word.• Program address word pode diferir de data address word.• Toda informação passa pelo MCU/P data bus.• Dado e endereço são informados em ciclos diferentes.
Von-NeumannNão é a PIC16F877
DEFINIÇÃO1
25/04/2017 34
• Não é arquitetura Long Word Instructions.• O tamanho das palavras de programa é o
mesmo das palavras de dado.• É possível usar uma única matriz.
MCU/Pdata bus
MCU/Pdata bus
MCU/Pdata bus
Von-NeumannNão é a PIC16F877
DEFINIÇÃO1
MCU/Pdata bus
MCU/Pdata bus
MCU/Pdata bus
25/04/2017 35
• Não é arquitetura Single Word Instructions.• As instruções podem usar uma, duas ou três palavras.• Cada palavra usa um endereço.
Von-NeumannInstrução 1Instrução 2Instrução 3Instrução 4
Instrução 5
Instrução 6Instrução 7Instrução 8
Instrução 9
Não é a PIC16F877
DEFINIÇÃO1
25/04/2017 36
• Não é arquitetura Single Cycle Instructions.• Cada palavra é lida em um ciclo.• Como temos instruções de uma, duas ou
três palavras, são usados, então, um, doisou três ciclos de instrução para a sua leitura.
Von-NeumannInstrução 1Instrução 2Instrução 3Instrução 4
Instrução 5
Instrução 6Instrução 7Instrução 8
Instrução 9
Não é a PIC16F877
MCU/Pdata bus
MCU/Pdata bus
MCU/Pdata bus
25/04/2017
7
DEFINIÇÃO1
25/04/2017 37
Endereço divididoVon-Neumann
• Geralmente, a capacidade de endereços dememória (programa e dado) exige o uso de palavrasde endereço cujo tamanho, em bits, é superior aodas palavras usadas como programa ou dado.
• Isto requer, então, que a palavra de endereço sejadividida em partes que caibam no barramento.
• No caso da MCU Intel™ 8051, o barramento é deoito bits, e o endereço é de 16 bits, havendo anecessidade da divisão em low-byte e high-byte.
• Se a instrução usa endereço da memória comoargumento, são usadas, então, duas palavra deprograma para este endereço.
DEFINIÇÃO1
25/04/2017 38
• O address word possui 16 bits.• O data word possui 8 bits.• O P data bus possui 8 bits.• O address word é dividido em duas palavras de 8 bits (L/H).• Cada metade é enviada em um ciclo de instrução.• Instrução de literal usa 2 bytes (mnemônico e literal).• Instrução de endereço usa 3 bytes (mnemônico e endereço).
P Intel 8085
16-bit address bus0
15
8-bit data bus07
8-bit MCU/Pdata bus
Von-Neumann
DEFINIÇÃO1
25/04/2017 39
Caso onde program word é maior do que data word.Von-Neumann Single Word
16-bit flashprogram memory
015 87HIGH LOW8-bit EEPROMdata memory
07
• Long Word Instructions.• Single Word Instructions.• Double Cycle Instructions.
• O opcode é dividido em duaspalavras de 8 bits (L/H).
• Não foi encontrado exemplopara esta arquitetura.
DEFINIÇÃO1
25/04/2017 40
0000h
3FFFh
Caso onde program word é maior do que data word.
4000h
4FFFh
8-bit data bus
8-bit Data Bus
07
15-bit address bus0
140
13
011 12-bit Address Bus
14-bit Address Bus
• O bit 14 do address busserve para selecionaras duas memórias.
Von-Neumann Single Word
DEFINIÇÃO1
25/04/2017 41
Caso onde program word é maior do que data word.
15-bit address bus0
14
8-bit data bus07
8-bit MCU/Pdata bus
• O address word possui 15 bits.• O data word possui 8 bits.• O MCU/P data bus possui 8 bits.• O address word é dividido em duas palavras de 8 bits (L/H).• Cada metade é enviada em um ciclo de instrução.
Von-Neumann Single WordDEFINIÇÃO1
4225/04/2017
• O address bus da EEPROM é o mesmo do da flash.• O data bus da EEPROM é o mesmo do da flash.• Isto significa que o data bus do chip lida com dados
e com instruções.• Há uma multiplexação temporal para uso do data
bus para dados e para instruções.• O data bus é multiplexado em:
• Endereço da instrução na flash.• Conteúdo da instrução na flash.• Endereço do dado na EEPROM.• Conteúdo do dado na EEPROM.• Outras funções da ULA.
Von-Neumann
25/04/2017
8
DEFINIÇÃO1
4325/04/2017
Long Word Instructions• Consequência da arquitetura Harvard.• O opcode possui tamanho maior do que os dados.• Na família PIC mid-range, o dado é de 8 bits e o opcode é de
14 bits.• Isto é possível porque as instruções possuem um barramento
separado do de dados (consequência da arquitetura Harvard).• Isto permite que a instrução contenha todas as informações
necessárias, os mnemônicos e os argumentos.• No contrário, as demais informações devem ser fornecidas em
palavras separadas.• É possível implementar long word instructions em arquitetura
Von-Neumann desde que o tamanho as instruções sejamúltiplo do tamanho dos dados (possível mas não usado).
PIC16F877
DEFINIÇÃO1
4425/04/2017
Single Word Instructions
• Consequência da arquitetura Long Word Instructions.• Cada instrução emprega, apenas, um opcode.• Cada opcode representa uma instrução, de forma inequívoca.• O número de palavras da memória de programa é igual ao
valor máximo de instruções graváveis.• No contrário, sem Long Word Instructions, os opcodes
possuem o tamanho das palavras de dados, e uma instruçãopode usar várias palavras.
PIC16F877
DEFINIÇÃO1
4525/04/2017
• Consequência da arquitetura Harvard.• Single Cycle Instructions: Como as instruções possuem
um barramento próprio, todos os bits do opcode sãolidos no mesmo ciclo, mesmo se o opcode possui umtamanho maior do que o das palavras de dados.
• No contrário, se a instrução emprega várias palavras, égasto um ciclo por palavra.
• A arquitetura Von-Neumann não permite Single CycleInstructions.
• Na arquitetura PIC, se a instrução pode interferir noPC, um ciclo a mais é gasto.
Single Cycle InstructionsPIC16F877
DEFINIÇÃO1
4625/04/2017
Harvard, Long Word, Single Word e Single Cycle• A arquitetura Harvard permite o uso de Long Word
Instructions.• A arquitetura Long Word Instructions permite o uso de
Single Word Instructions e Single Cycle Instructions.• Essas quatro características estão relacionadas.• A arquitetura Von Neumann permite o uso de Long Word
Instructions deste que o tamanho do opcode seja ummúltiplo inteiro do tamanho dos dados, e, nesse caso, nãose tem Single Word Instructions.
Harvard
Architecture
Long Word
Instructions
Single Word
Instructions
Single Cycle
Instructions
PIC16F877
DEFINIÇÃO1
4725/04/2017
• Reduced Instruction Set (RISC):• Poucas instruções são necessárias.• RISC é mais indicado em Single Cycle Instructions.
• Instruction Pipelining:• A busca por uma instrução usa um ciclo (TCY).• A execução usa outro TCY.• Enquanto uma é executada, a próxima é buscada.• Economiza-se um TCY a cada instrução.• É usado um instruction register.
• Orthogonal (Symmetric) Instructions:• Todas as instruções são destinadas aos registradores.• O work register ou acumulador é um registrador.
CaracterísticasPIC16F877
DEFINIÇÃO1
4825/04/2017
Register File Architecture
• Os registradores para funções especiais (SFR’s) e os de usogeral (GPR’s) são acessados por meio de um únicomapeamento, uma única lógica de endereçamento, um únicoaddress bus.
• Na arquitetura PIC, os GPR’s podem ser considerados comoperiféricos, pois não são fundamentais para o funcionamentodo chip e poderiam localizar-se em um chip separado.
• Na arquitetura PIC, os SFR’s usados por blocos funcionaisperiféricos também podem ser considerados como periféricos,pois, uma vez que os periféricos poderiam estar contidos emchips separados, tais registradores estariam em tais chips.
• Os SFR’s para uso do core são considerados como parteintegrante do core.
PIC16F877
25/04/2017
9
DEFINIÇÃO1
4925/04/2017
• Os GPR’s são construído na formamatricial, como toda SRAM.
• Os SFR’s localizam-se em diversaspartes do chip, próximos aos blocosfuncionai sobre os quais atuam.
• Todos esses registradores recebema mesma lógica de endereçamento,por meio do mesmo address bus,isso simplifica a programação.
Register File ArchitecturePIC16F877
DEFINIÇÃO1
5025/04/2017
• Para P’s, recursos são supridos por chip’s separados.• Geralmente, a programação de um MCU é mais fácil porque o
endereçamento dos recursos periféricos é conhecido.• Geralmente, a arquitetura de uma MCU é mais complicada do
que a de um P com a mesma capacidade de processamento.
Diferenças entre P e MCU
DEFINIÇÃO1
5125/04/2017
Tamanho da palavra:• 08 bits.• 16 bits.• 32 bits.
Famílias PIC
• O tamanho da palavra também retrata o tamanho do data bus.• Esse é o máximo valor para GPR’s e SFR’s.• Esse tamanho também define o data memory.
DEFINIÇÃO1
5225/04/2017
Famílias PIC
DEFINIÇÃO1
5325/04/2017
• Funcionalidade é a oferta de recursos na forma deperiféricos.
• À medida em que se aumenta a funcionalidade e aperformance dos modelos de MCU, a quantidade deinstruções vai aumentando.
• Quanto menos instruções há, maior é a característicaRISC da MCU; quanto mais instruções há, maior é acaracterística CISC da MCU.
• Quanto mais funcionalidades e instruções há naarquitetura, maior é o tamanho do opcode.
RISC/CISCDEFINIÇÃO1
5425/04/2017
• A correlação entre funcionalidade e performancenão encontra justificativa no contexto daengenharia elétrica.
• Esta correlação tem justificativa puramentecomercial e financeira.
• Quando a MCU possui baixa performance, seucusto é baixo, e um aumento na sua funcionalidadeprovoca um acréscimo relevante em seu custo.
• Quando a MCU possui alta performance, seu custoé elevado, e um aumento na sua funcionalidadeprovoca um acréscimo desprezível em seu custo.
RISC/CISC
25/04/2017
10
DEFINIÇÃO1
5525/04/2017
• RISC: Reduced Instruction Set Computing.• CISC: Complex Instruction Set Computing.• RISC: Opcodes curtos (poucos bits).• CISC: Opcodes longos (muitos bits).• RISC: Muitas instruções para realizar tarefas simples.• CISC: Poucas instruções para realizar tarefas complexas.• As duas arquiteturas geram programas com tamanho similar.• As duas arquiteturas geram programas com rapidez similar.
RISC/CISCDEFINIÇÃO1
5625/04/2017
RISC/CISCPrograma em RISC
Programa em CISCTamanho médio das instruções
MCU’S DE 8 BITS2
5725/04/2017
MCU’S DE 8 BITS
MCU’S DE 8 BITS2
5825/04/2017
• 8-bit data bus.• Dados e instruções em barramentos separados.• Esta foi a novidade introduzida pela PIC.• Acesso simultâneo aos dois barramentos.• Aumento da rapidez de processamento.
Dados de 8 bits
MCU’S DE 8 BITS2
5925/04/2017
• EPROM PIC16CXXX• ROM PIC16CRXXX• flash PIC16FXXX
Exemplos de tipos de memória de programa
• A versão em EPROM não é mais fabricada.• A versão em ROM é útil para grande
volume com o mesmo programa.• O chip sai de fábrica com o programa
gravado em ROM gate array.
MCU’S DE 8 BITS2
6025/04/2017
• Baseline.• Mid-Range.• Enhanced Mid-Range.• PIC18.
Arquiteturas
25/04/2017
11
MCU’S DE 8 BITS2
6125/04/2017
Baseline Architecture
http://www.microchip.com/_images/BaselineArch_large.jpg
2k instructions11–bit address12–bit words4 pages
flashFILE REGISTERS
SRAM
DATA BUS
/ EEPROM
8-bit
8-bit
11-bit
MCU’S DE 8 BITS2
6225/04/2017
Mid-Range Architecture• Todos os itens do Baseline.• Hardware de comunicação serial MSSP/USART/SPI.
• Master Synchronous Serial Port.• Universal Synchronous Asynchronous Receiver/Transmitter.
• Protocolos de comunicação serial SPI™ e I²C™.• Synchronous Serial Port.
• Serial Peripheral Interface.• Inter-Integrated Circuit.
• PWM.• Controlador LCD (ausente na PIC16F877).• Conversor A/D de 10 bits.
MCU’S DE 8 BITS2
6325/04/2017
Mid-Range Architecture
http://www.microchip.com/_images/MidRangeArch.jpg
8k instructions13–bit address14–bit words4 pages
flash
DATA BUS
8-bit
8-bit13-bit
FILE REGISTERS
SRAM
/ EEPROM
MCU’S DE 8 BITS2
6425/04/2017
Mid-Range Architecture - Core
(2): Ausente naPIC16F877.
flash
MCU’S DE 8 BITS2
6525/04/2017
Mid-Range Architecture – General purpose I/ONem todos os modelos possuem todas as portas, e nem no tamanho apresentado.
Data bus
MCU’S DE 8 BITS2
6625/04/2017
Mid-Range Architecture - Peripheral ModulesNem todos os modelos possuem todos os itens.
8-bit Data bus
25/04/2017
12
MCU’S DE 8 BITS2
6725/04/2017
Mid-Range Architecture - Peripheral ModulesNem todos os modelos possuem todos os itens.
• Flash program memory*.• EEPROM data memory.• General purpose registers.• Portas paralelas (A, B, C, D, E, F, G).• Porta paralela escrava.• Portas seriais (SSP e USART).• Contadores (0, 1, 2).• Capture-Compare-PWM (1,2).• Conversor A/D.• LCD driver**.
* Não ligado ao data bus.** Ausente na PIC16F877.
MCU’S DE 8 BITS2
6825/04/2017
Enhanced Mid-Range Architecture
• Todos os itens do Mid-Range.• Periféricos de comunicação.• PWM com base de tempo independente.
MCU’S DE 8 BITS2
6925/04/2017
Enhanced Mid-Range Architecture
http://www.microchip.com/_images/715px_Extended_Midrange_graph.jpg
15–bit address14–bit words
flash
DATA BUS
DATA BUSFILE REGISTERS
SRAM
MCU’S DE 8 BITS2
7025/04/2017
PIC18 Architecture• Todos os itens do Enhanced Mid-Range.• Multiplicação 8bit x 8bit.• CAN
• Controller Area Network• CTMU
• Charge Time Measurement Unit• Protocolo de comunicação USB.• Protocolo de comunicação Ethernet.• Conversor A/D de 12 bits.
MCU’S DE 8 BITS2
7125/04/2017
PIC18 Architecture
http://www.microchip.com/_images/715px_PIC18_graph.jpg
flash DATA BUS
DATA BUS
FILE REGISTERS
SRAM
20–bit address16–bit words
MCU’S DE 8 BITS2
7225/04/2017
MCU´s de 8 bits
http://www.microchip.com/_images/8bit_overview_graphic.png
25/04/2017
13
MCU’S DE 8 BITS2
7325/04/2017
PIC10F200PIC10F202PIC10F204PIC10F206PIC10F220PIC10F222PIC12F508PIC12F509PIC12F510PIC12F519PIC12F529T39APIC16F505PIC16F506PIC16F526PIC16F54PIC16F57PIC16F59PIC16F707
PIC10F320PIC10F322PIC12F609PIC12F615PIC12F617PIC12F629PIC12F635PIC12F675PIC12F683PIC12F752PIC16F610PIC16F616PIC16F627APIC16F628APIC16F630PIC16F631PIC16F636PIC16F639PIC16F648APIC16F676PIC16F677PIC16F684PIC16F685PIC16F687PIC16F688PIC16F689PIC16F690PIC16F716PIC16F72PIC16F720PIC16F721
PIC12F1501PIC12F1822PIC12F1840PIC12LF1840T48APIC16F1454PIC16F1455PIC16F1458PIC16F1459PIC16F1503PIC16F1507PIC16F1508PIC16F1509PIC16F1512PIC16F1513PIC16F1516PIC16F1517PIC16F1518PIC16F1519PIC16F1526PIC16F1527PIC16F1782PIC16F1783PIC16F1784PIC16F1786PIC16F1787PIC16F1823PIC16F1824PIC16F1825PIC16F1826PIC16F1827PIC16F1828PIC16F1829PIC16F1847PIC16F1933PIC16F1934PIC16F1936PIC16F1937PIC16F1938PIC16F1939PIC16F1946PIC16F1947PIC16LF1902PIC16LF1903PIC16LF1904PIC16LF1906PIC16LF1907
PIC16F722PIC16F722APIC16F723PIC16F723APIC16F724PIC16F726PIC16F727PIC16F73PIC16F737PIC16F74PIC16F747PIC16F76PIC16F767PIC16F77PIC16F777PIC16F785PIC16F84APIC16F87PIC16F88PIC16F882PIC16F883PIC16F884PIC16F886PIC16F887PIC16F913PIC16F914PIC16F916PIC16F917PIC16F946PIC16HV540PIC16HV785/
Enha
nced
Mid
-Ran
ge A
rchi
tect
ureMid-RangeArchitecture
BaselineArchitecture
Exemplos de MCU´s de 8 bitsMCU’S DE 8 BITS2
7425/04/2017
PIC18F2221PIC18F44J11PIC18F67J11PIC18F1220PIC18F65J15PIC18F63J90PIC18F25J50PIC18F65J11PIC18F1230PIC18F85J10PIC18F64J90PIC18F2321PIC18F26J11PIC18F45J11PIC18F66J10PIC18F83J11PIC18F44J50PIC18F46K22PIC18F1320PIC18F4221PIC18F65J90PIC18F45K80PIC18F84J11PIC18F26K80PIC18F66J15PIC18F85J15PIC18F26J13PIC18F2450PIC18F1330PIC18F83J90PIC18F85J11PIC18F26J50
PIC18F4321PIC18F45J50PIC18F67J10PIC18F86J10PIC18F84J90PIC18F65J50PIC18F46J11PIC18F4450PIC18F65K22PIC18F26J53PIC18F86J15PIC18F85J90PIC18F46K80PIC18F27J13PIC18F66J90PIC18F2410PIC18F6310PIC18F46J13PIC18F65K90PIC18F87J10PIC18F46J50PIC18F86J11PIC18F85J50PIC18F66J50PIC18F66J93PIC18F6390PIC18F85K22PIC18F27J53PIC18F86J16PIC18F66K22PIC18F65K80PIC18F66J55
PIC18F67J90PIC18F2420PIC18F4410PIC18F86J90PIC18F46J53PIC18F47J13PIC18F85K90PIC18F87J11PIC18F67J50PIC18F66K90PIC18F67J93PIC18F86J50PIC18F6410PIC18F86J93PIC18F4420PIC18F6393PIC18F67K22PIC18F2510PIC18F47J53PIC18F86K22PIC18F86J55PIC18F87J90PIC18F66K80PIC18F6490PIC18F8310PIC18F2423PIC18F66J60PIC18F2331PIC18F67K90PIC18F87J50PIC18F86K90PIC18F87J93
PIC18F8390PIC18F2520PIC18F4510PIC18F66J65PIC18F87K22PIC18F2431PIC18F4423PIC18F6493PIC18F2455PIC18F67J60PIC18F86J60PIC18F87K90PIC18F8410PIC18F4520PIC18F2515PIC18F8393PIC18F2550PIC18F86J65PIC18F4331PIC18F2523PIC18F8490PIC18F4455PIC18F96J60PIC18F87J60PIC18F2458PIC18F2525PIC18F4515PIC18F4431PIC18F4550PIC18F96J65PIC18F4523PIC18F2480
PIC18F97J60PIC18F8493PIC18F4458PIC18F4525PIC18F2610PIC18F4480PIC18F2220PIC18F4610PIC18F2620PIC18F2553PIC18F86J72PIC18F2580PIC18F4620PIC18F4553PIC18F87J72PIC18F4580PIC18F2320PIC18F4220PIC18F6527PIC18F2585PIC18F4320PIC18F4585PIC18F8527PIC18F2680PIC18F6622PIC18F4680PIC18F2682PIC18F8622PIC18F4682PIC18F2685PIC18F6520PIC18F6627
PIC18F4685PIC18F8520PIC18F8627PIC18F6722PIC18F6628PIC18F8722PIC18F8628PIC18F6723PIC18F8723
PIC18 Architecture
PIC18F13K22PIC18F24J10PIC18F23K20PIC18F14K22PIC18F25J10PIC18F24K20PIC18F13K50PIC18F23K22PIC18F25K20PIC18F44J10PIC18F43K20PIC18F24K22PIC18F45J10PIC18F44K20PIC18F14K50PIC18F45K20PIC18F25K22PIC18F26K20PIC18F24J11PIC18F43K22PIC18F66J11PIC18F44K22PIC18F25J11PIC18F46K20PIC18F65J10PIC18F63J11PIC18F24J50PIC18F66J16PIC18F45K22PIC18F26K22PIC18F25K80PIC18F64J11
MCU’S DE 8 BITS2
7525/04/2017
Exemplos de MCU´s de 8 bits
• Dificilmente todos os periféricos disponíveis emuma família são úteis em uma mesma aplicação.
• A fim de proporcionar redução de custo,oferecem-se modelos com menos periféricos.
• Escolhe-se o modelo que possua apenas osperiféricos necessários no projeto.
• Há mais modelos disponíveis para PIC18 porqueesta família apresenta maior oferta de periféricos,formando uma maior quantidade de combinações.
MCU’S DE 8 BITS2
7625/04/2017
Comparação das arquiteturas
Baseline Mid-Range Enhanced Mid-Range PIC18Pinos 6 a 40 6 a 64 8 a 64 18 a 100Instruções, tamanho 12-bit 14-bit 14-bit 16-bitInstruções, quantidade 33 35 49 83Flash Program Memory, instruções Até 8 k Até 8 k Até 16 k Até 64 kFlash Program Memory,tamanho Até 12 kB Até 14 kB Até 28 kB Até 128 kBSRAM file register Até 138 Bytes Até 368 Bytes Até 1,5 KB Até 4 KB
MCU’S DE 8 BITS2
7725/04/2017
Comparação das arquiteturasBaseline Mid-Range Enhanced Mid-Range PIC18
Instrução (bits) 12 14 14 16
Flash ProgramMemory
Capacidade(k word)
0,250,51
1,528
0,2250,250,51248
124816
24812162432404864
Flash ProgrammMemory
Tamanho (kB)
0,3750,751,52,25312
0,218750,43750,8751,753,5714
1,753,571428
4816243248648096128
File SRAM (bytes) 16 a 368 25 a 368 64 a 1536 256 a 4096
Vide exemplos
MCU’S DE 16 E DE 32 BITS3
7825/04/2017
MCU’S DE 16 E DE 32 BITS
25/04/2017
14
MCU’S DE 16 E DE 32 BITS3
7925/04/2017
MCU´s de 16 bits
http://www.microchip.com/_images/NEW-16-bit-graphic_large.jpg
MCU’S DE 16 E DE 32 BITS3
8025/04/2017
MCU´s de 16 bitsDentro da mesma arquitetura:• O aumento da performance por meio do
aumento da frequência de operação leva aoaumento do consumo de energia elétrica.
• A redução da performance por meio dadiminuição da frequência de operação leva àredução do consumo de energia elétrica.
• Alta performance é desejável quando muitainformação é processada e fornecimento deenergia elétrica não é problema.
• Economia no consumo de energia elétrica édesejável em sistemas alimentados por baterias.
MCU’S DE 16 E DE 32 BITS3
8125/04/2017
MCU´s de 16 bits
• PIC24H/E e dsPIC33F/E: Alta performance.• PIC24F e dsPIC30F: Baixo consumo.
MCU’S DE 16 E DE 32 BITS3
8225/04/2017
MCU´s de 16 bits
http://www.microchip.com/_images/PIC24FArchblkdgrm.jpg
MCU’S DE 16 E DE 32 BITS3
8325/04/2017
MCU´s de 16 bits
http://www.microchip.com/_images/PIC24FArchblkdgrm.jpg
MCU’S DE 16 E DE 32 BITS3
8425/04/2017
MCU´s de 32 bits
http://www.microchip.com/_images/32bitOverviewArchGraph_Large.jpg
25/04/2017
15
PIC16F877-20/P4
8525/04/2017
PIC16F877-20/P
PIC16F877-20/P4
8625/04/2017
• É o modelo encontrado no laboratório.• Atualmente substituído pelo PIC16F887.• MCU de 8 bits.• Mid-Range Architecture.• 35 instruções.• 200ns para executar uma instrução (mínimo).• 40 ou 44 pinos.• 256 bytes de memória de dados em EEPROM.• Conversor A/D de 10 bits.• 2 Temporizadores adicionais ao Baseline.• 2 PWM´s (ou captura ou comparação).
Apresentação
PIC16F877-20/P4
8725/04/2017
Chip PIC
PIC16F877-20/P4
8825/04/2017
Chip PIC
PIC16F877-20/P4
8925/04/2017
Chip PIC
PIC16F877-20/P4
9025/04/2017
Kit didático
25/04/2017
16
PIC16F877-20/P4
9125/04/2017
Pinagem (DIP)PIC16F877-20/P4
9225/04/2017
PIC16F877-20/PParameter Name ValueFlash Program Memory 14-bit wordsFlash Program Memory 8k wordsFile SRAM (GPR’s) 368 bytesData EEPROM 256 bytesInstructions 35CPU Speed (MIPS) 5Interrupts 14I/O ports A,B,C,D,EDigital Communication Peripherals 1-USART,1-MSSP(SPI/I2C)Capture/Compare/PWM Peripherals 2 CCPTimers 2 x 8-bit, 1 x 16-bitADC 8 channels, 10-bitTemperature Range (C) -40 to 85Operating Voltage Range (V) 2 to 5.5Pin Count 40
PIC16F877-20/P4
9325/04/2017
Core• Core (núcleo): A parte principal do chip.• Contém os blocos funcionais que são utilizados para
qualquer tipo de aplicação da MCU.• Envolve tudo o que não é periférico.• Não é possível operar a MCU sem o uso do core.• Um P é uma MCU sem os periféricos.• Alguns periféricos são desligados no modo power down.• Alguns periféricos podem solicitar interrupções.• Todos os periféricos são registrados.
PIC16F877-20/P4
9425/04/2017
Core
• Na arquitetura Von-Neumann, a program memory éacessada através do data bus, caracterizando-a comoum periférico.
• Como qualquer periférico, a program memory podelocalizar-se fora do chip, como acontece com o P’s, e,por isso, não faz parte do core.
• Na arquitetura Harvard, a program memory não estáconectada ao data bus do chip, o que não condiz com oconceito de um periférico.
• A program memory Harvard é um periférico especial.
PIC16F877-20/P4
9525/04/2017
Cor
e
8-bit Data bus
Periférico
• Na SRAM, fazem parte docore somente os SFR´sassociados ao core.
PIC16F877-20/P4
9625/04/2017
Memórias internas
Tipo Nome Tamanhoflash Program memory 8k 14bits
SRAM File registers 512 8bitsEEPROM Data memory 256 8bits
25/04/2017
17
PIC16F877-20/P4
9725/04/2017
Mem
ória
s in
tern
as
PIC16F877-20/P4
9825/04/2017
Mem
ória
s es
peci
ais
PIC16F877-20/P4
9925/04/2017
EEPROM
• Mais rápida do que a flash.• Suporta mais ciclos de gravação do que a flash.• Mais lenta do que a SRAM.• Não indicada para dados temporários.• 256 bytes.• Usada para dados lidos frequentemente.• Usada para dados que não podem ser voláteis.• A gravação da EEPROM não afeta a execução.
PIC16F877-20/P4
10025/04/2017
Perif
éric
os
Todos periféricosestão ligados aodata bus exceto aPM na arquiteturaHarvard.
PIC16F877-20/P4
25/04/2017 101
Periféricos
Timer0,1,2
SFR SFR
PORTA,B,C,D,E
SFR SFR
A/D CCP1,2
SFR SFR
Flash
n-bit
Todas as instruções são destinadas aos registradores.
SFR
PSP
8-bit Data Bus
* Flash usada como data memory.
Instructionregister
PIC16F877-20/P4Periféricos
10225/04/2017
• Todos os periféricos são ligados ao data bus.• Existe um SFR entre o módulo periférico e o data bus.• Isto permite que o data bus seja liberado para outras funções.• Os SFR’s envolvidos possuem tamanhos diversos.• Quando o tamanho é superior a 8 bits, são usados dois SFR’s.• Os SFR’s associados a periféricos podem ser de:
• Dado• Endereço• Controle
25/04/2017
18
PIC16F877-20/P4Periféricos
10325/04/2017
Periférico
SFRendereço
SFRdado
SFRcontrole
8-bit Data Bus
• Os SFR’s associados a periféricos são, naverdade, parte integrante do próprio periférico.
FILE REGISTERS5
10425/04/2017
FILE REGISTERS
FILE REGISTERS5
10525/04/2017
• Todos os registradores paralelos da PIC são memóriasestáticas.
• As principais memórias estáticas formam o file registers.• Outras memórias estáticas são a pilha, o instruction register,
o work register, etc.• A região do file registers de uso geral é uma SRAM.• A pilha não é uma SRAM porque seu acesso não é aleatório.• O instruction register, por ser uma fila, ainda que de uma
única posição, também não é uma SRAM.
Memórias estáticasFILE REGISTERS5
10625/04/2017
Endereçamento
8-bit
13-bit
• Os bits de endereçamento faltantes serão vistos mais adiante.• Aqui, foi mostrado, o tipo de endereçamento direto da SRAM.• Trata-se das instruções que lidam com file (F ou WF).
14-bit
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
FILE REGISTERS5
10725/04/2017
• Registradores de uso geral.• Iniciam com valor zero.• Formam uma SRAM.• Possuem disposição matricial.• Esta SRAM é um periférico.• 368 registradores de 8 bits.• O data-sheet chama essa SRAM de file
registers; chamaremos, porém, de file registersos GPR’s e os SFR’s, pois, em algumaspáginas, o data-sheet assume essa conotação.
GPR’sGeneral Purpose Registers
FILE REGISTERS5
10825/04/2017
• Registradores de uso específico.• Não formam uma SRAM por não ser matricial.• Possuem localizações diversas no die.• Alguns bits iniciam em zero, outros em um.• Os SFR’s associados a periféricos são periféricos.• Os SFR’s associados a periféricos são parte
integrante do próprio periférico.• Os SFR’s associados ao core fazem parte do core.
SFR’sSpecial Function Registers
25/04/2017
19
FILE REGISTERS5
10925/04/2017
• Os GPR’s são construído na formamatricial, como toda SRAM.
• Os SFR’s localizam-se em diversaspartes do chip, próximos aos blocosfuncionai sobre os quais atuam.
• Todos esses registradores recebema mesma lógica de endereçamento,por meio do mesmo address bus(register file architecture).
GPR’s e SFR’sFILE REGISTERS5
11025/04/2017
File RegistersGPR’s
079-bit
Address Bus
8-bitData Bus
08
07
GPR’s e SFR’s – Register File Architecture
File RegistersSFR’s
9-bitAddress Bus
8-bitData Bus
08
07
• GPR’s: Matriz gate array.• SFR’s: Registradores espalhados.
FILE REGISTERS5
11125/04/2017
GPR’s
SFR’s
9-bitAddress Bus
8-bitData Bus
08
07
Lógica de seleção
GPR’s e SFR’s – Register File ArchitectureSUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
FILE REGISTERS5
11225/04/2017
• São quatro bancos de file registers.• Cada banco contém 128 bytes (7 bits de endereço) <6:0>.• No opcode, o endereço do registrador é de 7 bits.• São, ao todo, 512 endereços (9 bits de endereço) <8:0>.• Quase todas as posições endereçáveis podem ser
alteradas pelo usuário.• Alguns bits não podem ser alterados diretamente, somente
através do uso dos recursos do chip.
Divisões
FILE REGISTERS5
11325/04/2017
• Banco 0: 000h a 07Fh• Banco 1: 080h a 0FFh• Banco 2: 100h a 17Fh• Banco 3: 180h a 1FFh
• Banco 0: 000d a 127d• Banco 1: 128d a 255d• Banco 2: 256d a 383d• Banco 3: 384d a 511d
BancosIncluindo registradores sem banco
• É mais fácil memorizar os números na forma hexadecimal.• Estes valores representam as faixas de endereços
cobertas por cada bando.• Na verdade, os bancos são um pouco menores como será
mostrado mais adiante.
FILE REGISTERS5
11425/04/2017
• Banco 0: 000000000b a 001111111b• Banco 1: 010000000b a 011111111b• Banco 2: 100000000b a 101111111b• Banco 3: 110000000b a 111111111b
BancosIncluindo registradores sem banco
• Os dois bits mais significativos determinam o banco.• O endereço completo utiliza três nibbles.• O endereço no opcode utiliza dois nibbles.
25/04/2017
20
FILE REGISTERS5
11525/04/2017
Divisões
Banco 0000h
000000000b
07Fh001111111b
Banco 1080h
010000000b
0FFh011111111b
Banco 2100h
100000000b
17Fh101111111b
Banco 3180h
110000000b
1FFh111111111b
Incluindo registradores sem banco
FILE REGISTERS5
11625/04/2017
• Memory banking.• A divisão em bancos é feita para que o
endereçamento dos registradores feito nasinstruções se dê por meio de 7 bits, e não 9 bits.
• A necessidade desta redução se deve ao fato de quetal endereço deve caber nos 14 bits de instrução.
• Usando 7 bits para endereço, sobram 7 bits para osdemais parâmetros da instrução.
Bancos
FILE REGISTERS5
11725/04/2017
Banc
os
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
FILE REGISTERS5
11825/04/2017
• Sem banco: 16 bytes.• Banco 0: 80 bytes.• Banco 1: 80 bytes.• Banco 2: 96 bytes.• Banco 3: 96 bytes.• Total: 368 bytes (9-bit address bus).
GPR’s
FILE REGISTERS5
11925/04/2017
• Sem banco: 070h a 07Fh• Banco 0: 020h a 06Fh
• Banco 1: 0A0h a 0EFh• Banco 2: 110h a 16Fh
• Banco 3: 190h a 1EFh
• Sem banco: 112d a 127d• Banco 0: 032d a 111d
• Banco 1: 160d a 239d• Banco 2 272d a 367d
• Banco 3: 400d a 495d
GPR’sÉ mais fácil memorizar os números na forma hexadecimal
FILE REGISTERS5
12025/04/2017
• Sem banco: 070h a 07Fh• Banco 0: 020h a 06Fh
• Banco 1: 0A0h a 0EFh• Banco 2: 110h a 16Fh
• Banco 3: 190h a 1EFh
• Sem banco: 70h a 7Fh• Banco 0: 20h a 6Fh
• Banco 1: 20h a 6Fh• Banco 2: 10h a 6Fh
• Banco 3: 10h a 6Fh
GPR’sEndereço real de 9 bits
Valor usado em endereçamento direto (7 bits)
Remoção dos dois bits mais significativos.
25/04/2017
21
FILE REGISTERS5
12125/04/2017
• Banco 0: 020h a 06Fh• Banco 1: 0A0h a 0EFh• Banco 2: 110h a 16Fh• Banco 3: 190h a 1EFh
GPR’s endereçáveis por 9 bits
• Banco 0: 80 bytes.• Banco 1: 80 bytes.• Banco 2: 96 bytes.• Banco 3: 96 bytes.• Total: 352 bytes.
Registradores com banco
FILE REGISTERS5
12225/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
GPR
’sen
dere
çáve
is p
or 9
bits
Reg
istra
dore
s co
m b
anco
FILE REGISTERS5
12325/04/2017
GPR’s endereçáveis por 9 bits
020h021h022h023h024h
06Bh06Ch06Dh06Eh06Fh
7 00A0h0A1h0A2h0A3h0A4h
0EBh0ECh0EDh0EEh0EFh
7 0
16Bh16Ch16Dh16Eh16Fh
110h111h112h113h
1EBh1ECh1EDh1EEh1EFh
190h191h192h193h
7 0 7 0
Banco 0 Banco 1
Banco 2 Banco 3Registradores com banco
FILE REGISTERS5
12425/04/2017
GPR’s endereçáveis por 9 bitsRegistradores com banco
24DEC
O0O1O2O3
A7
A8
Entrada codificada Saída decodificada
Enable Enable
Enable Enable
7-bitAddress Bus
A0A6
9-bitAddress Bus
A0A9
20h
6Fh 6Fh
10h
FILE REGISTERS5
12525/04/2017
• Banco 0: 070h a 07Fh• Banco 1: 0F0h a 0FFh• Banco 2: 170h a 17Fh• Banco 3: 1F0h a 1FFh
GPR’s endereçáveis por 7 bits
• Banco 0: 16 bytes.• Banco 1: 16 bytes.• Banco 2: 16 bytes.• Banco 3: 16 bytes.• Total: 16 bytes.
• Estes registradores estão disponíveis em qualquerseleção de bancos.
• Estes registradores não possuem bancos, seuendereço possui 7 bits em um barramento de 9 bits.
• Os bits identificadores do banco são irrelevantes.
Registradores sem banco
FILE REGISTERS5
12625/04/2017 GPR
’sen
dere
çáve
is p
or 7
bits
Reg
istra
dore
s se
m b
anco
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
25/04/2017
22
FILE REGISTERS5
12725/04/2017
GPR´s - DivisõesBanco 0
000h000000000b
06Fh001101111b
Banco 1080h
010000000b
0EFh011101111b
Banco 2100h
100000000b
16Fh101101111b
Banco 3180h
110000000b
1EFh111101111b
Sem banco70h
XX1110000b
7FhXX1111111b
FILE REGISTERS5
12825/04/2017
GPR’s endereçáveis por 7 bits
• Os GPR’s de 9 bits de endereço são a maioria e requeremdeterminação do banco.
• Os GPR’s de 7 bits de endereço não dependem da seleçãodo banco.
• Os GPR’s de 7 bits de endereço são úteis quando sedeseja que a mesma palavra de dado esteja disponível emtodos os bancos, dispensando a seleção de banco.
• Não se trata de quatro cópias, mas de um único registrador.
Registradores sem banco
FILE REGISTERS5
12925/04/2017
GPR’s endereçáveis por 7 bits
7 bits de endereço:• 70h a 7Fh
• XX1110000h a XX1111111h• 16 endereços
X X 1 1 _ _ _ _1
Registradores sem banco
Identificação do endereçamento
indireto
FILE REGISTERS5
13025/04/2017
GPR’s endereçáveis por 7 bits
Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8
0: 9 bits1: 7 bits
SRAMAddress Bus
• Se Bit4 AND Bit5 AND Bit6 = 1,então Bit7 e Bit8 são ignorados.
Registradores sem banco
FILE REGISTERS5
13125/04/2017
GPR’s endereçáveis por 7 bitsRegistradores sem banco
Enable Enable
Enable Enable
7-bitAddress Bus
A0A6
20h
6Fh 6Fh
10h
24DEC
A7
A8
7-bitAddress Bus
A0A6
70h
7Fh
Enable
FILE REGISTERS5
13225/04/2017
• Para o programador, usando endereçamentodireto, o endereço tem sempre 7 bits, quer oendereço completo seja de 7 bits, quer seja de 9.
• Para os bancos 0 e 1, a faixa de endereços émenor do que nos bancos 2 e 3.
Bancos 0 e 1:• 20h a 6Fh
• 0100000h a 1101111h• 80 endereços
Bancos 2 e 3:• 10h a 6Fh
• 0010000h a 1101111h• 96 endereços
Endereçamento de GPR no programa
25/04/2017
23
FILE REGISTERS5
13325/04/2017
SFR’s
• Registradores de uso específico contidos no file registers.• Não constituem uma SRAM porque não formam uma matriz.• Sua localização física não é agrupada, como em uma RAM.• A maioria dos SFR’s são registradores de 8 bits.• Alguns SFR’s possuem menos bits.• Alguns endereços não são usados.• Alguns endereços são inacessíveis ao programador.• Alguns endereços não aceitam escrita.• Alguns endereços acessam palavras de menos bits.• Alguns endereços realizam ações na MCU, não são
registradores.
Special Function Registers
FILE REGISTERS5
13425/04/2017
• Embora seja possível gravar em muitas posições dememória usadas pelos SFR’s, não se deve fazê-lo quandoda gravação de dados do usuário, sob risco de alterar ocomportamento do microcontrolador ou de ter o dadoarmazenado perdido por causa da posterior automáticagravação do SFR após a execução de uma operação.
• A gravação nestas posições deve ser feita quando ointuito é o de, conscientemente, alterar algum SFRespecífico usado internamente pelo microcontrolador.
SFR’s
FILE REGISTERS5
13525/04/2017
SFR’s000h INDF001h TMR0002h PCL003h STATUS004h FSR005h PORTA006h PORTB007h PORTC008h PORTD009h PORTE00Ah PCLATH00Bh INTCON00Ch PIR100Dh PIR200Eh TMR1L00Fh TMR1H010h T1CON011h TMR2012h T2CON013h SSPBUF014h SSPCON015h CCPR1L016h CCPR1H017h CCP1CON018h RCSTA019h TXREG01Ah RCREG
01Bh CCPR2L01Ch CCPR2H01Dh CCP2CON01Eh ADRESH01Fh ADCON0081h OPTION_REG085h TRISA086h TRISB087h TRISC088h TRISD089h TRISE08Ch PIE108Dh PIE208Eh PCON091h SSPCON2092h PR2093h SSPADD094h SSPSTAT098h TXSTA099h SPBRG09Eh ADRESL09Fh ADCON110Ch EEDATA10Dh EEADR10Eh EEDATH10Fh EEADRH18Ch EECON118Dh EECON2
Endereços múltiplos foram omitidos.
FILE REGISTERS5
13625/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
SFR
’ses
senc
iais
(co
re)
FILE REGISTERS5
13725/04/2017
SFR’s essenciais (core)Endereços múltiplos foram omitidos.
000h INDF001h TMR0002h PCL
003h STATUS004h FSR005h PORTA
006h PORTB007h PORTC008h PORTD009h PORTE
00Ah PCLATH00Bh INTCON00Ch PIR1
00Dh PIR200Eh TMR1L00Fh TMR1H010h T1CON
011h TMR2012h T2CON013h SSPBUF
014h SSPCON015h CCPR1L016h CCPR1H
017h CCP1CON018h RCSTA019h TXREG01Ah RCREG
01Bh CCPR2L
01Ch CCPR2H01Dh CCP2CON01Eh ADRESH
01Fh ADCON0081h OPTION_REG085h TRISA
086h TRISB087h TRISC088h TRISD089h TRISE
08Ch PIE108Dh PIE208Eh PCON
091h SSPCON2092h PR2093h SSPADD094h SSPSTAT
098h TXSTA099h SPBRG09Eh ADRESL
09Fh ADCON110Ch EEDATA10Dh EEADR
10Eh EEDATH10Fh EEADRH18Ch EECON118Dh EECON2
000 INDF Indirect file addressing001 TMR0 Timer 0002 PCL Program counter low byte003 STATUS Status004 FSR File select register00A PCLATH Program conuter latch00B INTCON Interrupt control00C PIR1 Peripheral interrupt register 100D PIR2 Peripheral interrupt register 2081 OPTION_REG Option08C PIE1 Peripheral interrupt enable 108D PIE2 Peripheral interrupt enable 208E PCON Power control
FILE REGISTERS5
13825/04/2017
SFR’s não essenciais (periféricos)005 PORTA006 PORTB007 PORTC008 PORTD009 PORTE00E TMR1L00F TMR1H010 T1CON011 TMR2012 T2CON013 SSPBUF014 SSPCON015 CCPR1L016 CCPR1H017 CCP1CON018 RCSTA019 TXREG01A RCREG01B CCPR2L01C CCPR2H01D CCP2CON
01E ADRESH01F ADCON0085 TRISA086 TRISB087 TRISC088 TRISD089 TRISE091 SSPCON2092 PR2093 SSPADD094 SSPSTAT098 TXSTA099 SPBRG09E ADRESL09F ADCON110C EEDATA10D EEADR10E EEDATH10F EEADRH18C EECON118D EECON2
25/04/2017
24
FILE REGISTERS5
13925/04/2017
SFR’s não essenciais (periféricos)Timer 0
Timer 1
A/D conv
CCP 1,2
SSP
USART
Data mem
018 RCSTA019 TXREG01A RCREG098 TXSTA099 SPBRG
001h TMR0081h OPTION_REG
00E TMR1L00F TMR1H010 T1CON
011 TMR2012 T2CON092 PR2
Timer 2
01E ADRESH01F ADCON009E ADRESL09F ADCON1
015 CCPR1L016 CCPR1H017 CCP1CON01B CCPR2L01C CCPR2H01D CCP2CON
PORT005 PORTA006 PORTB007 PORTC008 PORTD009 PORTE085 TRISA086 TRISB087 TRISC088 TRISD089 TRISE
10C EEDATA10D EEADR10E EEDATH10F EEADRH18C EECON118D EECON2
013 SSPBUF014 SSPCON091 SSPCON2093 SSPADD094 SSPSTAT
FILE REGISTERS5
14025/04/2017
SFR’s não essenciais de 16 bits
00E TMR1LTMR1
00F TMR1H015 CCPR1L
CCPR1016 CCPR1H01B CCPR2L
CCPR201C CCPR2H09E ADRESL
ADRES01E ADRESH10C EEDATA
EEDATA10E EEDATH10D EEADR
EEADR10F EEADRH
FILE REGISTERS5
14125/04/2017
• Alguns SFR’s estão disponíveis em dois bancos.• Alguns SFR’s estão disponíveis em quatro bancos.• A presença de cópias é feita para agilizar o acesso aos
SFR’s, dispensando o procedimento de troca de bancos.• Somente os SFR’s mais importantes possuem cópias.• Sempre que um SFR’s possui dois ou quatro endereços,
todos endereços possuem sempre a mesma informação.• A presença de SFR’s com dois ou quatro endereços
contraria a ideia de que um endereçamento correto requerque a relação entre endereço e posição física sejabiunívoca.
SFR’sFILE REGISTERS5
14225/04/2017
• Não há cópias, o registrador é um só, mas osendereços de 9 bits são vários.
• O endereço é um só, porém com menos bits; umou dois bits (mais significativos) do endereço de 9bits são irrelevantes.
• Isso acontece com os SFR’s mais importantes,que são mais usados, onde é indicado isentar anecessidade do procedimento de troca de bancos.
SFR’s
FILE REGISTERS5
14325/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
SFR
’sen
dere
çáve
is p
or 7
bits
Reg
istra
dore
s se
m b
anco
FILE REGISTERS5
14425/04/2017
SFR’s endereçáveis por 7 bits
• INDF XX0000000b 00h
• PCL XX0000010b 02h
• STATUS XX0000011b 03h• FSR XX0000100b 04h
• PCLATH XX0001010b 0Ah
• INTCON XX0001011b 0Bh
• Estes registradores estão disponíveis em qualquerseleção de bancos.
• Estes registradores não possuem bancos, seuendereço possui 7 bits em um barramento de 9 bits.
• Os bits identificadores do banco são irrelevantes.
Registradores sem banco
25/04/2017
25
FILE REGISTERS5
14525/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
SFR
’sen
dere
çáve
is p
or 8
bits
FILE REGISTERS5
14625/04/2017
SFR’s endereçáveis por 8 bits
• TMR0 X00000001b 01h• PORTB X00001011b 06h
• OPTION_REG X10000001b 81h• TRISB X10001011b 86h
FILE REGISTERS5
14725/04/2017
• Alguns SFR’s não são físicos.• “Not a physical register”.• Ao tentar acessar o file registers neste endereço, algum
demultiplexador levará o data bus para outro local do chip enão para o file registers.
• Este mecanismo simplifica o processo de criação de códigosde programa, tornando o endereçamento mais simples.
• Na PIC16F877 há dois casos: INDF e EECON2.
Registradores virtuaisFILE REGISTERS5
14825/04/2017
• O agrupamento de todos os SFR’s juntamente com osGPR’s como se fossem uma única memória torna o acessomais fácil pelo programador (Register File Architecture).
• Um decodificador específico realiza a conversão doendereço de 9 bits para a seleção de cada posição do fileregisters.
GPR’s
SFR’s
Address Bus
Data Bus
08
07
Lógica de seleção
SFR’s
FILE REGISTERS5
14925/04/2017
SFR’s
• Muitos SFR’s possuem menos de 8 bits.• Em muitos desses casos, os bits ausentes referem-se
a periféricos ausentes no modelo de MCU em questão.• Consultando o PICmicro™ Mid-Range MCU Family
Reference Manual é possível verificar quais são osSFR’s ou os bits não usados no SFR da PIC usada.
FILE REGISTERS5
• SFR de 8 bits (padrão).• SFR de palavra menor do de 8 bits.• SFR com bit faltando.• SFR não físico (virtual).• SFR de mais de 8 bits.
15025/04/2017
SFR’s
Address Bus
Data Bus
08
07
25/04/2017
26
FILE REGISTERS5
15125/04/2017
Endereços não usados
• O data sheet recomenda o não usodos endereços de SFR´s nãousados.
• Eles pertencem a funçõesintegrantes na arquitetura mid-rangemas que não estão presentes nomodelo apresentado.
• Apesar destas funções não teremsido implementadas, pode ser que aULA realize alterações nestesregistradores, tornando-os nãoconfiáveis para uso como GPR.
FILE REGISTERS5
15225/04/2017
• Os endereços não usados em meio aos SFR’s se devea endereços usados em outros modelos de PIC damesma família (mid-range architecture).
• Tratam-se de endereços de SFR’s para periféricosausentes no modelo aqui estudado.
• A fim de simplificar a migração de programas feitospara um modelo para outro, da mesma família, omapeamento dos SFR’s foi feito considerando todos osregistradores usados na família.
• Quando um periférico não faz parte de um determinadomodelo, SFR’s relacionados também estão ausentes,tornando inválido o seu endereço.
• O fabricante não recomenda o uso destes endereços.
SFR’s
FILE REGISTERS5
15325/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
SFR
’snã
o us
ados
FILE REGISTERS5
15425/04/2017
Status Register
• Armazena informações relativas àúltima operação realizada pela ULA.
• É necessário na realização decálculos lógicos e aritméticos.
FILE REGISTERS5
15525/04/2017
Status Register
8-bitStatus
Register
8-bitData bus
8-bitMUX21
14-bitInstructionRegister
8-bitData bus
Flash
8-bitWork
Register
8-bitData bus
8-bitALU
InstructionDecoder
14-bitOpcode
14-bit
8-bit
FILE REGISTERS5
15625/04/2017
Status Register
STATUS
• Registrador 000000011b, 003h, banco 0• Registrador 010000011b, 083h, banco 1• Registrador 100000011b, 103h, banco 2• Registrador 110000011b, 183h, banco 3• Registrador XX0000011b
25/04/2017
27
FILE REGISTERS5
15725/04/2017
Status Register• Bit 0 – C: Carry ou Borrow do nibble mais significativo.• Bit 1 – DC: (Digit) Carry ou Borrow do nibble menos significativo.• Bit 2 – Z: Indicador de resultado zero.• Bit 3 – NOT_PD: Indicador de desligamento (Power Down).• Bit 4 – NOT_TO: Indicador de Watchdog Timer Time-Out.• Bit 5 – RP0: Selec. banco da SRAM em endereçamento direto.• Bit 6 – RP1: Selec. banco da SRAM em endereçamento direto.• Bit 7 – IRP: Selec. banco da SRAM em endereçamento indireto.
FILE REGISTERS5
15825/04/2017
Status Register
Gerenciamento de bancos Sinalização da ULASinalização de reset
• O status register possui três funções:1. Gerenciamento de bancos STATUS<7:5>
2. Sinalização de reset STATUS<4:3>3. Sinalização da ULA STATUS<2:0>
FILE REGISTERS5
15925/04/2017
Status Register
• R: Permite leitura• W: Permite escrita• 0: Inicia em zero• 1: Inicia em um• x: ? (o data sheet não explica)• u: Não implementado
FILE REGISTERS5
16025/04/2017
Carry e Digit Carry
Nibble menos significativoNibble mais significativo
HALFADDER
B0 A0
S0
FULLADDER
B1 A1
S1
CyIN1
FULLADDER
B2 A2
S2
FULLADDER
B3 A3
S3
CyIN2CyIN
3
CyOUT3 CyOUT
0CyOUT1CyOUT
2
FULLADDER
B4 A4
S4
FULLADDER
B5 A5
S5
CyIN5
FULLADDER
B6 A6
S6
FULLADDER
B7 A7
S7
CyIN6CyIN
7
OF CyOUT4CyOUT
5CyOUT6
C DC
• Não veremos o comportamento do bitDC após a execução de uma subtração.
FILE REGISTERS5
16125/04/2017
Status Register
• O bit indicador de zero pode ser usado, por exemplo,para identificar o término em uma contagem.
• O bit indicador de desligamento pode ser usado, porexemplo, para aplicar rotinas de inicialização desistemas onde são necessárias verificações dos estadosiniciais.
• Os bits 5, 6 e 7 são usados em endereçamento e serãoabordados mais adiante.
FILE REGISTERS5
16225/04/2017
Status Register• O bit indicador de zero assume valor “zero lógico” quando a
resposta da operação não vale zero.• O bit indicador de zero assume valor “um lógico” quando a
resposta da operação vale zero.• O bit indicador de carry assume valor “zero lógico” quando a
adição aritmética não causa overflow (entre 000h e 0FFh).• O bit indicador de carry assume valor “um lógico” quando a
adição aritmética causa overflow (entre 100h e 1FEh).• O bit indicador de carry assume valor “um lógico” quando a
subtração aritmética gera resposta positiva.• O bit indicador de carry assume valor “zero lógico” quando a
subtração aritmética gera resposta negativa.
25/04/2017
28
FILE REGISTERS5
16325/04/2017
• Programação direta: O endereço é citado no código.• Exemplo ilustrativo: “Vá para a rua Duque de Caxias.”
• Programação indireta: O código cita um registrador quecontém o local.• Exemplo ilustrativo:
1. “O Antonio mora na rua Duque de caxias.”2. “Vá para a rua onde o Antonio mora.”
Endereçamento do file registersFILE REGISTERS5
16425/04/2017
• RP0,1 – RAM Paging• IRP – Indirect RAM Paging• INDF – Indirect File Access
Endereçamento do file registers
FILE REGISTERS5
16525/04/2017
Endereçamento direto
9-bit<6:0>
STATUS<6:5>
<8:0>
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
FILE REGISTERS5
16625/04/2017
• Os 7 bits menos significativos são fornecidosdiretamente pelo opcode.
• A ULA adiciona STATUS<6:5>, RP1:RP eforma a palavra de endereço de 9 bits.
• Se RP1:RP0 não forem alterados, é possívelacessar qualquer posição da SRAM dentrodo mesmo banco (128 posições).
• Se for necessário mudar o banco, RP1:RP0devem ser configurados antes da execuçãoda instrução de acesso ao novo endereço daSRAM.
Endereçamento direto
FILE REGISTERS5
16725/04/2017
• No endereçamento direto, o projetista precisa saber,previamente, os endereços usados e, com base nisso,elabora o programa.
• Nem sempre isso é possível.• Em muitos casos, o endereço usado depende da
verificação de testes condicionais.• Em outros casos, há vários endereços, formando uma
matriz dinâmica, de tamanho imprevisível.• Em todos esses casos, é preciso usar o endereçamento
indireto, no qual o projetista não sabe qual o endereço aser acessado, mas um registrador o sabe.
Endereçamento indiretoFILE REGISTERS5
16825/04/2017
• INDF – Indirect File Access• FSR – File Selection Register.• INDF não é um registrador físico.
Endereçamento indireto
25/04/2017
29
FILE REGISTERS5
16925/04/2017
Indirect Addr (INDF).• Registrador 000000000b, 000h, banco 0• Registrador 010000000b, 080h, banco 1• Registrador 100000000b, 100h, banco 2• Registrador 110000000b, 180h, banco 3• Registrador XX0000000b
Endereçamento indiretoFILE REGISTERS5
17025/04/2017
FSR
• Registrador 000000100b, 004h, banco 0• Registrador 010000100b, 084h, banco 1• Registrador 100000100b, 104h, banco 2• Registrador 110000100b, 184h, banco 3• Registrador XX0000100b
Endereçamento indireto
FILE REGISTERS5
17125/04/2017
• Ao usar, em uma instrução, o endereço INDF, a PIC
reconhece que o endereçamento da SRAM deve ser oindireto.
• Ao reconhecer um endereçamento indireto, a PIC usa obit STATUS<7>, IRP para obter o nono bit e usa o FSR paraobter os 8 bits menos significativos do endereço da SRAM.
• O endereço acessado, então, não é o de INDF, mas ofornecido por IRP e FSR.
Endereçamento indiretoFILE REGISTERS5
17225/04/2017STATUS<7>
Endereçamento indireto
FILE REGISTERS5
17325/04/2017
• Os 8 bits menos significativos são fornecidosdiretamente pelo FSR<7:0>.
• A ULA adiciona IRP e forma a palavra deendereço de 9 bits.
• Se IRP não for alterado, é possível acessarqualquer posição da SRAM dentro da mesmafaixa (256 posições).
• Se for necessário mudar a faixa, IRP devem serconfigurado antes da execução da instrução deacesso ao FSR.
• Não faz sentido falar em bancos emendereçamento indireto.
Endereçamento indiretoFILE REGISTERS5
17425/04/2017
• O nome “indireto” diz respeito ao fato deque o endereço do registrador a serlido/escrito não é fornecido no opcode.
• A instrução faz uso de FSR, que indica qualé o registrador a ser usado pela instrução.
• Isso permite que se possa armazenar emregistradores endereços da SRAM.
Endereçamento indireto
25/04/2017
30
FILE REGISTERS5
17525/04/2017
RP1 RP0 Banco
0 0 00 1 11 0 21 1 3
IRP FSR<7> Banco
0 0 00 1 11 0 21 1 3
STATUS
Endereçamento da SRAMFILE REGISTERS5
17625/04/2017
IRP FSR<7> Parte
00
0 1111
0 21
• A divisão em bancos não é relevante noendereçamento indireto.
• Os bancos 0 e 1 formam a primeira parte.• Os bancos 2 e 3 formam a segunda parte.
Endereçamento da SRAM
FILE REGISTERS5
17725/04/2017
Endereçamento da SRAMFILE REGISTERS5
17825/04/2017
• Um multiplexador escolhe qual endereço seráusado, o direto ou o indireto.
• Direto:• O MUX recebe 7 bits (128 posições) na entrada
de endereçamento direto, vindo do opcode.• Após a multiplexação, os bits RP1 e RP0 são
adicionados, como nono e oitavo bits dapalavra, respectivamente, totalizando 9 bits.
• Indireto:• O MUX recebe 8 bits do FSR.• Após a multiplexação, o bit IRP é adicionado,
como nono bit da palavra, totalizando 9 bits.
Endereçamento da SRAM
FILE REGISTERS5
17925/04/2017
Endereçamento da SRAMFILE REGISTERS5
18025/04/2017
Endereçamento da SRAM
O0
O8
Sel
9-bit21MUX
Entrada de endereço da SRAM
A0
A8
B0
B8
Endereçamento indireto
Endereçamento direto
0: indireto1: direto
25/04/2017
31
FILE REGISTERS5
18125/04/2017
Endereçamento da SRAM
9-bit21MUX
Endereçamento indireto
Endereçamento direto
Instructionregister
7-bit
File selectionregister
8-bit
RP1,RP0
IRP
0: indireto1: direto
FILE REGISTERS5
18225/04/2017
Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8
0: indireto1: direto
SRAMAddress Bus
Endereçamento da SRAM
FILE REGISTERS5
18325/04/2017
• Uma grande quantidade de instruções fazem usode registradores da SRAM especificados por meiode seu endereço, 7 bits.
• Estas instruções fazem uso de endereçamentodireto, exceto quando esse registrador é INDF.
• Outra grande quantidade de instruções fazem usode dados, 8 bits, fornecidos diretamente no opcode.
• Essas instruções podem fornecer o endereço de 8bits da SRAM em endereçamento indireto.
Endereçamento da SRAM SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
ANDLWIORLWXORLWADDLWSUBLWMOVLWRETLW
FILE REGISTERS5
18425/04/2017
INDF 000h INDF 080h INDF 100h INDF 180hTMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181hPCL 002h PCL 082h PCL 102h PCL 182hSTATUS 003h STATUS 083h STATUS 103h STATUS 183hFSR 004h FSR 084h FSR 104h FSR 184hPORTA 005h TRISA 085h 105h 185hPORTB 006h TRISB 086h PORTB 106h TRISB 186hPORTC 007h TRISC 087h 107h 187hPORTD 008h TRISD 088h 108h 188hPORTE 009h TRISE 089h 109h 189hPCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18AhINTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18BhPIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18ChPIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18DhTMR1L 00Eh PCON 08Eh EEDATH 10Eh 18EhTMR1H 00Fh 08Fh EEADRH 10Fh 18FhT1CON 010h 090h 110h 190hTMR2 011h SSPCON2 091hT2CON 012h PR2 092hSSPBUF 013h SSPADD 093hSSPCON 014h SSPSTAT 094hCCPR1L 015h 095hCCPR1H 016h 096hCCP1CON 017h 097hRCSTA 018h TXSTA 098h GPR’s GPR’sTXREG 019h SPBRG 099hRCREG 01Ah 09AhCCPR2L 01Bh 09BhCCPR2H 01Ch 09ChCCP2CON 01Dh 09DhADRESH 01Eh ADRESL 09EhADCON0 01Fh ADCON1 09Fh
020h 0A0hGPR’s GPR’s
06Fh 0EFh 16Fh 1EFh070h 0F0h 170h 1F0h
GPR’s GPR’s GPR’s GPR’s07Fh 0FFh 17Fh 1FFh
Exem
plos
Direto:• f = 0001101b, 0Dh• RP1,0 = 00b
Indireto:• FSR = 00001101b, 0Dh• IRP = 0b
Direto:• f = 0001101b, 0Dh• RP1,0 = 01b
Indireto:• FSR = 10001101b, 8Dh• IRP = 0b
Direto:• f = 0001101b, 0Dh• RP1,0 = 10b
Indireto:• FSR = 00001101b, 0Dh• IRP = 1b
Direto:• f = 0001101b, 0Dh• RP1,0 = 11b
Indireto:• FSR = 10001101b, 8Dh• IRP = 1b
FILE REGISTERS5
18525/04/2017
• Escritas nos GPR’s são realizadas por meio dasinstruções do tipo “file” com d=1.
• Escritas nos SFR’s são realizadas também pelasinstruções do tipo “file” caso o mesmo permita escrita.
• Os SFR’s também podem ser escritos automaticamente.• Registradores somente são alterados em Q4.
Escrita SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
CLK
Escrita naSRAM
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
FILE REGISTERS5
18625/04/2017
• Leituras dos GPR’s são realizadas por meio dasinstruções do tipo “file”.
• Registradores somente são lidos em Q2.
Leitura SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
CLK
Leitura naSRAM
Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2
25/04/2017
32
PROGRAM MEMORY6
18725/04/2017
PROGRAM MEMORY
PROGRAM MEMORY6
18825/04/2017
• A program memory se localiza em um chip separado,quando se usa P’s, e dentro do mesmo chip, quandose usa MCU’s.
• Antes do surgimento da memória flash, a memória deprograma era construída por meio de EEPROM.
• Alguns tipos de MCU’s do passado não tinhammemória não volátil para o programa, usavam DRAM,requerendo nova programação a cada religamento.
Flash Program Memory
PROGRAM MEMORY6
18925/04/2017
• Tanto com flash como com EEPROM, o conteúdo da memóriade programa não se perde com o desligamento do chip.
• A vantagem da flash é a maior densidade em relação àEEPROM.
• A desvantagem da flash é a lentidão em relação à EEPROM,porém este problema é irrelevante, pois não é comum alteraro conteúdo da flash durante a execução do programa.
• Se a MCU usa memória para armazenamento de dadosdurante a execução do programa frequentemente, é melhorque esta seja uma EEPROM.
Flash Program MemoryPROGRAM MEMORY6
19025/04/2017
• Outra opção também empregada em alguns modelos de MCUé usar uma DRAM ou SRAM como memória de programa.
• Neste caso, o conteúdo é perdido no desligamento e é precisoexecutar um boot ao ligar o chip.
• O programa, então, é gravado em uma flash ou uma EEPROMexterna ao chip (off-chip), na mesma placa (on-board).
• O boot faz a transferência do programa da memória externapara a RAM interna à MCU ou para a RAM ligada ao P.
• A vantagem desta opção é a alta densidade da DRAM ou a altarapidez da SRAM.
Flash Program Memory
PROGRAM MEMORY6
• A flash contém o programa.• A gravação da flash é feita, principalmente, na gravação
do programa (programação).• A flash também pode ser gravada na execução do
programa.• Uma gravação na flash interrompe a execução, pois,
uma vez que a mesma está em gravação, não é possívelgarantir que a próxima instrução não será alterada.
• A execução também é interrompida porque, comoqualquer memória, não é possível lê-la durante suagravação.
19125/04/2017
Flash Program MemoryPROGRAM MEMORY6Flash – processo de escrita
19225/04/2017
Sel
13-bit21MUX
A0
A12
B0
B12
Sel
14-bit21MUX
C0
C13
D0
D13
14-bit8k
flash
13-bit Address Bus
14-bit Program Bus
Seleção entre gravação por programação e gravação durante execução.
Programação
Execução
Programação
Execução
25/04/2017
33
PROGRAM MEMORY6
19325/04/2017
Program Counters
• PC.• Contador de programa de 13 bits <12:0>.• Trata-se de um contador crescente desviável.• A saída do PC gera o barramento de endereço de instrução.• Este barramento alimenta a flash e a stack.
13-bit
ULA
PROGRAM MEMORY6
19425/04/2017
Program Counter
• Desvios no programa são obtidos através da reconfiguraçãodo PC por meio das entradas Preset e Clear dos FF’s.
• No caso da PIC, os FF’s do PC formam um registrador de13 bits.
• O PC incrementa naturalmente se a próxima instrução estána sequência.
• A ULA reescreve o PC se a próxima instrução faz um desvio.• Sendo um desvio com retorno, a ULA também envia o PC+1
para a stack.
PROGRAM MEMORY6
19525/04/2017
• Na PIC, o PC está incluído na fileregister (PCL, 8 bits).
• 8k endereços (flash).• 13-bit address <12:0>• 14-bit instruction <13:0>
• 4×2k pagging• 11-bit address em cada página <10:0>
• 8-instruction stack
Program CounterPROGRAM MEMORY6
19625/04/2017
Acesso à Flash Program Memory• A divisão em páginas é feita para que o
endereçamento das instruções feito nas instruçõesde desvio (CALL e GOTO) se dê por meio de 11 bits, enão 13 bits.
• A necessidade desta redução se deve ao fato de quetal endereço deve caber nos 14 bits de instrução.
• Usando 11 bits para endereço, sobram 3 bits para osdemais parâmetros da instrução.
• Dois bits são usados para identificar que a instruçãoé de desvio (uma das quatro famílias de instruções).
• Outro bit é usado para diferenciar CALL e GOTO.
PROGRAM MEMORY6
19725/04/2017
• Dois artifícios diferentes podem serusados no controle da program memory:• Fila de pré-busca (Prefetch Queue).• Pilha (Stack).
Acesso à Flash Program MemoryPROGRAM MEMORY6
19825/04/2017
Fila e Pilha
000h001h002h003h
000h001h002h003h
7 0 7 0Fila Pilha
POP
PUSH
25/04/2017
34
PROGRAM MEMORY6
19925/04/2017
• A pré-busca permite que o PC busque naProgram Memory a próxima instrução enquanto ainstrução vigente é executada.
• Isto aumenta a rapidez do processador, pois evitaque tempo de execução seja perdido durante abusca pela instrução seguinte.
• A pré-busca é feita de modo invisível ao usuário.• A pré-busca é feita por meio de uma fila (Prefetch
Queue) ou de um instruction register.
FilaPROGRAM MEMORY6
20025/04/2017
Fila• LILO – Last In, Last Out.• Outros nomes: LILO, LOLI, FIFO, FOFI.• As instruções são escritas e lidas na mesma ordem.• Os dados das instruções são enfileirados.• A fila é um registrador paralelo no qual a palavra muda de
posição tal como um bit muda de posição em umregistrador serial.
• A cada ciclo, o registrador envia as palavras um nívelabaixo, liberando a última posição.
• A leitura da fila somente pode ser feita na primeira posição.• A gravação na fila somente pode ser feita na última
posição disponível.
PROGRAM MEMORY6
20125/04/2017
Fila• A fila pode ser usada para aumentar o desempenho de
processadores, principalmente quando a memória deprograma é externa e seu acesso tem uma rapidez quenão está sob controle do processador.
• A fila garante que sempre há uma instrução pronta para serexecutada.
• Cada posição da fila é uma instrução lida comantecedência.
• Uma fila de uma única posição não recebe esse nome, é,apenas, um registrador.
• A família mid-range possui o instruction register.• A família PIC18 possui fila de dois estágios (fetch stage e
execute stage).
PROGRAM MEMORY6
20225/04/2017
Fila
http://www.engineering.uiowa.edu/~ece_036/Lecture/Lectures3-4.pdf
Mid-range PIC18
PROGRAM MEMORY6
20325/04/2017
• Quando ocorre desvio, a pré-busca realizada anteriormentedeve ser ignorada.
• É preciso realizar uma nova busca pela próxima instrução,desta vez, com o endereço correto, apontando para o desvio.
• Isso explica por que as instruções que realizam ou podemrealizar desvio consomem 2TCY.
BTFSCBTFSSDECFSZINCFSZCALLGOTORETURNRETLWRETFIE
FilaPROGRAM MEMORY6
20425/04/2017
• LIFO – Last In, First Out.• Outros nomes: LIFO, FILO, LOFI, FOLI.• Os endereços das instruções são escritas e lidas
em ordem inversa.• Há um empilhamento.• As informações são organizados em níveis.• O primeiro nível está no topo.• Level 1 Top Of the Stack (TOS)• O nível atual é indicado pelo stack pointer.• O PC se comunica com a TOS.• Leitura e gravação são realizados apenas na TOS.
Pilha
25/04/2017
35
PROGRAM MEMORY6
20525/04/2017
• Duas ações podem ser feitas na pilha:• Push – Colocação de endereço de instrução.• Pop – Retirada de endereço de instrução.
• Alguns MCU´s ou P´s possuem as instruções PUSH e POP.• Na PIC, PUSH e POP ocorrem em outras instruções.• Dois problemas podem ocorrer na pilha:
• Overflow – Escrita na pilha lotada.• Underflow – Leitura na pilha vazia.
• A PIC não registra a ocorrência destes dois fenômenos.• A PIC não diferencia as posições usadas das não usadas.
PilhaPROGRAM MEMORY6
20625/04/2017
• Um underflow ocorre quando se tenta realizarmais retornos do que desvios retornáveis.
• Um overflow ocorre quando o excesso dedesvios retornáveis sobre os retornosocorridos for maior do que oito.
• Interrupções podem gerar overflow.• Ambos fenômenos não podem acontecer.
Pilha
PROGRAM MEMORY6
20725/04/2017
• O valor PC+1 é gravado no primeiro nível vagoda pilha.
• A pilha armazena o endereço (13 bits) em que asinstruções são encontradas no Program Flash, enão a instrução propriamente dita (14 bits).
• A sequência das instruções executadas não élinear, pois o programa pode conter instruçõescondicionais, aceitação de interrupções edesvios de programa.
PilhaPROGRAM MEMORY6
20825/04/2017
• Semelhantemente à instrução CALL, a instruçãoGOTO também faz um desvio.
• A diferença é que GOTO é usado não para ochamamento de uma sub-rotina, mas para umasimples alteração do ponto de operação indicadopelo PC.
• A instrução GOTO não permite retorno e, por isso,não realiza gravação na pilha.
• A instrução CALL consiste de um PUSH seguido deum GOTO.
Pilha
PROGRAM MEMORY6
20925/04/2017
• O endereço diz respeito à posição na flash.• O endereço é de 13 bits (página e linha) <12:0>.• Não pode ser lida nem escrita pelo programador.• Acessada nas instruções CALL, RETURN, RETFIE e RETLW.
PilhaPROGRAM MEMORY6
21025/04/2017
Pilha
CALL RETURNRETFIE
RETLW
PC
http://upload.w ikimedia.org/w ikipedia/commons/thumb/2/29/Data_stack.svg/200px-Data_stack.svg.png
stack
Level 1
Level 8
TOS
25/04/2017
36
PROGRAM MEMORY6
21125/04/2017
Pilha – PUSH
12345678
PC
CALL (1)
12345678
PC
12345678
PC
CALL (2)
12345678
PC
Nenhum pop realizado entre os dois pushes.
PROGRAM MEMORY6
21225/04/2017
12345678
PC
CALL (3)
12345678
PC
12345678
PC
CALL (4)
12345678
PC
12345678
PC
CALL (5)
12345678
PC
Pilha – PUSH
Nenhum pop realizado entre os pushes.
PROGRAM MEMORY6
21325/04/2017
12345678
PC
CALL (6)
12345678
PC
12345678
PC
CALL (7)
12345678
PC
12345678
PC
CALL (8)
12345678
PC
Pilha – PUSH
Nenhum pop realizado entre os pushes.
PROGRAM MEMORY6
21425/04/2017
Pilha – Overflow
12345678
PCCALL (9)
12345678
PC
Perdido
PROGRAM MEMORY6
21525/04/2017
Pilha – PUSH
• O PUSH é realizado porque, após o desvio, épreciso retornar ao caminho original por onde o PCleva o programa a prosseguir com a execução.
• O desvio é feito quando uma sub-rotina é chamada.• Após a execução da sub-rotina, o PC precisa saber
o endereço para onde retornar.• O endereço de retorno é o que corresponde à
instrução que segue o CALL.• A pilha é a memória onde ficam armazenados os
endereços de retorno.
PROGRAM MEMORY6
21625/04/2017
Pilha
• A instrução CALL deve ser usada quando existea idéia de uma sub-rotina que, após suaexecução, deve levar o programa ao ponto ondeestava antes de sua execução.
• A instrução GOTO deve ser usada quando nãoexiste a idéia de sub-rotina. A pilha não é usada.
25/04/2017
37
PROGRAM MEMORY6
21725/04/2017
Pilha – Subrotinas
XXX
XXX
CALL
XXX
XXX
RETURN
XXX
XXX
CALL
XXX
XXX
XXX
XXX
CALL
XXX
XXX
RETURN
XXX
XXX
CALL
XXX
XXX
RETURN
XXX
XXX
CALL
XXX
XXX
RETURN
XXX
XXX
CALL
XXX
XXX
RETURN
PROGRAM MEMORY6
21825/04/2017
Pilha – Prevenção de overflow• A instrução CALL pode provocar um stack
overflow, ela deve ser usada com cautela.• Mesmo quando se tem a idéia de sub-rotina,
a instrução CALL pode ser substituída porGOTO se houver, em todo o programa, apenasum ponto de chamada para a sub-rotina.
• Esta troca pode ser feita porque, como oendereço de retorno é único, ele pode serprevisto pelo programador, que colocará umGOTO para aquele endereço.
• Não é necessário o uso da pilha.
PROGRAM MEMORY6
21925/04/2017
Pilha – Prevenção de overflow• Se está acontecendo o problema de overflow, uma solução
é, ao invés de realizar vários chamados para a mesma sub-rotina, colocar várias cópias desta sub-rotina em cada pontode chamada.
• Se a sub-rotina não for muito grande e os pontos dechamada não forem muitos, a perda de espaço na programmemory pode não ser significativa.
• Outra solução é usar instruções condicionais (BTFSS,BTFSSC, INCFSZ, DECFSZ) que permitam descobrir qualo ponto de chamada da sub-rotina, dispensando, assim, ouso da pilha, permitindo a troca da instrução CALL por GOTO.
• Um programador experiente poderá encontrar soluções maiscriativas do que estas.
PROGRAM MEMORY6
22025/04/2017
Pilha – Leitura
Data AddrDado 7 0hDado 6 1hDado 5 2hDado 4 3hDado 3 4hDado 2 5hDado 1 6hDado 0 7hEmpty 8h
Data AddrVazio 8hDado 6 0hDado 5 1hDado 4 2hDado 3 3hDado 2 4hDado 1 5hDado 0 6hEmpty 7h
• Dados somente podem ser lidos no primeiro endereço.• Os endereços são subtraídos em uma unidade.• O endereço 0h é chamado de top of the stack (TOS).
Data AddrVazio 7hVazio 8hDado 5 0hDado 4 1hDado 3 2hDado 2 3hDado 1 4hDado 0 5hEmpty 6h
Data AddrVazio 6hVazio 7hVazio 8hDado 4 0hDado 3 1hDado 2 2hDado 1 3hDado 0 4hEmpty 5h
Data AddrVazio 5hVazio 6hVazio 7hVazio 8hDado 3 0hDado 2 1hDado 1 2hDado 0 3hEmpty 4h
Data AddrVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 2 0hDado 1 1hDado 0 2hEmpty 3h
PROGRAM MEMORY6
22125/04/2017
Pilha – Leitura
Data AddrVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 2 0hDado 1 1hDado 0 2hEmpty 3h
Data AddrVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 1 0hDado 0 1hEmpty 2h
• O stack pointer aponta para a TOS.• Quando o stack pointer aponta para a posição
marcada como empity, a pilha está vazia.
Data AddrVazio 2hVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 0 0hEmpty 1h
Data AddrVazio 1hVazio 2hVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hEmpty 0h
PROGRAM MEMORY6
Data AddrVazio 2hVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 0 0hEmpty 1h
Data AddrVazio 1hVazio 2hVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hEmpty 0h
22225/04/2017
Pilha – Escrita
Data AddrVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 2 0hDado 1 1hDado 0 2hEmpty 3h
Data AddrVazio 3hVazio 4hVazio 5hVazio 6hVazio 7hVazio 8hDado 1 0hDado 0 1hEmpty 2h
Data AddrVazio 5hVazio 6hVazio 7hVazio 8hDado 3 0hDado 2 1hDado 1 2hDado 0 3hEmpty 4h
Data AddrVazio 6hVazio 7hVazio 8hDado 4 0hDado 3 1hDado 2 2hDado 1 3hDado 0 4hEmpty 5h
25/04/2017
38
PROGRAM MEMORY6
22325/04/2017
• Entrada: Endereço da instrução (13 bits) <12:0>• Saída: Dados da Instrução (14 bits) <13:0>
Acesso
• Entrada: 0000h a 1FFFh• Saída: 0000h a 3FFFh
14-bit
13-bit
PROGRAM MEMORY6
22425/04/2017
• Após a determinação do endereço da próxima instrução, pormeio do program counter, a instrução é lida na program flashe gravada no instruction register, um registrador paralelo.
• Após a gravação do instruction register, o program counter jápode endereçar a próxima instrução e fazer a leitura daprogram memory, pois a instrução vigente está preservadano instruction register, mantendo-se disponível para consultapor parte da ULA.
• Somente após a completa execução da instrução vigente éque o instruction register pode ser atualizado para a próximainstrução, lida no program memory, endereçada peloprogram counter.
Instruction register
PROGRAM MEMORY6
22525/04/2017
• O instruction register pode ser construído da forma de fila,exercendo, assim, a função de Prefetch Queue.
• O stack armazena os endereços de instrução, 13 bits.• O prefetch queue armazena as instruções, 14 bits.• A fila age de forma totalmente invisível ao programador.
Instruction registerPROGRAM MEMORY6
22625/04/2017 8-bitData bus
8-bit21MUX
14-bitInstructionRegister
8-bitData bus
Flash
8-bitWork
Register
8-bitData bus
InstructionDecoder
14-bitOpcode 14-bit
8-bit
8-bitALU
Leitura da instrução
Entrada de clock
Outras saídas não foram incluídas nesta figura.
sel
PROGRAM MEMORY6
22725/04/2017
Leitura da instrução
8-bit21MUX
14-bitInstructionRegister
8-bitData bus
FlashInstructionDecoder
14-bitOpcode 14-bit
8-bit
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
ANDLWIORLWXORLWADDLWSUBLWMOVLWRETLW
Instruções cujo dado está no opcode Instruções cujo
dado está em um registrador
sel
PROGRAM MEMORY6
22825/04/2017
Pági
nas
Flash
25/04/2017
39
PROGRAM MEMORY6
22925/04/2017
Páginas
• A primeira página perde as cinco primeirasposições para que sejam usadas pela MCUpara saltar para o programa principal oupara a rotina de interrupção.
• Se o seu programa não utiliza interrupções,essas cinco primeiras posições podem serusadas como programa principal.
PROGRAM MEMORY6
23025/04/2017
• O address 0000h contém a instrução para onde o PC vaiquando a MCU sofre o comando reset.
• O address 0004h contém a instrução para onde o PC vaiquando a MCU atende a um pedido de interrupção.
• Se o programa não usa interrupções, ele pode começar apartir do address 0000h.
• Geralmente, o address 0000h contém a instrução GOTOseguida do endereço onde o programa principal começa.
• Geralmente, o address 0005h contém a instrução GOTOseguida do endereço onde a rotina de interrupção começa.
Páginas
PROGRAM MEMORY6
23125/04/2017
• Não é de todo correto afirmar, como faz o datasheet, que a program memory começa no endereço0005h, afina, se o programa não usa interrupções, oprograma pode começar no endereço 000h usandoos endereços seguintes, inclusive o interrupt vector.
• Esta opção é tão viável que o próprio MPLAB®
considera como default, no código MPASM®, oendereço 0000h como início para a montagem doprograma, isto é, quando o pondo de origem (diretivaORG) não é definido pelo usuário.
• Desta forma, os dois pontos de vista serão aceitosneste contexto.
Páginas
Vide exemplos
PROGRAM MEMORY6
23225/04/2017
• Localiza-se na Flash Memory em 0000h.• Este é o endereço para onde o Program Counter leva a
execução quando o processador sofre algum tipo dereiniciação (não vale para wake-up).
• Este é um ponteiro para o endereço onde o programacomeça.
• Preferencialmente, a instrução gravada neste endereço deveser GOTO, apontando para onde, de fato o programa começa,pulando, pelo menos, as outras quatro posições reservadas.
Reset Vector
PROGRAM MEMORY6
23325/04/2017
• Localiza-se na Flash Memory em 0004h.• Quando uma interrupção está habilitada, uma fonte de
dados interna ou externa pode realizar uma interrupçãona execução do programa.
• Como fonte de dados internos, tem-se os contadores,conversores, portas, etc.
• Como fonte de dados externos, tem-se os sensores eos métodos de interface de entrada do usuário.
Interrupt VectorPROGRAM MEMORY6
23425/04/2017
• Uma interrupção age como um comando CALL.• Uma interrupção executa um PUSH na pilha.• O uso de interrupções deve tomar o cuidado de
não proporcionar overflow na pilha.• Uma forma de proteger a PIC contra overflow
na pilha é desabilitar todas as interrupçõesquando for atendido um pedido de interrupção,reabilitando-as ao término do atendimento.
• Esse procedimento é feito automaticamente.• Se interrupções não forem usadas, é mais
seguro desabilitar todas as interrupções.
Interrupt Vector
25/04/2017
40
PROGRAM MEMORY6
23525/04/2017
ID locations• 4 posições da flash.• 2000h a 2003h.• 14 bits de endereço.• Posições usadas para gravação de valores de
checagem e outros números de identificação.• Posições inacessíveis para o programa em execução.• Posições acessíveis na etapa de programação.• Recomenda-se a não alteração desses valores.
Este slidenão cai na prova.
PROGRAM MEMORY6
23625/04/2017
• Contador de 13 bits (8k posições) PC<12:0>.• Formado por 2 registradores:
• PCL – PC Low (8 bits, 256 endereços) PCL<7:0>
• PCH – PC High (5 bits, 32 combinações) PCH<4:0>• PCL aceita leitura e escrita.• PCH não aceita nem leitura nem escrita.• PCH é escrito indiretamente, a partir do registrador PCLATH.
Program Counter
13-bit
14-bit
PROGRAM MEMORY6
23725/04/2017
• PCL é um SFR.• PCL está contido no file registers.• PCL pode ser lido e escrito.• PCL possui 8 bits.• PCH não é um SFR.• PCH não está contido no file registers.• PCH não pode ser lido nem escrito diretamente.• PCH possui 5 bits.• PCLATH é um SFR.• PCLATH está contido no file registers.• PCLATH pode ser lido e escrito.• PCLATH possui 5 bits.
Program CounterPROGRAM MEMORY6
23825/04/2017
Program Counter – Low
PCL• Registrador 000000010b, 002h, banco 0• Registrador 010000010b, 082h, banco 1• Registrador 100000010b, 102h, banco 2• Registrador 110000010b, 182h, banco 3• Registrador XX0000010b
PROGRAM MEMORY6
23925/04/2017
PCLATH• Registrador 000001010b, 00Ah, banco 0• Registrador 010001010b, 08Ah, banco 1• Registrador 100001010b, 10Ah, banco 2• Registrador 110001010b, 18Ah, banco 3• Registrador XX0001010b
Program Counter – LatchPROGRAM MEMORY6
24025/04/2017
PCLATH• PC<7:0> = PCL<7:0>• PC<12:8> = PCH<4:0>• PCLATH contém os 5 bits para gravar em PCH .• PCLATH é um registrador de 5 bits da SRAM.
PCLATH
PCLPCH
inexistente
25/04/2017
41
PROGRAM MEMORY6
24125/04/2017
PCLATHFlash(kB)
Flash(kwords)
PCLATH(bits)
PC(bits)
0,4375 0,25 0 80,875 0,5 1 91,75 1 2 103,5 2 3 117 4 4 1214 8 5 13
• PCLATH é sempre de 5 bits.• PCLATH faz parte do core, que é o mesmo para
toda a família mid-range.• Se menos bits são usados, o programa deve levar
isso em consideração, para evitar um wrap-back.• Modelos com 256 posições não usam PCLATH.
USAREMOS
PROGRAM MEMORY6
24225/04/2017
PCLATH• Modelos mid-range com 256 posições (0,25k
instruções) não usam PCLATH.• Estes são os modelos mais baratos.• A flash memory é o elemento mais caro no chip
MCU, por isso, sua redução gera grandeeconomia de custo.
• No site do fabricante, o tamanho da programmemory é o primeiro critério de busca.
• O único modelo mid-range de 256 instruçõesencontrado (29/04/2014) é o PIC10F320.
https://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1024&mid=10&lang=en&pageId=74
PROGRAM MEMORY6
24325/04/2017
Gravação do PCL sem alterar PCLATH
data bus
PCLATH
PCLPCH
• A instrução faz a gravação dos 8 bits de PCL.• Este procedimento permite a realização de um GOTO manual.• Se PCLATH não é alterado, isto permite a livre
movimentação do PC na flash dentro de setores de 256posições da flash.
• PCL possui 8 bits porque pode ser gravado diretamente pelaULA via data bus.
inalterado
inexistente
PROGRAM MEMORY6
24425/04/2017
Gravação do PCL sem alterar PCLATHBloco 00Bloco 01Bloco 02Bloco 03Bloco 04Bloco 05Bloco 06Bloco 07Bloco 08Bloco 09Bloco 0ABloco 0BBloco 0CBloco 0DBloco 0EBloco 0FBloco 10Bloco 11Bloco 12Bloco 13Bloco 14Bloco 15Bloco 16Bloco 17Bloco 18Bloco 19Bloco 1ABloco 1BBloco 1CBloco 1DBloco 1EBloco 1F
00
FF
• Este procedimento permite arealização de saltos em faixas oublocos de programa de 256 posições.
• São 32 (25) blocos.• Não é possível mudar de bloco por
meio de saltos, apenas peloprosseguimento normal do programa.
• Este procedimento requer, nomínimo, duas instruções, enquanto ocomando GOTO pode fazer a mesmaação usando, apenas, uma instrução.
PROGRAM MEMORY6
24525/04/2017
Gravação do PCL sem alterar PCLATH
• Este procedimento requer, no mínimo, duasinstruções (MOVLW e MOVWF), enquanto ocomando GOTO pode fazer a mesma açãousando, apenas, uma instrução.
• Para realizar jumps dentro da mesmapágina, o uso da instrução GOTO.
• Estas duas opções levam o mesmo tempode execução, pois a instrução GOTO é dotipo 2TCY.
PROGRAM MEMORY6
24625/04/2017
PCLPCH
• A gravação do PCLATH deve ser feita antes de escrever PCL.• Gravando PCL, PCLATH é copiado em PCH automaticamente.• A cópia do PCLATH para o PCH não passa pelo data bus.• PCLATH<4:0> é copiado para PCH<4:0>.• PCLATH<4:0> é copiado para PC<12:8>.• Isso permite um jump com acesso a todas as páginas da flash.
PCLATH
Gravação do PCL alterando PCLATH
inexistente
25/04/2017
42
PROGRAM MEMORY6
24725/04/2017
• Realizando a gravação de PCLATH<4:0>, tal valor não écopiado para PC<12:8>.
• Esta cópia é feita automaticamente em operações que temPCL como destino.
• A prévia gravação de PCLATH<4:0> seguida da gravaçãode PCL<7:0> permite a escolha de 13 bits para oendereçamento da flash, PC<12:0>.
• Isto permite a livre movimentação do PC na flash completa.• PCLATH<4:0>PCH<4:0>• PCLATH<4:0>PC<12:8>• A instrução GOTO não permite saltos com essa amplitude.
Gravação do PCL alterando PCLATHPROGRAM MEMORY6
24825/04/2017
• A mudança de páginas é feita por meio de PCLATH.• PCLATH<4:3>PCH<4:3>• PCLATH<4:3>PC<12:11>• A divisão em páginas não é relevante no endereçamento
via gravação de PCLATH seguida pela gravação de PCL.
página
página
PCLPCH
PCLATH
Gravação do PCL alterando PCLATH
inexistente
PROGRAM MEMORY6
24925/04/2017
• O nome lath indica um segurador de informação.• A informação é liberada somente no momento certo.• Um flip-flop mestre-escravo age como latch, a saída Q
somente é atualizada em função da entrada D ou dasentradas J e K quando o sinal de controle é liberado(borda de subida ou de descida).
• O PCLATH age da mesma forma, porém com 5 bits.• O sinal de controle para liberação é a escrita do PCL.
PCLATHPROGRAM MEMORY6
25025/04/2017
• Por que a MCU usa o PCLATH?• Por que não liberar o PC<12:0> para escrita direta?• A resposta é que, se o usuário pudesse escrever
diretamente em PCL e PCH, não poderia fazer as duasescritas ao mesmo tempo.
• Um deveria ser gravado antes do outro.• Não seria possível gravar os treze bits simultaneamente.• Quando um fosse gravado, a próxima instrução já seria
determinada pelo novo valor do PC, e isso dificultariamuito a programação, pois o usuário deveria prever qualseria esta nova posição para, ali, gravar as instruçõespara a seleção do novo valor para a parte restante do PC.
• O uso do PCLATH permite que os treze bits sejamgravados simultaneamente, simplificando a programação.
PCLATH
PROGRAM MEMORY6
25125/04/2017
Instruções CALL e GOTO sem alterar PCLATH• A instrução faz a gravação dos onze bits
menos significativos do PC<10:0>.• A instrução faz a gravação de PCH<2:0>
e de PCL<7:0> .• Isto permite a livre movimentação do PC
na flash dentro de uma mesma página.
inalteradopágina
PCLPCH
PROGRAM MEMORY6
25225/04/2017
Página 0
Página 1
Página 2
Página 3
000
7FF
• Este procedimento permite arealização de saltos em faixas oublocos de programa de 2k posições.
• São 4 (22) blocos.• Não é possível mudar de bloco por
meio de saltos, apenas peloprosseguimento normal do programa.
Instruções CALL e GOTO sem alterar PCLATH
25/04/2017
43
PROGRAM MEMORY6
25325/04/2017
Instruções CALL e GOTO sem alterar PCLATH
Flash(kB)
Flash(kwords)
PC(bits) Páginas Bits no
opcode0,4375 0,25 8 1 80,875 0,5 9 1 91,75 1 10 1 103,5 2 11 1 117 4 12 2 1114 8 13 4 11
USAREMOS
PROGRAM MEMORY6
25425/04/2017
Instruções CALL e GOTO alterando PCLATH• A gravação do PCLATH deve ser feita antes do CALL ou
do GOTO.• Os dois bits mais significativos do PCLATH são copiados.• PCLATH<4:3>PCH<4:3>• PCLATH<4:3>PC<12:11>
PCLATHinexistente não copiado
PCLPCH
PROGRAM MEMORY6
25525/04/2017
Instruções CALL e GOTO
• Realizando a gravação de PCLATH<4:3>, tal valor não écopiado para PC<12:8>.
• Esta cópia é feita automaticamente nas operações CALL eGOTO.
• A prévia gravação de PCLATH<4:3> seguida doscomandos CALL ou GOTO permite a escolha de 13 bits parao endereçamento da flash, PC<12:0>.
• Isto permite a livre movimentação do PC na flash completa.
PROGRAM MEMORY6
25625/04/2017
Situações sobre o PC
PROGRAM MEMORY6
25725/04/2017
Situações sobre o PCPROGRAM MEMORY6
25825/04/2017
Situações sobre o PC
25/04/2017
44
PROGRAM MEMORY6
25925/04/2017
Situações sobre o PCPROGRAM MEMORY6
26025/04/2017
O problema do erro de página
• O incremento natural do program counter correspondeao comportamento natural de todo contador.
• A alteração forçada do program counter correspondea um jump efetuado por alguma instrução do tipo 2TCYou uma escrita em PCL.
• Estes dois fenômenos podem provocar uma alteraçãode página.
• Um cuidado deve ser tomado com o PCLATH<4:3>nestas mudanças de página.
Vide exemplos
PROGRAM MEMORY6
26125/04/2017
O problema do erro de página
• Quando se muda de uma página da program memory paraoutra por meio do incremento natural do program conter, énecessário atualizar, manualmente, o PCLATH<4:3>.
• Esta atualização não é realizada automaticamente.• Se ela não é realizada após a mudança natural da página,
o uso das instruções CALL, GOTO ou uma escrita em PCLlevarão o PC para a página anterior.
Vide exemplos
PROGRAM MEMORY6
26225/04/2017
O problema do erro de página
• Quando se chama uma rotina, e esta rotina se localizaem uma página diferente do ponto de chamada, e,dentro desta rotina, é efetuado o uso das instruçõesCALL, GOTO ou uma escrita em PCL, é necessárioatualizar, manualmente, o PCLATH<4:3>.
• Se PCLATH<4:3> não é atualizado após a mudançaforçada de página, o uso das instruções CALL, GOTOou uma escrita em PCL levarão o PC para a páginaque contém o ponto de chamada da rotina.
Vide exemplos
7 ULA
26325/04/2017
ULA
7 ULA
26425/04/2017
Acesso à ULA
8-bit8-bi
t
8-bit
3-bi
t
25/04/2017
45
7 ULA
26525/04/2017
Acesso à ULA
8-bit8-bi
t
8-bit
3-bi
tEntrada de dados A Entrada de dados B
Saída de dados
Bits de sinalizaçãoZ, C, DC
7 ULA
26625/04/2017
Loca
lizaç
ão d
a U
LA7 ULA
26725/04/2017
• Em Q1, a ULA recebe um byte indicativo da operação.• Em Q2, a ULA recebe um byte com o(s) dados.• Em Q3, a ULA realiza a operação.• Em Q4, a ULA escreve no local de destino.
Decodificação do opcode7 ULA
26825/04/2017
• O instruction decoder converte o opcode emduas etapas:1. O código da instrução em uma forma que
a ULA entenda e determine qual apróxima operação a ser realizada (Q1).
2. O(s) dado(s) da instrução (se houver) eque sofrerão a operação a ser realizadapela ULA (Q2).
• A seleção entre os resultados dessas duasetapas é feita por um MUX.
Decodificação do opcode
7 ULA
26925/04/2017
Decodificação do opcode
ALU8-bit
W8-bit
Datum8-bit
InstructionDecoder
StatusZ,C,DC
Opcode14-bit
Q1 Q2
Decode/Data6-bit 8-bit
7 ULA
27025/04/2017
Decode/Data8-bit
InstructionDecoderOpcode
14-bit
Decodificação do opcode
• Palavra para instruir a ULA sobre o próximo cálculo.• 11-bit program memory address em CALL e GOTO.• 8-bit literal em instrução do tipo LW.• 7-bit file register address em instrução do tipo F.• 3-bit bit address para instruções sobre bits.• 1-bit destiny address em instrução do tipo F.
25/04/2017
46
7 ULA
27125/04/2017
InstructionDecoder
Decode6-bitOpcode
14-bit Datum8-bit
• Um ou outro, mas não ambos.• Decode: Ocorre durante Q1.• Datum: Ocorre durante Q2.• O barramento de 8 bits é um só.• O decode usa, apenas, 6 bits.
Decodificação do opcode7 ULA
27225/04/2017
InstructionDecoder
Opcode14-bit Datum
8-bit
• Q2:• 8-bit PCL• 8-bit literal• 7-bit file address• 3-bit bit address• 1-bit destiny address
Decodificação do opcode
Q2
7 ULA
27325/04/2017
Decodificação do opcode
1 sel PC<10:8> PCL13 12 10 0
011
1 seleção k (literal)13 12 8 7 0
111
0 bitseleção file13 12 7 6 0
19
0 seleção file13 12 7 6 0
011
0 dseleção file13 12 8 7 6 0
011
Tipo 1
Tipo 2
Sobre bit
Sobre literal
De desvio
Sobre byte
Q2 8-bit dataQ1 6-bit decode
8 7
7 ULA
27425/04/2017
Padrões de estrutura de opcode
d0 0
13 12 11 10 9 8 7 6 5 4 3 2 1 00
seleção file address
0 0 seleção13 12 11 10 9 8 7 6 5 4 3 2 1 0
file address
1 1
13 12 11 10 9 8 7 6 5 4 3 2 1 0
seleção literal
0 0 0 0 0 0 013 12 11 10 9 8 7 6 5 4 3 2 1 0
seleção
1 013 12 11 10 9 8 7 6 5 4 3 2 1 0
program addresssel.
10
13 12 11 10 6 5 4 3 2 1 09 8 7
sel. bit addr. file address
Q2 8-bit dataQ1 6-bit decode
7 ULA
27525/04/2017
Padrões de estrutura de opcode• A figura anterior mostra que a informação
do data sheet de que no Q1 é realizada adecodificação e de que no Q2 é realizada aleitura do(s) argumentos (caso hajam), éuma simplificação.
• Esses detalhes são segredo industrial enão são fornecidos em data sheets.
• A afirmação de que, no Q1, são lidos,apenas, seis bits (opcode<13:8>) é,apenas, uma suposição coerente.
• O opcode poderia ter até 16 bits e isso nãoafetaria o tempo de execução; aumentaria,apenas, o tamanho da flash memory.
7 ULA
27625/04/2017
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZ
• Data:• 1-bit destiny address• 7-bit file address
0 dseleção file13 12 8 7 6 0
011
Q2 8-bit dataQ1 6-bit decode
Decodificação do opcode
InstructionDecoder
Opcode14-bit
Q1 6-bit decode
Q2 8-bit data
25/04/2017
47
7 ULA
0 seleção file13 12 7 6 0
011
27725/04/2017
• Data:• Bit 7• 7-bit file address
Q2 8-bit data
Decodificação do opcodeNOPMOVWFCLRWCLRF
Q1 6-bit decode
InstructionDecoder
Opcode14-bit
Q1 6-bit decode
Q2 8-bit data
Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0NOP 00b 0000b (00d) 0xx0 0000
MOV WF 00b 0000b (00d) 1fff ffff
CLR W 00b 0001b (01d) 0xxx xxxx
CLR F 00b 0001b (01d) 1fff ffff
Q2 8-bit dataQ1 6-bit decode
7 ULA
13 12 8 7 011
1 seleção k (literal)1 27825/04/2017
• Datum:• 8-bit literal
Q2 8-bit data
Decodificação do opcodeANDLWIORLWXORLWADDLWSUBLWMOVLWRETLW
Q1 6-bit decode
InstructionDecoder
Opcode14-bit
Q1 6-bit decode
Q2 8-bit data
7 ULA
0 bitseleção file13 12 7 6 0
19
BCFBSFBTFSCBTFSS
27925/04/2017
Q2 8-bit data
Decodificação do opcode
Q1 6-bit decode
InstructionDecoder
Opcode14-bit
Q1 6-bit decode
Q2 8-bit data
• Decode:• Família e seleção• 3-bit bit address <2:1>
• Data:• 3-bit bit address <0>• 7-bit file address
7 ULA
1 sel k (literal)13 12 10 0
011 8 7
28025/04/2017
• Datum:• PCL
Q2 8-bit data
Decodificação do opcodeCALLGOTO
• Como os dados superam 8 bits, o PC<10:8>é lido no Q1, junto com os bits 11 a 13.
Q1 6-bit decode
InstructionDecoder
Opcode14-bit
Q1 6-bit decode
Q2 8-bit data
7 ULA
28125/04/2017
Determinação do destino
ALU
8-bit21
DEMUX
SRAM8-bit
W8-bit
Seleçãoopcode<7>=0: wopcode<7>=1: f
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZ
NOPMOVWFCLRWCLRF
7 ULA
28225/04/2017
Multiplexação datum literal/file SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
ANDLWIORLWXORLWADDLWSUBLWMOVLWRETLW
• Em Q2, se a ULA recebe um 8-bit literal, odado já está disponível para ser operado.
• Em Q2, se a ULA recebe um 7-bit fileaddress, a ULA faz a leitura do registrador.
• Em ambos casos, a ULA conclui o Q2 como 8-bit datum disponível para ser operado
25/04/2017
48
7 ULA
28325/04/2017
Multiplexação datum literal/file
8-bit 21MUX
Seleção
Literal8-bit
Instruction bus
File8-bit
Data bus
Datum8-bit
Para a ULA
SUBWFDECFIORWFANDWFXORWFADDWFMOVFCOMFINCFDECFSZRRFRLFSWAPFINCFSZMOVWFCLRFBCFBSFBTFSCBTFSS
ANDLWIORLWXORLWADDLWSUBLWMOVLWRETLW
InstructionDecoder
Opcode13-bit
7 ULA
28425/04/2017ALU
8-bit 21MUX
SeleçãoInstruction Decoder
Multiplexação datum literal/fileLiteral
8-bitInstruction bus
File8-bit
Data bus
7 ULA
28525/04/2017
Multiplexação instrução/dado
• Uma vez que a ULA recebe a informaçãosobre a operação e a informação sobre ooperando em instantes diferentes, por meioda entrada, é preciso que pelo menos aprimeira destas palavras seja registrada paraque esteja disponível no segundo instante.
7 ULA
28625/04/2017
Multiplexação instrução/dado
Registradordo dado B
Registradorda operação
Seleção
Registradordo dado A
W8-bit
Instruction/Datum8-bit
7 ULA
28725/04/2017
Multiplexação instrução/dado