43
Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introduçã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 Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

Embed Size (px)

Citation preview

Page 1: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 2: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 3: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 4: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 5: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 6: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 7: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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?

Page 8: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 9: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 10: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 11: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 12: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 13: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 14: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 15: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 16: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 17: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 18: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 19: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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?

Page 20: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 21: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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…

Page 22: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 23: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 24: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 25: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 26: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 27: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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]

Page 28: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 29: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresIntrodução à arquitectura de microprocessadores - 29

Resultados da simulação

• FRONT 7 e SETOUT1:

Page 30: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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]

Page 31: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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 %

Page 32: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 33: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 34: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)

Page 35: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 36: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 37: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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]

Page 38: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 39: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 40: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 41: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 42: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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

Page 43: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores

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)