Registos, contadores e temporização

Latches, flip-flops D e T, atualização simultânea e restrições de setup e hold.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

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 SS para colocar Q=1Q=1 e RR para colocar Q=0Q=0. Com S=R=0S=R=0 conserva o estado, enquanto S=R=1S=R=1 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 T=0T=0 e troca o valor se T=1T=1, com

QD+=D,QT+=Q⊕T.Q^+_D=D,\qquad Q^+_T=Q\oplus T.

O sobrescrito ++ designa o estado depois do flanco, não uma soma. Um relógio tem período TclkT_{clk} e frequência f=1/Tclkf=1/T_{clk}, 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 T=Q⊕Q+T=Q\oplus Q^+: 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):

tDLatchFF
t0111
t1001
t2101

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=1E=1 e conserva se E=0E=0: Q+=ED+E‾QQ^+=ED+\overline E Q 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 DA=BD_A=B e DB=A⊕xD_B=A\oplus x, inicialmente AB=00AB=00. Para entradas amostradas x=1,0,1,1x=1,0,1,1, calculamos DADBD_AD_B a partir do estado antigo ABAB. No flanco nn, esse resultado passa a estado seguinte A+B+A^+B^+:

nnABABxxA+B+A^+B^+
100101
201010
310100
400101

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 ww bits tem ww flip-flops com o mesmo relógio. Num registo de deslocamento de quatro bits, Q+=[Q2,Q1,Q0,x]Q^+=[Q_2,Q_1,Q_0,x] 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 NN registos de ww bits guarda NwNw 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 EE, cada bit troca quando todos os menos significativos estão a 1 e vão gerar carry. A regra dá T0=ET_0=E e Ti=E∏j=0i−1QjT_i=E\prod_{j=0}^{i-1}Q_j para i>0i>0: 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 E=1E=1, 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 ⌈log⁡2N⌉\lceil\log_2N\rceil flip-flops para módulo NN 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 tsetupt_{setup} antes do flanco e tholdt_{hold} depois, enquanto Q só muda após tcqt_{cq}. Sem skew, o período entre dois registos tem de satisfazer

Tclk≥tcq,max+tcomb,max+tsetup.T_{clk}\ge t_{cq,max}+t_{comb,max}+t_{setup}.

A restrição de hold é diferente e usa o caminho mais curto: tcq,min+tcomb,min≥tholdt_{cq,min}+t_{comb,min}\ge t_{hold}.

Com tcq,max=1t_{cq,max}=1 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 DA=BD_A=B e DB=AD_B=A. 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.

Voltar à explicação
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.

Voltar à explicação
Setup e hold em separado

Num caminho sem skew, tcq,max=1,5t_{cq,max}=1{,}5 ns, tcomb,max=5t_{comb,max}=5 ns e tsetup=0,5t_{setup}=0{,}5 ns. O caminho mínimo tem tcq,min=0,2t_{cq,min}=0{,}2 ns e tcomb,min=0,1t_{comb,min}=0{,}1 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: 0,2+0,1=0,30{,}2+0{,}1=0{,}3 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.

Voltar à explicação
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.

Voltar à explicação
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 Ti=Qi⊕Qi+T_i=Q_i\oplus Q_i^+.

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 T1=Q1⊕Q0T_1=Q_1\oplus Q_0 e T0=Q1⊕Q0‾T_0=\overline{Q_1\oplus Q_0}. 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.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.