29 / 63 · Concepto
Número de estados, ancho del contador y códigos no utilizados
Calcule bits de almacenamiento desde el rango y defina cómo recuperarse de estados inválidos.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Contar también es una máquina de estados
Un contador 0–9 necesita diez estados y al menos bits. 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 de cuatro bits tiene 16 patrones: elegir bien el ancho no completa la función módulo 10.
M es el número de estados, no el máximo. Contar de 0 a M−1 difiere de contar hasta M. Si admite M=1 como parámetro, use al menos un bit y mantenga siempre 0.
De los 16 códigos de cuatro bits, módulo 10 usa diez como estados normales. Después del ancho, diseñe la comparación y la recuperación.
- Diez estados: count normal va de 0 a 9
- Almacenamiento de cuatro bits: 16 códigos; 10–15 quedan libres
- Estado siguiente: Si en=1 y count≥9, pase a 0
Los estados fuera de rango también se especifican
¿Qué debe ocurrir si el contador módulo 10 llega a 12? Demuestre las condiciones de inicialización y 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. Más información que permiten asumir que no ocurre, o establezca recuperación a 0 desde 9 o más. Recuperación no significa tolerancia a todo fallo físico.
always_ff @(posedge clk) begin
if (rst) count <= 4'd0;
else if (en) begin
if (count >= 4'd9) count <= 4'd0;
else count <= count + 4'd1;
end
endEl ejemplo recupera también 10–15, pero solo en un flanco con en=1. Con enable=0 conserva incluso el valor inválido; una recuperación inmediata exigiría cambiar la prioridad.
Revisar ancho y revisar función son tareas distintas
Diez bits bastan para 0–999, pero un incremento libre llega a 1023. Se necesita comparación y selección para volver a 0 desde el máximo especificado. En contadores de direcciones, iteraciones o longitudes de paquete, confundirlo causa accesos o longitudes incorrectos.
Inténtalo tú
Calcule el ancho mínimo y los códigos no utilizados de un contador que repite 0–99. ¿Qué cambia si solo se suma 1 con ese ancho?
Leer la explicación
Hay 100 estados: requiere siete bits y quedan códigos sin usar. Incrementar sin más no vuelve a 0 en 99, sino que llega a 127: resulta módulo 128, no módulo 100.