Altifigence Academy

47 / 63 · Conceito

Botões reais: sincronização, debounce e um único evento

Distinga sincronização e rebote dos contatos e projete um filtro de amostras consecutivas.

Um acionamento pode produzir muitas transições

Um contato mecânico pode fechar e abrir várias vezes antes de estabilizar. Além disso, o botão muda assincronamente em relação ao clock. A sincronização introduz o sinal no domínio de clock; a eliminação de rebotes interpreta transições repetidas breves como um estado estável. Dois flip-flopsFlip-flop Elemento que captura a entrada na borda de clock especificada e a mantém até a próxima. A entrada deve cumprir setup e hold. Saiba mais não eliminam automaticamente o rebote.

Separe as funções dos estágios
  1. Botão assíncrono: Apresenta rebote dos contatos e assincronia em relação ao clock
  2. Sincronização: Receba o nível de um bit no domínio de clock
  3. Debounce: Aceite uma mudança somente após amostras estáveis consecutivas
  4. Detecção de borda: Gere um evento de um ciclo ao aceitar 0→1

Esse fluxo pressupõe um nível de botão de um bit mantido por tempo suficiente. Pulsos curtos, dados multibit coerentes e o tratamento de clocks assíncronos exigem outros projetos.

Regra de N amostras consecutivas

Seja q o estado aceito, x a entrada sincronizada e count a quantidade de amostras consecutivas diferentes de q. Se x=q, zere count. Se x≠q, incremente e, na enésima amostra consecutiva, aceite q=x e retorne count a 0.

Para N=3 e q inicial 0, cada coluna é um instante de amostragem da entrada sincronizada, não uma tensão física dos contatos.

Amostra012345678
x010111101
count depois010120010
q depois000001111
Evento de subida000001000
N=3: aceite após confirmar amostras opostas consecutivas
Ver os dados da forma de onda
Dados da forma de onda: cada caractere é um intervalo; um ponto mantém o estado anterior; p representa um ciclo de clock.
SinalForma de ondaValores do barramento
amostra2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q depois0....1...
evento de subida0....10..

Especifique latência e largura do contador

Com intervalo TsT_s, a aceitação demora aproximadamente de (N−1)Ts(N-1)T_s a NTsNT_s conforme a fase da mudança, mais a latência do sincronizador. Para exigir conservadoramente «estável por 10 ms», considere também o intervalo entre a primeira e a última amostra ao escolher N. Mudanças breves entre amostras podem passar despercebidas: coincidência consecutiva não demonstra tensão fisicamente constante durante todo o intervalo. Defina características do botão e amostragem em conjunto.

Se count só armazena 0 a N−1, precisa de max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil) bits. Trate também N=1, que deve aceitar já a primeira amostra oposta; a ordem da comparação com N−1 importa.

Um acionamento, um evento

Se q_next for o novo estado aceito, rise=q‾ qnextrise=\overline q\,q_{next}. A tabela gera o evento na mesma amostra da aceitação. Comparar q com uma cópia atrasada um ciclo em outro registradorRegistrador Circuito que armazena vários bits de estado. Os registradores síncronos deste curso capturam a entrada especificada na borda de clock. Saiba mais pode acrescentar latência conforme o ponto de observação; especifique também quando o evento é consumido.

Experimente

Com N=3, q inicial 0 e entradas 1,1,0,1,1,1, em qual amostra o estado muda? Se N=8 e count armazena 0–7, qual largura mínima é necessária?

Ler a explicação

O 0 da terceira amostra reinicia a contagem consecutiva: 1 é aceito na sexta. Armazenar 0–7 exige três bits. Outra implementação que também armazene 8 exige quatro: confira primeiro o intervalo.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.