Introdução à arquitectura de microprocessadores

Propaganda
Introdução à arquitectura
de microprocessadores
• Organização:
–
–
–
–
Projecto de uma arquitectura elementar
O microprocessador P-LOGO
Implementação do P-LOGO em PALASM
A microprogramação e o P-LOGO
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 1
Estilo de projecto (1)
• Existem essencialmente duas abordagens para a
geração dos sinais de relógio para os FF:
– Sinais de relógio
bloqueáveis
(gated clocks)
– Um sinal de relógio
para todos os FF
(free-running clocks)
Relógio
Relógio
A
2
1
3
3
2
D
Q
5
Habilita
6
Relógio_x
CLK
Q
7408
7474
Saída adquire
o valor de A
Habilita
Saída adquire…?
Relógio
mux 2:1
A
Habilita
Relógio
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 2
0
2
1
3
D
Q
5
Habilita
CLK
Q
6
7474
Saída mantém
o valor actual
Saída adquire
o valor de A
Estilo de projecto (2)
• Apesar de ser possível evitar a ocorrência de
impulsos extemporâneos nos sinais de relógio
bloqueáveis, optaremos pela aplicação de um único
sinal de relógio a todos os FF:
– Maior simplicidade do projecto e análise, nomeadamente
no domínio temporal
– Maior simplicidade do teste e do projecto para a
testabilidade
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 3
Registos de uso geral
• Actualizam as saídas de forma cadenciada com um
sinal de relógio
– Andar genérico:
mux 2:1
0
Dados[i]
D
1
3
Carr_reg
Q
Reg[i]
CLK
Q
CLK
– Andar genérico para leitura / escrita:
Abre_reg
mux 2:1
Dados[i]
0
1
Carr_reg
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 4
D
3
Q
CLK
Q
Reg[i]
Contador ascendente
• À excepção dos dois bits menos significativos, um
contador ascendente pode ser construído com base
na seguinte andar genérico:
Controlo
Dados
EX-OR
0
0
0
0
1
1
1
0
1
1
1
mux 2:1
Reg[0]
0
Reg[1]
D
1
Q
CLK
Incr_reg
Reg[i-1]
0
Q
CLK
Sequência de contagem binária ascendente em 4 bits
0
0
0
0
(0)
0
1
0
0
(4)
1
0
0
0
(8)
1
1
0
0
(12)
0
0
0
1
(1)
0
1
0
1
(5)
1
0
0
1
(9)
1
1
0
1
(13)
0
0
1
0
(2)
0
1
1
0
(6)
1
0
1
0
(10)
1
1
1
0
(14)
0
0
1
1
(3)
0
1
1
1
(7)
1
0
1
1
(11)
1
1
1
1
(15)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 5
Reg[i]
Outros tipos de contadores
• Ascendente com
carga paralela:
Dados[i]
mux
0
Reg[0]
1
Reg[1]
D
2
Q
Reg[i]
CLK
Controlo
Reg[i-1]
2
Q
CLK
• Bidireccional com
carga paralela:
Dados[i]
Reg[0]
Reg[1]
mux
0
Reg[i-1]
1
2
D
3
Q
CLK
Controlo
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 6
2
Q
Reg[i]
Outros blocos
• Com base nas estruturas apresentadas poderíamos
facilmente construir outros blocos:
– Um registo multi-função, apto a suportar instruções do tipo
LD, INCR e DECR (Quantas entradas seriam necessárias
no mux que precede o FF? Seria esta a forma mais
eficiente para implementar estas instruções?)
– O registo de programa (PC, Program Counter) - que tipo
de contador, de entre os apresentados anteriormente,
melhor se adequa para implementar o PC?
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 7
A unidade de
descodificação e controlo
• Esta unidade é implementada como uma máquina de
estados, pelos processos conhecidos:
(opcode)
IR[1]
IR[0]
(est. actual)
Q1
Q0
(est. seguinte)
(sinais de controlo internos)
D1
D0
Carr_IR
Incr_PC
Carr_R1
Incr_R1
(…)
Instrução LD R1,#VAL
0
0
0
0
0
1
1
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
1
0
0
1
0
0
0
1
1
0
0
0
1
0
0
Instrução INCR R1
0
1
0
0
0
1
1
0
0
0
0
1
0
1
0
0
0
1
0
1
0
1
1
0
X
X
X
X
X
X
0
1
1
1
X
X
X
X
X
X
…
…
…
…
…
…
…
…
…
…
Código da
instrução
e outras
indicações
Bloco
combinatório
(estado
actual)
(FF D)
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 8
(estado
seguinte)
Saídas
para o
exterior
(sinais de
controlo
para os
vários
blocos)
A unidade de descodificação
e controlo microprogramada
• Na alternativa microprogramada (em vez de hardwired), a funcionalidade deste bloco é definida pelo
conteúdo da memória:
(e não pela interligação
entre portas lógicas
elementares)
Código da instrução
(bits mais significativos
do endereço na memória)
…
Contador ascendente
(bits menos significativos
do endereço na  memória)
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 9
mem
Saídas para o
exterior (sinais de
controlo interno
para os vários
blocos)
O microprocessador PLOGO
• O P-LOGO permite-nos analisar em detalhe o
desenvolvimento de um pequeno microprocessador
• Neste exemplo, estaremos interessados em:
– Implementar um conjunto
de instruções que correspondam aos comandos
LOGO mais comuns
– Dispor de entradas e saídas de uso genérico
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 10
Roda motriz
Saídas
Motor DC
Roda que gira
livremente
P-LOGO
Motor DC
Entradas
Roda motriz
As instruções do P-LOGO
• Existem quatro grupos principais de instruções:
Movimento
Comentários
FRONT <val>
Deslocar para a frente (<val> unidades)
BACK <val>
Deslocar para trás (<val> unidades)
LEFT <val>
Rodar à esquerda (<val> unidades)
RIGHT <val>
Rodar à direita (<val> unidades)
Controlo de saídas
Comentários
SETOUTi
Coloca a saída i (i=0..3) em 1
RSTOUTi
Coloca a saída i (i=0..3) em 0
Saltos
Comentários
JPINi <addr>
Salta para o endereço <addr> se a entrada INi estiver em 1
JP <addr>
Salta para a o endereço <addr>
Geral
Comentários
HALT
Pára a execução do programa
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 11
Atribuição de códigos de
instrução
• Grupos de instruções / opcodes:
–
–
–
–
–
–
Movimento (FRONT, BACK, LEFT e RIGHT): 000XX
Saídas em 1 (SETOUT0, …, SETOUT3): 001XX
Saídas em 0 (RSTOUT0, …, RSTOUT1): 010XX
Saltos condicionais (JPIN0, …, JPIN3): 011XX
Salto não condicional (JP): 10000
Paragem (HALT): 10100
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 12
Arquitectura do P-LOGO (1)
D[0..7]
A[0..7]
IR
Carr_IR
CLK
PC
CNT
New_val
Bit_id [0,1]
Update
Carr_PC
Incr_PC
Carr_CNT
Decr_CNT
CLK
Descodificação e
controlo de
execução das
instruções
IN[0..3]
OUT[0..3]
CLK
CLK
Código de instrução
Fim de contagem
(cnt_zero)
Sinais de controlo para todos os blocos (Carr_IR, Carr_PC, Incr_PC,
Carr_CNT, Decr_CNT, New_val, Bit_id [0,1], Update)
CLK
L_front, L_back, R_front, R_back (para o controlo dos motores)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 13
Arquitectura do P-LOGO (2)
• Notas:
– Cinco bits bastam para o IR
– Para simplificar a implementação, assumiremos que o PC
tem apenas oito bits (que implicações é que isto tem?)
– O comando dos motores DC é feito da seguinte forma:
Parado
A girar
A girar
Parado
L_front
0
0
1
1
L_back
0
1
0
1
L_front
L_back
L_front
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 14
+
L_back
+
L_front
L_back
L_front
L_back
Decomposição das
instruções
• Considerando a instrução FRONT <val>, teremos as
seguintes etapas elementares:
–
–
–
–
Carregar o IR
Incrementar o PC
Carregar o contador interno com <val>
Enquanto o contador for maior que 0, decrementar o
contador e manter activos os sinais L_front e R_front
– Incrementar o PC e passar à instrução seguinte
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 15
Diagrama de transição de
estados para cada instrução
• Para a instrução, FRONT <val>, porque é que o
diagrama de estados apresentado não serve?
Est. 0
1ª
Est. 1
2ª
Est. 2
3ª
Est. ?
4ª
0
Carr_IR
1
Incr_PC
2
Carr_CNT
CLK
Carr_IR
(representam-se para todos
os sinais os atrasos devidos
aos tempos de propagação)
Incr_PC
Cnt_zero
Carr_CNT
Cnt_zer
o
CNT é carregado e ocorre a transição
para o estado seguinte ao 2 (qual?)
tempo
PC é incrementado (coloca <val> no
barramento de dados)
IR é carregado com o opcode de FRONT
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 16
/Cnt_zero
/Cnt_zero
L_front, R_front,
3
Decr_CNT
Cnt_zero
4
Incr_PC
Instruções de movimento
0
Carr_IR
0
Carr_IR
1
Incr_PC
1
Incr_PC
2
Carr_CNT
2
Carr_CNT
3
Incr_PC, Decr_CNT
BACK
0
Cnt_zero
/Cnt_zero
3
Carr_IR
Incr_PC, Decr_CNT
/Cnt_zero
L_front, R_front,
4
Decr_CNT
Cnt_zero
Cnt_zero
1
Incr_PC
2
Carr_CNT
/Cnt_zero
0
/Cnt_zero
L_back, R_front,
4
Decr_CNT
Cnt_zero
0
Cnt_zero
FRONT
RIGHT
/Cnt_zero
3
Incr_PC, Decr_CNT
/Cnt_zero
L_back, R_back,
4
Decr_CNT
Cnt_zero
0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 17
LEFT
Cnt_zero
/Cnt_zero
0
Carr_IR
1
Incr_PC
2
Carr_CNT
3
Incr_PC, Decr_CNT
/Cnt_zero
L_front, R_back,
4
Decr_CNT
Cnt_zero
0
Instruções de controlo das
saídas, salto e paragem
• Controlo das saídas:
(SETOUTi, RSTOUTi)
0
Carr_IR
0
Carr_IR
1
Bit_id[0,1]=i,
New_val,
Update, Incr_PC
1
Bit_id[0,1]=i,
Update, Incr_PC
0
• Salto (JPINi, JP):
/IN[i]
Incr_PC
• Paragem (HALT):
1
Incr_PC
IN[i]
3
2
0
1
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 18
Carr_IR
Carr_IR
Carr_PC
0
Carr_IR
1
Incr_PC
2
Carr_PC
Implementação do P-LOGO
em PALASM
• Etapas principais:
– Codificação dos vários blocos da arquitectura apresentada
em PALASM
– Verificação funcional por simulação lógica
– Programação e colocação em funcionamento
• Questões principais:
– Qual o dispositivo a seleccionar?
– Como implementar a unidade de descodificação e controlo?
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 19
Complexidade da unidade de
descodificação e controlo
Número máximo de estados por instrução:
5 (torna necessário pelo menos 3 FF para a codificação de estado)
Entradas internas:
1 (proveniente do contador)
+5 (provenientes do registo de instrução)
+3 (provenientes dos FF que codificam o estado actual)
Entradas externas:
4 (das entradas IN[0…3])
Saídas internas:
9 (Carr_IR, Carr_PC, Incr_PC, Carr_CNT, Decr_CNT, New_val, Bit_id[0,1] e Update)
+3 (para os FF que codificam o estado actual)
Saídas externas:
4 (controlo dos motores)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 20
Secção declarativa
;PALASM Design Description
;---------------------------- Declaration Segment -----------TITLE
LOGO13.PDS
PATTERN Micro LOGO para as T/P de Microprocessadores
REVISION 13 ; como a 12 mas com os diagramas todos corrigidos
AUTHOR
JMF
COMPANY FEUP/DEEC
DATE
Outubro 1997
CHIP
Micro MACH230
PIN 65 CLOCK
PIN ? RESET
NODE 1 GLOBAL
PIN ? ST[0..2]
PIN ? D[0..7]
…
; CLOCK INPUT
; INPUT - INTERNAL RESET
REGISTERED
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 21
; ESTADO
; INPUT - DATA BUS
A unidade de descodificação e controlo (1)
;---------------------------------- State Segment -----------STATE
MEALY_MACHINE
START_UP := POWER_UP -> ZERO
(Transição de estados)
;STATE ASSIGNEMENT
ZERO
= /ST[2]*/ST[1]*/ST[0]
ONE
= /ST[2]*/ST[1]* ST[0]
TWO
= /ST[2]* ST[1]*/ST[0]
THREE = /ST[2]* ST[1]* ST[0]
FOUR
= ST[2]*/ST[1]*/ST[0]
…
; TRANSITION EQUATIONS
ZERO
:= VCC
-> ONE
ONE
:= FRONT
+ BACK
+ LEFT
-> TWO
-> TWO
-> TWO
…
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 22
A unidade de descodificação e controlo (2)
(Equações das saídas)
;OUTPUT EQUATIONS
ZERO.OUTF
= VCC ->
CARR_IR*/INCR_PC*/CARR_PC*/DECR_CNT*/CARR_CNT
*/L_FRONT*/L_BACK*/R_FRONT*/R_BACK
*/NEW_VAL*/BIT_ID[1]*/BIT_ID[0]*/UPDATE
ONE.OUTF
=
FRONT
-> /CARR_IR* INCR_PC*/CARR_PC*/DECR_CNT*/CARR_CNT
*/L_FRONT*/L_BACK*/R_FRONT*/R_BACK
…
CONDITIONS
(Condições)
; IR[0..4]=00000 FRONT <VAL>
FRONT
= /IR[4]*/IR[3]*/IR[2]*/IR[1]*/IR[0]
FRONTA = /IR[4]*/IR[3]*/IR[2]*/IR[1]*/IR[0]*/CNT_ZERO
FRONTB = /IR[4]*/IR[3]*/IR[2]*/IR[1]*/IR[0]* CNT_ZERO
Introdução
… ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 23
Registo de instrução
• Diagrama lógico:
mux 2:1
0
D[i]
1
Carr_IR
D
3
Q
IR[i]
CLK
Q
CLK
• Descrição em PALASM:
;---------------------------------- Equations Segment -----------EQUATIONS
GLOBAL.RSTF = RESET
IR[0..4] := D[0..4]*CARR_IR + IR[0..4]*/CARR_IR
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 24
Registo de programa (PC)
• Diagrama lógico:
D[i]
mux
0,3
PC[0]
1
PC[1]
D
2
Q
CLK
Incr_PC,
Carr_PC
PC[i-1]
CLK
• Descrição em PALASM
PC[0] := PC[0]*/INCR_PC*/CARR_PC + PC[0]* INCR_PC* CARR_PC
+ D[0]*/INCR_PC* CARR_PC
+ /PC[0]* INCR_PC*/CARR_PC
PC[1] := PC[1]*/INCR_PC*/CARR_PC + PC[1]* INCR_PC* CARR_PC
+ D[1]*/INCR_PC* CARR_PC
+ (PC[1] :+: PC[0])* INCR_PC*/CARR_PC
PC[2] := PC[2]*/INCR_PC*/CARR_PC + PC[2]* INCR_PC* CARR_PC
+ D[2]*/INCR_PC* CARR_PC
+ (PC[2] :+: (PC[0]* PC[1]))* INCR_PC*/CARR_PC
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
… à arquitectura de microprocessadores - 25
Introdução
2
Q
PC[i]
Contador interno
• Diagrama lógico
D[i]
mux
0,3
CNT[0]
1
CNT[1]
D
2
Q
CNT[i]
CLK
Decr_CNT,
Carr_CNT
CNT[i-1]
2
Q
CLK
• Descrição em PALASM
CNT[0]:= CNT[0]*/DECR_CNT*/CARR_CNT + CNT[0]* DECR_CNT* CARR_CNT
+ D[0]*/DECR_CNT* CARR_CNT
+ /CNT[0]* DECR_CNT*/CARR_CNT
CNT[1]:= CNT[1]*/DECR_CNT*/CARR_CNT + CNT[1]* DECR_CNT* CARR_CNT
+ D[1]*/DECR_CNT* CARR_CNT
+ (CNT[1] :+: /CNT[0])* DECR_CNT*/CARR_CNT
…
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 26
Saídas de uso genérico
Update Bit_id[0,1]
• Diagrama lógico:
mux 2:1
New_value
0
1
D
3
Q
CLK
Q
• Descrição PALASM:
OUT[0] :=
+
OUT[1] :=
+
OUT[2] :=
+
OUT[3] :=
+
CLK
UPDATE*/BIT_ID[1]*/BIT_ID[0]* NEW_VAL
/(UPDATE*/BIT_ID[1]*/BIT_ID[0])*OUT[0]
UPDATE*/BIT_ID[1]* BIT_ID[0]* NEW_VAL
/(UPDATE*/BIT_ID[1]* BIT_ID[0])*OUT[1]
UPDATE* BIT_ID[1]*/BIT_ID[0]* NEW_VAL
/(UPDATE* BIT_ID[1]*/BIT_ID[0])*OUT[2]
UPDATE* BIT_ID[1]* BIT_ID[0]* NEW_VAL
/(UPDATE* BIT_ID[1]* BIT_ID[0])*OUT[3]
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 27
OUT[0]
Verificação do projecto
• Secção de simulação (FRONT 7):
;---------------------------------- Simulation Segment -----------SIMULATION
TRACE_ON CLOCK CARR_IR INCR_PC CARR_CNT DECR_CNT CNT_ZERO
L_FRONT R_FRONT OUT[1]
SETF RESET
SETF /RESET
; coloca no barramento de dados o codigo da instrucao FRONT 7
SETF /D[0] /D[1] /D[2] /D[3] /D[4] /D[5] /D[6] /D[7]
CLOCKF CLOCK
; prepara a carga do operando (7) para o contador
SETF D[2] D[1] D[0]
FOR I:=1 TO 10 DO
BEGIN
CLOCKF CLOCK
END
… ao Projecto com Sistemas Digitais e Microcontroladores
Introdução
Introdução à arquitectura de microprocessadores - 28
Resultados da simulação
• FRONT 7
e
SETOUT1:
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 29
Implementação sobre uma
MACH210
R_BACK
PC[5] |
R_FRONT
. | |
| L_BACK
PC[6] | | |
| | L_FRONT
. | | | |
| | | OUT[0]
| | | | |
| | | |
.-----'--'--'--'--'--o-----'--'--'--'---.
|
4 4 4 4 4
|
|
6 5 4 3 2 1 4 3 2 1 0
|
PC[7]| 7
39|OUT[1]
PC[3]| 8
G V
38|OUT[2]
PC[4]| 9
n c
37|OUT[3]
RESET|10
d c
36|
D[3]|11
35|DEFAULT_CLK
Gnd |12
MACH-210
34| Gnd
D[1]|13
33|D[4]
IN[3]|14
V G
32|D[0]
D[7]|15
c n
31|
D[6]|16
c d
30|
IN[2]|17
29|
|
1 1 2 2 2 2 2 2 2 2 2
|
|
8 9 0 1 2 3 4 5 6 7 8
|
'---.--.--.--.--------.--.--.--.--.-----'
| | | |
| | | | |
D[5] | | |
| | | | '
IN[1] | |
| | | '
D[2] |
| | PC[0]
IN[0]
| PC[2]
PC[1]
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 30
Uso dos recursos internos
da MACH210
*** Device Resource Checks
Clocks:
Pins:
I/O Macro:
Total Macro:
Product Terms:
Available
2
38
32
64
256
Used
1
30
16
39
152
Remaining
1
8
16
25
40
->
78%
->
84%
MACH-PLD Resource Checks OK!
(…)
|> INFORMATION F050 - Device Utilization.............. *: 80 %
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 31
O P-LOGO microprogramado
D[0..7]
A[0..7]
IR
Carr_IR
CLK
PC
IN[0..3]
CLK
CNT
New_val
Bit_id [0,1]
Update
Carr_PC
Incr_PC
CLK
Descodificação e
controlo de
execução das
instruções
OUT[0..3]
Carr_CNT
Decr_CNT
Código da instrução
(bits mais significativos
CLK
do endereço na memória)
CLK
memória
Fim de contagem
(cnt_zero)
…
Saídas para o
exterior (sinais de
controlo interno
para os vários
Contador
Sinais de
controlo ascendente
para todos os blocos (Carr_IR, Carr_PC, Incr_PC,
blocos)
(bitsDecr_CNT,
menos significativos
Carr_CNT,
New_val, Bit_id [0,1], Update)
do endereço na memória)
Código de instrução
L_front, L_back, R_front, R_back (para o controlo dos motores)
CLK
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 32
Banco da memória para a
instrução FRONT <val>
Endereço (bin.)
Endereço (hex.)
00000000
1
0
0
0
0
0
0
0
0
0
0
0
0 00H
00000001
0
1
0
0
0
0
0
0
0
0
0
0
0 01H
00000010
0
0
0
0
1
0
0
0
0
0
0
0
0 02H
00000011
0
1
0
1
0
0
0
0
0
0
0
0
0 03H
00000100
0
0
0
1
0
0
0
0
0
1
0
1
0 04H
00000101
0
0
0
0
0
0
0
0
0
0
0
0
0 05H
00000110
0
0
0
0
0
0
0
0
0
0
0
0
0 06H
00000111
0
0
0
0
0
0
0
0
0
0
0
0
0 07H
00001000
1
0
0
0
0
0
0
0
0
0
0
0
0 08H
(5 bits mais
significativos
impostos pelo
IR[4:0])
Carr_IR
Carr_CNT
New_value
R_back
Incr_PC
Update
L_front
Carr_PC
Bit_id[0]
L_back
Decr_CNT
Bit_id[1]
R_front
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 33
Instrução
FRONT <val>
Nova
instrução
Unidade de descodificação
e controlo programada
Código da instrução (IR[0..])
(bits de endereço mais significativos)
memória
Novo endereço (para saltar)
Cond. A
Cond. B
Cond. C
Cond. D
Cond. E
Codificador
Contador
Incr
Carr
Selecção do modo de funcionamento
(bits de endereço
menos significativos)
CLK
instrução
Sinais de
controlo
Descodificador
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 34
Definição das instruções
para o P-LOGO
instrução
Inop .....................................................................................
Carr_IR................................................................................
Carr_PC...............................................................................
Incr_PC ...............................................................................
Carr_CNT............................................................................
Decr_CNT&L_front&R_front ............................................
Decr_CNT&L_back&R_back ............................................
Decr_CNT&L_back&R_front ............................................
Decr_CNT&L_front&R_back ............................................
Bit_id[0,1]=00&New_value&Update&Incr_PC ................
Bit_id[0,1]=01&New_value&Update&Incr_PC ................
Bit_id[0,1]=10&New_value&Update&Incr_PC ................
Bit_id[0,1]=11&New_value&Update&Incr_PC ................
Bit_id[0,1]=00&Update&Incr_PC......................................
Bit_id[0,1]=01&Update&Incr_PC......................................
Bit_id[0,1]=10&Update&Incr_PC......................................
Bit_id[0,1]=11&Update&Incr_PC......................................
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 35
Descrição
Nenhum sinal de controlo no estado activo
Carrega IR com o código de nova instrução
Carrega PC com um novo endereço
Incrementa o PC
Carrega o CNT com o novo <val>
Deslocamento para a frente
Deslocamento para a trás
Rotação à esquerda
Rotação à direita
Coloca OUT[0] em 1
Coloca OUT[1] em 1
Coloca OUT[2] em 1
Coloca OUT[3] em 1
Coloca OUT[0] em 0
Coloca OUT[1] em 0
Coloca OUT[2] em 0
Coloca OUT[3] em 0
Implementação microprogramada do P-LOGO
Código da instrução (IR[4:0])
(bits de end[7:3])
memória
Novo endereço (para saltar)
Cnt_zero
IN[0]
IN[1]
IN[2]
IN[3]
Codificador
Contador
Selecção do modo de funcionamento
Incr
Carr
3
(bits de
end[2:0])
CLK
3 bits 3 bits
MF[2:0]
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 36
instrução
13 bits
Carr_IR, Carr_PC,
Incr_PC, Carr_CNT,
Decr_CNT, Bit_id[0,1],
New_value, Update,
L_front, L_back,
R_front, R_back
Modos de funcionamento
para o codificador
• Como proceder para manter o
endereço actual?
MF[2] MF[1] MF[0]
Incr
Carr
Cnt_zero
IN[0]
IN[1]
IN[2]
IN[3]
Codificador
Incr
Carr
MF[2:0]
3
Modo de funcionamento para o contador
0
0
0
1
0
Incrementa o endereço actual
0
0
1
0
1
Carrega o novo endereço
0
1
0
/CNT_ZERO
CNT_ZERO
Carrega se CNT_ZERO, senão incrementa
0
1
1
CNT_ZERO
/CNT_ZERO
Carrega se /CNT_ZERO, senão incrementa
1
0
0
/IN[0]
IN[0]
Carrega se IN[0], senão incrementa
1
0
1
/IN[1]
IN[1]
Carrega se IN[1], senão incrementa
1
1
0
/IN[2]
IN[2]
Carrega se IN[2], senão incrementa
1
1
1
/IN[3]
IN[3]
Carrega se IN[3], senão incrementa
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 37
Conteúdo da posição 04H
da memória para FRONT
Código da instrução (IR[4:0]) = FRONT
memória
(bits de end[7:3] = 00000)
Novo endereço (04H, já que bits_end[7:3] = 00000)
Codificador Contador
Cnt_zero
Selecção do modo de funcionamento
IN[0]
Incr = Cnt_zero
IN[1]
Carr = /Cnt_zero
instrução
IN[2]
(bits de end[2:0] = 100)
IN[3]
3
CLK
100
MF[2:0] = 011
Endereço actual: 04H
(bits_end[7:0] = 00000100)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 38
011 0001000001010
Sinais de controlo, da esquerda para
a direita: Carr_IR, Incr_PC,
Carr_PC, Decr_CNT, Carr_CNT,
Update, Bit_id[0,1], New_value,
L_front, L_back, R_front, R_back
Conteúdo da posição 05H...
Código da instrução (IR[4:0]) = FRONT
memória
(bits de end[7:3] = 00000)
Novo endereço (00H, já que bits_end[7:3] = 00000)
Codificador Contador
Cnt_zero
Selecção do modo de funcionamento
IN[0]
Incr = 0
IN[1]
Carr = 1
instrução
IN[2]
(bits de end[2:0] = 101)
IN[3]
3
CLK
000
MF[2:0] = 001
Endereço actual: 05H
(bits_end[7:0] = 00000101)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 39
001 0000000000000
0
Sinais de controlo, da esquerda para
a direita: Carr_IR, Incr_PC,
Carr_PC, Decr_CNT, Carr_CNT,
Update, Bit_id[0,1], New_value,
L_front, L_back, R_front, R_back
Tabela para o descodificador de instruções
instrução ............................................... Código de instrução (IR[4:0])
Inop ................................................................................................. 00000
Carr_IR............................................................................................ 00001
Carr_PC........................................................................................... 00010
Incr_PC ........................................................................................... 00011
Carr_CNT........................................................................................ 00100
Decr_CNT&L_front&R_front ........................................................ 00101
Decr_CNT&L_back&R_back ........................................................ 00110
Decr_CNT&L_back&R_front ........................................................ 00111
Decr_CNT&L_front&R_back ........................................................ 01000
Bit_id[0,1]=00&New_value&Update&Incr_PC ............................ 01001
Bit_id[0,1]=01&New_value&Update&Incr_PC ............................ 01010
Bit_id[0,1]=10&New_value&Update&Incr_PC ............................ 01011
Bit_id[0,1]=11&New_value&Update&Incr_PC ............................ 01100
Bit_id[0,1]=00&Update&Incr_PC.................................................. 01101
Bit_id[0,1]=01&Update&Incr_PC.................................................. 01110
Bit_id[0,1]=10&Update&Incr_PC.................................................. 01111
Bit_id[0,1]=11&Update&Incr_PC.................................................. 10000
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 40
Conteúdo da posição 04H da
mem com descodificador
Código da instrução (IR[4:0]) = FRONT
memória
(bits de end[7:3] = 00000)
Novo endereço (04H, já que bits_end[7:3] = 00000)
Codificador Contador
Cnt_zero
Selecção do modo de funcionamento
IN[0]
Incr = Cnt_zero
IN[1]
Carr = /Cnt_zero
instrução
IN[2]
(bits de end[2:0] = 100)
IN[3]
3
CLK
100
011
MF[2:0] = 011
Endereço actual: 04H
(bits_end[7:0] = 00000100)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 41
00101
Descodificador
Decr_CNT = 1
L_front = 1
R_front = 1
Todos os restantes
sinais de controlo em 0
Conteúdo da posição 05H…
(com descodificador)
Código da instrução (IR[4:0]) = FRONT
memória
(bits de end[7:3] = 00000)
Novo endereço (00H, já que bits_end[7:3] = 00000)
Codificador Contador
Cnt_zero
Selecção do modo de funcionamento
IN[0]
Incr = 0
IN[1]
Carr = 1
instrução
IN[2]
(bits de end[2:0] = 101)
IN[3]
3
CLK
000
MF[2:0] = 001
Endereço actual: 05H
(bits_end[7:0] = 00000101)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 42
001
00000
Descodificador
Todos os sinais
de controlo em 0
Conclusão
• Objectivo principal do capítulo: Consolidar as noções
básicas da arquitectura de uma unidade de
processamento central e apresentar o conceito de
microprocessador
• Pistas para a continuação do estudo:
– Microprocessadores de oito bits
– Arquitecturas mais avançadas (> 16 bits)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Introdução à arquitectura de microprocessadores - 43
Download