Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Digitais Aula 23 Programmable System Controllers Eduardo Peixoto Departamento de Engenharia Ele´trica Faculdade de Tecnologia Universidade de Bras´ılia 1 / 24 Suma´rio Aula 23 Conceitos de um Controlador Programa´vel Projetando um Controlador Programa´vel Implementando a Ma´quina de Refrigerantes no nosso Controlador 2 / 24 Programmable System Controllers O nosso objetivo maior e´ desenvolver um controlador totalmente programa´vel, ra´pido e fa´cil de usar. Este dispositivo microprocessado deveria ser capaz de ser facilmente programado para implementar um dado diagrama de estados, e deveria reagir a` condic¸o˜es de entrada em nanossegundos. Ale´m disso, este controlador deveria gerenciar as atividades de uma ALU, alguma memo´ria e alguns registradores. 3 / 24 Programmable System Controllers Um sistema programa´vel e´ um sistema onde o projetista pode controlar a operac¸a˜o do dispositivo preenchendo uma ROM. Ainda melhor, ele deveria permitir a programac¸a˜o em algum tipo de linguagem Assembly de (mais) alto n´ıvel. Finalmente, ele deveria ser modular, de forma que ele possa ser expandido facilmente. 4 / 24 Programmable System Controllers Modelo de um Controlador Programa´vel Program Counter Writable Control Store Control Inputs Control Program Store Control Output Counter Control 5 / 24 Programmable System Controllers O controlador deveria ser capaz de: comec¸ar o processamento de uma posic¸a˜o arbitra´ria da memo´ria. processar instruc¸o˜es condicionalmente ou incondicionalmente, em sequeˆncia (contagem). processar a pro´xima instruc¸a˜o ou desviar (branch) para outra posic¸a˜o de forma condicional ou incondicional. Processar uma instruc¸a˜o significa a operac¸a˜o de gerar uma sa´ıda externa e tomar uma decisa˜o sobre qual co´digo processar em seguida, baseado na entrada atual e na operac¸a˜o apontada pela memo´ria. 6 / 24 Programmable System Controllers Especificamente, ele deveria ser capaz de: Incrementar o contador de programa (PC ← PC + 1) para a pro´xima instruc¸a˜o de forma condicional, baseado na entrada atual. Incrementar o contador de programa (PC ← PC + 1) para a pro´xima instruc¸a˜o de forma incondicional. Desviar (branch) a execuc¸a˜o do programa para outro local (na˜o PC ← PC + 1) de forma condicional. Desviar (branch) a execuc¸a˜o do programa para outro local (na˜o PC ← PC + 1) de forma incondicional. Incrementar ou Desviar (branch) a execuc¸a˜o do programa de forma condicional. Estes features formam um conjunto m´ınimo de instruc¸o˜es. 7 / 24 Arquitetura de um Controlador Programa´vel CLOCK ROM with STORED PROGRAM N 2 1 0 +V ... Outside World Inputs Branch Mux Address N 2 1 0 +V ... Outside World Inputs Count Mux Address 74161 Count Enable Load CLK CLR D2 D1 D0 Q3 Q2 Q1 Q0 Output Register CLK CLR Branch Address ... Control Address ... ... Outside World Outputs CLR 8 / 24 Programmable System Controllers O circuito e´ bem similar ao circuito que ja´ vimos. Pore´m, o formato da ROM e´ o que define o funcionamento total da ma´quina. Em especial, considere o seguinte co´digo de 12 bits a seguir: Count Mux Branch Mux Branch Address Sa´ıdas A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Sn Sn−1 ... S0 Como ficam as instruc¸o˜es que definimos? 9 / 24 Programmable System Controllers 1) COUNT CONDITIONAL (variable): CC (variable) - (output list) Ex: CC (START) - (LOAD) Count Mux Branch Mux Branch Address Sa´ıdas 0 0 1 0 0 0 0 0 x x x x 0 1 0 0 ↑ ↑ Enderec¸o Nunca Nunca Enderec¸o da varia´vel faz LOAD faz LOAD da varia´vel START LOAD 10 / 24 Programmable System Controllers 2) COUNT UNCONDITIONAL: CU - (output list) Ex: CU Count Mux Branch Mux Branch Address Sa´ıdas 0 0 0 1 0 0 0 0 x x x x 0 0 0 0 ↑ No enderec¸o 1 Nunca Nunca Na˜o ativa do MUX tem um faz LOAD faz LOAD nenhuma sa´ıda 1 (+5V ) 11 / 24 Programmable System Controllers 3) BRANCH UNCONDITIONAL: BU (address) - (output list) Ex: BU (6) - (0) Count Mux Branch Mux Branch Address Sa´ıdas x x x x 0 0 0 1 0 1 1 0 0 0 0 0 ↑ ↑ Na˜o importa No enderec¸o 1 Carrega o Na˜o ativa para o LOAD do MUX tem um enderec¸o 6 nenhuma sa´ıda 1 (+5V ) 12 / 24 Programmable System Controllers 4) BRANCH CONDITIONAL: BC (variable) (address) - (output list) Ex: BC (STOP)(3) - (0) Count Mux Branch Mux Branch Address Sa´ıdas 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 ↑ ↑ ↑ No enderec¸o 0 Enderec¸o Carrega o Na˜o ativa do MUX tem um da varia´vel enderec¸o 3 nenhuma sa´ıda 0 (0V ) STOP 13 / 24 Programmable System Controllers 5) COUNT / BRANCH CONDITIONAL: CBC (variable),(variable) (address) - (output list) Ex: CBC (OVF ·EOT)(EOT)(0) - (LOAD,RN) Count Mux Branch Mux Branch Address Sa´ıdas 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 ↑ ↑ ↑ ↑ ↑ Enderec¸o da Enderec¸o Carrega o LOAD RN varia´vel da varia´vel enderec¸o 0 OVF ·EOT EOT 14 / 24 Programmable System Controllers E´ bem trabalhoso escrever o programa completo com instruc¸o˜es como: CC (2) - (1) BU (6) - (0) ... 15 / 24 Programmable System Controllers Pore´m, alguns programas, conhecidos como ASSEMBLERs, podem ajudar no processo. CP = 2; LOAD = 1; STATE D = 6; ... CC (CP) - (LOAD) BU (STATE D) - (0) ... 16 / 24 Programmable System Controllers Ale´m disso, note que todas as sa´ıdas sa˜o do tipo imediatas. Sa´ıdas condicionais requerem outros passos de programac¸a˜o (ou um hardware extra). Finalmente, a maior limitac¸a˜o do controlador: podemos ter, no ma´ximo, duas possibilidades para cada estado! Logo, nem todo diagrama de estados e´ poss´ıvel de ser implementado. Pore´m, podemos refazer o diagrama de estados de forma a adapta´-lo a` ma´quina. 17 / 24 Programmable System Controllers A B C D E F G CP CP CP CP 1 1 CR CR PDR PDR S>30S=30 S<30 DP=1 CA=1 RN=1 DA=1 0000 0001 0011 0111 0101 0110 0100 Como implementar este estado com as nossas instruções? 18 / 24 Programmable System Controllers A B D E F G H CP CP CP CP 1 1 CR CR PDR PDR S=30 S<30 DP=1 CA=1 RN=1 DA=1 0000 0001 0100 0110 0010 0101 0111 C 0011 S<30 S=30 19 / 24 Programmable System Controllers A B D E F G � CP CP CP CP 1 1 CR CR PDR PDR S=30 S<30 DP=1 CA=1 RN=1 DA=1 0000 0001 0100 0110 0010 0101 0111 C 0011 S<30 S=30 CCBC BC BCBC BU BU CC CC BC 20 / 24 Programmable System Controllers Podemos implementar o diagrama com o seguinte co´digo (antes de definir os estados): Posic¸a˜o na Memo´ria Instruc¸a˜o de Controle A CC (CP )-(0) B BC (CP )(C)-(0) C CBC (S < 30),(S < 30)(A)-(0) D CBC (S = 30),(S = 30)(E)-(0) E BC (PDR)(F)-(DP) F BU (A)-(CA) G BC (CR)(H)-(RN) H BU (C)-(DA) 21 / 24 Programmable System Controllers S=30 x1 RETURN NICKELx1 S<30 x1 BRANCH MUX 3 2 1 0 0 MUX BRANCH ADDR 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 3 2 1 0 CLOCK x1 POP DROP READY x1 74161 COUNTER D3 D2 D1 D0 LOAD CLK CLR Q3 Q2 Q1 Q0COUNT Enable COUNT MUX OUTPUTS 0en reg (4b) COUNT MUX ROM CHANGER READY x1 DEC ACCx1 2 1 0 OUTPUTS COIN PRESENT x1 BRANCH MUX BRANCH ADDR CLEAR x1 3 2 1 0 16B ROM DA sel 3 2 1 00 MUX DROP POPx1 CLR ACCx1 2 1 0 22 / 24Programmable System Controllers Uma vez definidos os estados, nosso co´digo e´: Enderec¸o Estado na Memo´ria Instruc¸a˜o de Controle A 0000 CC (CP )-(0) B 0001 BC (CP )(3)-(0) C 0011 CBC (S < 30),(S < 30)(0)-(0) D 0100 CBC (S = 30),(S = 30)(6)-(0) E 0110 BC (PDR)(2)-(DP) F 0010 BU (0)-(CA) G 0101 BC (CR)(7)-(RN) H 0111 BU (3)-(DA) 23 / 24 Programmable System Controllers E temos finalmente o conteu´do da ROM: Enderec¸o Count Mux Branch Mux Branch Sa´ıdas Estado da Memo´ria Address Address Address CA RN DA DP A 0000 x 0 1 0 0 0 0 0 x x x x 0 0 0 0 B 0001 x x x x 0 0 1 0 0 0 1 1 0 0 0 0 F 0010 x x x x 0 0 0 1 0 0 0 0 1 0 0 0 C 0011 x 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 D 0100 x 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 G 0101 x x x x 0 1 0 1 0 1 1 1 0 1 0 0 E 0110 x x x x 0 1 1 0 0 0 1 0 0 0 0 1 H 0111 x x x x 0 0 0 1 0 0 1 1 0 0 1 0 24 / 24
Compartilhar