introdução ao projecto com sistemas digitais e microcontroladores introdução à arquitectura de...
TRANSCRIPT
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 1
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 2
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
Habilita
A
7408
1
23
7474
D2
CLK3
Q5
Q6
Relógio
Habilita
Relógio_x
Saída adquireo valor de A
Saída adquire…?
0
1
Habilita
mux 2:1
Relógio
A
7474
D2
CLK3
Q5
Q6
Relógio
Habilita
Saída mantémo valor actual
Saída adquireo valor de A
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 3
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 4
Registos de uso geral
• Actualizam as saídas de forma cadenciada com um sinal de relógio– Andar genérico:
– Andar genérico para leitura / escrita:
0
1
Carr_reg
mux 2:1
Dados[i]
Reg[i]
CLK
D
CLK3
Q
Q
1
Carr_reg
mux 2:1
0
Reg[i]
Abre_reg
Dados[i]
CLK
D
CLK3
Q
Q
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 5
Contador ascendente
• À excepção dos dois bits menos significativos, um contador ascendente pode ser construído com base na seguinte andar genérico:
0
1
Incr_reg
mux 2:1
CLK
Reg[i]
Reg[0]
Reg[1]
Reg[i-1]
D
CLK
Q
Q
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)
Controlo Dados EX-OR
0 0 0
0 1 1
1 0 1
1 1 0
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 6
Outros tipos de contadores
• Ascendente com carga paralela:
• Bidireccional comcarga paralela:
1
2
CLK
Reg[i]
0
Dados[i]
2Controlo
mux
Reg[1]
Reg[0]
Reg[i-1]
D
CLK
Q
Q
CLK
Reg[i]
2Controlo
3
2
1
0
Dados[i]
mux
Reg[0]
Reg[1]
Reg[i-1]
D
CLK
Q
Q
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 7
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 8
A unidade de descodificação e controlo• Esta unidade é implementada como uma máquina de
estados, pelos processos conhecidos:(opcode) (est. actual) (est. seguinte) (sinais de controlo internos)
IR[1] IR[0] Q1 Q0 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
… … … … … … … … … …
(FF D)
CLK
Blococombinatório
Saídaspara oexterior(sinais decontrolopara osváriosblocos)
Código dainstruçãoe outrasindicações
(estadoactual)
(estadoseguinte)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 9
A unidade de descodificação e controlo microprogramada• Na alternativa microprogramada (em vez de hard-
wired), a funcionalidade deste bloco é definida pelo conteúdo da memória:(e não pela interligação entre portas lógicas elementares)
CLK
Saídas para oexterior (sinais decontrolo internopara os váriosblocos)
Código da instrução(bits mais significativosdo endereço na memória)
mem
…
Contador ascendente(bits menos significativosdo endereço na memória)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 10
O microprocessador P-LOGO• 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 corres-pondam aos comandos LOGO mais comuns
– Dispor de entradas e saí-das de uso genérico
Motor DC
Motor DC
Roda motriz
Roda motriz
Roda que giralivremente
P-LOGO
Saídas
Entradas
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 11
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
J PINi <addr> Salta para o endereço <addr> se a entrada INi estiver em 1
J P <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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 12
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 13
Arquitectura do P-LOGO (1)D[0..7] A[0..7]
IR PC CNT
Descodificação econtrolo deexecução dasinstruções
Código de instruçãoFim 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)
Carr_IRCarr_PCIncr_PC
Carr_CNTDecr_CNT
CLK
CLK
CLK
CLK
New_valBit_id [0,1]Update
CLK
OUT[0..3]
IN[0..3]
L_front, L_back, R_front, R_back (para o controlo dos motores)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 14
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 L_back
+ - L_front L_back L_front L_back
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 15
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 16
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?
CLK
Carr_IR
Incr_PC
Carr_CNT
Cnt_zero CNT é carregado e ocorre a transição
para o estado seguinte ao 2 (qual?)
PC é incrementado (coloca <val> nobarramento de dados)
IR é carregado com o opcode de FRONT
1ª 2ª 3ª 4ªEst. 0 Est. 1 Est. 2 Est. ?
(representam-se para todosos sinais os atrasos devidosaos tempos de propagação)
tempoIncr_PC4
2
/Cnt_zero
/Cnt_zeroL_front, R_front,Decr_CNT
Cnt_zero
Cnt_zero
3
Carr_CNT
1 Incr_PC
0 Carr_IR
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 17
Instruções de movimento
Incr_PC, Decr_CNT
4
2
0
/Cnt_zero Cnt_zero
L_front, R_front,Decr_CNT
Cnt_zero/Cnt_zero
3
Carr_CNT
1 Incr_PC
0 Carr_IR
Incr_PC, Decr_CNT
4
2
0
/Cnt_zero Cnt_zero
L_back, R_back,Decr_CNT
Cnt_zero/Cnt_zero
3
Carr_CNT
1 Incr_PC
0 Carr_IR
Incr_PC, Decr_CNT
4
2
0
/Cnt_zero Cnt_zero
L_back, R_front,Decr_CNT
Cnt_zero/Cnt_zero
3
Carr_CNT
1 Incr_PC
0 Carr_IR
Incr_PC, Decr_CNT
4
2
0
/Cnt_zero Cnt_zero
L_front, R_back,Decr_CNT
Cnt_zero/Cnt_zero
3
Carr_CNT
1 Incr_PC
0 Carr_IR
FRONT
BACK
LEFT
RIGHT
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 18
Instruções de controlo das saídas, salto e paragem
Carr_IR
1
0
2
/IN[i]
Incr_PC
Incr_PC 3
IN[i]
Carr_PC
Carr_IR
1
0
2 Carr_PC
Incr_PC
Carr_IR0
1
• Controlo das saídas:(SETOUTi, RSTOUTi)
• Salto (JPINi, JP):
• Paragem (HALT):
Carr_IR
1
0
Bit_id[0,1]=i,New_val,Update, Incr_PC
Carr_IR
1
0
Bit_id[0,1]=i,Update, Incr_PC
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 19
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 20
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 21
Secção declarativa;PALASM Design Description;---------------------------- Declaration Segment ------------TITLE LOGO13.PDSPATTERN Micro LOGO para as T/P de MicroprocessadoresREVISION 13 ; como a 12 mas com os diagramas todos corrigidosAUTHOR JMFCOMPANY FEUP/DEECDATE Outubro 1997
CHIP Micro MACH230
PIN 65 CLOCK ; CLOCK INPUTPIN ? RESET ; INPUT - INTERNAL RESETNODE 1 GLOBALPIN ? ST[0..2] REGISTERED ; ESTADOPIN ? D[0..7] ; INPUT - DATA BUS…
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 22
A unidade de descodifica-ção e controlo (1)
;---------------------------------- State Segment ------------STATEMEALY_MACHINESTART_UP := POWER_UP -> ZERO
;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 -> TWO + BACK -> TWO + LEFT -> TWO…
(Transição de estados)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 23
A unidade de descodifica-ção e controlo (2)
;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
; 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
…
(Equações das saídas)
(Condições)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 24
Registo de instrução
• Diagrama lógico:
• Descrição em PALASM:
0
1
Carr_IR
mux 2:1
D[i]
IR[i]
CLK
D
CLK3
Q
Q
;---------------------------------- 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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 25
Registo de programa (PC)
• Diagrama lógico:
• Descrição em PALASM
1
2
CLK
PC[i]
0,3
2
mux
Incr_PC,Carr_PC
D[i]
PC[0]
PC[i-1]
PC[1] D
CLK
Q
Q
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 26
Contador interno
• Diagrama lógico
• Descrição em PALASM
2
0,3
2 CNT[i]
CLK
1
mux
D[i]
Decr_CNT,Carr_CNT
CNT[0]
CNT[i-1]
CNT[1] D
CLK
Q
Q
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 27
Saídas de uso genérico
• Diagrama lógico:
• Descrição PALASM:
0
1
mux 2:1
OUT[0]
CLK
New_value
Bit_id[0,1]Update
D
CLK3
Q
Q
OUT[0] := UPDATE*/BIT_ID[1]*/BIT_ID[0]* NEW_VAL
+ /(UPDATE*/BIT_ID[1]*/BIT_ID[0])*OUT[0]
OUT[1] := UPDATE*/BIT_ID[1]* BIT_ID[0]* NEW_VAL
+ /(UPDATE*/BIT_ID[1]* BIT_ID[0])*OUT[1]
OUT[2] := UPDATE* BIT_ID[1]*/BIT_ID[0]* NEW_VAL
+ /(UPDATE* BIT_ID[1]*/BIT_ID[0])*OUT[2]
OUT[3] := 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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 28
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
…
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 29
Resultados da simulação
• FRONT 7 e SETOUT1:
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 30
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 MicrocontroladoresIntrodução à arquitectura de microprocessadores - 31
Uso dos recursos internos da MACH210
*** Device Resource Checks
Available Used Remaining Clocks: 2 1 1 Pins: 38 30 8 -> 78% I/O Macro: 32 16 16 Total Macro: 64 39 25 Product Terms: 256 152 40 -> 84%
MACH-PLD Resource Checks OK!
(…)
|> INFORMATION F050 - Device Utilization.............. *: 80 %
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 32
O P-LOGO microprogramadoD[0..7] A[0..7]
IR PC CNT
Descodificação econtrolo deexecução dasinstruções
Código de instruçãoFim 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)
Carr_IRCarr_PCIncr_PC
Carr_CNTDecr_CNT
CLK
CLK
CLK
CLK
New_valBit_id [0,1]Update
CLK
OUT[0..3]
IN[0..3]
L_front, L_back, R_front, R_back (para o controlo dos motores)
CLK
Saídas para oexterior (sinais decontrolo internopara os váriosblocos)
Código da instrução(bits mais significativosdo endereço na memória)
memória
…
Contador ascendente(bits menos significativosdo endereço na memória)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 33
Banco da memória para a instrução FRONT <val>
Carr_IR
Endereço (bin.)
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
1 0 0 0 0 0 0 0
Carr_PCIncr_PC
Carr_CNT
Decr_CNT
Update
0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0
Bit_id[0]Bit_id[1]
New_valueL_front
L_backR_front
R_back Novainstrução
InstruçãoFRONT <val>
00H
01H
02H
03H
04H
05H
06H
07H
08H
Endereço (hex.)
(5 bits maissignificativosimpostos peloIR[4:0])
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 34
Unidade de descodificação e controlo programada
CLKSinais decontrolo
memóriaCódigo da instrução (IR[0..])(bits de endereço mais significativos)
Contador
Cond. BCond. C
Incr
Descodificador
Novo endereço (para saltar)
Selecção do modo de funcionamento
instrução
Cond. A
Cond. D Carr
Codificador
Cond. E(bits de endereçomenos significativos)
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 35
Definição das instruções para o P-LOGO
instrução Descrição
Inop ..................................................................................... Nenhum sinal de controlo no estado activoCarr_IR................................................................................ Carrega IR com o código de nova instruçãoCarr_PC............................................................................... Carrega PC com um novo endereçoIncr_PC ............................................................................... Incrementa o PCCarr_CNT............................................................................ Carrega o CNT com o novo <val>Decr_CNT&L_front&R_front ............................................ Deslocamento para a frenteDecr_CNT&L_back&R_back ............................................ Deslocamento para a trásDecr_CNT&L_back&R_front ............................................ Rotação à esquerdaDecr_CNT&L_front&R_back ............................................ Rotação à direitaBit_id[0,1]=00&New_value&Update&Incr_PC ................ Coloca OUT[0] em 1Bit_id[0,1]=01&New_value&Update&Incr_PC ................ Coloca OUT[1] em 1Bit_id[0,1]=10&New_value&Update&Incr_PC ................ Coloca OUT[2] em 1Bit_id[0,1]=11&New_value&Update&Incr_PC ................ Coloca OUT[3] em 1Bit_id[0,1]=00&Update&Incr_PC...................................... Coloca OUT[0] em 0Bit_id[0,1]=01&Update&Incr_PC...................................... Coloca OUT[1] em 0Bit_id[0,1]=10&Update&Incr_PC...................................... Coloca OUT[2] em 0Bit_id[0,1]=11&Update&Incr_PC...................................... Coloca OUT[3] em 0
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 36
Implementação micro-programada do P-LOGO
CLK
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
memória
Contador
IN[0]IN[1]
Incr
Novo endereço (para saltar)
Selecção do modo de funcionamento
instrução
Cnt_zero
IN[2] Carr
Codificador
IN[3]
3 bits 3 bits 13 bits
3
MF[2:0]
Código da instrução (IR[4:0])(bits de end[7:3])
(bits deend[2:0])
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 37
Modos de funcionamento para o codificador
MF[2] MF[1] MF[0] Incr Carr 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
• Como proceder para manter o endereço actual?
IN[0]IN[1]
Incr
Cnt_zero
IN[2] Carr
Codificador
IN[3]
3
MF[2:0]
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 38
Conteúdo da posição 04H da memória para FRONT
CLK
memóriaCódigo da instrução (IR[4:0]) = FRONT (bits de end[7:3] = 00000)
Contador
IN[0]IN[1]
Incr = Cnt_zero
Novo endereço (04H, já que bits_end[7:3] = 00000)
Selecção do modo de funcionamento
instrução
Cnt_zero
IN[2]Carr = /Cnt_zero
Codificador
IN[3]
100 011 0001000001010
3
MF[2:0] = 011
(bits de end[2:0] = 100)
Endereço actual: 04H(bits_end[7:0] = 00000100)
Sinais de controlo, da esquerda paraa 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
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 39
Conteúdo da posição 05H...
CLK
memóriaCódigo da instrução (IR[4:0]) = FRONT (bits de end[7:3] = 00000)
Contador
IN[0]IN[1]
Incr = 0
Novo endereço (00H, já que bits_end[7:3] = 00000)
Selecção do modo de funcionamento
instrução
Cnt_zero
IN[2]Carr = 1
Codificador
IN[3]
000 001 00000000000000
3
MF[2:0] = 001
(bits de end[2:0] = 101)
Endereço actual: 05H(bits_end[7:0] = 00000101)
Sinais de controlo, da esquerda paraa 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
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 40
Tabela para o descodifica-dor de instruções
instrução ............................................... Código de instrução (IR[4:0])
Inop ................................................................................................. 00000Carr_IR............................................................................................ 00001Carr_PC........................................................................................... 00010Incr_PC ........................................................................................... 00011Carr_CNT........................................................................................ 00100Decr_CNT&L_front&R_front ........................................................ 00101Decr_CNT&L_back&R_back ........................................................ 00110Decr_CNT&L_back&R_front ........................................................ 00111Decr_CNT&L_front&R_back ........................................................ 01000Bit_id[0,1]=00&New_value&Update&Incr_PC ............................ 01001Bit_id[0,1]=01&New_value&Update&Incr_PC ............................ 01010Bit_id[0,1]=10&New_value&Update&Incr_PC ............................ 01011Bit_id[0,1]=11&New_value&Update&Incr_PC ............................ 01100Bit_id[0,1]=00&Update&Incr_PC.................................................. 01101Bit_id[0,1]=01&Update&Incr_PC.................................................. 01110Bit_id[0,1]=10&Update&Incr_PC.................................................. 01111Bit_id[0,1]=11&Update&Incr_PC.................................................. 10000
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 41
Conteúdo da posição 04H da mem com descodificador
CLK
memóriaCódigo da instrução (IR[4:0]) = FRONT (bits de end[7:3] = 00000)
Contador
IN[0]IN[1]
Incr = Cnt_zero
Novo endereço (04H, já que bits_end[7:3] = 00000)
Selecção do modo de funcionamento
instrução
Cnt_zero
IN[2]Carr = /Cnt_zero
Codificador
IN[3]
100 011 00101
3
MF[2:0] = 011
(bits de end[2:0] = 100)
Todos os restantessinais de controlo em 0
Endereço actual: 04H(bits_end[7:0] = 00000100)
DescodificadorDecr_CNT = 1L_front = 1R_front = 1
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 42
Conteúdo da posição 05H… (com descodificador)
CLK
memóriaCódigo da instrução (IR[4:0]) = FRONT (bits de end[7:3] = 00000)
Contador
IN[0]IN[1]
Incr = 0
Novo endereço (00H, já que bits_end[7:3] = 00000)
Selecção do modo de funcionamento
instrução
Cnt_zero
IN[2]Carr = 1
Codificador
IN[3]
000 001 00000
3
MF[2:0] = 001
(bits de end[2:0] = 101)
Todos os sinaisde controlo em 0Endereço actual: 05H
(bits_end[7:0] = 00000101)
Descodificador
Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 43
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)