Circuitos sequenciais
Flip-flops D e T, registos, banco de registos, máquinas de estados finitas e o tempo mínimo de relógio.
Nesta página
Há circuitos que um combinatório não consegue realizar: um contador precisa de se lembrar do valor anterior. Num circuito sequencial, a saída depende dos valores atuais das entradas e de todos os valores anteriores. A memória do passado vive em variáveis de estado binárias, guardadas em elementos de memória. Um circuito com variáveis de estado pode ter até estados.
Duas notas antes dos componentes. O estado atual nem sempre depende do estado anterior (há circuitos que ignoram parte da história). E, como o comportamento depende da sequência, precisamos de conhecer sempre o estado inicial para prever o que o circuito faz.
Flip-flops
O flip-flop do tipo D é o elemento de memória básico. Tem uma entrada de dados , uma entrada de relógio e duas saídas complementares, e . Após a transição ativa do relógio (em geral a subida, de 0 para 1), a saída passa a valer o que estava em . Entre transições, mantém o valor guardado. Pode ter ainda uma entrada de habilitação (EN): com EN desativada, o flip-flop ignora o relógio e conserva o estado.
O flip-flop do tipo T troca de estado a cada ciclo de relógio: se está em 0 passa a 1, e vice-versa. É o bloco natural para contadores, onde cada bit muda quando o anterior completa uma volta.
O relógio não pode ser arbitrariamente rápido. Entre duas transições ativas, os sinais têm de atravessar a lógica combinatória e estabilizar antes da exigência de setup do flip-flop. O período mínimo é:
onde é o atraso máximo de propagação na lógica e o atraso do próprio elemento de memória. Encurtar o período abaixo disto significa amostrar valores ainda instáveis.
Registos
Um registo é um grupo de elementos de memória acedidos como uma entidade única: guarda uma palavra de bits e lê-se ou escreve-se de uma vez. Um banco de registos é um conjunto de registos com a mesma capacidade, em que cada registo individual se seleciona pelo seu número de ordem. É esta a estrutura que o processador usa para os operandos rápidos, como vais ver no capítulo do LEGv8.
Máquinas de estados finitas
Uma máquina de estados finitas (FSM, do inglês finite state machine) descreve um circuito sequencial como um conjunto de estados e transições entre eles. Para estar completamente especificada, é necessário que, para cada estado, se verifiquem duas condições:
- A soma lógica (OR) das expressões de transição seja 1, ou seja, há sempre uma transição definida para qualquer combinação de entradas.
- O produto lógico (AND) de cada par de expressões seja 0, ou seja, as transições são mutuamente exclusivas e nunca há ambiguidade sobre o próximo estado.
Um exemplo mínimo: um detetor que assinala quando vê dois uns seguidos. Tem dois estados, A (ainda não vi um 1) e B (vi um 1). Em A, a entrada 0 mantém o circuito em A e a entrada 1 leva a B. Em B, a entrada 1 assinala a deteção e mantém B, e a entrada 0 regressa a A. Verifica as condições: em A, as expressões são e , cuja soma é 1 e cujo produto é 0. Em B passa-se o mesmo. As máquinas de estados permitem guardar pequenas quantidades de dados, como a fase de um protocolo, sem recorrer a uma memória de acesso direto.