Tutoriais e Programação
AoA - Cap.2 - Lógica sequencial e com clock
Qui 22 Fev 2007 22:11 |
- Detalhes
- Categoria: Art of Assembly
- Atualização: Domingo, 19 Abril 2009 20:21
- Autor: vovó Vicki
- Acessos: 9544
Um dos grandes problemas da lógica combinatória é que ela é destituída de memória. Na teoria, todas as saídas das funções lógicas dependem somente das entradas atuais - qualquer modificação nos valores de entrada é imediatamente refletida nas saídas. Infelizmente isto não é o suficiente para os computadores porque eles precisam "lembrar" dos resultados de cálculos anteriores, ou seja, precisam de memória. Este é o domínio da lógica sequencial e de clock.
Uma célula de memória é um circuito eletrônico que lembra um valor de entrada depois que este tenha sido removido. A unidade de memória mais básica é o flip-flop set/reset (liga/desliga). Um flip-flop SR pode ser construído usando-se duas portas NAND, como mostrado na Fig.9.
As entradas S e R normalmente são altas. Se você levar temporariamente a entrada S para zero e depois reverte-la novamente para 1 (inversão da entrada S), isto força a saída Q para 1. Do mesmo modo, se você inverter a entrada R de 1 para zero e novamente para 1, isto seta a saída Q para zero. A saída Q' geralmente é o inverso da saída Q.
Note que, se tanto S quanto R forem 1, então a saída Q depende de Q. Isto é, seja qual for o valor de Q, a porta NAND superior continua a dar saída deste valor. Se Q originalmente era 1, então ocorrem duas entradas de 1 no flip-flop inferior (Q e R). Isto produz uma saída de zero (Q'). Portanto, as duas entradas na porta NAND do topo são zero e 1. Isto produz o valor 1 como saída (coincidindo com o valor original de Q).
Se o valor original de Q era zero, então as entradas na porta NAND inferior são Q=0 e R=1. Portanto, a saída desta porta NAND é 1. Neste caso, as entradas na porta NAND superior são S=1 e Q'= 1. Isto produz uma saída zero, o valor original de Q.
Suponha que Q seja zero, S seja zero e R seja 1. Isto ajusta as duas entradas para o flip-flop superior para 1 e zero, forçando a saída (Q) de 1. Revertendo S para o estado alto (S=1) não altera em nada a saída. Pode-se obter este mesmo resultado se Q for 1, S for zero e R for 1. Novamente, isto produz um valor de saída 1. Este valor permanece 1, mesmo se S for trocado de zero para 1. Portanto, trocando a entrada S de 1 para zero e novamente para 1 produz 1 na saída (isto é, seta o flip-flop). O mesmo raciocínio se aplica para a entrada R, exceto que ela força a saída Q para zero, ao invés de 1. Experimente com o aplicativo em flash.
Existe uma mancada neste circuito. Ele não funciona apropriadamente se as duas entradas S e R forem zeradas simultaneamente. Isto força as saídas Q e Q' para 1 (o que, logicamente, é inconsistente). A entrada que permanecer zero por mais tempo determina o estado final do flip-flop. Este modo de funcionamento de um flip-flop é chamado de instável.
O único problema com o flip-flop S/R é que são necessárias entradas separadas para guardar um valor zero ou 1. Uma célula de memória teria mais valor se pudéssemos especificar o valor do dado que deve ser mantido para uma das entradas e pudéssemos fornecer uma entrada de clock para trancar o valor de entrada. Este tipo de flip-flop, o flip-flop D (para dados) usa o circuito mostrado na Fig.10.
Considerando que as saídas Q e Q' estejam ajustadas para 0/1 ou 1/0, quando se envia um pulso de clock que vai de 0 para 1 e novamente para zero, ocorre uma cópia da entrada D para a saída Q. Também ocorrerá uma replicação de D' para Q'. Os exercícios no final deste capítulo descreverão esta operação em detalhe, portanto capriche no estudo deste diagrama.
Apesar de saber que um único bit, com frequência, é importante, na maioria dos sistemas de computador teremos que guardar um grupo de bits. Pode-se guardar uma sequência de bits combinando vários flip-flops D em paralelo. Concatenando flip-flops para guardar um valor de n bits forma um registrador. O esquema eletrônico da Fig.11 mostra como construir um registrador de 8 bits com um conjunto de flip-flops D:
Observe que os oito flip-flops D usam uma linha de clock comum. O diagrama não mostra as saídas Q' nos flip-flops porque, num registrador, elas raramente são necessárias.
Flip-flops D são úteis para se construir muitos circuitos sequenciais além e aquém de simples registradores. Por exemplo, são usados para construir registradores de deslocamento (shift) que deslocam os bits uma posição para a esquerda a cada pulso do clock. A Fig.12 mostra um registrador de deslocamento.
Usando flip-flops pode-se até mesmo contruir um contador que conta o número de vezes que o clock alterna de 1 para zero e novamente para 1. O circuito da Fig.13 implementa um contador de 4 bits usando flip-flops D.
Apesar de surpreendente, é possível construir uma CPU inteira com circuitos combinatórios e com apenas alguns circuitos sequenciais adicionais.
Fonte
- Art of Assembly de Randall Hyde.
- Tradução meio que livre da vovó Vicki.