O transistor como memória
Agora que já vimos como um transistor pode ser configurado para representar portas lógicas, precisamos entender como usar transistores como memória. O vídeo a seguir é bastante instrutivo e serve como um pontapé inicial para nossa discussão.
1. Lógica retroalimentada
Section titled “1. Lógica retroalimentada”Considere a seguinte situação, representada pela figura 9.01:

Considerando o caso em que essa porta receba o sinal 0 na porta A e a segunda porta já esteja com valor 0, o que temos é uma situação de estabilidade. A saída é 0 e deve continuar assim. No entanto, se mudamos a porta A para 1, o que temos é uma instabilidade momentânea. O que se segue é um novo estado de estabilidade, com a saída em 1 e a segunda entrada como 1 também. Como a porta OR é dominada pelo sinal 1, não há mais como modificar o valor de saída dessa porta. Podemos dizer que esse circuito é capaz de armazenar o valor 1 em memória.
2. Flip flops
Section titled “2. Flip flops”2.1. Tipo RS
Section titled “2.1. Tipo RS”O circuito com a porta OR pode armazenar apenas valores 1, mas o que queremos com um circuito que atue como memória é ser capaz de armazenar tanto 0 como 1. Além disso, a porta OR retroalimentada nunca pode ser modificada depois que estabiliza com sua saída em 1. Apesar de existir diversos exemplos de memória de apenas escrita (ROM), esse tipo de memória tem um uso bastante limitado e não pode ser utilizado como registrador para a saída de uma operação aritmética da ALU, por exemplo. O que fazer? Bom, aí que entra o latch S-R. A figura abaixo representa o circuito em questão.

A figura mostra a tabela verdade desse circuito. Como trata-se de um circuito em que a sequência de saída é importante, há duas colunas para a saída Q. Uma para o estado atual e uma para o estado futuro (N+1).
| Operação | ||||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Memória (hold) |
| 0 | 0 | 1 | 1 | Memória (hold) |
| 1 | 0 | 0 | 1 | Set |
| 1 | 0 | 1 | 1 | Set |
| 0 | 1 | 0 | 0 | Reset |
| 0 | 1 | 1 | 0 | Reset |
| 1 | 1 | 0 | indefinido | Estado proibido |
| 1 | 1 | 1 | indefinido | Estado proibido |
Um dos problemas do circuito acima é que é imprevisível quando o circuito vai estabilizar sua saída. Uma solução para esse problema pode ser vista na figura 9.04 - o latch SR com sinal de enable.

Para entender como esse sinal de enable influencia no comportamento do latch SR, uma ferramenta útil para se utilizar é uma carta de tempos. A figura acima exibe esse tipo de gráfico. Nele, o eixo y indica o nível lógico do sinal e o eixo x indica a passagem de tempo. O eixo x é comum para todos os sinais representados.

2.2. Tipo D
Section titled “2.2. Tipo D”Agora que você já viu o problema do latch RS, vamos ver dois tipos de flip flops que resolvem esse problema? O primeiro deles é o flip flop tipo D. A ideia por trás dele é muito simples: se só tiver uma entrada, não tem como ter o conflito de entradas apresentado pelo latch SR. A figura 9.06 apresenta o circuito lógico de um flip flop tipo D.

2.3. Tipo JK
Section titled “2.3. Tipo JK”Outra das soluções possíveis para o problema do R = 1 e S = 1 é apresentada pelo flip flop JK. Não, ele não foi inventado por Juscelino Kubitschek. A figura abaixo mostra o circuito lógico do flip flop JK.

A figura 9.08 mostra a tabela verdade para o flip flop JK.
| Operação | ||||
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Hold |
| 0 | 0 | 1 | 1 | Hold |
| 1 | 0 | 0 | 1 | Set |
| 1 | 0 | 1 | 1 | Set |
| 0 | 1 | 0 | 0 | Reset |
| 0 | 1 | 1 | 0 | Reset |
| 1 | 1 | 0 | 1 | Toggle |
| 1 | 1 | 1 | 0 | Toggle |
Quando e , estabiliza em . Por outro lado, quando e , estabiliza em . Até aí, igualzinho ao latch SR. A diferença vem quando e ou e . Na primeira situação, o valor de não se altera. Na segunda (que gerava uma situação indeterminada no latch SR), o valor de é invertido.