47 / 63 · Concepto
Botones reales: sincronización, antirrebote y un único evento
Distinga sincronización y rebote de contactos y diseñe un filtro de muestras consecutivas.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Una pulsación puede producir muchas transiciones
Un contacto mecánico puede cerrarse y abrirse varias veces antes de estabilizarse. Además, el botón cambia asíncronamente respecto al reloj. Sincronizar lo introduce en el dominio de reloj; eliminar rebotes interpreta transiciones repetidas breves como un estado estable. Dos flip-flopsFlip-flop Elemento que captura la entrada en el flanco de reloj especificado y la conserva hasta el siguiente. La entrada debe cumplir setup y hold. Más información no eliminan automáticamente el rebote.
- Botón asíncrono: Presenta rebotes de contacto y asincronía respecto al reloj
- Sincronización: Reciba el nivel de un bit en el dominio de reloj
- Antirrebote: Acepte un cambio solo tras muestras estables consecutivas
- Detección de flanco: Genere un evento de un ciclo al aceptar 0→1
Este flujo supone un nivel de botón de un bit mantenido suficiente tiempo. Pulsos breves, datos multibit coherentes y el tratamiento de relojes asíncronos requieren otros diseños.
Regla de N muestras consecutivas
Sea q el estado aceptado, x la entrada sincronizada y count el número de muestras consecutivas diferentes de q. Si x=q, borre count. Si x≠q, increméntelo y, en la enésima muestra consecutiva, acepte q=x y ponga count de nuevo a 0.
Para N=3 y q inicial 0, cada columna es un instante de muestreo de la entrada sincronizada, no una tensión física de contactos.
| Muestra | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| x | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
| count después | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
| q después | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| Evento ascendente | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Ver los datos de la forma de onda
| Señal | Forma de onda | Valores del bus |
|---|---|---|
| muestra | 234523452 | 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 |
| x | 0101...01 | |
| q después | 0....1... | |
| evento de subida | 0....10.. |
Especifique latencia y ancho del contador
Con intervalo , la aceptación tarda aproximadamente entre y según la fase del cambio, más la latencia del sincronizador. Para exigir conservadoramente «estable durante 10 ms», considere también el intervalo entre la primera y última muestra al elegir N. Cambios breves entre muestras pueden pasar inadvertidos: coincidencia consecutiva no demuestra tensión físicamente constante durante todo el intervalo. Defina características del interruptor y muestreo conjuntamente.
Si count solo almacena 0 a N−1, requiere bits. Trate también N=1, que debe aceptar ya la primera muestra opuesta; importa el orden de comparación con N−1.
Una pulsación, un evento
Si q_next es el nuevo estado aceptado, . La tabla genera el evento en la misma muestra de aceptación. Comparar q con una copia retrasada un ciclo en otro registroRegistro Circuito que almacena varios bits de estado. Los registros síncronos de este curso capturan la entrada especificada en el flanco de reloj. Más información puede añadir latencia según dónde se observe; especifique también cuándo se consume el evento.
Inténtalo tú
Con N=3, q inicial 0 y entradas 1,1,0,1,1,1, ¿en qué muestra cambia el estado? Si N=8 y count almacena 0–7, ¿qué ancho mínimo necesita?
Leer la explicación
El 0 de la tercera muestra reinicia la cuenta consecutiva: se acepta 1 en la sexta. Almacenar 0–7 requiere tres bits. Otra implementación que almacene también 8 requiere cuatro: compruebe primero el rango.