Registos, contadores e temporização
Latches, flip-flops D e T, atualização simultânea e restrições de setup e hold.
Um registo pode continuar a mostrar 7 depois de a entrada mudar para 9, pois guarda estado que só será atualizado no instante permitido. Num circuito sequencial, a lógica combinatória usa as entradas e o estado atual para calcular o próximo estado, e os elementos de memória capturam esse resultado.
Latch e flip-flop
Um latch SR com portas NOR usa para colocar e para colocar . Com conserva o estado, enquanto força as duas saídas a 0 e, ao libertá-las, não garante o estado esperado; essa combinação é proibida no uso normal. Um latch D evita-a internamente e, quando está habilitado, acompanha o valor de D.
Um flip-flop D disparado na subida do relógio só amostra D nesse flanco e conserva Q entre flancos. Um flip-flop T conserva se e troca o valor se , com
O sobrescrito designa o estado depois do flanco, não uma soma. Um relógio tem período e frequência , por isso um relógio de 100 MHz tem período 10 ns; o duty cycle indica a fração do período em nível alto e não determina a frequência sozinho.
Para projetar com T, calcula : se o bit atual e o pretendido forem iguais, usa T=0; se diferirem, usa T=1. Com D, liga diretamente o bit pretendido. A mesma tabela de próximo estado pode, por isso, originar circuitos diferentes conforme o tipo de flip-flop.
Cronograma: latch contra flip-flop
Cada linha mostra o estado depois da estabilização. Em t0, enable/clk sobe, e em t1 mantém-se alto; em t2, desce primeiro e só depois D passa para 1, já com o latch fechado. As duas últimas colunas mostram Q no latch e no flip-flop (FF):
| t | D | Latch | FF |
|---|---|---|---|
| t0 | 1 | 1 | 1 |
| t1 | 0 | 0 | 1 |
| t2 | 1 | 0 | 1 |
Na subida em t0, ambos capturam 1. Quando D muda para 0 ainda com enable alto, o latch segue para 0, mas o flip-flop conserva o 1 amostrado no flanco; em t2, o latch fechado conserva 0 e o flip-flop não amostra na descida. É esta janela de amostragem que distingue os dois elementos.
Enable e reset
Um registo com enable carrega D se e conserva se : bit a bit. Um reset síncrono só atua no flanco. Um reset assíncrono atua assim que fica ativo, mesmo entre flancos.
Se o reset tiver prioridade sobre o enable, a regra é: reset ativo dá 0; caso contrário, enable ativo carrega D; nos restantes casos conserva. O símbolo ou o enunciado deve indicar a polaridade e a prioridade. Não suponhas que reset=1 é ativo se houver uma bolha na entrada.
Todos leem o estado antigo
Considera dois flip-flops com e , inicialmente . Para entradas amostradas , calculamos a partir do estado antigo . No flanco , esse resultado passa a estado seguinte :
| 1 | 00 | 1 | 01 |
| 2 | 01 | 0 | 10 |
| 3 | 10 | 1 | 00 |
| 4 | 00 | 1 | 01 |
Para desenhar uma forma de onda, marca os flancos, lê as entradas imediatamente antes de cada um e atualiza todas as saídas em conjunto, após o atraso clock-to-Q.
O símbolo representa um único elemento de memória, enquanto o circuito de dois flip-flops do exemplo liga Q de cada um à lógica que calcula D do outro.
Registos, deslocamento e banco de registos
Um registo de bits tem flip-flops com o mesmo relógio. Num registo de deslocamento de quatro bits, desloca para a esquerda e entra x pelo LSB, por isso partindo de 0000, as entradas 1,0,1 produzem 0001,0010,0101.
Um banco de registos de bits guarda bits. Um descodificador escolhe o registo a escrever e multiplexadores escolhem os registos a ler. Para 32 registos de 32 bits, cada endereço de registo usa 5 bits. Duas portas de leitura permitem ler dois registos ao mesmo tempo, sem duplicar o estado guardado.
Contadores
Num contador binário crescente com enable , cada bit troca quando todos os menos significativos estão a 1 e vão gerar carry. A regra dá e para : o bit 0 segue o enable e cada bit seguinte só troca quando o enable está ativo e todos os anteriores estão a 1.
Para um contador módulo 6, os estados válidos são 0 a 5. Com estado antigo 5 e , o próximo é 0, porque o contador volta ao início em vez de avançar para 6. Comparar com 6 em vez de 5 faria aparecer um sétimo estado fora do módulo.
Usa flip-flops para módulo e define o destino dos códigos não usados. Em módulo 6, os estados 6 e 7 podem recuperar para 0, e essa escolha deve entrar nas equações para que o contador não fique preso fora da sequência.
Setup, hold e caminho crítico
D deve estar estável durante antes do flanco e depois, enquanto Q só muda após . Sem skew, o período entre dois registos tem de satisfazer
A restrição de hold é diferente e usa o caminho mais curto: .
Com ns, caminho combinatório de 6 ns e setup de 1 ns, o período mínimo é 8 ns, com frequência máxima 125 MHz neste modelo. Se o caminho mais curto chegar em 0,3 ns e hold exigir 0,5 ns, é necessário aumentar o atraso desse caminho; não somes o caminho mais longo e o mais curto na mesma conta.
Exercícios
Uma troca num flanco
Dois flip-flops D têm e . Partem de AB=10. Dá o estado depois de três flancos.
Pista
Cada flanco troca os valores antigos.
Mais uma pista
Calcula ambos os D antes de alterar qualquer Q.
Solução
Os estados são 01,10,01. No primeiro flanco, D_A recebe o B antigo, 0, e D_B recebe o A antigo, 1. Não ficam ambos a 0 nem ambos a 1. A ligação implementa uma troca a cada flanco.
Confere a tua resposta:
- Estados 01,10,01.
- Calcula os dois D com o estado anterior.
Erros frequentes
Atualizar A e depois calcular D_B com esse novo valor deixa de modelar flip-flops simultâneos.
Prioridade dos controlos
Um registo Q=9 tem reset síncrono ativo a 1, prioritário sobre enable. D=5, reset=1 e enable=1, mas ainda não ocorreu o flanco. Qual é Q agora e depois do flanco?
Pista
Síncrono significa que o reset também espera pelo flanco.
Solução
Antes do flanco Q continua 9. No flanco, reset tem prioridade e Q passa a 0, apesar de enable=1 e D=5. Se o reset fosse assíncrono, Q seria colocado a 0 assim que reset ficasse ativo.
Confere a tua resposta:
- Antes do flanco Q=9; depois Q=0.
- Distingue reset síncrono de assíncrono.
Erros frequentes
Não confundas prioridade com atuação imediata de um reset síncrono.
Setup e hold em separado
Num caminho sem skew, ns, ns e ns. O caminho mínimo tem ns e ns; hold exige 0,4 ns. Determina período mínimo e se hold se cumpre.
Pista
O máximo limita o período; o mínimo limita hold.
Mais uma pista
Aumentar o período não aumenta o atraso do caminho mais curto.
Solução
O período tem de ser pelo menos 1,5+5+0,5=7 ns, frequência até aproximadamente 142,857 MHz. Hold não se cumpre: ns, abaixo de 0,4 ns. Falta pelo menos 0,1 ns de atraso mínimo neste modelo. Um relógio mais lento, sozinho, não corrige essa falta.
Confere a tua resposta:
- Período mínimo 7 ns.
- Hold falha por 0,1 ns e não se resolve só com relógio lento.
Erros frequentes
Não acrescentes hold à conta do período, porque hold verifica o caminho mínimo em separado.
Módulo cinco com enable
Projeta a regra de próximo estado de um contador módulo 5 com enable e reset prioritário. Quantos flip-flops precisa? Define recuperação dos estados inválidos.
Pista
São válidos 0,1,2,3,4.
Mais uma pista
A passagem 4→0 tem de ocorrer no mesmo flanco da contagem seguinte.
Solução
Precisa de 3 flip-flops. Se reset=1, próximo=0. Caso contrário, estados 5,6,7 recuperam para 0; estados válidos com enable=0 conservam; com enable=1, 4 vai para 0 e 0..3 incrementam. Esta recuperação é uma escolha explícita, prioritária sobre enable no caso inválido.
Confere a tua resposta:
- Três FF e estados válidos 0 a 4.
- Define reset, enable, 4→0 e recuperação de 5 a 7.
Erros frequentes
Testar o estado 5 para voltar a zero faria o contador visitar seis valores, ou seja, deixaria de ser módulo 5.
A tabela diz quando trocar
Um registo de dois bits deve seguir o ciclo 00→01→11→10→00. Constrói a tabela dos controlos T1,T0 para dois flip-flops T e obtém equações em função do estado atual Q1,Q0.
Pista
Para cada bit usa .
Mais uma pista
Marca 1 só nos bits que mudam em cada seta.
Solução
Em 00 só Q0 muda: T1T0=01. Em 01 só Q1 muda: 10. Em 11 só Q0 muda: 01. Em 10 só Q1 muda: 10. Assim e . No estado 11, por exemplo, T1=0 conserva Q1=1 e T0=1 troca Q0 para 0.
Confere a tua resposta:
- T1,T0: 01,10,01,10 nos estados 00,01,11,10.
- T1=Q1 XOR Q0 e T0=NOT(T1); todas as transições usam o estado antigo.
Erros frequentes
Não ligues a cada T o valor que desejas no próximo estado. Essa ligação seria correta para D, mas T indica troca ou conservação.