Prévia do material em texto
Microprocessadores Eng. Elétrica Prof. Sandro Rodrigo G. Bastos MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 2 SUMÁRIO 1. BIESTÁVEIS............................................................................................................................... 3 1.1. Flip-Flop RS .....................................................................................................................................3 1.2. Flip-Flop JK ......................................................................................................................................6 1.3. Flip-Flop T ........................................................................................................................................7 1.4. Flip-Flop D........................................................................................................................................8 1.5. Preset e Clear...................................................................................................................................9 1.6. Flip-Flop JK Mestre-Escravo........................................................................................................... 10 1.7. Transformação de Biestáveis.......................................................................................................... 12 1.8. Circuito Anti-Ruído (Debounce) ...................................................................................................... 15 2. CONTADOR SÍNCRONO.......................................................................................................... 16 3. MODELO SEQÜENCIAL .......................................................................................................... 23 4. PAL – ARRANJO LÓGICO PROGRAMÁVEL.......................................................................... 28 5. MICROPROCESSADOR X MICROCONTROLADOR............................................................... 38 6. O MICROCONTROLADOR 8051.............................................................................................. 39 6.1. A Família 8051 ............................................................................................................................... 40 6.2. Descrição da Pinagem.................................................................................................................... 40 6.3. Oscilador Interno ............................................................................................................................ 42 6.4. Reset.............................................................................................................................................. 43 6.5. A Estrutura de Memória .................................................................................................................. 43 6.6. Memória de Programa .................................................................................................................... 43 6.7. Memória de Dados ......................................................................................................................... 44 6.8. Registradores de Função Especial.................................................................................................. 45 7. CONJUNTO DE INSTRUÇÕES DO 8051................................................................................. 50 7.1. Modos de Endereçamento.............................................................................................................. 50 7.2. Instruções de Transferência de Dados............................................................................................ 51 7.3. Instruções Aritméticas..................................................................................................................... 54 7.4. Instruções Lógicas.......................................................................................................................... 56 7.5. Instruções Booleanas ..................................................................................................................... 57 7.6. Instruções de Desvio ...................................................................................................................... 58 8. KIT DIDÁTICO SDM 9431......................................................................................................... 62 8.1. Operação do Kit Didático ................................................................................................................ 62 9. ANEXO A: TABELA DE INSTRUÇÕES DO 8051 .................................................................... 64 10. ANEXO B: SISTEMA MÍNIMO COM O 8051 ............................................................................ 72 11. BIBLIOGRAFIA ........................................................................................................................ 73 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 3 1. BIESTÁVEIS Podemos considerar dois modelos de circuitos eletrônicos digitais: Combinacional e Seqüencial. Nos circuitos combinacionais as saídas dependem apenas das entradas no instante de tempo observado. Os circuitos seqüenciais se caracterizam por terem as saídas dependentes das entradas no instante de tempo observado e no instante anterior, ou seja, possuem uma seqüência de operação. Um dos componentes mais utilizados na implementação de circuitos seqüenciais são os biestáveis (popularmente denominados de flip-flops ou latch). Os biestáveis são circuitos que apresentam dois estados estáveis (0 e 1) na saída. Quando pela ação de um estímulo externo, em sua(s) entrada(s), passam de um estado a outro, permanecendo até que outro estímulo seja dado novamente em sua(s) entrada(s). Por essa característica de manter um determinado estado é que os biestáveis são denominados também de elementos de memória. O biestável funciona, portanto, como elemento armazenador de informação ou de memória. Existem basicamente quatro tipos de biestáveis: - Flip-Flop RS - Flip-Flop JK - Flip-Flop D - Flip-Flop T Os biestáveis podem ser assíncronos ou síncronos. O tipo assíncrono significa que o biestável não depende de relógio (clock) para seu funcionamento. Já o tipo síncrono depende do relógio (clock), podendo ser encontrados de duas maneiras: Nível ou Borda. O quadro abaixo mostra a simbologia adotada para o funcionamento do nível alto ou baixo e também para a borda de subida ou descida. Nível Alto Nível Baixo Borda de Subida Borda de Descida Vcc ou NL1 Gnd ou NL0 1.1. Flip-Flop RS a) RS Assíncrono (Construído com portas NOU) Simbologia: Circuito Interno: Tabela Verdade: OBS: Na situação onde R = S = 1, denominamos de “proibido” porque não tem sentido lógico querer resetar e setar ao mesmo tempo. R S Q 0 0 Mantém 0 1 1 1 0 0 1 1 Proibido R Q QS R Q S Q MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 4 b) RS Assíncrono (Construído com portas NE) A simbologia e a Tabela Verdade permanecem iguais, modificando apenas o circuito interno. Circuito Interno: A seguir, vamos analisar o funcionamento deste biestável (RS assíncrono) através do “Diagrama deTempos”, que é um dos processos mais importantes utilizados na tecnologia digital pela facilidade de compreensão do funcionamento do circuito. Diagrama de Tempos: R S Q c) RS Síncrono (Nível Alto) Simbologia: Circuito Interno: Diagrama de Tempos: Ck S R Q R Q S Q R Q QS Ck R Q S Q Ck MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 5 No biestável sincronizado em nível lógico alto, só é alterada a saída, respeitando a tabela verdade do tipo RS, enquanto o clock estiver em NL1, conforme pode ser verificado no diagrama de tempos anterior. d) RS Síncrono (Nível Baixo) No biestável sincronizado em nível lógico baixo, só é alterada a saída, respeitando a tabela verdade do tipo RS, enquanto o clock estiver em NL0. Simbologia: Circuito Interno: e) RS Síncrono (Borda de Subida) O biestável de borda de subida só tem a sua saída alterada conforme as condições de entrada E na transição do clock (de NL0 para NL1), ou seja, mesmo que o clock esteja em nível lógico alto, a saída não se altera independente do que foi colocado em suas entradas. A diferença do circuito de nível alto para o de borda de subida consiste no acréscimo de um circuito diferenciador colocado na entrada do clock fazendo com que o funcionamento do mesmo após o diferenciador seja exatamente igual ao de nível alto. Verifique pela ilustração ao lado que no instante em que o clock vai a nível lógico alto, após o diferenciador (ponto X) vai de 0 para 1 e instantaneamente volta para 0, permitindo assim apenas uma leitura das entradas do biestável, ou seja, mesmo que o clock se mantenha em nível lógico alto a saída não se altera mesmo modificando as entradas do flip-flop. A seguir temos o circuito completo do biestável síncrono funcionando à borda de subida. Na representação simbólica do flip-flop, aparece um pequeno triângulo que significa “sincronismo à borda”. No diagrama de tempos, podemos analisar o funcionamento deste flip-flop. Simbologia: Circuito Interno: R Q QS Ck R Q S Q Ck Ck C R Circuito X X Ck R Q QS Ck R Q S Q Ck C R MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 6 Diagrama de Tempos: Ck S R Q Observe no diagrama de tempos da ilustração anterior que a saída só tem possibilidade de ser alterada no instante em que o clock vai de 0 para 1. f) RS Síncrono (Borda de Descida) O biestável de borda de descida só tem a sua saída alterada conforme as condições de entrada E na transição do clock (de NL1 para NL0), ou seja, mesmo que o clock esteja em nível lógico baixo, a saída não se altera independente do que foi colocado em suas entradas. A diferença do circuito de nível baixo para o de borda de descida consiste no acréscimo de um circuito diferenciador colocado na entrada do clock após a porta inversora, fazendo com que o funcionamento do mesmo após o diferenciador seja exatamente igual ao de nível baixo. A figura seguinte mostra o circuito completo e a simbologia do biestável síncrono funcionando à borda de descida. Na representação simbólica do flip-flop aparece um pequeno triângulo e uma bolinha que significa “sincronismo à borda de descida”. Caso seja construído o diagrama de tempos que representa esse biestável, é conveniente lembrar que a saída só poderá sofrer alteração na transição do clock de NL1 para NL0. Simbologia: Circuito Interno: 1.2. Flip-Flop JK O biestável JK só existe na configuração borda de subida ou descida, não sendo possível existir no formato assíncrono ou em nível. A seguir temos o símbolo lógico, a tabela verdade e um diagrama de tempos como exemplo. Perceba que a tabela verdade do flip-flop JK é muito parecida com a do tipo RS, sendo diferenciada apenas na última linha da tabela. O biestável JK não pode existir na configuração em nível devido à condição de inversão do sinal de saída, ou seja, imagine um JK funcionando em nível alto: quando fosse colocada nas entradas J = 1 e K = 1 e o clock em nível lógico alto, a saída ficaria invertendo (0 → 1 → 0 → 1 .....) na ordem de microssegundos enquanto o clock se mantiver em nível lógico alto, perdendo assim o controle de funcionamento do flip-flop. Por essa razão, só é possível existir o biestável JK funcionando a borda de descida ou subida, pois quando o R Q QS Ck R Q S Q Ck C R MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 7 relógio estiver na transição o flip-flop faz apenas uma única leitura das condições de entrada, portanto só inverte a saída uma vez. Simbologia: Tabela Verdade: J K Q 0 0 Mantém 0 1 0 1 0 1 1 1 Inverte Diagrama de Tempos: Ck J K Q 1.3. Flip-Flop T O biestável tipo T só existe na configuração borda de subida ou descida, pelo mesmo motivo justificado no biestável tipo JK. Para melhor compreensão, vide abaixo o símbolo lógico, sua tabela verdade e um diagrama de tempos como exemplo. Simbologia: Tabela Verdade: T Q 0 Mantém 1 Inverte Diagrama de Tempos: Ck T Q T Q QCk J Q QK Ck MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 8 1.4. Flip-Flop D O flip-flop tipo D é o mais fácil dos biestáveis, pois o sinal que estiver em sua entrada (D) é o mesmo que vai parar na saída (Q). Pode ser encontrado com ou sem clock. O flip-flop tipo D assíncrono não tem muita utilidade, pois uma vez que a saída copia a entrada instantaneamente (não tem clock), o seu funcionamento deixa de ter sentido a menos que a intenção seja o de gerar um pequeno “delay” (atraso). a) D Assíncrono Simbologia: Circuito Interno: Tabela Verdade; Diagrama de Tempos: DQ b) D Síncrono (Nível Alto) A tabela verdade permanece igual, mudando a simbologia e o diagrama de tempos. Também existe o biestável tipo D funcionando em nível baixo. Simbologia: Diagrama de Tempos: Ck D Q D Q 0 0 1 1 D Q Q Q D Q D Q QCk MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 9 c) D Síncrono (Borda de Subida) Também pode ser encontrado o biestável tipo D funcionando a borda de descida. Simbologia: Diagrama de Tempos: Ck D Q 1.5. Preset e Clear O biestável que contém estes dois terminais adicionais (preset e clear) é o mais completo que existe, pois possibilita ao usuário do circuito forçar a saída a ser “0” ou “1”, independente das condições de entrada e do clock. A função preset força a saída em NL1 nas seguintes condições (Clear = 1 e Preset = 0), ou seja, o circuito foi “pré-setado” enquanto que a função clear força a saída em NL0 nas seguintes condições (Clear = 0 e Preset = 1). É importante lembrar que tanto o preset quanto o clear são funções soberanas e isso significa que a saída é forçada conforme a necessidade do usuário independente da entrada e do clock. Como exemplo, a seguir tem um flip-flop tipo RS síncrono com borda de subida, e com os terminais de Preset e Clear. Os outros biestáveis também podem ser encontrados nesta configuração. A tabela verdade apresenta mais duas entradas (Preset e Clear). Verifique na tabela que quando forçamos uma saída através do preset ou clear independente do que tenha na entrada R ou S, a mesma permanece inalterada. Simbologia: Circuito Interno: D Q QCk R Q S Q Ck C R Cl Pr R Q QS Ck Pr Cl MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 10 Tabela Verdade: Pr Cl R S Q 0 0 X X Proibido 0 1 X X 1 1 0 X X 0 1 1 0 0 Mantém 1 1 0 1 1 1 1 1 0 0 1 1 1 1 Proibido 1.6. Flip-Flop JK Mestre-Escravo Um biestável mestre-escravo (master-slave) é uma combinação de dois flip-flops sincronizados, onde o primeiro é o mestre e o segundo é o escravo. A figura a seguir mostra o circuito e um diagrama de tempos que representa o funcionamento deste tipo de biestável. Circuito Interno: Q Q J Qm K Qm Ck MESTRE ESCRAVO Diagrama de Tempos: Ck J K Qm Q Na subida do pulso de clock, os valores introduzidos nas entradas J e K acionam o circuito do mestre. Logo após a descida do pulso do clock, o circuito do escravo é acionado copiando a mesma saída ocorrida no mestre Qm. MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 11 Quando o clock assume nível lógico alto, as portas lógicas do mestre modificam sua saída (Qm) conforme os valores introduzidos nas entradas J e K. Neste momento, o escravo fica desabilitado devido a porta inversora do circuito elétrico, fazendo com que a saída do circuito (saída do escravo) fique inalterada. Quando o clock assume nível lógico baixo, as portas lógicas do mestre ficam desabilitadas, o que impede o acesso dos valores introduzidos nas entradas J e K. Neste momento as portas lógicas do escravo são habilitadas permitindo a ação do mestre sobre o escravo, ou seja, as saídas do mestre passam a ser as entradas do escravo, garantindo assim a execução do funcionamento do biestável conforme previsto. Para o circuito executar corretamente a tabela verdade do biestável JK, as entradas J e K não devem mudar enquanto o clock estiver em nível lógico alto. Por exemplo: se J = 0, K = 0 e Q = 1, é esperado que a saída não mude após a aplicação de um pulso de clock. Contudo, se enquanto o clock estiver em nível lógico alto ocorrer um transitório na entrada K, ou seja, K assume o valor 1 e volta em seguida para 0, então ocorrerá mudança na saída após a descida do pulso do clock. Isto significa que não devemos usar esse tipo de flip-flop em ambientes nos quais as entradas J e K possam mudar enquanto o clock estiver em NL1. Neste caso, devemos usar o biestável comum. Exercício 1: Dado o circuito, desenhe as formas de onda nas saídas Q0, Q1 e Q2, considerando que inicialmente estas saídas estão em nível lógico baixo. E T Q0 Q0 J Q1 Q1K R Q2 Q2S Ck E Ck Q0 Q1 Q2 t t t t t MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 12 Exercício 2: Dado o circuito, desenhe as formas de onda nas saídas Qa, Qb e Qc, considerando que inicialmente estas saídas estão em nível lógico baixo. Exercício 3: Dado o circuito, desenhe as formas de onda nas saídas Qa, Qb e Qc, considerando que inicialmente estas saídas estão em nível lógico baixo. 1.7. Transformação de Biestáveis A partir de um flip-flop, pode-se construir um outro qualquer. Basta fazer a correspondência entre a operação (tabela verdade) do biestável que se tem e a operação do biestável que se deseja. Para um melhor entendimento, veja o exemplo: E CK D Qb Qb J K Qc Qc R S Qa Qa CK t t t t t E Qa Qb Qc E CK T Qb Qb J K Qc Qc R S Qa Qa CK t t t t t E Qa Qb Qc MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 13 Exemplo: A partir do flip-flop tipo RS transformar no flip-flop tipo T. O primeiro passo é desenhar as tabelas verdade do flip-flop que se tem e o desejado. Estas tabelas representam o que acontecerá com a saída conforme as condições das entradas, por exemplo: na tabela do tipo T, quando a saída QN = 0 e na entrada do flip-flop T for colocado T = 0, a saída futura será QN+1 = 0. Flip-Flop Desejado Flip-Flop Atual T QN →→→→ QN+1 R S QN →→→→ QN+1 0 0 → 0 0 0 0 → 0 0 1 → 1 0 0 1 → 1 1 0 → 1 0 1 0 → 1 1 1 → 0 0 1 1 → 1 1 0 0 → 0 1 0 1 → 0 1 1 0 → X 1 1 1 → X A partir das tabelas verdade obtemos as equações que vão representar as entradas do flip-flop (que se tem), da seguinte maneira: T QN 0 1 0 X 0 1 0 1 R =T.Q S = T.Q Para preencher os valores internos dos Mapas de Karnaugh, deve-se analisar de forma independente cada célula, por exemplo: verifique que a primeira célula de cada um dos Mapas de Karnaugh representa que a saída QN = 0 e será colocado na entrada T = 0; assim, consultando a tabela verdade do flip-flop (desejado) nota-se que a saída vai de 0 para 0 (QN = 0 → QN+1 = 0). Procura-se então na outra tabela verdade (flip-flop atual) o mesmo efeito, concluindo-se que isto ocorre em duas oportunidades: para R = 0 e S = 0 e também para R = 1 e S = 0. Portanto R é irrelevante (já que pode ser R = 0 ou R = 1) enquanto que S com certeza é “0”. Repare então que na primeira célula do Mapa de Karnaugh da esquerda (representa a equação da entrada R) foi preenchida com irrelevância “X”, enquanto que na primeira célula do Mapa de Karnaugh da direita (representa a equação da entrada S) foi preenchida com “0”. As demais células seguem o mesmo raciocínio para preenchimento. Uma vez que os dois Mapas de Karnaugh foram inteiramente preenchidos, devem-se obter as equações. Obtidas as equações, basta implementar o circuito com o flip- flop que se tem, conforme ilustra a figura ao lado. T QN 0 1 0 0 1 1 X 0 R Q S Ck T Q Q Q Flip-Flop Tipo T MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 14 Exercício 4: A partir do flip-flop tipo JK transformar no flip-flop tipo D. Resposta: Exercício 5: A partir do flip-flop tipo RS transformar no flip-flop tipo JK. Resposta: MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 15 1.8. Circuito Anti-Ruído (Debounce) É um circuito utilizado para reduzir os problemas provocados por chaves nos circuitos digitais. As chaves podem ter problemas na transição de um terminal para outro, deixando de fazer contato com os terminais por um breve período de tempo. Outro problema é o mal-contato por problemas de zinabre, ferrugem, etc. Na figura seguinte temos um exemplo de circuito de debounce, além das formas de onda nos pontos A e B (contatos da chave) e o ponto S (saída do circuito). Observe no circuito que no ponto em que a chave está encostada (A ou B), o terminal da porta NE em questão fica em nível lógico baixo, pois a corrente circula do Vcc até o Gnd, sendo dissipada por completo pelo resistor. Claro que no ponto em que a chave não está encostada, o terminal da porta NE fica em nível lógico alto. Assim, sempre que se desejar enviar nível lógico alto para o circuito digital deve-se colocar a chave na posição “A”; para enviar nível lógico baixo deve-se colocar a chave na posição “B”. MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 16 2. CONTADOR SÍNCRONO Uma combinação binária presente nas saídas do contador é denominada de “estado do contador”. A seqüência das combinações binárias assumidas pelas saídas do contador em função dos pulsos do clock pode ser natural ou não. Por exemplo: podemos projetar um contador para assumir uma seqüência de estados que corresponde a decimais consecutivos crescentes (0, 1, 2, 3, ...) ou decrescentes (..., 3, 2, 1, 0), ou ainda, para assumir uma seqüência não natural (7, 3, 1, 4, 0, 2). Para melhor entendermos o procedimento a ser seguido para executar uma contagem qualquer que se fizer necessário, vamos adotar um exemplo e a partir deste poderemos desenvolver qualquer outra contagem. Exemplo: Implemente o circuito "contador síncrono" de acordo com a seqüência abaixo, utilizando apenas flip- flops do tipo RS. Uma vez definida a ordem da contagem através de um fluxograma denominado de “Diagrama de Estados”, devemos agora construir a “Tabela de Transição” do biestável escolhido. Neste caso, devemos partir da tabela verdade do biestável RS, conforme explicação a seguir. R S Q QN →→→→ QN+1 R S 0 0 Mantém 0 → 0 0 1 1 0 → 1 1 0 0 1 → 0 1 1 Proibido 1 → 1 O preenchimento da tabela de transição é feito a partir da análise feita na tabela verdade do biestável a ser utilizado. A primeira coluna da tabela de transição refere-se à passagem da saída atual para a saída futura quando se introduzir um valor para as entradas R e S do flip-flop em questão. Por exemplo: analisando a primeira linha da tabela de transição, pergunta-se: “Qual valor devemos introduzir nas entradas R e S do flip-flop de tal maneira que a saída atual vá de NL0 para uma saída futura também igual a NL0?”. Resposta: Existem duas possibilidades: “R = 0 e S = 0” ou “R = 1 e S = 0”. Portanto, como a entrada R uma vez é NL0 e a outra vez é NL1, então tanto faz seu nível lógico, ou seja, é irrelevante (don’t care X); enquanto que a entrada S em ambas as situações é NL0, então com certeza essa entrada tem que ser NL0. Desenvolvendo esse mesmo raciocínio, podemos então preencher toda a tabela de transição do biestável Diagrama de Estados 6, 1 4, 1 5, 1 2, 10, 1 1, 07, 0 3, 0 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 17 facilmente. Obviamente podemos concluir que cada biestável tem a sua própria tabela de transição. Concluída a tabela de transição, o próximo passo é a construção da “Tabela Lógica de Contagem”, conforme mostrado abaixo. TABELA LÓGICA DE CONTAGEM ESTADOS FLIP-FLOPS SAÍDA DEC. QA QB QC RA SA RB SB RC SC 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 A coluna de “ESTADOS” é colocada na ordem crescente independente da ordem da contagem. Vamos analisar a primeira linha da tabela: Verifique que na primeira linha o estado representativo em decimal é o “0”, ou seja, QA = 0, QB = 0 e QC = 0 e a partir daí verifica-se no diagrama de estados qual é o próximo estado pretendido após o pulso de clock. No caso do nosso exemplo vai do estado “0” para o estado “4”. A situação a seguir é verificar que para ir do estado “0” para o “4”, o QA vai de NL0 para NL1, ou seja, de “0 → 1”. Com essa informação, deve-se ir até a tabela de transição do biestável RS e observar o que acontece se a saída for de “0” para “1”. Nesse caso o R = 0 e S = 1, portanto concluímos que na primeira linha (estado 0) o RA fica igual a “0” e o SA igual a “1”, devendo ser preenchido na “Tabela Lógica de Contagem”. Para preencher a coluna do RB e SB segue-se a mesma lógica, ou seja, verifica-se que para ir do estado “0” para o estado “4” o QB vai de NL0 para NL0 (0 → 0). Consultando então a tabela de transição do flip-flop RS verifica-se que nesse caso o R = X e o S = 0, portanto RB = X e SB = 0. Finalmente em relação ao RC e SC verifica-se que para ir do estado “0” para o estado “4” o QC vai de NL0 para NL0 (0 → 0). Consultado a tabela de transição verifica-se que o R é igual à irrelevância e o S igual a 0, portanto RC = X e SC = 0. A coluna SAÍDA é preenchida com relação ao estado em que se está analisando,por exemplo, no estado “0” verifica-se no diagrama de estados que a saída desejada é NL1. Portanto, no estado “0” temos SAÍDA = 1. As demais linhas da tabela lógica de contagem seguem o mesmo raciocínio. O próximo passo é a obtenção das equações de cada entrada dos flip-flops (RA, SA, RB, SB, RC, SC e SAÍDA). Para isso, basta transpor os dados de cada entrada de cada biestável para as tabelas de Veitch-Karnaugh a seguir. OBTENÇÃO DAS EQUAÇÕES QA QB QC 00 01 11 10 0 1 RA = SA = QA QB QC 00 01 11 10 0 1 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 18 QA QB QC 00 01 11 10 0 1 RB = SB = QA QB QC 00 01 11 10 0 1 RC = SC = QA QB QC 00 01 11 10 0 1 SAÍDA = Cada Mapa de Karnaugh pertence a uma das entradas dos biestáveis. Para o preenchimento dos Mapas de Karnaugh, basta pegar o dado referente ao cruzamento de cada combinação de QA, QB e QC da tabela lógica de contagem com a entrada escolhida do biestável. A partir das equações obtidas, o próximo passo é a implementação do circuito eletrônico utilizando os biestáveis pré-determinados pelo projeto. CIRCUITO ELETRÔNICO RA QA QASA RB QB QBSB RC QC QCSC O exemplo dado possibilita o entendimento do raciocínio lógico para criação de qualquer seqüência de contagem, porém, caso o interesse seja simplesmente um contador crescente ou decrescente os circuitos eletrônicos a seguir ilustram uma maneira simples de criação desse tipo de contador. QA QB QC 00 01 11 10 0 1 QA QB QC 00 01 11 10 0 1 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 19 Pulsos Contador Crescente Contador Decrescente (Clock) D C B A D C B A 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 2 0 0 1 0 1 1 0 1 3 0 0 1 1 1 1 0 0 4 0 1 0 0 1 0 1 1 5 0 1 0 1 1 0 1 0 6 0 1 1 0 1 0 0 1 7 0 1 1 1 1 0 0 0 8 1 0 0 0 0 1 1 1 9 1 0 0 1 0 1 1 0 10 1 0 1 0 0 1 0 1 11 1 0 1 1 0 1 0 0 12 1 1 0 0 0 0 1 1 13 1 1 0 1 0 0 1 0 14 1 1 1 0 0 0 0 1 15 1 1 1 1 0 0 0 0 CONTADOR CRESCENTE: J Q QK Ck J Q QK Ck J Q QK Ck J Q QK Ck A B C D 1 1 1 1 1 1 1 1 Clock CONTADOR DECRESCENTE: J Q QK Ck J Q QK Ck J Q QK Ck J Q QK Ck A B C D 1 1 1 1 1 1 1 1 Clock MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 20 Nos circuitos eletrônicos das figuras anteriores, devemos considerar que o estado inicial é igual a “0” no contador crescente (DCBA = 0000) enquanto que o estado inicial é igual a “15” no contador decrescente (DCBA = 1111). Simulando os circuitos, verifica-se que a cada pulso de clock (automático ou manual) os biestáveis mudam de estado de forma crescente ou decrescente. Observa-se que a diferença de um circuito para outro se encontra apenas nos clocks dos biestáveis B, C e D, ou seja, enquanto que no contador crescente os clocks estão ligados nas saídas normais (Q) do biestável anterior, no contador decrescente estão ligados nas saídas invertidas (/Q) do biestável anterior. Exercício 1: Implemente o circuito "contador síncrono" de acordo com a seqüência abaixo, utilizando apenas flip-flops do tipo RS. 2, 0 3, 1 0, 0 1, 1 Resposta: MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 21 Exercício 2: Implemente o circuito "contador síncrono" de acordo com a seqüência ao lado, utilizando apenas flip-flops do tipo T. Resposta: 7, 0 6, 0 4, 1 1, 0 0, 1 3, 1 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 22 Exercício 3: Implemente o circuito "contador síncrono" de acordo com a seqüência abaixo, utilizando apenas flip-flops do tipo JK. Resposta: 5, 1 3, 1 4, 0 2, 0 1, 1 7, 1 6, 0 0, 0 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 23 3. MODELO SEQÜENCIAL Existem dois tipos de modelos de estruturas digitais: combinatório e seqüencial. Circuito Combinatório: As saídas do sistema são funções booleanas binárias apenas das entradas, ou seja, o conjunto de saídas fornecido pelo sistema num instante “t” é perfeitamente determinado conhecendo-se o conjunto das variáveis de entrada aplicado a ele nesse instante. Sistema Combinatório e1 e2 en s1 = f1(e1, e2, ..., en) s2 = f2(e1, e2, ..., en) sm = fm(e1, e2, ..., en) Circuito Seqüencial: Neste caso, as saídas são funções booleanas (binárias) não apenas das entradas, mas também do estado interno do sistema seqüencial. Estas funções podem ser definidas de duas maneiras distintas (porém equivalentes) de acordo com a adoção do modelo de Mealy ou de Moore para representação da máquina seqüencial. - Modelo de Moore: A função de saída é determinada pelo estado presente, e a atualização de estado (futuro) depende da entrada presente, e do próprio estado. Equação de Saída: S(tN) = f[X(tN)] Equação de Estado: X(tN + 1) = g[X(tN) e E(tN)] Onde: E e S → entradas e saídas do sistema X → estado interno F e G → são funções da álgebra binária ∆ → representa um elemento de memória, capaz de armazenar o estado interno do sistema durante um certo tempo t. - Modelo de Mealy: Neste modelo, tanto a função de saída com a de atualização de estado, dependem da entrada e do estado presente. Equação de Saída: S(tN) = f[X(tN) e E(tN)] Equação de Estado: X(tN + 1) = g[X(tN) e E(tN)] Onde: E e S → entradas e saídas do sistema X → estado interno F e G → são funções da álgebra binária ∆ → representa um elemento de memória, capaz de armazenar o estado interno do sistema durante um certo tempo t. Analisando-se os modelos descritos, percebe-se que o Modelo de Moore é um caso particular do Modelo de Mealy; porém, ambos são equivalentes. A compreensão do funcionamento do Modelo de Moore ou mesmo o de Mealy torna-se muito difícil sem que setenha visto exemplos práticos, portanto, é importante o estudante G FE X S G FE X S MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 24 de sistemas digitais voltar a analisar os modelos descritos anteriormente logo após o entendimento da representação de problemas através do processo da “Tabela Primitiva de Fluxo” que será estudado a seguir. TABELA PRIMITIVA DE FLUXO É um mecanismo de descrição de tarefas seqüenciais, e como tal, deve permitir que se represente de forma precisa o comportamento do sistema em estudo. Como os sistemas estudados neste curso processam informações digitais e evoluem por estados internos, esta tabela deve fixar estes estados e seu relacionamento. Deve também permitir o conhecimento das saídas do sistema para um determinado conjunto de entradas que lhe foi aplicado. Entradas Estados 00 01 11 10 0 1 2 3 4 5 A tabela primitiva de fluxo tem a forma mostrada acima, onde as colunas representam todas as combinações possíveis das entradas permitidas no sistema, e as linhas representam os estados internos tidos como necessários. A construção da tabela primitiva de fluxo se faz na medida em que a tarefa vai sendo descrita, e tem como característica básica possuir apenas um estado estável por estado interno (um estado estável por linha da tabela). Um determinado conjunto de entradas permitidas (identificação das colunas), aplicadas quando o sistema se encontra em um determinado estado interno (identificação da linha), define uma única célula da tabela primitiva de fluxo, que será denominado de “Estado Total” do sistema. Nesta célula deverá constar o próximo estado interno (atualização de estado) e as saídas que o sistema apresenta para o conjunto de entradas que lhe foi aplicado. A tarefa estará com sua descrição completa, quando todas as células (estados totais) da tabela primitiva tiverem sido preenchidas. Segue um exemplo de preenchimento da tabela primitiva de fluxo na solução de problemas elementares: Exemplo: Considere o dispositivo conforme esquematizado abaixo: D Motores E Botão M Carro Contato A Contato B D E X, S1 S2 Próximo Estado Saídas MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 25 Nesta figura, D (direita) e E (esquerda) são motores alimentados por relês do mesmo nome. Quando E é alimentado, o carro se desloca da direita para a esquerda; quando D é alimentado, o carro se desloca da esquerda para a direita. A e B são dois contatos de fim de curso indicando que o carro se encontra em uma destas duas posições. Deseja-se descrever um ciclo de operação do carro tal que, se for acionado o botão M quando o carro estiver em repouso em A, ele deve deixar o contato A, ir até B e voltar novamente ao contato A, onde pára e espera que o botão de pressão M seja novamente acionado. Supor também que sempre que o carro deixar A iniciando o movimento, não será permitido apertar novamente o botão M até que o ciclo seja completado. Para construir a tabela primitiva de fluxo do problema, deve-se inicialmente definir suas entradas e saídas: Entradas: Botão M (inicia o movimento do carro) Contato A (fim de curso) Contato B (fim de curso) Saídas: Relê D (motor da direita) Relê E (motor da esquerda) O fato de o sistema possuir três entradas binárias que são: M, A e B, permite combinar estas entradas de 23 = 8 maneiras distintas, fazendo com que a tabela de fluxo possua um máximo de 8 colunas. Admita que, por imposição do projeto, nunca irá ocorrer A = 1 e B = 1 ao mesmo tempo. Isto elimina a necessidade de analisar duas colunas (011 e 111) da tabela. TABELA PRIMITIVA DE FLUXO M A B Estados 000 001 011 010 110 111 101 100 0 X X X 0, 00 1, 00 X X X 1 3, 01 X X 2, 01 1, 01 X X 6, 01 2 3, 01 X X 2, 01 X X X X 3 3, 01 4, 01 X X X X X X 4 5, 10 4, 10 X X X X X X 5 5, 10 X X 0, 10 X X X X 6 3, 01 X X X X X X 6, 01 Continuando a análise da tabela primitiva de fluxo, concluímos também que: como M é um botão de pressão, e supondo que ele não pode ser apertado durante o percurso do carro, admitimos que não é possível ter M = 1 e B = 1, o que elimina mais uma coluna (101) da tabela, restando apenas 5 colunas para serem 6, 01 Próximo Estado Interno Saídas (E, D) MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 26 analisadas, que correspondem ao conjunto de entradas permitidas no sistema. A descrição a seguir deve ser acompanhada pela tabela já preenchida. Escolher um estado inicial de partida (estado 0) que será estável, e corresponde ao carro estacionado em repouso sobre o contato A. Tem-se portanto M = 0 (botão não foi apertado), A = 1 (contato A acionado pelo carro) e B = 0 (contato B não acionado). As saídas nesse caso serão E = 0 e D = 0, significando que o carro se encontra parado. O botão de pressão M será acionado, e o sistema passa a um novo estado 1, que corresponde a ligar o motor que desloca o carro para a direita. A partir deste ponto podem ocorrer três hipóteses: - O botão M é solto antes que o carro deixe o contato A. - O carro deixa o contato A, e a seguir o botão M é solto pelo operador. - O carro deixa o contato A ao mesmo tempo em que o botão M é solto. Na primeira hipótese, o sistema passa a um novo estado 2 (M = 0, A = 1, B = 0, E = 0 e D = 1), onde o motor D continua ligado e deixa o contato A em direção de B, fazendo com que A passe a NL0 e o sistema a um novo estado 3 (M = 0, A = 0, B = 0, E = 0 e D = 1). Ele permanece neste estado até que o carro alcance o contato B que levará o sistema ao estado 4 (M = 0, A = 0, B = 1, E = 1 e D = 0) invertendo-se a posição dos motores E e D, fazendo desligar o motor D e ligar o motor E para que o carro volte em direção ao contato A. Quando isto ocorre, o contato B volta novamente a NL0, levando o sistema a um novo estado 5 (M = 0, A = 0, B = 0, E = 1 e D = 0) no qual ele permanece até que o carro chegue em A. Ao acionar o contato A, o carro faz com que o sistema volte ao estado 0, que é um estado estável (estado inicial), onde ele estaciona tendo completado o ciclo desejado. No caso de termos a segunda hipótese, passamos do estado 1 ao estado 6 (M = 1, A = 0, B = 0, E = 0 e D = 1), com o carro deixando o contato A em direção a B. Quando o botão M é solto, ele volta ao estado 3, recaindo no ciclo anterior e a partir daí segue a mesma seqüência. Na terceira hipótese, passamos do estado 1 diretamente ao estado 3 (M = 0, A = 0, B = 0, E = 0 e D = 1), recaindo no ciclo anterior. Os valores “X” que aparecem na tabela primitiva de fluxo são condições irrelevantes que, por imposição do projeto, nunca ocorrerão durante o funcionamento do sistema. Exercício 1: Implemente a tabela de fluxo do dispositivo da figura ao lado. Inicialmente o tanque está vazio, e a bomba deve ser acionada automaticamente até o nível de água no tanque atingir o sensor N2, então se deve desligar a bomba e só voltar a ligá-la quando o nível atingir N1. Considere: N1 e N2 (=1 presença de água; =0 ausência de água). B (=1 bomba ligada; =0 bombadesligada). Resposta: Bomba B N2 N1 V Tanque MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 27 Exercício 2: Um disco é colocado em rotação por um motor M. Na posição inicial, o disco pressiona um contato X. O operador deve acionar o motor ao tocar o botão de pressão B. O disco deverá então percorrer um volta completa e parar novamente (desligando o motor) quando voltar à posição inicial. Determine a tabela de fluxo, considerando as três hipóteses abaixo: 1) O botão B é solto antes que o disco deixe o contato X. 2) O disco deixa o contato X, e a seguir o botão B é solto. 3) O disco deixa o contato X ao mesmo tempo em que o botão B é solto. Resposta: Exercício 3: Desenvolva a tabela de fluxo para gerenciar o sistema ao lado. Ao se abrir a porta (P) do motorista de um carro, imediatamente o circuito eletrônico deve acionar um motor (D) para descer o vidro do motorista até atingir um sensor (B) que está 3 cm para baixo. Somente após o motorista fechar a porta do carro o circuito deve acionar um motor (S) para subir o vidro até atingir o sensor (A) que representa o vidro todo fechado. Considere que inicialmente a porta e o vidro encontram-se fechados. Considere: Contato P (=0 porta fechada; =1 porta aberta). Sensores A e B (=0 ausência de vidro; =1 presença de vidro). Motores S e D (=0 desligado; =1 ligado). Resposta: Botão B Motor M Contato X Sensor A Sensor B 3 cm Sensor A Sensor B Vidro Fechado Vidro Aberto MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 28 4. PAL – ARRANJO LÓGICO PROGRAMÁVEL O Arranjo Lógico Programável (PAL) serviu de embrião para a construção dos circuitos eletrônicos mais avançados da atualidade, servindo inclusive de base para a arquitetura da Unidade de Controle dos microprocessadores atuais. O PAL é um circuito composto basicamente por dois blocos: Circuitos Combinatórios e Memórias Internas. Quando um conjunto de entradas (E) é aplicado sobre a máquina seqüencial a partir de um determinado estado interno (representado pelo conjunto de variáveis I), o bloco combinatório se encarrega de fornecer o conjunto (S) de saídas correspondentes, e o próximo estado interno para o qual o modelo seqüencial deve evoluir, em sincronismo com a ocorrência do sinal de clock. As memórias internas serão as responsáveis pelo armazenamento temporário do estado do sistema em certo instante “t”. Considere agora a substituição do bloco combinatório (circuitos combinatórios) por uma memória da família ROM e das memórias internas por biestáveis, conforme a figura a seguir. Na memória ROM serão armazenadas as funções de saída e do próximo estado interno do sistema, e os elementos biestáveis serão responsáveis pelo armazenamento temporário do estado do sistema. Esta nova estrutura é equivalente à anterior e ambas podem representar fisicamente o mesmo modelo de circuito seqüencial síncrono já mencionado. Entretanto, a implementação do modelo apresentado acima só se tornou viável devido a uma evolução tecnológica que permitiu colocar, numa única pastilha de circuito integrado, toda a estrutura mostrada na figura. Isto foi feito a partir de 1972, pelos fabricantes de componentes eletrônicos dando origem ao que se convencionou chamar de “Arranjo Lógico Programável” (Programmable Array Logic), que é uma extensão do que foi apresentado até aqui. Através da utilização destes dispositivos é possível projetar circuitos seqüenciais específicos, e implementa-los com facilidade, programando circuitos PALs. Vamos construir esta arquitetura de “Arranjo Lógico Programável” através de memórias e biestáveis, ou seja, ao invés de utilizarmos o circuito integrado pronto do PAL, vamos construir o nosso próprio circuito eletrônico. A melhor maneira de aprendermos a implementar o circuito eletrônico do PAL é através dos dois exemplos que serão desenvolvidos a seguir. Exemplo 1: Deseja-se implementar um contador que funcione de forma crescente ou decrescente, com módulo de contagem 5 ou 8 estados, conforme a necessidade do usuário. Para isso, podemos definir as variáveis da seguinte forma: C – Contagem (=0 crescente; =1 decrescente). M – Módulo de Contagem (=0 módulo 8; =1 módulo 5). S – Saída do PAL (=0 contagem intermediária; =1 contagem final). I1, I2 e I3 – Estados Internos. Circuitos Combinatórios Memórias Internas Conjunto de Entradas Conjunto de Saídas E S Próximo Estado Estado Interno I Clock Memória da Família ROM Flip-Flops Tipo D Conjunto de Entradas Conjunto de Saídas E S Próximo Estado Estado Interno I Clock Contador Ck M C S I1 I2 I3 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 29 A figura representa este sistema segundo a estrutura de máquina seqüencial síncrona com as variáveis de entrada C, M e o sinal de clock Ck, e uma saída S que aciona estágios seguintes quando ao término da contagem. O contador possuirá no máximo 8 estados internos (módulo 8), sendo necessárias 3 variáveis internas para sua designação. Três biestáveis do tipo D são, portanto, necessários para o armazenamento de cada variável de estado. O sinal de clock sincroniza a operação dos biestáveis, e as mudanças de estado de todo o contador. Para o desenvolvimento de um projeto feito através de Arranjo Lógico Programável é necessário concluir 4 etapas: a Tabela de Fluxo, o Circuito Eletrônico, a Tabela de Gravação da ROM e a Tabela em Hexadecimal (para a gravação da ROM). 1 - TABELA DE FLUXO C M Estados 00 01 11 10 I1 I2 I3 0 1, 0 1, 0 4, 1 7, 1 0 0 0 1 2, 0 2, 0 0, 0 0, 0 0 0 1 2 3, 0 3, 0 1, 0 1, 0 0 1 0 3 4, 0 4, 0 2, 0 2, 0 0 1 1 4 5, 0 0, 1 3, 0 3, 0 1 0 0 5 6, 0 X X 4, 0 1 0 1 6 7, 0 X X 5, 0 1 1 0 7 0, 1 X X 6, 0 1 1 1 Na tabela de fluxo, a coluna correspondente a (C = 0 e M = 0) representa a contagem crescente com módulo 8. A segunda coluna (C = 0 e M = 1) representa a contagem crescente com módulo 5, e as duas últimas colunas representam respectivamente a contagem decrescente com módulo 5 e 8, de acordo com os valores de C e M adotados. As funções de saída e do próximo estado interno do contador poderiam ser facilmente obtidas desta tabela. Analisando-se a tabela de fluxo pode-se concluir que existe a possibilidade do programa cair em uma das irrelevâncias indicadas. Imagine que o contador encontra-se atuando de modo crescente e no módulo 8 (C = 0 e M = 0) e que em determinado instante a contagem está em 5 e nesse exato momento o usuário do circuito passa as condições de entrada para crescente e módulo 5 (C = 0 e M = 1). Observe que o programa da ROM vai recair em uma das condições de irrelevância, portanto é necessário que se grave um conteúdo que possa evitar problemas de funcionamento do circuito e que ainda por cima seja uma lógica que atenda a mudança executada pelo usuário. Uma possível solução está apresentada na tabela abaixo: 1 - TABELA DE FLUXO (Corrigida) C MEstados 00 01 11 10 I1 I2 I3 0 1, 0 1, 0 4, 1 7, 1 0 0 0 1 2, 0 2, 0 0, 0 0, 0 0 0 1 2 3, 0 3, 0 1, 0 1, 0 0 1 0 3 4, 0 4, 0 2, 0 2, 0 0 1 1 4 5, 0 0, 1 3, 0 3, 0 1 0 0 5 6, 0 0, 1 3, 0 4, 0 1 0 1 6 7, 0 0, 1 3, 0 5, 0 1 1 0 7 0, 1 0, 1 3, 0 6, 0 1 1 1 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 30 Outra solução que poderia ser feita é a criação de uma segunda saída do PAL, no qual servirá para apontar ao usuário que houve uma mudança da lógica de contagem no meio do processo. A tabela de fluxo tem por finalidade facilitar o desenvolvimento lógico da programação da memória ROM. A capacidade dessa memória pode ser expressa em termos do número de entradas e saídas necessárias. No exemplo do contador, verifica-se que a memória deve possuir um total de 5 entradas (C, M, I1, I2 e I3) e 4 saídas (S, I1, I2 e I3). A partir daí sabe-se que essa memória tem dimensão: 25 x 4 ou 32 x 4. 2 – CIRCUITO ELETRÔNICO ROM A4 A3 A2 A1 A0 Q3 Q2 Q1 Q0 C M S I1I1 I2I2 I3I3 Ck DQ DQ DQ A tabela que resume a programação necessária é denominada de “Tabela de Gravação da ROM”. Na interpretação desta tabela, a memória deve ser encarada como um elemento capaz de receber um conjunto de endereços aplicados à sua entrada (C, M, I1, I2 e I3), ao qual corresponde um conteúdo que será armazenado no interior da mesma, que representará as saídas da memória (S, I1, I2 e I3). Enquanto que a tabela de fluxo serve para facilitar o desenvolvimento lógico da gravação da memória, a tabela de gravação da memória ROM serve para facilitar o ato de gravação da mesma através do gravador de memórias. Evidente que a parte intelectual do projeto do PAL consiste exclusivamente na tabela de fluxo, pois a tabela de gravação da ROM é apenas um rearranjo da anterior de forma crescente dos endereços. Uma vez preenchida a tabela de gravação da ROM, o próximo passo é decodificá-la para Hexadecimal. O motivo de se ter a tabela em hexadecimal é que os gravadores de memória funcionam nesta base numérica, portanto facilita o projetista na hora de gravar a memória. MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 31 3 – TABELA DE GRAVAÇÃO DA ROM 4 – HEXADECIMAL ENDEREÇO CONTEÚDO HEXA A4 A3 A2 A1 A0 Q3 Q2 Q1 Q0 END CON C M I1 I2 I3 S I1 I2 I3 0 0 0 0 0 0 0 0 1 00 1 0 0 0 0 1 0 0 1 0 01 2 0 0 0 1 0 0 0 1 1 02 3 0 0 0 1 1 0 1 0 0 03 4 0 0 1 0 0 0 1 0 1 04 5 0 0 1 0 1 0 1 1 0 05 6 0 0 1 1 0 0 1 1 1 06 7 0 0 1 1 1 1 0 0 0 07 8 0 1 0 0 0 0 0 0 1 08 1 0 1 0 0 1 0 0 1 0 09 2 0 1 0 1 0 0 0 1 1 0A 3 0 1 0 1 1 0 1 0 0 0B 4 0 1 1 0 0 1 0 0 0 0C 8 0 1 1 0 1 1 0 0 0 0D 8 0 1 1 1 0 1 0 0 0 0E 8 0 1 1 1 1 1 0 0 0 0F 8 1 0 0 0 0 1 1 1 1 10 F 1 0 0 0 1 0 0 0 0 11 0 1 0 0 1 0 0 0 0 1 12 1 1 0 0 1 1 0 0 1 0 13 2 1 0 1 0 0 0 0 1 1 14 3 1 0 1 0 1 0 1 0 0 15 4 1 0 1 1 0 0 1 0 1 16 5 1 0 1 1 1 0 1 1 0 17 6 1 1 0 0 0 1 1 0 0 18 C 1 1 0 0 1 0 0 0 0 19 0 1 1 0 1 0 0 0 0 1 1A 1 1 1 0 1 1 0 0 1 0 1B 2 1 1 1 0 0 0 0 1 1 1C 3 1 1 1 0 1 0 0 1 1 1D 3 1 1 1 1 0 0 0 1 1 1E 3 1 1 1 1 1 0 0 1 1 1F 3 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 32 Exemplo 2: Deseja-se implementar um circuito eletrônico através do conceito de PAL capaz de executar o controle de qualidade da peça desenhada abaixo, indicando se a mesma encontra-se boa, boa porém caiu de ponta-cabeça na esteira ou se está com defeito. Considere: A: Sensor superior (=0 ausência de peça; =1 presença de peça) B: Sensor inferior (=0 ausência de peça; =1 presença de peça) S1 e S2: Saídas do PAL Estipulada as condições do problema, o próximo passo é o desenvolvimento das 4 etapas do Arranjo Lógico Programável: Tabela de Fluxo, Circuito Eletrônico, Tabela de Gravação da ROM e a Tabela em Hexadecimal. 1 - TABELA DE FLUXO A B Estados 00 01 11 10 I1 I2 I3 I4 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 S1 S2 PEÇA 0 0 Passando ou não chegou 0 1 Boa 1 0 Boa e de Ponta-Cabeça 1 1 Ruim Peça Boa Peça Boa (Ponta-Cabeça) A B Sensores Esteira MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 33 2 – CIRCUITO ELETRÔNICO Não é necessário o preenchimento completo das tabelas dos itens 3 e 4 (tabela de gravação da ROM e tabela em hexadecimal), pois não existe raciocínio lógico para ambas as tabelas, apenas a transposição e reorganização dos dados da tabela de fluxo. Portanto, considere apenas os endereços solicitados nas tabelas a seguir. 3 – TABELA DE GRAVAÇÃO DA ROM 4 – HEXADECIMAL ENDEREÇO CONTEÚDO HEXA A5 A4 A3 A2 A1 A0 Q5 Q4 Q3 Q2 Q1 Q0 END CON A B I1 I2 I3 I4 S1 S2 I1 I2 I3 I4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0 0 1 1 0 0 0 0 1 1 0 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0 1 0 1 0 1 0 1 0 1 1 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1 0 1 1 0 1 1 0 1 1 1 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1 1 1 0 0 0 1 1 1 0 0 1 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 34 Exercício 1: Determine a Tabela de Fluxo, o circuito PAL, a Tabela de Gravação da Eprom e a Tabela de Gravação em Hexadecimal. Sensores A / B = 0 (Ausência de Peça) Sensores A / B = 1 (Presença de Peça) Saídas S1 e S2: S1 S2 Peça 0 0 Passando ou não chegou 0 1 Boa 1 0 Boa e de Ponta Cabeça 1 1 Ruim Endereços solicitados para a Tabela de Gravação e Tabela Hexadecimal: 05, 0C, 27, 3A (Números em Hexadecimal) PS: Na tabela de fluxo, desenvolva primeiro a seqüência da peça Boa. Resposta: Peça Boa Peça Boa (Ponta-Cabeça) Sensor A Sensor B MICROPROCESSADORESProf. Sandro Bastos Universidade Santa Cecília 35 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 36 Exercício 2: Implementar o circuito PAL da peça abaixo. Mostrar a Tabela de Fluxo, o circuito PAL, a Tabela de Gravação da Eprom e a Tabela de gravação em Hexadecimal. Sensores A / B = 0 (Ausência de Peça) Sensores A / B = 1 (Presença de Peça) Saídas S1 e S2: S1 S2 Peça 0 0 Passando ou não chegou 0 1 Boa 1 0 Boa e de Ponta Cabeça 1 1 Ruim Endereços para a Tabela de Gravação e Tabela Hexadecimal: 00, 01, 09, 13, 1A, 25, 26, 31 (Números em Hexadecimal). PS: Na tabela de fluxo, desenvolva primeiro a seqüência da peça Boa. Resposta: Peça Boa Peça Boa (Ponta-Cabeça) Sensor A Sensor B MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 37 MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 38 5. MICROPROCESSADOR X MICROCONTROLADOR Não é possível estar envolvido com atividades científicas hoje em dia sem estar em contato com algum tipo de microprocessador. Por isso, as pessoas têm diferentes idéias do que seja um microprocessador. Uma definição bem formulada de microprocessador define-o como um único chip que contém uma unidade lógica e aritmética e capacidade para controle de memória e I/O. Para que um microprocessador opere, resolvendo os mais variados problemas, é necessário um circuito de apoio, composto de memórias, dispositivos de entrada e saída (I/O), circuitos de clock, entre outros. O microcontrolador é um microprocessador com um sistema de memória e I/O integrado, sendo muitas vezes denominado de microcomputador ou single chip computer. Esta característica faz com que os microcontroladores sejam perfeitamente adequados para uso em funções de controle onde se deseja pequeno consumo, diminuídas dimensões, e não muita capacidade de processamento. As necessidades atuais mostram que os microcontroladores de 8 bits são suficientemente poderosos para controlar quaisquer processos onde não se necessite grandes capacidades de cálculo numérico ou velocidade de operação. Pode-se ter o pensamento simplista de que o microcontrolador é inferior ao microprocessador. Na verdade o microcontrolador é adequado à função a que vai realizar, de forma a utilizar de forma racional e completa os recursos existentes no dispositivo. Lembre-se que quando você utiliza um microprocessador para realizar determinada tarefa, como por exemplo, controle de um motor, você precisa incluir vários dispositivos que consomem espaço e energia e muitas instruções disponíveis no seu microprocessador não serão utilizadas. Atualmente, grande parte das tarefas executadas anteriormente por microprocessadores são hoje realizadas por microcontroladores com vantagens significativas. Talvez a maior vantagem a ser mencionada seja a redução do custo final do projeto, pois reduzimos muito o número de componentes necessários, melhorando com isso a confiabilidade dos equipamentos. Atualmente presenciamos a plenitude dos microcontroladores de 8 bits. Alguns fabricantes desenvolvem microcontroladores com uma grande linha de derivativos, que são componentes adequados às funções específicas, como por exemplo, circuitos de televisão, telecomunicações, controles remotos, entre outros. A redução do consumo através do uso de tecnologias mais avançadas como a CMOS também é alvo para a manufatura de equipamentos portáteis alimentados à bateria. Já existem microcontroladores de 16, 32 e 64 bits, mas são utilizados no mercado como poderosos auxiliares em complexas tarefas de controle de processos in time. Esta tecnologia deverá atingir seu ápice quando os complexos sistemas de informação do futuro necessitarem deste maior poder computacional. MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 39 6. O MICROCONTROLADOR 8051 Um microcontrolador é geralmente composto pelos seguintes blocos: � Unidade Central de Processamento (CPU); � Memória de Programa (ROM ou EPROM); � Memória de dados (RAM); � Linhas de I/O (PORT’s); � Controle de interrupções; � Gerador de clock; � Timer’s e counter’s. A figura anterior ilustra a composição típica do microcontrolador 8051 com os elementos citados e suas respectivas interligações. As diferenças entre os diversos tipos de microcontroladores residem basicamente na capacidade e tipos de memórias, na quantidade de port’s disponíveis ao usuário, na velocidade de operação, e em outros recursos disponíveis como, por exemplo, portas seriais, maior número de contadores, opção de baixo consumo, entre outros. Existem também, os componentes chamados derivativos que, como o próprio nome diz, são microcontroladores derivados dos tipos mais comuns (8048 e 8051), ou seja, a célula básica é o microcontrolador e este é acrescido de outros componentes de acordo com as necessidades. 4 I/O Port’s BUS Control OSC CPU Interrupt Control External Interrupt 4K ROM 128 Bytes RAM Timer 1 Timer 0 Counter Inputs Serial Port TXD RXD P0 P1 P2 P3 Address / Data BUS MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 40 6.1. A Família 8051 Quando temos vários microcontroladores utilizando uma mesma célula, chamamos esse conjunto de componentes de família. Desta forma temos várias famílias como, por exemplo, a família do 8048, do 8051, do 8096, entre outras. A tabela abaixo descreve sucintamente os principais componentes dessa família. Nome do Chip Versão sem ROM Versão EPROM Bytes de ROM Bytes de RAM Timers 16 Bits Tipo de Circuito 8051 8031 8751 4K 128 2 NMOS 80C51 80C31 87C51 4K 128 2 HMOS 80CL51 4K 128 2 SACMOS 8052 8032 8K 256 3 NMOS 80C52 80C32 87C52 8K 256 3 CMOS 83C528 80C528 87C528 32K 512 3+1 CMOS 83C652 80C652 87C652 8K 256 2 CMOS 83C751 87C751 2K 64 1 CMOS 83C452 80C452 87C452 8K 256 2 CMOS O elemento básico desta família é o 8051. Os outros componentes desta família estão descritos nos manuais dos fabricantes. Atualmente, a tendência mundial no uso de componentes de baixo consumo, torna imperativo o desenvolvimento de projetos baseados na tecnologia CMOS, facilitando assim a interligação de seus blocos. Todos os componentes que apresentarem um “C” em seu código (80C31, 87C452, etc.) pertencem a esta família e devem ser preferencialmente utilizados. Esta família representa o que existe de mais avançado em microcontroladores de 8 bits, o que garantea continuidade de sua linha de produção por um longo período. As características desta família são: � CPU de 8 bits com conjunto de instruções otimizado para aplicações de controle de processos; � Capacidade de processamento Booleano (manipulação de bit individualmente); � 32 linhas de I/O bidirecionais e individualmente endereçáveis; � 128 bytes de RAM “on-chip” (mínimo); � Dois contadores/temporizadores programáveis de 16 bits; � Interface serial full-duplex; � Estrutura de interrupções com até 5 entradas permitindo 2 níveis de prioridade; � Gerador de clock; � Mínimo de 4Kbytes de memória de programa (ROM ou EPROM); � Capacidade de endereçamento externo de até 64Kbytes. 6.2. Descrição da Pinagem A figura seguinte ilustra a pinagem do microcontrolador 8051 nas duas formas de encapsulamento mais comuns: MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 41 - Vss: Pino de entrada de 0 volt. - Vcc: Pino de entrada de alimentação de 5 volts. - Porta 0 (P0.0 – P0.7): A porta 0 é uma porta bidirecional de 8 bits, com saída dreno aberto, ou entrada de alta impedância. É usado para multiplexar o barramento de dados e o barramento de endereços menos significativo, durante o acesso de memória de dados externa ou de memória de programa externa. No 8751 esta porta também é usada para verificação do código do byte e, neste caso, são necessários o uso dos resistores “pull-up” externos. - Porta 1 (P1.0 – P1.7): A porta 1 é uma porta bidirecional de 8 bits com resistores “pull-up” internos. Assim estes pinos poderão funcionar como entradas, ou saídas. Se uma entrada estiver conectada ao nível baixo, ela fornecerá corrente, devido aos resistores “pull-up” internos. Os pinos da porta 1 também recebem o endereço menos significativo, durante a verificação de memória de programa para o 8751. - Porta 2 (P2.0 – P2.7): A porta 2 é uma porta bidirecional de 8 bits com resistores “pull-up” internos. Esta porta é usada para colocar o byte de endereço mais significativo, quando um ciclo de busca externa de memória de programa, ou de dado, com endereço de 16 bits, está sendo realizado (MOVX @DPTR). Durante o acesso externo de memória de dados que usa endereço de 8 bits (MOV @Ri), a porta 2 emite os conteúdos do registro de função especial P2. - Porta 3 (P3.0 – P3.7): A porta 3 é uma porta bidirecional de 8 bits com resistores “pull-up” internos. A porta 3 tem funções especiais para o 8051 que inclui as operações de comunicação serial, interrupções externas, temporizações e sinais de leitura e escrita como segue: RxD (P3.0): Entrada da porta serial. TxD (P3.1): Saída da porta serial. /INT0 (P3.2): Entrada de interrupção externa nível 0. /INT1 (P3.3): Entrada de interrupção externa nível 1. T0 (P3.4): Entrada externa para temporizador 0. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 ** T2 P1.0 ** T2EX P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 Rst RXD P3.0 TXD P3.1 T0 P3.4 T1 P3.5 XTAL2 XTAL1 Vss Vcc P0.0 AD0 P0.1 AD1 P0.2 AD2 P0.3 AD3 P0.4 AD4 P0.5 AD5 P0.6 AD6 P0.7 AD7 P2.7 A15 P2.6 A14 P2.5 A13 P2.4 A12 P2.3 A11 P2.2 A10 P2.1 A9 P2.0 A8 EA / Vpp* ALE / Prog* PSEN INT0 P3.2 INT1 P3.3 WR P3.6 RD P3.7 9 10 11 P1.7 Rst RXD P3.0 13 14 15 16 17 TXD P3.1 T0 P3.4 T1 P3.5 INT0 P3.2 INT1 P3.3 7 8 P1.5 P1.6 12 NC P1 . 4 6 5 4 3 2 1 44 43 42 41 40 P1 . 3 P1 . 2 P1 . 1 T2 EX * * P1 . 0 T2 * * N C Vc c P0 . 0 AD 0 P0 . 1 AD 1 P0 . 2 AD 2 P0 . 3 AD 3 39 38 37 36 35 P0.4 AD4 P0.5 AD5 P0.6 AD6 P0.7 AD7 EA / Vpp* 33 32 31 30 29 P2.7 A15 P2.6 A14 P2.5 A13 ALE / Prog* PSEN 34 NC 18 19 20 21 22 23 24 25 26 27 28 XT AL 2 XT AL 1 Vs s N C P2 . 0 A8 P2 . 1 A9 P2 . 2 A1 0 P2 . 3 A1 1 P2 . 4 A1 2 R D P3 . 7 W R P3 . 6 Index Corner Pin (DIP) Pad (LCC, PLCC) * EPROM Only ** 8052/8032 Only MICROPROCESSADORES Prof. Sandro Bastos Universidade Santa Cecília 42 T1 (P3.5): Entrada externa para temporizador 1. /WR (P3.6): Saída habilitadora de escrita para memória de dados externa. /RD (P3.7): Saída habilitadora de leitura para memória de dados externa. - Rst (Reset): Um nível alto neste pino com duração de dois ciclos de máquina, enquanto o oscilador estiver operando, realiza uma inicialização (reset) do circuito. - ALE e /Prog: Este pino opera como saída habilitadora de latches de endereçamento, durante um acesso a memória externa. Nas versões com Eprom interna (8751) este pino opera como entrada recebendo o pulso de programação (/Prog) durante a programação da Eprom. - /PSEN: Este pino é uma saída que habilita a leitura de uma memória de programa externa. /PSEN não será ativado durante uma busca na região de memória de programa interna. - /EA e Vpp: Este pino é uma entrada que deverá ser ligado ao nível alto, para que o processador tenha acesso à memória interna de programa, nos endereços de 0000H até 0FFFH e acesso a memória externa de programa, para endereços acima de 0FFFH. Se estiver ligado ao nível baixo, toda a área de memória de programa, de 0000H a FFFFH será externa. Nas versões com Eprom interna (8751), este pino também recebe a tensão de programação de 12,75 V. Nas versões sem ROM interna, /EA deve ser conectado ao nível baixo. - XTAL 1: Entrada para o oscilador inversor interno e para o circuito gerador de temporização interna. - XTAL 2: É a saída do oscilador amplificador e inversor interno. 6.3. Oscilador Interno Todos os membros da família 8051 possuem um oscilador interno que pode ser utilizado como fonte de clock para a CPU, bastando para isso que se conecte um cristal ressonador cerâmico entre os pinos XTAL1 e XTAL2, e dois capacitores no GND, como mostrado na figura ao lado. Se ao invés de utilizarmos o oscilador interno, utilizamos outro gerador qualquer (para sincronizar com outros circuitos, por exemplo) devemos ter o cuidado de interligar a entrada no pino certo. Este fato é importante, pois este pino muda conforme o tipo de chip utilizado, por exemplo, com chips HMOS (8051) devemos ligar a entrada de clock ao pino XTAL2, enquanto que em circuitos CMOS (80C51), o clock deve ser colocado no pino XTAL1. A figura seguinte indica a correta montagem destas entradas nos diversos componentes. XTAL2 XTAL1 VSS MCS-51 HMOS or CHMOS External Clock Signal XTAL2 XTAL1 VSS MCS-51 HMOS Only External Clock Signal XTAL2 XTAL1 VSS MCS-51 CHMOS Only External Clock Signal (IC) Quartz Cristal or ceramic ressonator C1 C2 XTAL2 XTAL1 VSS MCS-51 HMOS or CHMOS MICROPROCESSADORES Prof.