Prévia do material em texto
UFPA / ITEC / FEE Eletrônica Digital 68 CAPÍTULO 6 Introdução aos Circuitos Lógicos Sequenciais 6.1. Conceito de Circuito Sequencial Os circuitos sequenciais são uma classe de circuitos digitais em que os valores lógicos das saídas, num determinado instante tn, podem depender das combinações de valores das variáveis de entrada nesse mesmo instante, e também dos valores anteriores das próprias saídas. Não é necessária a manutenção da entrada que gerou um certo estado na saída, para que esse estado continue existindo. Os estados atuais das saídas podem depender dos valores atuais das entradas, e também dos estados anteriores dessas mesmas saídas. Por isso, os circuitos sequenciais formam a classe dos circuitos digitais com memória. A idéia-chave para fazer-se um elemento lógico com memória é a realimentação das saídas de volta para as entradas do circuito. As saídas dos elementos lógicos com memória, em um circuito sequencial, são chamadas de “variáveis de estado” e são representadas pela letra Q. O estado ou valor atual de uma variável de estado (no instante tn) é representado por Qn, enquanto o próximo estado ou estado futuro (num instante tn+1 > tn) é representado por Qn+1. Uma combinação particular de valores das variáveis de estado é chamada de um "estado do sistema". 6.2. Elemento Biestável de Memória: Latch Para que um circuito digital possa armazenar informação, ele precisa ser um circuito biestável, isto é, que possui dois estados estáveis, para assim poder armazenar tanto o bit '1' quanto o bit '0'. O circuito sequencial biestável mais elementar é o latch (“trava”). 6.2.1. Latch SR (Set/Reset) O principal tipo de latch é o latch SR (ou RS), mostrado na figura 6.1 em implementações com portas NOR e NAND. (a) (b) Figura 6.1 – Latches SR implementados com portas (a) NOR e (b) NAND. ELETRÔNICA DIGITAL Prof. Daniel Cardoso 69 Um latch só implementa uma variável de estado, que é Qn, e nQ é apenas o seu inverso, não se constituindo em uma nova variável de estado. O latch SR tem esse nome porque as entradas S e R "levam a 1” (set) e “levam a zero” (reset) o seu estado Qn, quando estão em nível alto. As saídas são reaplicadas às entradas das portas juntamente com os sinais de entrada S e R do circuito, e portanto o próximo estado que as saídas irão assumir (Qn+1) vai depender também de seus valores atuais (Qn). As formas de onda e a tabela-verdade do latch SR com portas NAND são mostradas na figura 6.2 e na tabela 6.1, respectivamente. Figura 6.2 – Formas de onda do latch SR com portas NAND (‘U’ = não inicializado). S R Qn nQ Qn+1 1nQ + Comentário 0 0 0 1 0 1 Não muda (mantém o estado atual) 0 0 1 0 1 0 Não muda (mantém o estado atual) 0 1 X X 0 1 Leva o latch a '0' 1 0 X X 1 0 Leva o latch a '1' 1 1 X X 1 1 Estado “proibido” 0 0 1 1 Indeterminado Indeterminado Condição de corrida Tabela 6.1 - Tabela-verdade detalhada de um latch SR com portas NAND. As formas de onda mostram que o circuito é mesmo biestável: enquanto S e R estão em nível lógico ‘0’, ele consegue reter tanto o estado lógico ‘1’ (Q=1, Q =0) quanto o estado ‘0’ (Q=0, Q =1). Quando S e R vão ambas para o nível ‘1’, as saídas ficam ambas em ‘1’ (versão NAND). Este último estado é indesejável não só porque leva a nQ = Qn, mas principalmente porque pode provocar uma “condição de corrida” (race) no latch: se S e R voltarem a ‘0’ simultaneamente, o estado que resultará nas saídas é imprevisível, pois dependerá de qual das duas portas for a mais rápida. As saídas Qn e nQ nunca poderão ser ambas iguais a ‘0’, então somente será ‘0’ a saída da porta mais rápida dentre as duas. UFPA / ITEC / FEE Eletrônica Digital 70 A diferença entre as versões NOR e NAND do latch SR está apenas nos valores das saídas Qn e nQ no “estado proibido”, mas essa diferença é irrelevante. A tabela- verdade final do latch SR é a tabela 6.2. S R Qn+1 0 0 Qn 0 1 0 1 0 1 1 1 X Tabela 6.2 – Tabela-verdade de um latch SR. A equação fechada para a próxima saída Qn+1 do latch SR com portas NAND é Qn+1 = S + R .Qn. O latch SR pode ser implementado de várias maneiras, isto é, com vários arranjos diferentes de portas. Qualquer circuito que tenha uma tabela-verdade igual à tabela 6.2 é um latch SR. Se os inversores das entradas do latch SR NAND forem removidos, o circuito restante com apenas duas portas NAND continua sendo um latch, apesar de não ser mais um latch SR, porque sua tabela-verdade será diferente. 6.3. Flip-flops Sensíveis ao Nível do Relógio No latch SR, há uma palavra de entrada (S=R=0) que o faz reter (não altera) os valores presentes nas saídas, fazendo-o memorizar a informação. O problema é que, se uma das entradas mudar, as saídas também podem mudar logo a seguir em resposta. Como geralmente não se tem controle sobre as entradas, então as saídas podem mudar a qualquer momento, em função dos valores das entradas. Portanto o latch é assíncrono, isto é, não se sabe em que instante suas saídas irão mudar de estado. Isso quer dizer que o latch não pode ser sincronizado com outros blocos lógicos de um mesmo sistema. Isso é indesejável porque, em sistemas digitais, como microprocessadores por exemplo, é necessário sincronizar a execução das operações para que o funcionamento seja ordenado e as etapas do processamento ocorram em sequência e em instantes de tempo bem definidos, tudo sob controle de um sinal de sincronismo que coordene os diversos blocos lógicos. Assim os resultados de uma etapa estarão prontos no momento certo para a execução da etapa seguinte. Esse sinal de sincronismo, chamado de relógio (clock), dita a cadência de execução das operações e define a temporização do sistema digital. O relógio é um sinal quadrado periódico, de frequência constante, e corresponde à “pulsação” de um circuito digital sequencial. Como uma primeira medida para resolver o problema do latch SR, acrescenta- se a ele uma entrada de clock (representada por Ck ou Clk), da forma mostrada na figura 6.3, criando-se assim um latch SR em sincronismo com um sinal de controle ou habilitação. O latch síncrono é chamado de flip-flop (FF). Portanto, o flip-flop da figura 6.3 é um FF SR, cujas saídas agora só podem mudar de estado enquanto o Å proibido ELETRÔNICA DIGITAL Prof. Daniel Cardoso 71 relógio for igual a ’1’; enquanto Ck=’0’, o latch “trava”, mantendo fixo o seu estado Qn presente. Figura 6.3 – Latch SR com entrada de relógio: flip-flop SR. Seu modo de operação pode ser resumido assim: Ck = '0': Qn+1 = Qn, para quaisquer valores de S e R. Ck = '1': O flip-flop SR torna-se igual ao latch SR. As entradas do FF SR da figura 6.3 podem passar para as saídas durante o nível alto do relógio, isto é, enquanto Ck = '1'. Por isso, esse tipo de flip-flop é chamado de flip-flop sensível ao nível do relógio. Neste caso, ele é sensível ao nível alto do relógio (Ck = '1'). Invertendo-se a entrada Ck, ele passaria a ser um FF SR sensível ao nível baixo do relógio (Ck = '0'). Os símbolos esquemáticos para ambos os circuitos são mostrados na figura 6.4. (a)(b) Figura 6.4 – Símbolos dos flip-flops SR sensíveis ao nível (a) alto e (b) baixo do relógio. Alguns livros e manuais técnicos não consideram um flip-flop sensível ao nível do relógio como sendo síncrono, e o denominam ainda de latch; nesse caso, considera-se o sinal de relógio como um sinal de habilitação (enable) do latch. Um FF mais simples, somente para armazenar o bit de informação, é o flip-flop tipo D (Data), que pode ser implementado a partir do FF SR. Sua tabela-verdade e símbolo lógico são mostrados na figura 6.5. O inversor colocado entre as entradas S e R garante que o FF D nunca irá para o estado proibido. Ck D Qn+1 0 X Qn 1 0 0 1 1 1 Figura 6.5 – Tabela-verdade e símbolo do flip-flop D sensível ao nível alto do relógio. UFPA / ITEC / FEE Eletrônica Digital 72 6.4. Flip-flops Gatilhados pela Borda do Relógio Os flip-flops sensíveis ao nível do relógio ainda apresentam uma característica indesejável: as entradas podem passar para as saídas enquanto o sinal de relógio estiver ativo, isto é, durante toda a duração de um dos níveis do relógio. Portanto, no caso de FF's sensíveis ao nível alto, se as entradas variarem durante o intervalo de tempo em que Ck='1', as saídas podem variar logo a seguir em resposta, ou seja, o circuito ainda é assíncrono durante o intervalo ativo do relógio. Ainda não há uma sincronização total, isto é, em um instante preciso de tempo. Para resolver esse problema, foi criada a arquitetura "mestre-escravo" de flip-flops (Master-Slave ou MS), os quais são sincronizados com o instante de uma das transições (bordas) do relógio. O FF SR mestre-escravo, mostrado na figura 6.6, consiste de dois flip-flops SR sensíveis ao nível e ligados em série, um acionando as entradas do outro; o primeiro FF é chamado de “mestre”, e o segundo de “escravo”. O sinal de relógio do escravo é o inverso do sinal de relógio do mestre, de modo que somente um dos FF's estará ativo de cada vez. Enquanto Ck=‘1’, a informação pode ser escrita no FF mestre, mas não passa para as saídas do FF escravo, pois a entrada de relógio deste é ‘0’. Quando o relógio vai a ‘0’, simultaneamente as entradas do mestre ficam bloqueadas e as entradas do escravo são liberadas, permitindo que a informação, que antes tinha sido escrita no mestre, apareça na saída Qn final do flip-flop. O FF MS, portanto, transfere a informação da entrada para a saída em duas etapas. Figura 6.6 - Conceito do FF mestre-escravo. O FF MS é gatilhado nas transições (bordas) do sinal de relógio (edge- triggered), que ocorrem em instantes bem definidos. Ele somente vai mudar de estado em resposta a uma borda do relógio, e não no instante em que os sinais de entrada S ou R mudarem, tal como pode acontecer com os FF's sensíveis ao nível do relógio. O ELETRÔNICA DIGITAL Prof. Daniel Cardoso 73 FF MS da figura 6.6 é gatilhado na descida do pulso de relógio, transferindo a informação da saída do mestre para a saída do escravo. Para tornar esse FF gatilhado na borda de subida do sinal de relógio, aplica-se este sinal diretamente no FF escravo e o seu inverso no FF mestre (conecta-se a porta NOT do escravo para o mestre). Os símbolos para FF's gatilhados na borda ou transição do relógio são mostrados na figura 6.7. (a) (b) Figura 6.7 – Símbolos dos FF's Mestre-Escravo (do tipo SR) gatilhados (a) na subida e (b) na descida do relógio. A tabela-verdade e o símbolo do flip-flop tipo D gatilhado na borda de subida do relógio são mostrados na figura 6.8. Figura 6.8 – Tabela-verdade e símbolo do flip-flop D gatilhado na subida do relógio. 6.4.1. Flip-Flop JK O FF SR mestre-escravo ainda tem o mesmo problema de estado “proibido” do latch SR, no qual ambas as saídas são iguais e que pode levar a uma condição de corrida com saídas imprevisíveis. Para eliminar a entrada proibida, foi criado um novo tipo de flip-flop, o FF JK, que não levará a um estado indeterminado e cuja tabela- verdade é a seguinte: J K Qn+1 1nQ + Comentário 0 0 Qn nQ Mantém o estado atual 0 1 0 1 Reset 1 0 1 0 Set 1 1 nQ Qn Inverte o estado do latch (toggle) Tabela 6.3 - Tabela-verdade do FF JK. A tabela 6.3 mostra que J desempenha a função de “levar a 1” o FF, enquanto K tem a função de “levar a 0” o FF. O FF JK tem uma funcionalidade extra de inversão do estado atual (toggle), no lugar do estado indesejável do FF SR. A saída nQ é Ck Qn+1 ↑ D UFPA / ITEC / FEE Eletrônica Digital 74 sempre o inverso da saída Qn. A tabela-verdade resumida e o símbolo esquemático de um FF JK gatilhado na descida do relógio são mostrados na figura 6.9. J K Qn+1 0 0 Qn 0 1 0 1 0 1 1 1 nQ Figura 6.9 – Tabela-verdade e símbolo do flip-flop JK gatilhado na descida do relógio. Pode-se construir o FF JK usando o FF SR como ponto de partida, pois conhecem-se as tabelas-verdade de ambos os flip-flops. Mas para desenvolver o FF JK a partir do FF SR, é interessante dispor de uma tabela-verdade expandida, que trate a saída atual Qn como uma entrada do circuito e mostre todas as combinações de valores de S, R e Qn, com o valor final para Qn+1. Esta é a tabela 6.4. S R Qn Qn+1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 X 1 1 1 X Tabela 6.4 – Tabela-verdade expandida para o FF SR. O que se precisa fazer é determinar as expressões de S e R em função das entradas globais J, K e Qn. Por isso, o esquemático da figura 6.10 mostra esses três sinais como as entradas de um circuito combinacional desconhecido que produz S e R. A realimentação da variável de estado Qn para a entrada é necessária porque, para que o FF JK possa inverter o estado atual, ele precisa saber qual é o valor desse estado. Figura 6.10 – Projeto do FF JK em função do FF SR. Os valores necessários em S e R para causar as transições de Qn para Qn+1 desejadas de um FF JK, são dados na tabela de projeto 6.5. Fazendo-se os mapas de Karnaugh para S e R em função de J, K e Qn, encontram-se as expressões para S e R: S = J. nQ R = K.Qn ELETRÔNICA DIGITAL Prof. Daniel Cardoso 75 J K Qn Qn+1 S R 0 0 0 0 0 X 0 0 1 1 X 0 0 1 0 0 0 X 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 X 0 1 1 0 1 1 0 1 1 1 0 0 1 Tabela 6.5 – Projeto das expressões das entradas S e R. Agora conhece-se o conteúdo da caixa incógnita da figura 6.10: são duas portas AND. O FF JK realimenta as saídas para as entradas, eliminando o estado proibido. Seu esquemático didático é mostrado nas figuras 6.11 e 6.12. Figura 6.11 – Esquemático do FF JK. Figura 6.12 – Esquemático interno didático do FF JK. 6.4.2. Flip-Flop T O flip-flop T (Toggle) é obtido a partir do FF JK colocando-se em curto as entradas J e K. Assim, quando T = 0, o FF T mantém o estado atual e, quando T = 1, ele o inverte. O FF T é muito utilizado em contadores e divisores de frequência, pois quando T = 1, ele divide por dois a frequência do sinal de relógio. UFPA / ITEC / FEE Eletrônica Digital 76 Portanto, os FF's sensíveis à borda do sinal de relógio podem ser dos tiposSR, JK, D ou T, e as tabelas-verdade são as mesmas dos FF's sensíveis ao nível correspondentes, com a diferença de que a saída Q só assumirá o seu próximo estado Qn+1 após a borda correta do relógio (de subida ou de descida, conforme o circuito). Figura 6.13 – Tabela-verdade e símbolo do flip-flop T gatilhado na subida do relógio. 6.4.3. Entradas de Preset e Clear Não há como prever o estado que a saída Qn de um flip-flop irá assumir no instante em que se liga o circuito, a não ser que se apliquem vetores de entrada que o levem seguramente a um estado conhecido. A inicialização do FF em '0' ou '1' é normalmente feita com sinais de controle especiais chamados de preset (preestabelece) e clear (limpa), conforme a tabela 6.6. O sinal de preset leva a saída a ‘1’ e o sinal de clear, também chamado de reset, leva a saída a ‘0’ (“limpa” o conteúdo do FF). Portanto, o preset e o clear inicializam a saída Qn. Preset (PR ) e clear (CL ) são geralmente ativos em nível baixo, isto é, a ação acontece quando o sinal correspondente é ‘0’. PR CL Qn 0 0 X 0 1 1 1 0 0 1 1 Qn Tabela 6.6 – Funcionamento das entradas preset e clear. A figura 6.14 mostra o esquema didático e o símbolo em bloco de um FF JK com preset e clear. As bolinhas nas entradas PR e CL não são inversores, elas servem para indicar que esses sinais exercem sua função quando estão em nível lógico baixo. Os sinais preset e clear são assíncronos e têm prioridade sobre o sinal de relógio e as entradas de dados. Isso significa que, a qualquer momento, pode-se impor ao circuito assumir Q=1 (ou Q=0) com a entrada PR (ou CL ) em ‘0’. PR e CL não devem ser feitos simultaneamente iguais a ‘0’, pois seria como tentar fazer as duas coisas ao mesmo tempo, e o valor da saída Qn será imprevisível. Ck T Qn+1 ↑ 0 Qn ↑ 1 nQ ELETRÔNICA DIGITAL Prof. Daniel Cardoso 77 Figura 6.14 – Esquema didático e símbolo do FF JK com entradas de preset e clear. UFPA / ITEC / FEE Eletrônica Digital 78 CAPÍTULO 7 Registradores e Contadores 7.1. Registradores Um flip-flop pode armazenar um bit. Quando se deseja armazenar uma palavra binária, é necessário utilizar um flip-flop para cada bit dessa palavra. Por exemplo, para armazenar um byte, deve-se empregar oito flip-flops. Esse conjunto de flip-flops que armazena uma palavra binária é chamado de registrador. O tamanho do registrador é o tamanho da palavra que ele pode armazenar, ou o seu número de flip- flops. Assim, um flip-flop é um caso particular de registrador para armazenar um bit apenas. O flip-flop mais conveniente para armazenar palavras é o flip-flop D. A figura 7.1 mostra oito flip-flops D formando um registrador de 8 bits, com entrada paralela e saída paralela, gatilhado na subida do relógio, e com saídas de três estados. Figura 7.1 - Registrador paralelo/paralelo de 8 bits com habilitação da saída. ELETRÔNICA DIGITAL Prof. Daniel Cardoso 79 7.1.1. Registradores de Deslocamento (Shift Registers) Em um registrador de deslocamento, os flip-flops são conectados de modo que a saída de cada flip-flop passa para a entrada do flip-flop adjacente. Na figura 7.2, uma única entrada de dados é aplicada ao primeiro flip-flop, e transições sucessivas do relógio farão os dados se deslocarem para a direita, uma posição a cada subida do sinal de relógio. Portanto, para um valor inicial de 00000000 no registrador de deslocamento e um '1' aplicado ao primeiro flip-flop, pulsos de relógio sucessivos resultarão nos valores 10000000, 11000000, 11100000, 11110000, 11111000, 11111100, 11111110 e 11111111 no registrador, assumindo que o '1' seja mantido aplicado para cada subida do relógio. Se o '1' fosse removido (um '0' fosse aplicado) imediatamente após a primeira transição do relógio, a sequência armazenada no registrador seria: 10000000, 01000000, 00100000, 00010000, 00001000, 00000100, 00000010 e 00000001. Figura 7.2 - Registrador de deslocamento série-paralelo de 8 bits. Este registrador possui entrada serial e saída paralela, podendo atuar como um conversor serial-paralelo. Isto é, a informação é entrada serialmente (um bit de cada vez) em um terminal de dados único, e é lida em paralelo (todos os bits juntos) dos flip- flops. A palavra de dados finalmente armazenada no registrador vai depender dos valores lógicos presentes na linha serial de dados, no instante de cada transição ativadora do relógio. Para se ter um registrador de deslocamento de saída serial, basta recuperar a palavra de dados serialmente na saída do último flip-flop (Q7). Em algumas aplicações, é necessário estabelecer os conteúdos dos registradores em um valor específico, para fins de inicialização do sistema. Isso pode ser conseguido utilizando-se flip-flops que possuam as entradas assíncronas de Preset (ou Set) e Clear (ou Reset). Para levar todas as saídas de flip-flops a '0', todas as entradas de reset devem ser conectadas juntas e acionadas por um sinal de inicialização. Um registrador de deslocamento também pode ser formado com flip-flops JK, conectando-se as saídas Q e Q de cada flip-flop às entradas J e K, respectivamente, do próximo flip-flop, como mostrado na figura 7.3. UFPA / ITEC / FEE Eletrônica Digital 80 Figura 7.3 - Registrador de deslocamento série-paralelo de 8 bits com flip-flops JK. A função clássica de um registrador é armazenar palavras (numerais binários). Um registrador de deslocamento pode ser usado também para dividir ou multiplicar o numeral binário por uma potência de 2, pelo deslocamento desse numeral pela quantidade certa de posições para a direita ou para a esquerda, respectivamente. Por exemplo, se o numeral dez está armazenado em um registrador de 8 bits (00001010 em binário), um deslocamento para a direita resulta na palavra 00000101 (5 em decimal). Se o registrador de deslocamento fosse organizado para deslocar para a esquerda (o que exigiria que as conexões entre os flip-flops fossem feitas da direita para a esquerda), o numeral armazenado seria multiplicado por uma potência de 2, com expoente igual à quantidade de posições deslocadas. As entradas assíncronas de Preset e Clear dos flip-flops podem ser aproveitadas para inicializar o conteúdo de um registrador com uma palavra binária qualquer. A figura 7.4 mostra um registrador de deslocamento com um comando de carregamento (LOAD) paralelo e assíncrono de palavras. Enquanto LOAD = '0', as saídas das portas NAND mantém-se em '1', desabilitando os Presets dos flip-flops. Para inicializar os conteúdos dos FF's (Q3, Q2, Q1 e Q0) com uma palavra, é necessário primeiro aplicar um pulso baixo em CLR, zerando as saídas Q. Em seguida, aplica-se a palavra a ser carregada no registrador nas entradas PR3 a PR0, e depois coloca-se a linha LOAD em nível alto. Figura 7.4 - Registrador de deslocamento com carregamento paralelo assíncrono. ELETRÔNICA DIGITAL Prof. Daniel Cardoso 81 Por exemplo, para o registrador carregar a palavra 10012 em seus flip-flops, faz- se PR3...PR0 = 1001, em seguida aplica-se um pulso baixo em CLR e leva-se LOAD a nível alto. Logo em seguida, Q3..Q0 = 1001. 7.2.Contadores Um contador é um circuito sequencial que gera uma sequência de saída específica e recorrente. Contadores são construídos utilizando-se um flip-flop para cada bit da sequência de contagem. 7.2.1. Contadores Assíncronos O tipo mais simples de contador binário pode ser construído quando as transições das saídas não precisam estar em perfeito sincronismo, isto é, pequenos atrasos nas mudanças das saídas são aceitáveis. Este projeto é chamado de contador assíncrono ou contador com ondulação (ripple counter) pois, embora ainda exista um sinal de relógio aplicado ao circuito, os flip-flops individuais são gatilhados pelas saídas dos flip-flops anteriores (nos contadores ripple, a saída de um flip-flop é conectada à entrada de relógio do próximo). Por causa disso, os sinais ondulam de um lado para outro do contador e haverá pequenos atrasos antes das saídas assumirem seus valores finais. O módulo de um contador é a quantidade de estados da contagem. O contador da figura 7.5(a) conta de 010 até 1510 e reinicia, por isso trata-se de um contador módulo 16. Na contagem, Q0 é o LSB e Q3 é o MSB. Este contador também pode ser visto como um divisor de frequência por 2n, pois a frequência de Q0 é ½ da frequência do relógio, a frequência de Q1 é ½ da frequência de Q0, a frequência de Q2 é ½ da de Q1, e assim por diante, como mostrado na figura 7.5(b). Figura 7.5(a) - Contador assíncrono (ripple counter) de 4 bits (módulo 16). UFPA / ITEC / FEE Eletrônica Digital 82 Figura 7.5(b) – Diagrama de formas de onda da contagem crescente em 4 bits, módulo 16. O módulo de um contador assíncrono pode ser modificado com o acréscimo de portas lógicas que restabeleçam o estado inicial da contagem, no momento em que o estado final for ultrapassado. Por exemplo, o circuito da figura 7.6 é um contador de década (isto é, módulo 10) assíncrono: ele conta de 010 (00002) até 910 (10012), e quando o estado 1010 (10102) é atingido, a porta NAND provoca a reinicialização (reset) do contador para 010, e o ciclo recomeça. Um contador de década é muito útil para contar em BCD ou em decimal. Figura 7.6 - Contador assíncrono adaptado para contar até 910 (decade counter). 7.2.2. Contadores Síncronos Os contadores síncronos são aqueles em que todos os flip-flops recebem o mesmo sinal de relógio e são gatilhados simultaneamente por ele. Com isso, eliminam- se os atrasos na passagem de um estado da contagem para o próximo, e na reinicialização forçada do contador para gerar uma contagem de módulo arbitrário, como acontece com os contadores assíncronos. Por causa da sincronização simultânea, todas as mudanças necessárias nas saídas ocorrem juntas, e a palavra binária correta aparece após o tempo de atraso de propagação de um flip-flop ao invés do tempo de atraso de n FF's. ELETRÔNICA DIGITAL Prof. Daniel Cardoso 83 O circuito da figura 7.7 é um contador síncrono de 4 bits e módulo 16. Os contadores síncronos precisarão sempre ter uma parte combinacional, para definir o próximo estado que seus flip-flops devem assumir após cada transição ativa do relógio. As entradas para essa parte combinacional serão as saídas dos flip-flops (Q's), chamadas de variáveis de estado, e as saídas do bloco combinacional irão acionar as entradas dos flip-flops. Portanto, a parte combinacional de um contador faz a realimentação das saídas para as entradas da parte sequencial. Figura 7.7 - Contador síncrono de módulo 16. O problema do projeto de contadores síncronos passa a ser a determinação das funções lógicas que devem ser aplicadas a cada entrada de flip-flop para criar a sequência de contagem desejada. Este problema pode ser resolvido para qualquer contagem seguindo-se o procedimento sistemático com as etapas abaixo: 1. Calcular a quantidade de flip-flops necessária para realizar o contador e decidir que tipo de flip-flop será utilizado para implementá-lo (SR, JK, D ou T). 2. Escrever a tabela de excitação para o tipo de flip-flop escolhido. 3. Fazer um diagrama de transição de estados ou uma tabela de transição de estados, indicando o próximo estado para cada estado assumido pelo contador. 4. Acrescentar, na tabela de transição de estados, colunas extras para as entradas dos flip-flops e preenchê-las com os valores que cada entrada deve ter para produzir a mudança de estado correspondente. 5. Fazer os mapas de Karnaugh para obter a expressão simplificada de cada entrada de flip-flop, em função das variáveis de estado (Q's). 6. Esquematizar o contador. O tipo de flip-flop mais flexível para emprego em contadores é o FF JK, porque ele pode ser levado a complementar as suas saídas com a aplicação das entradas J = K = 1, além de ser capaz de levá-las a '1' (J = 1, K = 0) ou a '0' (J = 0, K = 1). O flip-flop D pode ser usado, mas geralmente ele vai exigir um número maior de portas lógicas para conseguir gerar a sequência de contagem. Ou seja, se o flip-flop utilizado for mais simples, então a parte combinacional será mais complexa. Entretanto, embora o flip- flop D não seja a escolha mais natural, ele pode acabar sendo escolhido por requerer UFPA / ITEC / FEE Eletrônica Digital 84 menos transistores internos que um flip-flop JK. E o projeto final pode requerer menos interconexões do que uma solução com FF JK. Como exemplo, explica-se a seguir o projeto de um contador módulo 8. Tal contador necessita de 3 variáveis de estado, Q2, Q1, Q0, portanto de 3 flip-flops. Decidindo-se utilizar flip-flops JK, precisa-se conhecer a tabela de excitação desse tipo de flip-flop. Trata-se de uma tabela que apresenta os valores necessários nas entradas para produzir um efeito conhecido na saída, ou seja, as entradas são dadas em função das saídas. Essa tabela é mostrada na tabela 7.1. Qn Qn+1 J K 0 0 0 X 0 1 1 X 1 0 X 1 1 1 X 0 Tabela 7.1 - Tabela de excitação do flip-flop JK. A tabela de transição de estados para o contador módulo 8 é mostrada na tabela 7.2, e a tabela 7.3 mostra as colunas das entradas em função das transições das saídas. Estado atual Estado futuro Q2n Q1n Q0n Q2n+1 Q1n+1 Q0n+1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 Tabela 7.2 - Tabela de transição de estados para o contador módulo 8. J2 K2 J1 K1 J0 K0 0 X 0 X 1 X 0 X 1 X X 1 0 X X 0 1 X 1 X X 1 X 1 X 0 0 X 1 X X 0 1 X X 1 X 0 X 0 1 X X 1 X 1 X 1 Tabela 7.3 - Valores de J e K de cada flip-flop para produzir as transições acima. Agora montam-se os mapas de Karnaugh para cada entrada de flip-flop (J, K), em função de Q2n, Q1n e Q0n. As expressões das entradas serão: ELETRÔNICA DIGITAL Prof. Daniel Cardoso 85 J0 = K0 = 1 J1 = K1 = Q0 J2 = K2 = Q0.Q1 E o esquema do contador módulo 8 é mostrado na figura 7.8. Figura 7.8 - Contador síncrono módulo 8. 7.2.2.1. Contadores em anel. O circuito contador em anel (ring counter), mostrado na figura 7.9 com 4 bits, serve para gerar uma sequência cíclica de pulsos de controle. A entrada Inic deve ser colocada em '0' momentaneamente, estabelecendo o estado inicial do contador em 10002, antes de sua operação normal. Para quatro pulsos de relógio, as saídas Q (Q3, ..., Q0) seguirão o padrão 1000,0100, 0010, 0001, 1000, ... ciclicamente. Figura 7.9 - Contador em anel (ring counter). Se a saída Q , e não Q, for retornada para a entrada D do primeiro flip-flop, obtém-se um circuito chamado contador em anel torcido (twisted ring counter), também UFPA / ITEC / FEE Eletrônica Digital 86 conhecido como contador Johnson, mostrado na figura 7.10. A entrada Inic deve ser colocada em '0' momentaneamente, estabelecendo o estado inicial do contador em 00002, antes de sua operação normal. Os estados das saídas Q (Q3, ..., Q0) após cada pulso de relógio seguirão o padrão 0000, 1000, 1100, 1110, 1111, 0111, 0011, 0001, 0000... Nesta sequência, somente um bit muda de um estado para o outro. Figura 7.10 - Contador Johnson (twisted ring counter). ELETRÔNICA DIGITAL Prof. Daniel Cardoso 87 CAPÍTULO 8 Análise e Projeto de Circuitos Sequenciais 8.1. Introdução As máquinas de estados finitos são sistemas sequenciais síncronos genéricos, que percorrem um número finito de estados. A transição de um estado para outro ocorre somente nas bordas ativas do relógio. Um estado é uma combinação particular de valores das variáveis de estado. As variáveis de estado são as saídas dos elementos lógicos com memória (flip-flops). Existem dois modelos gerais para máquinas de estado: as máquinas Mealy e as máquinas Moore. O modelo de uma máquina de estado Mealy é mostrado na figura 8.1, usando flip-flops do tipo D (outros tipos de flip-flops também podem ser usados). O circuito possui um conjunto de n entradas, identificadas Xn-1...X0, e um conjunto de m saídas, Zm-1...Z0. Há dois conjuntos de k sinais internos, Qk-1...Q0 e Yk-1...Y0. Os sinais Q são as variáveis de estado atuais, armazenadas nos flip-flops, que definem o estado atual do circuito. Os sinais Y são as variáveis de estado futuro, geradas para produzir o próximo estado do circuito, e são entradas para os flip-flops. Os sinais Y são funções combinacionais das entradas do circuito, Xn-1...X0, e do estado atual, Qk-1...Q0. As saídas do circuito, Zm-1...Z0, também são funções combinacionais das entradas e do estado atual. Para criar um circuito sequencial síncrono baseado neste modelo, é necessário deduzir as funções combinacionais das variáveis de próximo estado, Yk-1...Y0, e das saídas, Zm-1...Z0. Primeiramente, é preciso estabelecer quantos flip-flops são necessários para um projeto específico (o valor de k). Se dois estados são requeridos, então uma variável de estado é necessária, que valerá '0' para um estado e '1' para o outro. Se três ou quatro estados são requeridos, então duas variáveis de estado são necessárias, pois há quatro palavras com duas variáveis, 00, 01, 10 e 11, e cada palavra codificará um estado. Em geral, se entre 2k-1 + 1 e 2k estados são requeridos, k variáveis de estado e portanto k flip-flops são necessários. Após uma transição ativa do relógio, que pode ser a de subida ou a de descida, um tempo suficiente deve ser dado para os sinais passarem pela lógica combinacional para estabelecer os valores do próximo estado, antes da próxima transição ativa do relógio. Observa-se na figura 8.1 que mudanças de valores nas entradas primárias não causam mudanças de estado imediatas, pois uma mudança de estado será determinada pelas entradas e pelo estado atual, no momento da transição ativa do relógio (levando em conta os atrasos do circuito). Entretanto, como as saídas do circuito são funções combinacionais que incluem as entradas Xn-1...X0, mudanças nestas entradas podem fazer as saídas mudarem imediatamente e não em sincronismo com o relógio. Este comportamento, se for indesejável em uma aplicação, pode ser evitado tornando-se as saídas funções combinacionais somente das variáveis UFPA / ITEC / FEE Eletrônica Digital 88 de estado atuais. Este novo modelo de máquina de estado é o modelo Moore, mostrado na figura 8.2. Figura 8.1 - Máquina de estados finitos de modelo Mealy. Um circuito sequencial síncrono pode geralmente ser projetado tanto a partir de um modelo Mealy quanto de um modelo Moore, mas se um modelo Mealy for usado, as saídas poderão ser afetadas por mudanças nas entradas imediatamente após elas ocorrerem (isto é, de forma assíncrona), ao invés de após uma transição de relógio. Portanto, os comportamentos de um circuito de modelo Mealy e do seu equivalente de modelo Moore podem ser diferentes neste aspecto. Para projetar uma máquina de estados finitos usando um dos dois modelos, há dois conjuntos de funções para determinar: as funções para as variáveis de estado futuro, Yk-1...Y0, e as funções para as saídas, Zm-1...Z0. O procedimento de projeto inicia-se com a criação de um diagrama de estados derivado da especificação do problema. Quando as saídas dos flip-flops (as variáveis de estado) forem também as saídas do circuito, o modelo mais adequado será naturalmente o modelo Moore. Por exemplo, um contador é geralmente um circuito de modelo Moore porque suas saídas costumam ser tomadas diretamente dos flip-flops, isto é, Z = Q. ELETRÔNICA DIGITAL Prof. Daniel Cardoso 89 Figura 8.2 - Máquina de estados finitos de modelo Moore.