1 votos

Verilog: ¿Comprobar si una señal es 100 ticks activa?

Tengo una entrada y una salida. Y quiero que la salida se convierta en 1, si la entrada fue 100 ticks activos (100 ciclos).

module check_100(
   input wire clock,
   input wire reset,
   input wire in_a,
   output reg out_a);  

reg[10:0] counter;  

always @(posedge clock) begin
    counter <= counter + 1;
    if(in_a && (counter == 100)) begin
        out_a <= 1;
    end
end

Pero parece que no funciona correctamente. ¿Es esta una buena forma de comprobar si una señal está activa o no en 100 ticks/ciclos?

¡Gracias! :)

2voto

dwestbrook Puntos 1754

Se comprueba si la señal está activa 100 ciclos después del arranque.

Lo que realmente quieres es incrementar el contador sólo cuando la señal esté activa, y reiniciar el contador cuando se vuelva inactiva.

1voto

Dan Auclair Puntos 3063

1) Necesitas incrementar tu contador cada vez que la entrada sea alta (lo cual haces)
2) Tienes que poner a cero tu contador cada vez que la entrada esté baja (cosa que no haces)
3) Tienes que dejar de contar después de haber contado hasta 100 (en caso de que quieras que la salida permanezca alta). En realidad se mantendrá alta en su caso, pero sólo porque usted no está haciendo el (2).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X