Parte 2 PIC® - UFSJ

48
25/04/2017 1 1 25/04/2017 Parte 2 PIC 2 25/04/2017 1. DEFINIÇÃO 2. MCU’S DE 8 BITS 3. MCU’S DE 16 E DE 32 BITS 4. PIC16F877-20/P 5. FILE REGISTERS 6. PROGRAM MEMORY 7. ULA 1 DEFINIÇÃO 3 25/04/2017 DEFINIÇÃO 1 4 25/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ÇÃO 1 5 25/04/2017 MCU Possui periféricos não essenciais ao processamento, 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 MCU DEFINIÇÃO 1 6 25/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

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