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