DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic...

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 DEFINIÇÃO 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 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic...

Page 1: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

1

125/04/2017

Parte 2

PIC

225/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

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 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ÇÃ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

Page 2: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 Arquitetura

PIC10F2XX, PIC12X5XX, PIC16X5X, PIC16X5XX Harvard

PIC12X6XX, PIC16 Harvard

PIC18 Harvard

PIC24, dsPICModifiedHarvard

PIC32 MIPS

Famílias PIC

DEFINIÇÃO1

925/04/2017

Arquitetura Harvard versus Von-Neumann

• Alguns engenheiros consideram a

arquitetura Harvard melhor.

• Alguns engenheiros consideram a

arquitetura 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-bit

core8-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, os

blocos estão no mesmo chip.

8-bit

core

DEFINIÇÃO1

1225/04/2017

Arquitetura Harvard versus Von-NeumannIntel® 8051

Program

Data

data bus

data bus

data

bus

File registers

Page 3: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

3

DEFINIÇÃO1

1325/04/2017

• Com o lançamento da memória flash, EEPROM em uma

MCU tornou-se sinônimo de data memory e flash de

program memory.

• Antes do lançamento da memória flash, program memory

e data memory eram construídas em EEPROM, o que

permitia que ambas fossem implementadas em uma

única matriz ou célula.

• Por causa disso, antes do lançamento da flash, a

arquitetura Von-Neumann era mais atraente.

• Com o uso da flash program memory em arquitetura Von-

Neumann, uma lógica de endereçamento deve fazer a

seleção entre flash e EEPROM; geralmente por meio dos

bits mais significativos.

• Isso torna o uso da arquitetura Harvard mais interessante.

Arquitetura Harvard versus Von-Neumann

DEFINIÇÃO1

1425/04/2017

• Não é correto afirmar que a diferença entre uma

arquitetura e a outra é o fato das duas memórias

estarem 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 dados

acessados através do mesmo barramento.

• Na arquitetura Harvard, as memórias são

acessadas por meio de barramentos separados.

Arquitetura Harvard versus Von-Neumann

DEFINIÇÃO1

1525/04/2017

• Não faz sentido falar nestas arquiteturas

quando se lida com µP´s, pois as duas

memórias localizam-se fora do chip.

• Mesmo assim, estes princípios podem

ser aplicados no que diz respeito aos

barramentos externos ao chip.

Arquitetura Harvard versus Von-Neumann

DEFINIÇÃO1

1625/04/2017

HarvardInstrução 1

Instrução 2Instrução 3

Instrução 4Instrução 5

Instrução 6Instrução 7

13 0

Von-NeumannInstrução 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instrução 7

Instruçã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 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instruçã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 grandes

atrativos apresentados nas MCU’s PIC.

• O lançamento das MCU’s PIC, em 2001, logo após a

popularização das memórias flash, em 2000, dá a

impressã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 arquitetura

Harvard, mesmo já existindo memória flash, porém esses

modelo não são mais fabricados.

• Há outros fabricantes usando a arquitetura Harvard.

PIC16F877Arquitetura Harvard

Page 4: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

4

DEFINIÇÃO1

1925/04/2017

CORE

256-byte

EEPROM

DATA

MEMORY

8-bit

Data/Address

Control BUS

8k-instruction

14-bit

FLASH

PROGRAM

MEMORY

14-bit

Instruction

BUS

13-bit

Address

BUS

PIC16F877Arquitetura Harvard

0

7

0

13

0

12

DEFINIÇÃO1

2025/04/2017

8-bit

DataMemory

8-bit

DataBus 8-bit

PIC®

CORE

14-bit

ProgramMemory

14-bit

Bus

13-bit

Bus• 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 isso

estas palavras podem ter tamanhos diferentes.

PIC16F877Arquitetura Harvard

DEFINIÇÃO1

2125/04/2017

• Por usar barramentos separados para instrução e

endereço, a leitura de uma instrução é feita em um

único ciclo de instrução.

• A flash program memory tem endereçamento separado

do 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 precisa

ser 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)

0

12

0

13

0700h

FFh

8-bit address bus

8-bit data bus

0

7

0

7

EEPROM data memory

flash 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 MCU

data 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

0

7

0

7

EEPROM data memory

8-bit MCU

data bus 8-bit

31

MUX8-bit control bus0

7

DEFINIÇÃO1

0700h

FFh

8-bit address bus

8-bit data bus

EEPROM data memory

8-bit MCU

data bus

SF

RS

FR

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.

SF

R

Page 5: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

5

DEFINIÇÃO1

2525/04/2017

8-bit

MCU

8-bit

Prg/DtMemory

8-bit

Bus

• 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 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instrução 7

Instruçã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 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instrução 7

Instruçã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>

0

14

0

154000h

4FFFh

EEPROM

Program

Memory<A13:A0>

A14=0

Data

Memory<A11:A0>

A12=0

A13=0

A14=1

16-bit MCU/P

data 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 bits

0150000h

3FFFh

15-bit address bus

16-bit data bus

0

14

0

15 4000h

4FFFh

EEPROM

Von-Neumann

DEFINIÇÃ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

0

13

0

150

11

16-bit data bus

15-bit address bus0

14

Von-Neumann

• Capacidade e endereçamento iguais ao exemplo anterior.

16-bit data bus

Page 6: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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

Program

Memory

Data

Memory

EEPROM

Modo antigoModo moderno

• Antigamente, EEPROM era usada para programa e para

dados.

• 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/P

data bus

MCU/P

data bus

MCU/P

data bus

Von-NeumannNão é a PIC16F877

DEFINIÇÃO1

MCU/P

data bus

MCU/P

data bus

MCU/P

data 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-Neumann

Instrução 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instrução 7

Instruçã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, dois

ou três ciclos de instrução para a sua leitura.

Von-Neumann

Instrução 1

Instrução 2

Instrução 3

Instrução 4

Instrução 5

Instrução 6

Instrução 7

Instrução 8

Instrução 9

Não é a PIC16F877

MCU/P

data bus

MCU/P

data bus

MCU/P

data bus

Page 7: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

7

DEFINIÇÃO1

25/04/2017 37

Endereço divididoVon-Neumann

• Geralmente, a capacidade de endereços de

memória (programa e dado) exige o uso de palavras

de endereço cujo tamanho, em bits, é superior ao

das palavras usadas como programa ou dado.

• Isto requer, então, que a palavra de endereço seja

dividida em partes que caibam no barramento.

• No caso da MCU Intel™ 8051, o barramento é de

oito bits, e o endereço é de 16 bits, havendo a

necessidade da divisão em low-byte e high-byte.

• Se a instrução usa endereço da memória como

argumento, são usadas, então, duas palavra de

programa 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 bus0

7

8-bit MCU/P

data bus

Von-Neumann

DEFINIÇÃO1

25/04/2017 39

Caso onde program word é maior do que data word.Von-Neumann Single Word

16-bit flash

program memory

015 87HIGH LOW8-bit EEPROM

data memory

07

• Long Word Instructions.

• Single Word Instructions.

• Double Cycle Instructions.

• O opcode é dividido em duas

palavras de 8 bits (L/H).

• Não foi encontrado exemplo

para 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

0

7

15-bit address bus0

14

0

13

0

1112-bit Address Bus

14-bit Address Bus

• O bit 14 do address bus

serve para selecionar

as 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 bus0

7

8-bit MCU/P

data 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 Word

DEFINIÇÃ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

Page 8: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 seja

mú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ção

pode 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ão

lidos no mesmo ciclo, mesmo se o opcode possui um

tamanho 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 Cycle

Instructions.

• Na arquitetura PIC, se a instrução pode interferir no

PC, 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 um

múltiplo inteiro do tamanho dos dados, e, nesse caso, não

se 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 uso

geral (GPR’s) são acessados por meio de um único

mapeamento, uma única lógica de endereçamento, um único

address bus.

• Na arquitetura PIC, os GPR’s podem ser considerados como

periféricos, pois não são fundamentais para o funcionamento

do chip e poderiam localizar-se em um chip separado.

• Na arquitetura PIC, os SFR’s usados por blocos funcionais

periféricos também podem ser considerados como periféricos,

pois, uma vez que os periféricos poderiam estar contidos em

chips separados, tais registradores estariam em tais chips.

• Os SFR’s para uso do core são considerados como parte

integrante do core.

PIC16F877

Page 9: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

9

DEFINIÇÃO1

4925/04/2017

• Os GPR’s são construído na forma

matricial, como toda SRAM.

• Os SFR’s localizam-se em diversas

partes do chip, próximos aos blocos

funcionai sobre os quais atuam.

• Todos esses registradores recebem

a 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 de

periféricos.

• À medida em que se aumenta a funcionalidade e a

performance dos modelos de MCU, a quantidade de

instruções vai aumentando.

• Quanto menos instruções há, maior é a característica

RISC da MCU; quanto mais instruções há, maior é a

característica CISC da MCU.

• Quanto mais funcionalidades e instruções há na

arquitetura, maior é o tamanho do opcode.

RISC/CISC

DEFINIÇÃO1

5425/04/2017

• A correlação entre funcionalidade e performance

não encontra justificativa no contexto da

engenharia elétrica.

• Esta correlação tem justificativa puramente

comercial e financeira.

• Quando a MCU possui baixa performance, seu

custo é baixo, e um aumento na sua funcionalidade

provoca um acréscimo relevante em seu custo.

• Quando a MCU possui alta performance, seu custo

é elevado, e um aumento na sua funcionalidade

provoca um acréscimo desprezível em seu custo.

RISC/CISC

Page 10: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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/CISC

DEFINIÇÃO1

5625/04/2017

RISC/CISC

Programa em RISC

Programa em CISC

Tamanho 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

Page 11: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

11

MCU’S DE 8 BITS2

6125/04/2017

Baseline Architecture

http://www.microchip.com/_images/BaselineArch_large.jpg

2k instructions

11–bit address

12–bit words

4 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 instructions

13–bit address

14–bit words

4 pages

flash

DATA BUS

8-bit

8-bit

13-bit

FILE REGISTERS

SRAM

/ EEPROM

MCU’S DE 8 BITS2

6425/04/2017

Mid-Range Architecture - Core

(2): Ausente na

PIC16F877.

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

Page 12: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 address

14–bit words

flash

DATA BUS

DATA BUS

FILE 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 address

16–bit words

MCU’S DE 8 BITS2

7225/04/2017

MCU´s de 8 bits

http://www.microchip.com/_images/8bit_overview_graphic.png

Page 13: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

13

MCU’S DE 8 BITS2

7325/04/2017

PIC10F200

PIC10F202

PIC10F204

PIC10F206

PIC10F220

PIC10F222

PIC12F508

PIC12F509

PIC12F510

PIC12F519

PIC12F529T39A

PIC16F505

PIC16F506

PIC16F526

PIC16F54

PIC16F57

PIC16F59

PIC16F707

PIC10F320

PIC10F322

PIC12F609

PIC12F615

PIC12F617

PIC12F629

PIC12F635

PIC12F675

PIC12F683

PIC12F752

PIC16F610

PIC16F616

PIC16F627A

PIC16F628A

PIC16F630

PIC16F631

PIC16F636

PIC16F639

PIC16F648A

PIC16F676

PIC16F677

PIC16F684

PIC16F685

PIC16F687

PIC16F688

PIC16F689

PIC16F690

PIC16F716

PIC16F72

PIC16F720

PIC16F721

PIC12F1501

PIC12F1822

PIC12F1840

PIC12LF1840T48A

PIC16F1454

PIC16F1455

PIC16F1458

PIC16F1459

PIC16F1503

PIC16F1507

PIC16F1508

PIC16F1509

PIC16F1512

PIC16F1513

PIC16F1516

PIC16F1517

PIC16F1518

PIC16F1519

PIC16F1526

PIC16F1527

PIC16F1782

PIC16F1783

PIC16F1784

PIC16F1786

PIC16F1787

PIC16F1823

PIC16F1824

PIC16F1825

PIC16F1826

PIC16F1827

PIC16F1828

PIC16F1829

PIC16F1847

PIC16F1933

PIC16F1934

PIC16F1936

PIC16F1937

PIC16F1938

PIC16F1939

PIC16F1946

PIC16F1947

PIC16LF1902

PIC16LF1903

PIC16LF1904

PIC16LF1906

PIC16LF1907

PIC16F722

PIC16F722A

PIC16F723

PIC16F723A

PIC16F724

PIC16F726

PIC16F727

PIC16F73

PIC16F737

PIC16F74

PIC16F747

PIC16F76

PIC16F767

PIC16F77

PIC16F777

PIC16F785

PIC16F84A

PIC16F87

PIC16F88

PIC16F882

PIC16F883

PIC16F884

PIC16F886

PIC16F887

PIC16F913

PIC16F914

PIC16F916

PIC16F917

PIC16F946

PIC16HV540

PIC16HV785/

En

han

ced

Mid

-Ran

ge A

rch

itectu

re

Mid-RangeArchitecture

BaselineArchitecture

Exemplos de MCU´s de 8 bits

MCU’S DE 8 BITS2

7425/04/2017

PIC18F2221

PIC18F44J11

PIC18F67J11

PIC18F1220

PIC18F65J15

PIC18F63J90

PIC18F25J50

PIC18F65J11

PIC18F1230

PIC18F85J10

PIC18F64J90

PIC18F2321

PIC18F26J11

PIC18F45J11

PIC18F66J10

PIC18F83J11

PIC18F44J50

PIC18F46K22

PIC18F1320

PIC18F4221

PIC18F65J90

PIC18F45K80

PIC18F84J11

PIC18F26K80

PIC18F66J15

PIC18F85J15

PIC18F26J13

PIC18F2450

PIC18F1330

PIC18F83J90

PIC18F85J11

PIC18F26J50

PIC18F4321

PIC18F45J50

PIC18F67J10

PIC18F86J10

PIC18F84J90

PIC18F65J50

PIC18F46J11

PIC18F4450

PIC18F65K22

PIC18F26J53

PIC18F86J15

PIC18F85J90

PIC18F46K80

PIC18F27J13

PIC18F66J90

PIC18F2410

PIC18F6310

PIC18F46J13

PIC18F65K90

PIC18F87J10

PIC18F46J50

PIC18F86J11

PIC18F85J50

PIC18F66J50

PIC18F66J93

PIC18F6390

PIC18F85K22

PIC18F27J53

PIC18F86J16

PIC18F66K22

PIC18F65K80

PIC18F66J55

PIC18F67J90

PIC18F2420

PIC18F4410

PIC18F86J90

PIC18F46J53

PIC18F47J13

PIC18F85K90

PIC18F87J11

PIC18F67J50

PIC18F66K90

PIC18F67J93

PIC18F86J50

PIC18F6410

PIC18F86J93

PIC18F4420

PIC18F6393

PIC18F67K22

PIC18F2510

PIC18F47J53

PIC18F86K22

PIC18F86J55

PIC18F87J90

PIC18F66K80

PIC18F6490

PIC18F8310

PIC18F2423

PIC18F66J60

PIC18F2331

PIC18F67K90

PIC18F87J50

PIC18F86K90

PIC18F87J93

PIC18F8390

PIC18F2520

PIC18F4510

PIC18F66J65

PIC18F87K22

PIC18F2431

PIC18F4423

PIC18F6493

PIC18F2455

PIC18F67J60

PIC18F86J60

PIC18F87K90

PIC18F8410

PIC18F4520

PIC18F2515

PIC18F8393

PIC18F2550

PIC18F86J65

PIC18F4331

PIC18F2523

PIC18F8490

PIC18F4455

PIC18F96J60

PIC18F87J60

PIC18F2458

PIC18F2525

PIC18F4515

PIC18F4431

PIC18F4550

PIC18F96J65

PIC18F4523

PIC18F2480

PIC18F97J60

PIC18F8493

PIC18F4458

PIC18F4525

PIC18F2610

PIC18F4480

PIC18F2220

PIC18F4610

PIC18F2620

PIC18F2553

PIC18F86J72

PIC18F2580

PIC18F4620

PIC18F4553

PIC18F87J72

PIC18F4580

PIC18F2320

PIC18F4220

PIC18F6527

PIC18F2585

PIC18F4320

PIC18F4585

PIC18F8527

PIC18F2680

PIC18F6622

PIC18F4680

PIC18F2682

PIC18F8622

PIC18F4682

PIC18F2685

PIC18F6520

PIC18F6627

PIC18F4685

PIC18F8520

PIC18F8627

PIC18F6722

PIC18F6628

PIC18F8722

PIC18F8628

PIC18F6723

PIC18F8723

PIC18 Architecture

PIC18F13K22

PIC18F24J10

PIC18F23K20

PIC18F14K22

PIC18F25J10

PIC18F24K20

PIC18F13K50

PIC18F23K22

PIC18F25K20

PIC18F44J10

PIC18F43K20

PIC18F24K22

PIC18F45J10

PIC18F44K20

PIC18F14K50

PIC18F45K20

PIC18F25K22

PIC18F26K20

PIC18F24J11

PIC18F43K22

PIC18F66J11

PIC18F44K22

PIC18F25J11

PIC18F46K20

PIC18F65J10

PIC18F63J11

PIC18F24J50

PIC18F66J16

PIC18F45K22

PIC18F26K22

PIC18F25K80

PIC18F64J11

MCU’S DE 8 BITS2

7525/04/2017

Exemplos de MCU´s de 8 bits

• Dificilmente todos os periféricos disponíveis em

uma 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 os

periféricos necessários no projeto.

• Há mais modelos disponíveis para PIC18 porque

esta 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 PIC18

Pinos 6 a 40 6 a 64 8 a 64 18 a 100

Instruções, tamanho 12-bit 14-bit 14-bit 16-bit

Instruções, quantidade 33 35 49 83Flash Program Memory,

instruções Até 8 k Até 8 k Até 16 k Até 64 k

Flash Program Memory,

tamanho Até 12 kB Até 14 kB Até 28 kB Até 128 kB

SRAM 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 Program

Memory

Capacidade

(k word)

0,25

0,5

1

1,5

2

8

0,225

0,25

0,5

1

2

4

8

1

2

4

8

16

2

4

8

12

16

24

32

40

48

64

Flash

Programm

Memory

Tamanho (kB)

0,375

0,75

1,5

2,25

3

12

0,21875

0,4375

0,875

1,75

3,5

7

14

1,75

3,5

7

14

28

4

8

16

24

32

48

64

80

96

128

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

Page 14: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 bits

Dentro da mesma arquitetura:

• O aumento da performance por meio do

aumento da frequência de operação leva ao

aumento do consumo de energia elétrica.

• A redução da performance por meio da

diminuição da frequência de operação leva à

redução do consumo de energia elétrica.

• Alta performance é desejável quando muita

informação é processada e fornecimento de

energia 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

Page 15: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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

Page 16: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

16

PIC16F877-20/P4

9125/04/2017

Pinagem (DIP)

PIC16F877-20/P4

9225/04/2017

PIC16F877-20/P

Parameter Name Value

Flash Program Memory 14-bit words

Flash Program Memory 8k words

File SRAM (GPR’s) 368 bytes

Data EEPROM 256 bytes

Instructions 35

CPU Speed (MIPS) 5

Interrupts 14

I/O ports A,B,C,D,E

Digital Communication Peripherals 1-USART,1-MSSP(SPI/I2C)

Capture/Compare/PWM Peripherals 2 CCP

Timers 2 x 8-bit, 1 x 16-bit

ADC 8 channels, 10-bit

Temperature Range (C) -40 to 85

Operating Voltage Range (V) 2 to 5.5

Pin 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 como

um periférico.

• Como qualquer periférico, a program memory pode

localizar-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 o

conceito de um periférico.

• A program memory Harvard é um periférico especial.

PIC16F877-20/P4

9525/04/2017

Core

8-bit Data bus

Periférico

• Na SRAM, fazem parte do

core somente os SFR´s

associados ao core.

PIC16F877-20/P4

9625/04/2017

Memórias internas

Tipo Nome Tamanhoflash Program memory 8k 14bits

SRAM File registers 512 8bits

EEPROM Data memory 256 8bits

Page 17: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

17

PIC16F877-20/P4

9725/04/2017

Mem

óri

as i

nte

rnas

PIC16F877-20/P4

9825/04/2017

Mem

óri

as e

specia

isPIC16F877-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

Peri

féri

cos

Todos periféricos

estão ligados aodata bus exceto a

PM na arquiteturaHarvard.

PIC16F877-20/P4

25/04/2017 101

Periféricos

Timer

0,1,2

SFR SFR

PORTA,B,C,D,E

SFR SFR

A/DCCP

1,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

Page 18: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

18

PIC16F877-20/P4Periféricos

10325/04/2017

Periférico

SFR

endereço

SFR

dado

SFR

controle

8-bit Data Bus

• Os SFR’s associados a periféricos são, na

verdade, 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órias

está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áticas

FILE 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

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

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 registers

os GPR’s e os SFR’s, pois, em algumas

pá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

Page 19: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

19

FILE REGISTERS5

10925/04/2017

• Os GPR’s são construído na forma

matricial, como toda SRAM.

• Os SFR’s localizam-se em diversas

partes do chip, próximos aos blocos

funcionai sobre os quais atuam.

• Todos esses registradores recebem

a mesma lógica de endereçamento,

por meio do mesmo address bus

(register file architecture).

GPR’s e SFR’s

FILE REGISTERS5

11025/04/2017

File Registers

GPR’s

07

9-bit

Address Bus

8-bit

Data Bus

0

8

0

7

GPR’s e SFR’s – Register File Architecture

File Registers

SFR’s9-bit

Address Bus

8-bit

Data Bus

0

8

0

7

• GPR’s: Matriz gate array.

• SFR’s: Registradores espalhados.

FILE REGISTERS5

11125/04/2017

GPR’s

SFR’s

9-bit

Address Bus

8-bit

Data Bus

0

8

0

7

Lógica de

seleção

GPR’s e SFR’s – Register File ArchitectureSUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

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.

Page 20: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

20

FILE REGISTERS5

11525/04/2017

Divisões

Banco 0

000h000000000b

07Fh001111111b

Banco 1

080h010000000b

0FFh011111111b

Banco 2

100h100000000b

17Fh101111111b

Banco 3

180h110000000b

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 nas

instruções se dê por meio de 7 bits, e não 9 bits.

• A necessidade desta redução se deve ao fato de que

tal endereço deve caber nos 14 bits de instrução.

• Usando 7 bits para endereço, sobram 7 bits para os

demais parâmetros da instrução.

Bancos

FILE REGISTERS5

11725/04/2017

Bancos

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 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.

Page 21: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

GP

R’s

endere

çáveis

por

9 b

its

Reg

istr

ad

ore

s c

om

ban

co

FILE REGISTERS5

12325/04/2017

GPR’s endereçáveis por 9 bits

020h

021h

022h

023h

024h

06Bh

06Ch

06Dh

06Eh

06Fh

7 0

0A0h

0A1h

0A2h

0A3h

0A4h

0EBh

0ECh

0EDh

0EEh

0EFh

7 0

16Bh

16Ch

16Dh

16Eh

16Fh

110h

111h

112h

113h

1EBh

1ECh

1EDh

1EEh

1EFh

190h

191h

192h

193h

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

24

DEC

O0O1O2O3

A7

A8

Entrada codificadaSaída decodificada

Enable Enable

Enable Enable

7-bit

Address BusA0

A6

9-bit

Address BusA0

A9

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 qualquer

seleção de bancos.

• Estes registradores não possuem bancos, seu

endereç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 GP

R’s

endere

çáveis

por

7 b

its

Reg

istr

ad

ore

s s

em

ban

co

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

Page 22: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

22

FILE REGISTERS5

12725/04/2017

GPR´s - DivisõesBanco 0

000h000000000b

06Fh001101111b

Banco 1

080h010000000b

0EFh011101111b

Banco 2

100h100000000b

16Fh101101111b

Banco 3

180h110000000b

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 requerem

determinação do banco.

• Os GPR’s de 7 bits de endereço não dependem da seleção

do banco.

• Os GPR’s de 7 bits de endereço são úteis quando se

deseja que a mesma palavra de dado esteja disponível em

todos 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 bits

1: 7 bits

SRAM

Address 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-bit

Address BusA0

A6

20h

6Fh 6Fh

10h

24

DEC

A7

A8

7-bit

Address BusA0

A6

70h

7Fh

Enable

FILE REGISTERS5

13225/04/2017

• Para o programador, usando endereçamento

direto, o endereço tem sempre 7 bits, quer o

endereç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

Page 23: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 de

memória usadas pelos SFR’s, não se deve fazê-lo quando

da gravação de dados do usuário, sob risco de alterar o

comportamento do microcontrolador ou de ter o dado

armazenado perdido por causa da posterior automática

gravação do SFR após a execução de uma operação.

• A gravação nestas posições deve ser feita quando o

intuito é o de, conscientemente, alterar algum SFR

específico usado internamente pelo microcontrolador.

SFR’s

FILE REGISTERS5

13525/04/2017

SFR’s000h INDF

001h TMR0

002h PCL

003h STATUS

004h FSR

005h PORTA

006h PORTB

007h PORTC

008h PORTD

009h PORTE

00Ah PCLATH

00Bh INTCON

00Ch PIR1

00Dh PIR2

00Eh TMR1L

00Fh TMR1H

010h T1CON

011h TMR2

012h T2CON

013h SSPBUF

014h SSPCON

015h CCPR1L

016h CCPR1H

017h CCP1CON

018h RCSTA

019h TXREG

01Ah RCREG

01Bh CCPR2L

01Ch CCPR2H

01Dh CCP2CON

01Eh ADRESH

01Fh ADCON0

081h OPTION_REG

085h TRISA

086h TRISB

087h TRISC

088h TRISD

089h TRISE

08Ch PIE1

08Dh PIE2

08Eh PCON

091h SSPCON2

092h PR2

093h SSPADD

094h SSPSTAT

098h TXSTA

099h SPBRG

09Eh ADRESL

09Fh ADCON1

10Ch EEDATA

10Dh EEADR

10Eh EEDATH

10Fh EEADRH

18Ch EECON1

18Dh EECON2

Endereços múltiplos foram omitidos.

FILE REGISTERS5

13625/04/2017

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

SF

R’s

essencia

is (

core

)

FILE REGISTERS5

13725/04/2017

SFR’s essenciais (core)Endereços múltiplos foram omitidos.

000h INDF

001h TMR0

002h PCL

003h STATUS

004h FSR

005h PORTA

006h PORTB

007h PORTC

008h PORTD

009h PORTE

00Ah PCLATH

00Bh INTCON

00Ch PIR1

00Dh PIR2

00Eh TMR1L

00Fh TMR1H

010h T1CON

011h TMR2

012h T2CON

013h SSPBUF

014h SSPCON

015h CCPR1L

016h CCPR1H

017h CCP1CON

018h RCSTA

019h TXREG

01Ah RCREG

01Bh CCPR2L

01Ch CCPR2H

01Dh CCP2CON

01Eh ADRESH

01Fh ADCON0

081h OPTION_REG

085h TRISA

086h TRISB

087h TRISC

088h TRISD

089h TRISE

08Ch PIE1

08Dh PIE2

08Eh PCON

091h SSPCON2

092h PR2

093h SSPADD

094h SSPSTAT

098h TXSTA

099h SPBRG

09Eh ADRESL

09Fh ADCON1

10Ch EEDATA

10Dh EEADR

10Eh EEDATH

10Fh EEADRH

18Ch EECON1

18Dh EECON2

000 INDF Indirect file addressing

001 TMR0 Timer 0

002 PCL Program counter low byte

003 STATUS Status

004 FSR File select register

00A PCLATH Program conuter latch

00B INTCON Interrupt control

00C PIR1 Peripheral interrupt register 1

00D PIR2 Peripheral interrupt register 2

081 OPTION_REG Option

08C PIE1 Peripheral interrupt enable 1

08D PIE2 Peripheral interrupt enable 2

08E PCON Power control

FILE REGISTERS5

13825/04/2017

SFR’s não essenciais (periféricos)005 PORTA

006 PORTB

007 PORTC

008 PORTD

009 PORTE

00E TMR1L

00F TMR1H

010 T1CON

011 TMR2

012 T2CON

013 SSPBUF

014 SSPCON

015 CCPR1L

016 CCPR1H

017 CCP1CON

018 RCSTA

019 TXREG

01A RCREG

01B CCPR2L

01C CCPR2H

01D CCP2CON

01E ADRESH

01F ADCON0

085 TRISA

086 TRISB

087 TRISC

088 TRISD

089 TRISE

091 SSPCON2

092 PR2

093 SSPADD

094 SSPSTAT

098 TXSTA

099 SPBRG

09E ADRESL

09F ADCON1

10C EEDATA

10D EEADR

10E EEDATH

10F EEADRH

18C EECON1

18D EECON2

Page 24: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 RCSTA

019 TXREG

01A RCREG

098 TXSTA

099 SPBRG

001h TMR0

081h OPTION_REG

00E TMR1L

00F TMR1H

010 T1CON

011 TMR2

012 T2CON

092 PR2

Timer 2

01E ADRESH

01F ADCON0

09E ADRESL

09F ADCON1

015 CCPR1L

016 CCPR1H

017 CCP1CON

01B CCPR2L

01C CCPR2H

01D CCP2CON

PORT005 PORTA

006 PORTB

007 PORTC

008 PORTD

009 PORTE

085 TRISA

086 TRISB

087 TRISC

088 TRISD

089 TRISE

10C EEDATA

10D EEADR

10E EEDATH

10F EEADRH

18C EECON1

18D EECON2

013 SSPBUF

014 SSPCON

091 SSPCON2

093 SSPADD

094 SSPSTAT

FILE REGISTERS5

14025/04/2017

SFR’s não essenciais de 16 bits

00E TMR1LTMR1

00F TMR1H

015 CCPR1LCCPR1

016 CCPR1H

01B CCPR2LCCPR2

01C CCPR2H

09E ADRESLADRES

01E ADRESH

10C EEDATAEEDATA

10E EEDATH

10D EEADREEADR

10F 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 requer

que a relação entre endereço e posição física seja

biunívoca.

SFR’s

FILE REGISTERS5

14225/04/2017

• Não há cópias, o registrador é um só, mas os

endereços de 9 bits são vários.

• O endereço é um só, porém com menos bits; um

ou dois bits (mais significativos) do endereço de 9

bits são irrelevantes.

• Isso acontece com os SFR’s mais importantes,

que são mais usados, onde é indicado isentar a

necessidade do procedimento de troca de bancos.

SFR’s

FILE REGISTERS5

14325/04/2017

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

SF

R’s

endere

çáveis

por

7 b

its

Reg

istr

ad

ore

s s

em

ban

co

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 qualquer

seleção de bancos.

• Estes registradores não possuem bancos, seu

endereço possui 7 bits em um barramento de 9 bits.

• Os bits identificadores do banco são irrelevantes.

Registradores sem banco

Page 25: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

25

FILE REGISTERS5

14525/04/2017

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

SF

R’s

endere

çáveis

por

8 b

its

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 e

não para o file registers.

• Este mecanismo simplifica o processo de criação de códigos

de programa, tornando o endereçamento mais simples.

• Na PIC16F877 há dois casos: INDF e EECON2.

Registradores virtuais

FILE REGISTERS5

14825/04/2017

• O agrupamento de todos os SFR’s juntamente com os

GPR’s como se fossem uma única memória torna o acesso

mais fácil pelo programador (Register File Architecture).

• Um decodificador específico realiza a conversão do

endereço de 9 bits para a seleção de cada posição do file

registers.

GPR’s

SFR’s

Address Bus

Data Bus

0

8

0

7

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 os

SFR’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

0

8

0

7

Page 26: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

26

FILE REGISTERS5

15125/04/2017

Endereços não usados

• O data sheet recomenda o não uso

dos endereços de SFR´s não

usados.

• Eles pertencem a funções

integrantes na arquitetura mid-range

mas que não estão presentes no

modelo apresentado.

• Apesar destas funções não terem

sido implementadas, pode ser que a

ULA realize alterações nestes

registradores, tornando-os não

confiáveis para uso como GPR.

FILE REGISTERS5

15225/04/2017

• Os endereços não usados em meio aos SFR’s se deve

a endereços usados em outros modelos de PIC da

mesma família (mid-range architecture).

• Tratam-se de endereços de SFR’s para periféricos

ausentes no modelo aqui estudado.

• A fim de simplificar a migração de programas feitos

para um modelo para outro, da mesma família, o

mapeamento dos SFR’s foi feito considerando todos os

registradores usados na família.

• Quando um periférico não faz parte de um determinado

modelo, 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 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

SF

R’s

não u

sados

FILE REGISTERS5

15425/04/2017

Status Register

• Armazena informações relativas à

última operação realizada pela ULA.

• É necessário na realização de

cálculos lógicos e aritméticos.

FILE REGISTERS5

15525/04/2017

Status Register

8-bit

StatusRegister

8-bit

Data bus

8-bit

MUX21

14-bit

InstructionRegister

8-bit

Data busFlash

8-bit

WorkRegister

8-bit

Data bus

8-bitALU

Instruction

Decoder

14-bit

Opcode

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

Page 27: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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

HALF

ADDER

B0 A0

S0

FULL

ADDER

B1 A1

S1

CyIN1

FULL

ADDER

B2 A2

S2

FULL

ADDER

B3 A3

S3

CyIN2CyIN

3

CyOUT3 CyOUT

0CyOUT1CyOUT

2

FULL

ADDER

B4 A4

S4

FULL

ADDER

B5 A5

S5

CyIN5

FULL

ADDER

B6 A6

S6

FULL

ADDER

B7 A7

S7

CyIN6CyIN

7

OF CyOUT4CyOUT

5CyOUT6

C DC

• Não veremos o comportamento do bit

DC 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, por

exemplo, para aplicar rotinas de inicialização de

sistemas onde são necessárias verificações dos estados

iniciais.

• Os bits 5, 6 e 7 são usados em endereçamento e serão

abordados 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 aadição aritmética não causa overflow (entre 000h e 0FFh).

• O bit indicador de carry assume valor “um lógico” quando aadiçã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.

Page 28: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 que

conté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 registers

FILE 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>

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

FILE REGISTERS5

16625/04/2017

• Os 7 bits menos significativos são fornecidos

diretamente pelo opcode.

• A ULA adiciona STATUS<6:5>, RP1:RP e

forma a palavra de endereço de 9 bits.

• Se RP1:RP0 não forem alterados, é possível

acessar qualquer posição da SRAM dentro

do mesmo banco (128 posições).

• Se for necessário mudar o banco, RP1:RP0

devem ser configurados antes da execução

da instrução de acesso ao novo endereço da

SRAM.

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 a

ser acessado, mas um registrador o sabe.

Endereçamento indireto

FILE REGISTERS5

16825/04/2017

• INDF – Indirect File Access

• FSR – File Selection Register.

• INDF não é um registrador físico.

Endereçamento indireto

Page 29: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 indireto

FILE 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 o

indireto.

• Ao reconhecer um endereçamento indireto, a PIC usa obit STATUS<7>, IRP para obter o nono bit e usa o FSR para

obter os 8 bits menos significativos do endereço da SRAM.

• O endereço acessado, então, não é o de INDF, mas o

fornecido por IRP e FSR.

Endereçamento indireto

FILE 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 de

endereço de 9 bits.

• Se IRP não for alterado, é possível acessar

qualquer posição da SRAM dentro da mesma

faixa (256 posições).

• Se for necessário mudar a faixa, IRP devem ser

configurado antes da execução da instrução deacesso ao FSR.

• Não faz sentido falar em bancos em

endereçamento indireto.

Endereçamento indireto

FILE REGISTERS5

17425/04/2017

• O nome “indireto” diz respeito ao fato de

que o endereço do registrador a ser

lido/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 em

registradores endereços da SRAM.

Endereçamento indireto

Page 30: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 SRAM

FILE REGISTERS5

17625/04/2017

IRP FSR<7> Parte

0

0

01

1

1

1

02

1

• A divisão em bancos não é relevante no

endereç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 SRAM

FILE 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 da

palavra, 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 SRAM

FILE REGISTERS5

18025/04/2017

Endereçamento da SRAM

O0

O8

Sel

9-bit

21

MUX

Entrada de endereço

da SRAM

A0

A8

B0

B8

Endereçamento indireto

Endereçamento direto

0: indireto

1: direto

Page 31: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

31

FILE REGISTERS5

18125/04/2017

Endereçamento da SRAM

9-bit

21

MUX

Endereçamento indireto

Endereçamento direto

Instructionregister

7-bit

File selectionregister

8-bit

RP1,RP0

IRP

0: indireto

1: direto

FILE REGISTERS5

18225/04/2017

Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8

0: indireto

1: diretoSRAM

Address Bus

Endereçamento da SRAM

FILE REGISTERS5

18325/04/2017

• Uma grande quantidade de instruções fazem uso

de registradores da SRAM especificados por meio

de 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 uso

de dados, 8 bits, fornecidos diretamente no opcode.

• Essas instruções podem fornecer o endereço de 8

bits da SRAM em endereçamento indireto.

Endereçamento da SRAMSUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

ANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLW

FILE REGISTERS5

18425/04/2017

INDF 000h INDF 080h INDF 100h INDF 180h

TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h

PCL 002h PCL 082h PCL 102h PCL 182h

STATUS 003h STATUS 083h STATUS 103h STATUS 183h

FSR 004h FSR 084h FSR 104h FSR 184h

PORTA 005h TRISA 085h 105h 185h

PORTB 006h TRISB 086h PORTB 106h TRISB 186h

PORTC 007h TRISC 087h 107h 187h

PORTD 008h TRISD 088h 108h 188h

PORTE 009h TRISE 089h 109h 189h

PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah

INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh

PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch

PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh

TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh

TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh

T1CON 010h 090h 110h 190h

TMR2 011h SSPCON2 091h

T2CON 012h PR2 092h

SSPBUF 013h SSPADD 093h

SSPCON 014h SSPSTAT 094h

CCPR1L 015h 095h

CCPR1H 016h 096h

CCP1CON 017h 097h

RCSTA 018h TXSTA 098h GPR’s GPR’s

TXREG 019h SPBRG 099h

RCREG 01Ah 09Ah

CCPR2L 01Bh 09Bh

CCPR2H 01Ch 09Ch

CCP2CON 01Dh 09Dh

ADRESH 01Eh ADRESL 09Eh

ADCON0 01Fh ADCON1 09Fh

020h 0A0h

GPR’s GPR’s

06Fh 0EFh 16Fh 1EFh

070h 0F0h 170h 1F0h

GPR’s GPR’s GPR’s GPR’s

07Fh 0FFh 17Fh 1FFh

Exem

plo

s

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 das

instruções do tipo “file” com d=1.

• Escritas nos SFR’s são realizadas também pelas

instruçõ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.

EscritaSUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

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 das

instruções do tipo “file”.

• Registradores somente são lidos em Q2.

LeituraSUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

CLK

Leitura naSRAM

Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2

Page 32: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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, quando

se usa MCU’s.

• Antes do surgimento da memória flash, a memória de

programa era construída por meio de EEPROM.

• Alguns tipos de MCU’s do passado não tinham

memó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ória

de 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 alterar

o conteúdo da flash durante a execução do programa.

• Se a MCU usa memória para armazenamento de dados

durante a execução do programa frequentemente, é melhor

que esta seja uma EEPROM.

Flash Program Memory

PROGRAM 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 é preciso

executar um boot ao ligar o chip.

• O programa, então, é gravado em uma flash ou uma EEPROM

externa ao chip (off-chip), na mesma placa (on-board).

• O boot faz a transferência do programa da memória externa

para a RAM interna à MCU ou para a RAM ligada ao P.

• A vantagem desta opção é a alta densidade da DRAM ou a alta

rapidez 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ível

garantir que a próxima instrução não será alterada.

• A execução também é interrompida porque, como

qualquer memória, não é possível lê-la durante sua

gravação.

19125/04/2017

Flash Program Memory

PROGRAM MEMORY6Flash – processo de escrita

19225/04/2017

Sel

13-bit

21

MUX

A0

A12

B0

B12

Sel

14-bit

21

MUX

C0

C13

D0

D13

14-bit

8k

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

Page 33: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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ção

do PC por meio das entradas Preset e Clear dos FF’s.

• No caso da PIC, os FF’s do PC formam um registrador de

13 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 Counter

PROGRAM 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, e

não 13 bits.

• A necessidade desta redução se deve ao fato de que

tal endereço deve caber nos 14 bits de instrução.

• Usando 11 bits para endereço, sobram 3 bits para os

demais 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 ser

usados no controle da program memory:

• Fila de pré-busca (Prefetch Queue).

• Pilha (Stack).

Acesso à Flash Program Memory

PROGRAM MEMORY6

19825/04/2017

Fila e Pilha

000h

001h

002h

003h

000h

001h

002h

003h

7 0 7 0Fila Pilha

POP

PUSH

Page 34: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

34

PROGRAM MEMORY6

19925/04/2017

• A pré-busca permite que o PC busque na

Program Memory a próxima instrução enquanto a

instrução vigente é executada.

• Isto aumenta a rapidez do processador, pois evita

que tempo de execução seja perdido durante a

busca 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.

Fila

PROGRAM 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 um

registrador serial.

• A cada ciclo, o registrador envia as palavras um nível

abaixo, 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 de

programa é externa e seu acesso tem uma rapidez que

não está sob controle do processador.

• A fila garante que sempre há uma instrução pronta para ser

executada.

• Cada posição da fila é uma instrução lida com

antecedê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 anteriormente

deve 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 podem

realizar desvio consomem 2TCY.

BTFSC

BTFSS

DECFSZ

INCFSZ

CALL

GOTO

RETURN

RETLW

RETFIE

Fila

PROGRAM 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

Page 35: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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.

Pilha

PROGRAM MEMORY6

20625/04/2017

• Um underflow ocorre quando se tenta realizar

mais retornos do que desvios retornáveis.

• Um overflow ocorre quando o excesso de

desvios retornáveis sobre os retornos

ocorridos 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 vago

da pilha.

• A pilha armazena o endereço (13 bits) em que as

instruções são encontradas no Program Flash, e

não a instrução propriamente dita (14 bits).

• A sequência das instruções executadas não é

linear, pois o programa pode conter instruções

condicionais, aceitação de interrupções e

desvios de programa.

Pilha

PROGRAM MEMORY6

20825/04/2017

• Semelhantemente à instrução CALL, a instrução

GOTO também faz um desvio.

• A diferença é que GOTO é usado não para o

chamamento de uma sub-rotina, mas para uma

simples alteração do ponto de operação indicado

pelo 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 de

um 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.

Pilha

PROGRAM MEMORY6

21025/04/2017

Pilha

CALL RETURN

RETFIE

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

Page 36: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

36

PROGRAM MEMORY6

21125/04/2017

Pilha – PUSH

1

2

3

4

5

6

7

8

PC

CALL (1)

1

2

3

4

5

6

7

8

PC

1

2

3

4

5

6

7

8

PC

CALL (2)

1

2

3

4

5

6

7

8

PC

Nenhum pop realizado entre os dois pushes.

PROGRAM MEMORY6

21225/04/2017

1

2

3

4

5

6

7

8

PC

CALL (3)

1

2

3

4

5

6

7

8

PC

1

2

3

4

5

6

7

8

PC

CALL (4)

1

2

3

4

5

6

7

8

PC

1

2

3

4

5

6

7

8

PC

CALL (5)

1

2

3

4

5

6

7

8

PC

Pilha – PUSH

Nenhum pop realizado entre os pushes.

PROGRAM MEMORY6

21325/04/2017

1

2

3

4

5

6

7

8

PC

CALL (6)

1

2

3

4

5

6

7

8

PC

1

2

3

4

5

6

7

8

PC

CALL (7)

1

2

3

4

5

6

7

8

PC

1

2

3

4

5

6

7

8

PC

CALL (8)

1

2

3

4

5

6

7

8

PC

Pilha – PUSH

Nenhum pop realizado entre os pushes.

PROGRAM MEMORY6

21425/04/2017

Pilha – Overflow

1

2

3

4

5

6

7

8

PC

CALL (9)

1

2

3

4

5

6

7

8

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 PC

leva 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 existe

a idéia de uma sub-rotina que, após sua

execução, deve levar o programa ao ponto onde

estava antes de sua execução.

• A instrução GOTO deve ser usada quando não

existe a idéia de sub-rotina. A pilha não é usada.

Page 37: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 por

GOTO se houver, em todo o programa, apenas

um ponto de chamada para a sub-rotina.

• Esta troca pode ser feita porque, como o

endereço de retorno é único, ele pode ser

previsto 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 ponto

de chamada.

• Se a sub-rotina não for muito grande e os pontos de

chamada não forem muitos, a perda de espaço na program

memory pode não ser significativa.

• Outra solução é usar instruções condicionais (BTFSS,

BTFSSC, INCFSZ, DECFSZ) que permitam descobrir qual

o 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 mais

criativas do que estas.

PROGRAM MEMORY6

22025/04/2017

Pilha – Leitura

Data Addr

Dado 7 0h

Dado 6 1h

Dado 5 2h

Dado 4 3h

Dado 3 4h

Dado 2 5h

Dado 1 6h

Dado 0 7h

Empty 8h

Data Addr

Vazio 8h

Dado 6 0h

Dado 5 1h

Dado 4 2h

Dado 3 3h

Dado 2 4h

Dado 1 5h

Dado 0 6h

Empty 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 Addr

Vazio 7h

Vazio 8h

Dado 5 0h

Dado 4 1h

Dado 3 2h

Dado 2 3h

Dado 1 4h

Dado 0 5h

Empty 6h

Data Addr

Vazio 6h

Vazio 7h

Vazio 8h

Dado 4 0h

Dado 3 1h

Dado 2 2h

Dado 1 3h

Dado 0 4h

Empty 5h

Data Addr

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 3 0h

Dado 2 1h

Dado 1 2h

Dado 0 3h

Empty 4h

Data Addr

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 2 0h

Dado 1 1h

Dado 0 2h

Empty 3h

PROGRAM MEMORY6

22125/04/2017

Pilha – Leitura

Data Addr

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 2 0h

Dado 1 1h

Dado 0 2h

Empty 3h

Data Addr

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 1 0h

Dado 0 1h

Empty 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 Addr

Vazio 2h

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 0 0h

Empty 1h

Data Addr

Vazio 1h

Vazio 2h

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Empty 0h

PROGRAM MEMORY6

Data Addr

Vazio 2h

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 0 0h

Empty 1h

Data Addr

Vazio 1h

Vazio 2h

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Empty 0h

22225/04/2017

Pilha – Escrita

Data Addr

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 2 0h

Dado 1 1h

Dado 0 2h

Empty 3h

Data Addr

Vazio 3h

Vazio 4h

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 1 0h

Dado 0 1h

Empty 2h

Data Addr

Vazio 5h

Vazio 6h

Vazio 7h

Vazio 8h

Dado 3 0h

Dado 2 1h

Dado 1 2h

Dado 0 3h

Empty 4h

Data Addr

Vazio 6h

Vazio 7h

Vazio 8h

Dado 4 0h

Dado 3 1h

Dado 2 2h

Dado 1 3h

Dado 0 4h

Empty 5h

Page 38: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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, por

meio do program counter, a instrução é lida na program flash

e 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 da

program memory, pois a instrução vigente está preservada

no instruction register, mantendo-se disponível para consulta

por parte da ULA.

• Somente após a completa execução da instrução vigente é

que o instruction register pode ser atualizado para a próxima

instrução, lida no program memory, endereçada pelo

program 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 register

PROGRAM MEMORY6

22625/04/2017 8-bit

Data bus

8-bit

21MUX

14-bit

InstructionRegister

8-bit

Data busFlash

8-bit

WorkRegister

8-bit

Data bus

Instruction

Decoder

14-bit

Opcode 14-bit

8-bit

8-bit

ALU

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-bit

21MUX

14-bit

InstructionRegister

8-bit

Data busFlash

Instruction

Decoder

14-bit

Opcode 14-bit

8-bit

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

ANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLWInstruções cujo dado

está no opcode Instruções cujo

dado está em um registrador

sel

PROGRAM MEMORY6

22825/04/2017

Págin

as

Flash

Page 39: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

39

PROGRAM MEMORY6

22925/04/2017

Páginas

• A primeira página perde as cinco primeiras

posições para que sejam usadas pela MCU

para saltar para o programa principal ou

para a rotina de interrupção.

• Se o seu programa não utiliza interrupções,

essas cinco primeiras posições podem ser

usadas como programa principal.

PROGRAM MEMORY6

23025/04/2017

• O address 0000h contém a instrução para onde o PC vai

quando a MCU sofre o comando reset.

• O address 0004h contém a instrução para onde o PC vai

quando 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 GOTO

seguida do endereço onde o programa principal começa.

• Geralmente, o address 0005h contém a instrução GOTO

seguida 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 data

sheet, que a program memory começa no endereço0005h, afina, se o programa não usa interrupções, o

programa pode começar no endereço 000h usando

os 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 do

programa, isto é, quando o pondo de origem (diretivaORG) não é definido pelo usuário.

• Desta forma, os dois pontos de vista serão aceitos

neste 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 de

reiniciação (não vale para wake-up).

• Este é um ponteiro para o endereço onde o programa

começ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ção

na 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 e

os métodos de interface de entrada do usuário.

Interrupt Vector

PROGRAM 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ções

quando 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

Page 40: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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

slid

en

ão c

ai n

a p

rova

.

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 Counter

PROGRAM 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 – Latch

PROGRAM 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

Page 41: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

41

PROGRAM MEMORY6

24125/04/2017

PCLATHFlash

(kB)

Flash

(kwords)

PCLATH

(bits)

PC

(bits)

0,4375 0,25 0 8

0,875 0,5 1 9

1,75 1 2 10

3,5 2 3 11

7 4 4 12

14 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,25kinstruçõ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 grande

economia de custo.

• No site do fabricante, o tamanho da program

memory é o primeiro critério de busca.

• O único modelo mid-range de 256 instruções

encontrado (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 256

posições da flash.

• PCL possui 8 bits porque pode ser gravado diretamente pela

ULA via data bus.

inalterado

inexistente

PROGRAM MEMORY6

24425/04/2017

Gravação do PCL sem alterar PCLATHBloco 00

Bloco 01

Bloco 02

Bloco 03

Bloco 04

Bloco 05

Bloco 06

Bloco 07

Bloco 08

Bloco 09

Bloco 0A

Bloco 0B

Bloco 0C

Bloco 0D

Bloco 0E

Bloco 0F

Bloco 10

Bloco 11

Bloco 12

Bloco 13

Bloco 14

Bloco 15

Bloco 16

Bloco 17

Bloco 18

Bloco 19

Bloco 1A

Bloco 1B

Bloco 1C

Bloco 1D

Bloco 1E

Bloco 1F

00

FF

• Este procedimento permite a

realização de saltos em faixas ou

blocos de programa de 256 posições.

• São 32 (25) blocos.

• Não é possível mudar de bloco por

meio de saltos, apenas pelo

prosseguimento normal do programa.

• Este procedimento requer, no

mínimo, duas instruções, enquanto ocomando GOTO pode fazer a mesma

açã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 o

comando GOTO pode fazer a mesma ação

usando, 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 é do

tipo 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

Page 42: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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 tem

PCL como destino.

• A prévia gravação de PCLATH<4:0> seguida da gravação

de PCL<7:0> permite a escolha de 13 bits para o

endereç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 PCLATH

PROGRAM 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 das

entradas 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.

PCLATH

PROGRAM 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 escreverdiretamente em PCL e PCH, não poderia fazer as duas

escritas 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 dificultaria

muito a programação, pois o usuário deveria prever qual

seria esta nova posição para, ali, gravar as instruções

para a seleção do novo valor para a parte restante do PC.

• O uso do PCLATH permite que os treze bits sejam

gravados 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.

inalterado

página

PCLPCH

PROGRAM MEMORY6

25225/04/2017

Página 0

Página 1

Página 2

Página 3

000

7FF

• Este procedimento permite a

realização de saltos em faixas ou

blocos de programa de 2k posições.

• São 4 (22) blocos.

• Não é possível mudar de bloco por

meio de saltos, apenas pelo

prosseguimento normal do programa.

Instruções CALL e GOTO sem alterar PCLATH

Page 43: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

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

opcode

0,4375 0,25 8 1 8

0,875 0,5 9 1 9

1,75 1 10 1 10

3,5 2 11 1 11

7 4 12 2 11

14 8 13 4 11USAREMOS

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>

PCLATH

inexistente 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 e

GOTO.

• A prévia gravação de PCLATH<4:3> seguida dos

comandos CALL ou GOTO permite a escolha de 13 bits para

o 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 PC

PROGRAM MEMORY6

25825/04/2017

Situações sobre o PC

Page 44: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

44

PROGRAM MEMORY6

25925/04/2017

Situações sobre o PC

PROGRAM MEMORY6

26025/04/2017

O problema do erro de página

• O incremento natural do program counter corresponde

ao comportamento natural de todo contador.

• A alteração forçada do program counter corresponde

a um jump efetuado por alguma instrução do tipo 2TCY

ou uma escrita em PCL.

• Estes dois fenômenos podem provocar uma alteração

de 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 para

outra 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 PCL

levarã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 localiza

em 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ário

atualizar, manualmente, o PCLATH<4:3>.

• Se PCLATH<4:3> não é atualizado após a mudança

forçada de página, o uso das instruções CALL, GOTO

ou uma escrita em PCL levarão o PC para a página

que 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-b

it

8-bit

3-b

it

Page 45: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

45

7 ULA

26525/04/2017

Acesso à ULA

8-bit8-b

it

8-bit

3-b

itEntrada de dados A Entrada de dados B

Saída de dados

Bits de sinalização

Z, C, DC

7 ULA

26625/04/2017

Localização d

a U

LA

7 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 opcode

7 ULA

26825/04/2017

• O instruction decoder converte o opcode em

duas etapas:

1. O código da instrução em uma forma que

a ULA entenda e determine qual a

próxima operação a ser realizada (Q1).

2. O(s) dado(s) da instrução (se houver) e

que sofrerão a operação a ser realizada

pela ULA (Q2).

• A seleção entre os resultados dessas duas

etapas é feita por um MUX.

Decodificação do opcode

7 ULA

26925/04/2017

Decodificação do opcode

ALU8-bit

W8-bit

Datum8-bit

Instruction

Decoder

StatusZ,C,DC

Opcode14-bit

Q1 Q2

Decode/Data6-bit 8-bit

7 ULA

27025/04/2017

Decode/Data8-bit

Instruction

DecoderOpcode

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.

Page 46: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

46

7 ULA

27125/04/2017

Instruction

Decoder

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 opcode

7 ULA

27225/04/2017

Instruction

DecoderOpcode

14-bit

Datum8-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> PCL

13 12 10 0

0

11

1 seleção k (literal)

13 12 8 7 0

1

11

0 bitseleção file

13 12 7 6 0

1

9

0 seleção file

13 12 7 6 0

0

11

0 dseleção file

13 12 8 7 6 0

0

11

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ção

13 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 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção

1 0

13 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 a

decodificação e de que no Q2 é realizada a

leitura do(s) argumentos (caso hajam), é

uma simplificação.

• Esses detalhes são segredo industrial e

nã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ão

afetaria o tempo de execução; aumentaria,

apenas, o tamanho da flash memory.

7 ULA

27625/04/2017

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

• Data:

• 1-bit destiny address

• 7-bit file address

0 dseleção file

13 12 8 7 6 0

0

11

Q2 8-bit dataQ1 6-bit decode

Decodificação do opcode

Instruction

DecoderOpcode

14-bit

Q1 6-bit decode

Q2 8-bit data

Page 47: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

47

7 ULA

0 seleção file

13 12 7 6 0

0

11

27725/04/2017

• Data:

• Bit 7

• 7-bit file address

Q2 8-bit data

Decodificação do opcodeNOP

MOVWF

CLRW

CLRF

Q1 6-bit decode

Instruction

DecoderOpcode

14-bit

Q1 6-bit decode

Q2 8-bit data

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

NOP 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 opcodeANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLW

Q1 6-bit decode

Instruction

DecoderOpcode

14-bit

Q1 6-bit decode

Q2 8-bit data

7 ULA

0 bitseleção file

13 12 7 6 0

1

9

BCF

BSF

BTFSC

BTFSS

27925/04/2017

Q2 8-bit data

Decodificação do opcode

Q1 6-bit decode

Instruction

DecoderOpcode

14-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

0

11 8 7

28025/04/2017

• Datum:

• PCL

Q2 8-bit data

Decodificação do opcodeCALL

GOTO

• Como os dados superam 8 bits, o PC<10:8>

é lido no Q1, junto com os bits 11 a 13.

Q1 6-bit decode

Instruction

DecoderOpcode

14-bit

Q1 6-bit decode

Q2 8-bit data

7 ULA

28125/04/2017

Determinação do destino

ALU

8-bit

21

DEMUX

SRAM8-bit

W8-bit

Seleçãoopcode<7>=0: w

opcode<7>=1: f

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

NOP

MOVWF

CLRW

CLRF

7 ULA

28225/04/2017

Multiplexação datum literal/fileSUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

ANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLW

• Em Q2, se a ULA recebe um 8-bit literal, o

dado já está disponível para ser operado.

• Em Q2, se a ULA recebe um 7-bit file

address, a ULA faz a leitura do registrador.

• Em ambos casos, a ULA conclui o Q2 com

o 8-bit datum disponível para ser operado

Page 48: DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - PIC... · 25/04/2017 1 25/04/2017 1 parte 2 pic 25/04/2017 2 1. definiÇÃo 2. mcu’sde 8 bits 3. mcu’sde 16 e de 32 bits 4. pic16f877-20/p

25/04/2017

48

7 ULA

28325/04/2017

Multiplexação datum literal/file

8-bit

21

MUXSeleção

Literal8-bit

Instruction bus

File8-bit

Data bus

Datum8-bit

Para a ULA

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

MOVWF

CLRF

BCF

BSF

BTFSC

BTFSS

ANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLW

Instruction

Decoder

Opcode13-bit

7 ULA

28425/04/2017

ALU

8-bit

21

MUXSeleçãoInstruction Decoder

Multiplexação datum literal/file

Literal8-bit

Instruction bus

File8-bit

Data bus

7 ULA

28525/04/2017

Multiplexação instrução/dado

• Uma vez que a ULA recebe a informação

sobre a operação e a informação sobre o

operando em instantes diferentes, por meio

da entrada, é preciso que pelo menos a

primeira destas palavras seja registrada para

que esteja disponível no segundo instante.

7 ULA

28625/04/2017

Multiplexação instrução/dado

Registrador

do dado B

Registrador

da operação

Seleção

Registrador

do dado A

W8-bit

Instruction/Datum8-bit

7 ULA

28725/04/2017

Multiplexação instrução/dado