30 / 63 · Concepto
Estado siguiente del contador y prioridad del reset
Integre incremento, conservación, reset y retorno modular en una especificación y calcule cada flanco.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Defina primero la función de estado siguiente
Un contador libre de bits con reset síncrono y enable cumple:
ResetReset Control que devuelve el estado a un valor inicial especificado. Deben definirse su carácter síncrono o asíncrono y su prioridad frente a otros controles. tiene prioridad máxima; enable=0 conserva. En la visualización siguiente, puede cambiar enable para comparar el incremento y la conservación del estado.
En el control, parta de q=11 y seleccione reset=1: solo el estado siguiente pasa a 00. Pulse el siguiente reloj para observar cuándo cambia el almacenamiento. Desactive reset y recorra 00→01→10→11→00. Con enable=0, compruebe que avanzan los flancos pero q permanece.
El reset síncrono tiene prioridad sobre enable. Con enable=0, se conserva el valor almacenado. q=11; q_next = (q + 1) mod 4
Prepare una predicción por flanco
Para dos bits, estado inicial 3, reset=1 en el primer flanco y luego 0, los estados posteriores son 0,1,2,3,0. Activar reset entre flancos no lleva inmediatamente a 0 un 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 síncrono antes del flanco ascendenteFlanco ascendente Instante en que el reloj pasa de 0 a 1. Se distingue del nivel alto, que abarca todo el intervalo con CLK=1. Más información.
| Flanco | reset antes | C anterior | C actualizado |
|---|---|---|---|
| 1 | 1 | 3 | 0 |
| 2 | 0 | 0 | 1 |
| 3 | 0 | 1 | 2 |
| 4 | 0 | 2 | 3 |
| 5 | 0 | 3 | 0 |
Cada columna de la onda registra un flanco. Las entradas son anteriores y el estado «después» es posterior a la actualización. La alineación muestra orden de muestras, no retardo físico de propagaciónRetardo de propagación Tiempo desde un cambio de entrada hasta que la salida se estabiliza en el valor correcto. La equivalencia lógica y el comportamiento temporal son propiedades distintas. Más información. Desde 3, el primer reset vence al incremento; el último flanco vuelve de 3 a 0.
Ver los datos de la forma de onda
| Señal | Forma de onda | Valores del bus |
|---|---|---|
| flanco | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| count antes | 23452 | 11 → 00 → 01 → 10 → 11 |
| count después | 23452 | 00 → 01 → 10 → 11 → 00 |
No mezcle significados de reset
Un if(rst) dentro de always_ff @(posedge clk) es síncrono. Añadir un flanco de reset a la lista de eventos lo hace asíncrono y cambia la función. Su desactivación tiene requisitos como recovery/removal; no lo cambie solo porque llegue antes a 0.
Un contador que produce pulsos periódicos también debe especificar cuándo los activa: mientras el estado es máximo o durante el ciclo posterior al retorno a 0. Cambian tanto la ecuación de salida como su observación.
Inténtalo tú
Un contador de tres bits está en 7. En el primer flanco rst=0, en=0; en el siguiente rst=0, en=1. ¿Qué estados resultan?
Leer la explicación
Primero conserva 7; después vuelve a 0 por el límite de tres bits. Para conservar 8 haría falta mayor ancho o una política explícita de saturación o error.