Sei sulla pagina 1di 16

Arquitetura de Microprocessadores Prof.

Luiz Marcelo Chiesse da Silva

ARQUITETURA DE PROCESSAMENTO

Os subsistemas digitais codificadores, decodificadores, multiplexadores,


demultiplexadores, registradores e contadores, possibilitam a criação de um sistema
digital mais complexo de processamento de dados. Este sistema é automatizado,
possibilitando o armazenamento de informações de comando (instruções) para o
processamento de informações gerais (dados). As informações de comando e
gerais são todas dispostas na forma binária, i.e., na forma digital.
A arquitetura básica de um circuito para processamento de dados ainda segue
de forma geral os conceitos estabelecidos por John Von Neumann (Professor da
Universidade de Princeton, um dos construtores do EDVAC, 1903-1957),
denominada arquitetura de Von Neumann, com as seguintes características:

1. Codificação de instruções que possam ser armazenadas em uma memória


(codificação em cadeias de uns e zeros - código binário);

2. armazenamento na memória das instruções e de todas as informações


necessárias para a execução de uma determinada tarefa;

3. busca das instruções diretamente na memória no processamento do programa.

A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity


- CPU) é o sistema digital responsável pelo processamento e execução dos
instruções, armazenadas em uma memória semicondutora (memória principal). As
funções da UCP são: executar as instruções e controlar as operações do sistema de
processamento. A UCP é composta de duas partes:

 UAL - Unidade Aritmética e Lógica - tem por função a efetiva execução das
instruções;
 UC - Unidade de Controle - tem por funções a busca, interpretação e controle
de execução das instruções, e o controle dos demais componentes do
computador;

UTFPR – Cornélio Procópio 1


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

A seguir é apresentado o diagrama esquemático de uma UCP.

Registradores Importantes em uma UCP:


 Na UC - CI Contador de Instruções (em inglês: PC - Program Counter) -
armazena o endereço da próxima instrução a ser executada - tem sempre o
mesmo tamanho do REM – Registrador de Endereços.
 Na UC - RI Registrador de Instrução (em inglês: IR - Instruction Register) -
armazena a instrução a ser executada.
UTFPR – Cornélio Procópio 2
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

 Na UAL - ACC Acumulador (em inglês:ACC - Accumulator) - armazena os


dados (de entrada e resultados) para as operações na UAL; o acumulador é um
dos principais elementos que definem o tamanho da palavra do computador - o
tamanho da palavra é igual ao tamanho do acumulador.

Instruções

Um ser humano usa seu conhecimento e inteligência para traduzir uma tarefa
complexa (tal como, por exemplo, a tarefa de buscar uma pasta num arquivo) numa
série de passos elementares (identificar o local do arquivo, fazer o caminho até o
arquivo, identificar o arquivo e retirá-lo do seu local). Para o computador, uma
instrução precisa ser detalhada, dividida em pequenas etapas de operações, que
são dependentes do conjunto de instruções do computador e individualmente
executáveis. Todos os programas para uma determinada UCP, independente da
linguagem de programação utilizada, são transformados na linguagem de máquina
da UCP. As linguagens de máquina são denominadas de linguagens de baixo nível,
observando que o termo utilizado “nível” não tem relação com o nível de qualidade
da linguagem utilizada, mas sim, em relação ao nível de interação da linguagem
com a UCP. As linguagens de mais alto nível utilizam instruções para executarem
tarefas mais complexas. Estas instruções, na realidade, equivalem a uma série de
instruções em linguagem de máquina e existe a necessidade de se utilizar um
programa tradutor (ou compilador) para traduzir esta instrução de alto nível para
uma série de instruções em linguagem de máquina. Ou seja, o programa elaborado
pelo programador (o código-fonte, composto de instruções complexas) precisa ser
"traduzido" em pequenas operações elementares (primitivas) executáveis pelo
hardware. Cada uma das instruções tem um código binário associado, que é o
código da operação.
Para que um programa possa ser executado por um computador, ele precisa
ser constituído por esta série de instruções e estar armazenado em células
sucessivas na memória principal. A UCP é responsável pela execução das
instruções que estão na memória. Quem executa um programa é o hardware e o
que ele espera encontrar é um programa na forma de linguagem de máquina (uma
sequência de instruções de máquina em código binário). A linguagem de máquina
utiliza um código na forma de bits, representando instruções, endereços e dados.
Cada UCP possui um número fixo de instruções ou um conjunto ("set") de
instruções da máquina.

Formato geral de uma Instrução em Linguagem de Máquina para o


microprocessador 8080:

Código de operação (OPCODE) Operando (s) (OP)


UTFPR – Cornélio Procópio 3
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Código de Operação ou OPCODE - identifica a operação a ser realizada pelo


processador. É o campo da instrução cuja valor binário identifica (é o código binário)
da operação a ser realizada. Este código é a entrada no decodificador de instruções
da unidade de controle. Cada instrução deverá ter um código único que a
identifique.
Operando(s) - é ou são o(s) campo(s) da instrução cujo valor binário sinaliza a
localização do dado (ou é o próprio dado) que será manipulado (processado) pela
instrução durante a operação. Em geral, um operando identifica o endereço de
memória onde está contido o dado que será manipulado, ou pode conter o endereço
onde o resultado da operação será armazenado. Finalmente, um operando pode
também indicar um Registrador (que conterá o dado propriamente dito ou um
endereço de memória onde está armazenado o dado). Os operandos fornecem os
dados da instrução. Obs: Existem instruções que não tem operando. Ex.: Instrução
HALT (PARE).

Conjunto de Instruções

Quando se projeta um hardware, define-se o seu conjunto ("set") de instruções


- o conjunto de instruções elementares que o hardware é capaz de executar. O
projeto de um processador é centrado no seu conjunto ("set") de instruções.
Funcionalmente, um processador precisa possuir instruções para:
 operações matemáticas
- aritméticas: +, - , × , ÷ ...
- lógicas: and, or, xor, ...
- de complemento;
- de deslocamento;
 operações de movimentação de dados (memória <--> UCP, reg <--> reg)
 operações de entrada e saida (leitura e escrita em dispositivos de E/S)
 operações de controle (desvio de seqüência de execução, parada)

As estratégias de implementação de processadores são:


- CISC - Complex Instruction Set Computer - exemplo: PC, Macintosh; um conjunto
de instruções maior e mais complexo, implicando num processador mais
complexo, com ciclo de processamento mais lento; ou
- RISC - Reduced Instruction Set Computer - exemplo: Power PC, Alpha, Sparc;
um conjunto de instruções menor e mais simples, implicando num processador
mais simples, com ciclo de processamento rápido.
Obs.: o termo “instrução” pode se utilizado para as instruções de máquina (ou em
linguagem Assembly) e o termo “comando” para linguagens de alto nível.

UTFPR – Cornélio Procópio 4


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Há hoje uma crescente tendência a se utilizar um conjunto de instruções


reduzido, de vez que os compiladores tendem a usar em geral apenas uma pequena
quantidade de instruções. Há também vantagens na implementação do hardware -
maior simplicidade, menor tempo de ciclo de instrução. No projeto de um
processador, os principais itens a serem levados em conta são:
- Definir o conjunto de instruções (todas as possíveis instruções que o
processador poderá executar), definir formato e tamanho das instruções e
as
definir as operações elementares;
- Projetar os componentes do processador (UAL, UC, registradores,
barramentos,...);

Duas estratégias são possíveis na construção do decodificador de instruções da UC:

. wired logic: as instruções são todas implementadas em circuito ou em hardware;


. microcódigo: apenas um grupo básico de instruções são implementadas em
circuitos; as demais são "montadas" através de microprogramas que usam as
instruções básicas.

Ciclo de Instrução

As instruções são executadas sequencialmente (a não ser pela ocorrência de


um desvio no fluxo do programa), uma a uma. O CI (Ciclo de Instrução) indica a
seqüência de execução, isto é, o CI controla o fluxo de execução das instruções. A
seguir é ilustrado o ciclo de processamento de uma instrução.

UTFPR – Cornélio Procópio 5


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Descrição do processamento de uma instrução na UCP:


- a UC lê o endereço da próxima instrução no CI;
- a UC transfere o endereço da próxima instrução, através do barramento interno,
para o REM;

Como exemplo, é descrita a seguir a arquitetura computacional do


microprocessador do PIC16F628a, um microcontrolador de modelo básico,
projetado pela Microchip Technology (www.microchip.com). Os tipos e número dos
principais registradores utilizados, o barramento do sistema e o conjunto de
instruções também são descritos. Este microcontrolador possui as seguintes
características:

- chip de 18 pinos;
- somente 35 instruções no seu microcódigo;
- aceita sinal de clock de freqüência até 20 MHz;
- memória de programa do tipo Flash de 2048 words (1 word = 16 bits);
- 224 bytes de memória RAM para dados;
- 128 bytes de memória EEPROM para dados;
- instruções de 14 bits com 200ns de tempo de execução;
- dados de 8 bits por endereço de memória;
- 15 registradores especiais;
- 16 pinos os quais podem ser configurados como entrada e/ou saída;
- outras características especiais como programação in-circuit serial, proteção por
código, watchdog timer (temporizador cão de guarda), módulo CCP, comparador
interno, USART,....

Pinagem do PIC16F628a:

UTFPR – Cornélio Procópio 6


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Os pinos de RA0 à RA7 e de RB0 à RB7 podem ser configurados como


entradas ou saídas digitais. A alimentação se dá no pino Vdd, normalmente em 5V
com faixa de tolerância de 2 à 6V e o pino Vss é a referência de terra. O pino
OSC1/CLKIN é utilizado para sinal de clock poduzido por cristal ou um circuito
externo e o pino OSC2/CLKOUT para sinal de clock por cristal (utilizado em
conjunto com OSC1/CLKIN). O pino MCLR é uma entrada de sinal de reset em nível
baixo (zero). O PIC16F628a é composto pelos subsistemas digitais conforme
diagrama de blocos abaixo:

UTFPR – Cornélio Procópio 7


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Arquitetura Harvard

O PIC16F628a possui uma arquitetura denominada Harvard para acesso aos


dados e às instruções do programa, a qual é caracterizada por utilizar um bus (via
de acesso) para comunicação dos dados e outro bus distinto para comunicação com
o programa. A maioria dos microcomputadores e microcontroladores no mercado
utilizam um único bus, tanto para dados quanto para instruções do programa. Nota-
se a diferença no uso desta arquitetura na visualização da memória do
microcontrolador PIC: existe uma memória para o programa e outra para os dados a
serem utilizados. A figura a seguir mostra a memória RAM de um microcomputador
PC, em comparação à arquitetura do PIC, em que dados e instruções do programa
estão na mesma memória, denominada memória principal (geralmente a RAM do
computador). As letras abaixo, nas últimas linhas, mostram valores dos
registradores especiais que o processador do computador utiliza, como o DS (Data
Segment), que indica o endereço inicial dos dados na memória; e o CS (Code
Segment), que indica o endereço inicial da memória no qual as instruções do
programa corrente se iniciam.

A figura abaixo mostra o software MPLab IDE com as janelas de visualização


da memória Flash que contém o programa (janela à esquerda) e da memória RAM a
qual contém os dados e registradores especiais (janela à direita) do PIC16F628a.
Este tipo de arquitetura permite uma velocidade maior no cesso ao programa e aos
dados, porém são necessários dois barramentos.
UTFPR – Cornélio Procópio 8
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Instruções RISC

Na tabela abaixo observa-se o conjunto de instruções do PIC16F628a, e


anotações sobre cada instrução. O número de instruções é limitado, sendo
denominado arquitetura RISC - Reduced Instruction Set (Grupo Reduzido de
Instruções). O número de instruções é pequeno, porém cada uma é formada por 14
bits, que codificam uma operação e os operandos, ou os dados sujeitos à respectiva
operação. A tabela abaixo mostra o microcódigo, com a instrução assembly
(mnemônicos) na primeira coluna, os operandos possíveis para a respectiva
instrução, sua descrição os bits do registrador de status que são afetados, o número
de ciclos do clock que a instrução exige para ser executada e o código em
linguagem de máquina.

MNEMÔNICOS OPERANDOS DESCRIÇÃO CICLOS OPCODE DE 14 BITS


DO
CLOCK
OPERAÇÕES DE REGISTRADORES ORIENTADAS A BYTE
ADDWF f, d Soma o conteúdo do 1 00 0111 dfff ffff
registrador “W” e de “f”
ANDWF f, d Operação lógica “E” entre 1 00 0101 dfff ffff
o conteúdo de “W” e “f”
CLRF f Limpa o conteúdo de “f” 1 00 0001 lfff ffff
CLRW -f, Limpa o conteúdo do 1 00 0001 0xxx xxxx
registrador “W”
COMF d Complemento do 1 00 1001 dfff ffff
UTFPR – Cornélio Procópio 9
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

conteúdo de “f”
DECF f, d Decrementa o valor 1 00 0011 dfff ffff
armazenado em “f”
DECFSZ f, d Decrementa o valor 1 (2) 00 1011 dfff ffff
armazenado em “f”, pula
a próxima instrução se for
igual a “0”
INCF f, d Incrementa o valor 1 00 1010 dfff ffff
armazenado em “f”
INCFSZ f, d Incrementa o valor 1 (2) 00 1111 dfff ffff
armazenado em “f”, pula
a próxima instrução se for
igual a “0”
IORWF f, d Operação lógica “OU 1 00 0100 dfff ffff
INCLUSIVO” do conteúdo
do registrador “W” com o
conteúdo de “f”
MOVF f, d Move o conteúdo de “f” 1 00 1000 dfff ffff
para o registrador “W”
MOVWF f Move o conteúdo do 1 00 0000 lfff ffff
registrador “W” para “f”
NOP -f, Sem operação 1 00 0000 0xx0 0000
RLF d Rotaciona os bits 1 00 1101 dfff ffff
armazenados em “f” para
a esquerda com Carry
RRF f, d Rotaciona os bits 1 00 1100 dfff ffff
armazenados em “f” para
a direita com Carry
SUBWF f, d Subtração do conteúdo 1 00 0010 dfff ffff
em “W” de “f”
SWAPF f, d Troca o primeiro nibble (4 1 00 1110 dfff ffff
bits) com o último nibble
armazenados em “f”
XORWF f, d Operação lógica “OU 1 00 0110 dfff ffff
EXCLUSIVO” do
conteúdo de “W” com o
conteúdo de “f”
OPERAÇÕES DE REGISTRADORES ORIENTADAS A BIT
BCF f, b Muda para “0” o valor do 1 01 00bb bfff ffff
bit “b” de “f”
BSF f, b Muda para “1” o valor do 1 01 01bb bfff ffff
UTFPR – Cornélio Procópio 10
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

bit “b” de “f”


BTFSC f, b Verifica o valor do bit “b” 1 (2) 01 10bb bfff ffff
do registrador “f” e pula a
próxima instrução se for
igual a “0”
BTFSS f, b Verifica o valor do bit “b” 1 (2) 01 11bb bfff ffff
do registrador “f” e pula a
próxima instrução se for
igual a “1”
OPERAÇÕES DE CONTROLE E LITERAIS
ADDLW k Adiciona um número “k” 1 11 111x kkkk kkkk
ao conteúdo do
registrador “W”
ANDLW k Operação lógica “E” de 1 11 1001 kkkk kkkk
um número “k” com “W”
CALL k Chamada de uma 2 10 0kkk kkkk kkkk
subrotina indicada por “k”
CLRWDT Limpa o temporizador cão 1 00 0000 0110 0100
de guarda
GOTO k Vai ao endereço dado por 2 10 1kkk kkkk kkkk
“k”
IORLW k Operação OU 1 11 1000 kkkk kkkk
INCLUSIVO de um
número “k” com “W”
MOVLW k Move um número de valor 1 11 00xx kkkk kkkk
“k” para “W”
RETFIE Retorno de uma 2 00 0000 0000 1001
interrupção
RETLW k Retorna com um valor “k” 2 11 01xx kkkk kkkk
no registrador “W”
RETURN Retorno de uma subrotina 2 00 0000 0000 1000
ao programa principal
SLEEP Entra no modo standby 1 00 0000 0110 0011
SUBLW k Subtrai o conteúdo do 1 11 110x kkkk kkkk
registrador “W” de um
número “k”
XORLW k Operação lógica “OU 1 11 1010 kkkk kkkk
EXCLUSIVO” de um
número “k” com o
conteúdo do registrador
“W”
UTFPR – Cornélio Procópio 11
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Obs.: Nos operandos, as letras f, d, b, k indicam:


- f: registrador na memória RAM, como o PORTA, TRISB, STATUS, ou
uma posição qualquer;
- d: direção para a qual pode se designada a função;
- b: o número de um bit dentro de um registrador. Para o PIC16F628a,
são de 0 a 8, porque os registradores possuem 8 bits;
- k: um literal, que envolve letras (ASCII), números no formato decimal,
hexadecimal ou binário, até o limite especificado pelo tamanho do registrador.

“Ports” de entrada e saída

Os microcontroladores da linha PIC possuem pinos que podem ser


configurados como entrada ou saída digital. Cada conjunto de oito destes pinos é
denominado Port, geralmente classificado por uma letra do alfabeto (PortA, PortB,
PortC,....)

“Ports” de entrada e saída


Os microcontroladores da linha PIC possuem pinos que podem ser
configurados como entrada ou saída digital. Cada conjunto de oito destes pinos é
denominado Port, geralmente classificado por uma letra do alfabeto (PortA, PortB,
PortC,....). Para isto, existem implementados na memória RAM do PIC registradores
especiais para configurar e ler/modificar o valor destes pinos. No PIC16F628a, dois
destes registradores, o TRISA e o TRISB, são responsáveis pela configuração
destes pinos para funcionamento como entrada ou saída digital. A abreviatura TRIS
para estes registradores provem de tri-state (três estados) porque alguns pinos
podem funcionar de três modos diferentes: como entrada digital, saída digital ou
outra função específica.

Pinos do PortA Pinos do PortA

Pinos do PortB Pinos do PortB

UTFPR – Cornélio Procópio 12


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Por exemplo: os pinos RB6 e RB7 do PIC16F628a podem funcionar como


entrada digital, saída digital ou terminal de comunicação serial para programar e ler
o programa presente na memória do PIC. Outros modelos de microcontroladores da
linha PIC possuem pinos que podem funcionar como E/S digital e entrada analógica,
ou porta de comunicação de dados,.... Como cada registrador em um PIC pode
armazenar no máximo oito bits, os registradores TRISA e TRISB podem configurar
no máximo oito pinos cada um, com o valor de cada bit nestes registradores
correspondendo à configuração de um pino. O PIC16F628a possui 16 pinos de E/S
digital, então o registrador TRISB é responsável pela configuração de 8 pinos (RB0
a RB7) e o registrador TRISA por mais 8 (RA0 a RA7), como demonstrado nas
tabelas abaixo:

RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0


TRISA

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0


TRISB

Cada registrador acima configura um pino como entrada digital se o bit


respectivo possuir valor “1”; ou saída digital, se o bit respectivo possuir o valor “0”.
Os exemplos abaixo mostram os valores que devem estar presentes nos
registradores TRISA eTRISB dada a respectiva configuração dos pinos:
- pinos RA0 a RA7 configurados como entradas digitais e pinos RB0 a RB7
como saídas digitais:
TRISA 1 1 1 1 1 1 1 1

TRISB 0 0 0 0 0 0 0 0

- pinos RA0, RA2, RA4 e RA6 como entradas digitais e o restante como
saídas:
TRISA 0 1 0 1 0 1 0 1

TRISB 0 0 0 0 0 0 0 0

- pino RB4 como saída digital e o restante como entrada:


TRISA 1 1 1 1 1 1 1 1

TRISB 1 1 1 0 1 1 1 1

- pinos RB0 e RB7 como entradas digitais e o restante como saídas digitais:
UTFPR – Cornélio Procópio 13
Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

TRISA 0 0 0 0 0 0 0 0

TRISB 1 1 0 0 0 0 0 0

- pinos de RA0 a RA7 como saídas digitais e o restante como entradas


digitais:
TRISA 0 0 0 0 0 0 0 0

TRISB 1 1 1 1 1 1 1 1

- pinos RA0, RA1, RA2, RB0, RB1, RB2, RB3 e RB4 como entradas digitais e
o restante como saídas:
TRISA 0 0 0 0 0 1 1 1

TRISB 0 0 0 1 1 1 1 1

A visualização do valor nos registradores pode ser feita no software MPLAB


pela janela da memória RAM ou pela janela dos registradores de funções especiais,
que exibe diretamente a denominação dos registradores especiais e seus valores
em quatro formatos: decimal, ASCII, hexadecimal e binário. A memória RAM exibe o
conteúdo dos registradores especiais localizados na mesma, pelo seu endereço, e
das posições de memória restantes. Alguns registradores especiais não se
localizam na memória RAM, mas estão implementados no próprio circuito da CPU
do microcontrolador PIC, como o Work Register – Registrador de Trabalho ou
registrador W. O endereços na memória RAM dos registradores TRISA e TRISB são
85H e 86H.
Geralmente o inicío da maioria dos programas para o PIC contém instruções
para modificar os valores de TRISA e TRISB, ou seja, para configurar quais pinos
funcionarão como entrada digital ou saída digital.

UTFPR – Cornélio Procópio 14


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

Além dos registradores TRISA e TRISB, existem outros registradores


especiais que devem ser utlizados para configurar o funcionamento do PIC.
Inicialmente, são os registradores OPTION e INTCON:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


OPTION /RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0

/RBPU: Pull-ups internos para os pinos do PORTB


0 = habilita pull-ups internos para os pinos de RB0 a RB7 configurados
como saída
digital;
1 = pull-ups internos desabilitados.

INTEDG: Configura a borda (mudança) que gera a interrupção externa no pino


RB0
0 = interrupção ocorre na borda de descida (mudança de "1" para "0");
1 = interrupção ocorre na borda de subida (mudança de "0" para "1").

UTFPR – Cornélio Procópio 15


Arquitetura de Microprocessadores Prof. Luiz Marcelo Chiesse da Silva

T0CS: Configuração do incremento para o TMR0 (temporizador 0)


0 = TMR0 incrementado internamente pelo sinal de clock do PIC;
1 = TMR0 incrementado pela mudança do sinal no pino RA4/T0CKI.

T0SE: Configuração da borda quando o TMR0 for incrementado pelo sinal


no pino RA4
(quando T0CS = 1)
0 = incremento na borda de descida (mudança de "1" para "0") no pino
RA4;
1 = incremento na borda de subida (mudança de "0" para "1") no pino
RA4.

PSA: Aplicação do prescaler


0 = prescaler aplicado ao TMR0;
1 = prescaler aplicado ao WDT (watchdog timer).

PS2, PS1 e PS0: Configuração do prescaler:

PS2 PS1 TMR0 WDT


PS0
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128

UTFPR – Cornélio Procópio 16

Potrebbero piacerti anche