Ciências da computação dia 58
Introdução aos circuitos de memória: flip‑flops e lógica sequencial
De maneira básica, os circuitos de memória são constituídos por flip‑flops. Esses circuitos em sua forma mais padrão e básica são construídos a partir de portas lógicas (NAND, NOR) que formam um dispositivo biestável, capaz de armazenar um bit de informação (0 ou 1). Nesta aula, vamos estudar os fundamentos dos flip‑flops, sua classificação e como eles são usados para criar sistemas de memória mais complexos.
1. O que é um Flip‑Flop?
Um flip‑flop é um circuito digital sequencial que possui duas saídas complementares (Q e Q') e uma ou mais entradas. Ele é chamado de biestável porque tem dois estados estáveis: set (Q=1) e reset (Q=0). O estado só é alterado quando um sinal de entrada apropriado é aplicado, geralmente sincronizado com um clock. Diferente de circuitos combinacionais, flip‑flops têm memória: eles "lembram" o último estado enquanto a alimentação estiver presente.
A estrutura mais simples de um flip‑flop é o latch SR (Set‑Reset), construído com duas portas NOR ou NAND realimentadas. Esse latch muda de estado quando as entradas S e R são ativadas. No entanto, o latch SR básico tem problemas de indeterminação quando ambas as entradas são ativadas simultaneamente, o que levou ao desenvolvimento de variações como o flip‑flop SR síncrono, D, JK e T.
2. Principais tipos de Flip‑Flops
Existem vários tipos de flip‑flops, cada um adequado para diferentes aplicações. Vamos resumir os mais importantes:
- Flip‑Flop SR (Set‑Reset): Possui entradas S e R. Quando S=1 e R=0, a saída Q=1 (set). Quando S=0 e R=1, Q=0 (reset). O estado S=R=1 é proibido (indeterminado).
- Flip‑Flop D (Data): Possui apenas uma entrada D. A saída Q assume o valor de D na borda de subida do clock. É muito usado em registradores e latches de dados.
- Flip‑Flop JK: Semelhante ao SR, mas sem estado proibido. Quando J=K=1, o flip‑flop alterna (toggle) seu estado. Versátil para contadores e divisores de frequência.
- Flip‑Flop T (Toggle): Derivado do JK com J=K=T. A cada pulso de clock, a saída inverte (toggle). Usado em contadores binários.
Cada tipo tem características específicas de temporização e lógica, mas todos compartilham a propriedade fundamental de armazenar um bit.
3. Construção de circuitos de memória
Para formar uma memória com capacidade maior que um bit, vários flip‑flops são agrupados em paralelo. Um conjunto de N flip‑flops compartilhando o mesmo clock forma um registrador de N bits, capaz de armazenar uma palavra de memória. Endereços são usados para selecionar qual registrador (ou conjunto de flip‑flops) será lido ou escrito.
Em memórias RAM estáticas (SRAM), cada célula é construída com um latch de 6 transistores (ou 4 transistores mais resistores), que é essencialmente um flip‑flop. Já em memórias RAM dinâmicas (DRAM), a célula é um capacitor e um transistor, mas precisa de refresh periódico. Apesar das diferenças tecnológicas, o princípio de flip‑flop está na base das células SRAM, que são mais rápidas e usadas em cache.
Uma memória de computador típica organiza células em uma matriz, onde linhas (word lines) ativam a seleção e colunas (bit lines) transportam os dados. Decodificadores de endereço convertem o endereço binário em sinais de seleção. Assim, milhões de bits podem ser armazenados e acessados.
4. Sincronismo e Clock
A maioria dos flip‑flops modernos é sensível à borda (edge‑triggered), ou seja, a mudança de estado ocorre apenas na transição do clock (borda de subida ou descida). Isso evita problemas de múltiplas mudanças durante o nível ativo do clock, garantindo previsibilidade e sincronismo.
Existem ainda flip‑flops mestre‑escravo, compostos por dois latches em cascata, que evitam corrida (race condition) e são usados em projetos que exigem temporização robusta.
O clock é um sinal periódico que coordena todas as operações sequenciais do processador e da memória. A frequência do clock determina quantas operações podem ser realizadas por segundo, e o tempo de propagação dos flip‑flops influencia o ciclo mínimo.
5. Aplicações em sistemas computacionais
Os flip‑flops são blocos fundamentais não só para memória principal, mas também para registradores de processador (registradores de propósito geral, registrador de instrução, contador de programa), bancos de registradores, FIFOs, contadores, divisores de frequência e máquinas de estado finito.
Na hierarquia de memória, a SRAM (baseada em flip‑flops) é usada nos níveis cache L1, L2 e L3 devido à sua alta velocidade. Embora a DRAM seja mais densa e barata, a SRAM oferece tempos de acesso muito menores, essenciais para o desempenho do processador.
Além disso, flip‑flops são usados em portas de entrada e saída para sincronizar dados entre dispositivos com clocks diferentes (sincronizadores).
Perguntas Frequentes (FAQ)
Qual a diferença entre latch e flip‑flop?
Um latch é sensível ao nível (level‑sensitive) do clock ou sinal de habilitação: ele pode mudar de estado enquanto o sinal estiver ativo. Já um flip‑flop é sensível à borda (edge‑triggered): a mudança ocorre apenas na transição do clock. Isso torna o flip‑flop mais previsível em circuitos síncronos.
O que é flip‑flop mestre‑escravo?
É uma configuração que usa dois latches em série (mestre e escravo) com fases de clock complementares. Durante a borda de subida, o mestre captura a entrada, e o escravo mantém o estado anterior; na borda de descida, o escravo atualiza. Isso elimina a possibilidade de múltiplas mudanças no mesmo ciclo de clock.
Como os flip‑flops armazenam dados sem energia?
Flip‑flops são dispositivos voláteis: eles perdem o estado quando a alimentação é desligada. Para armazenamento não volátil, usam‑se outras tecnologias como flash, ROM, ou discos magnéticos/SSD.
Qual a diferença entre memória SRAM e DRAM?
SRAM (Static RAM) usa flip‑flops (6 transistores por bit) e não precisa de refresh, é mais rápida e consome mais área. DRAM usa um capacitor e um transistor, precisa de refresh periódico, é mais densa e mais lenta, mas muito mais barata por bit. A SRAM é usada em cache, DRAM em memória principal.
Veja também outros artigos da série na página de Posts.
Com isso, concluímos nossa introdução aos circuitos de memória baseados em flip‑flops. Nas próximas aulas, veremos como esses conceitos se aplicam na prática em processadores e sistemas de memória mais complexos.