Estoy trabajando en un circuito en Verilog para implementarlo en un CPLD. La salida del circuito impulsará un motor paso a paso. La entrada es un flujo de pulsos de una máquina.
Genero un pulso paso a paso cada X pulsos de husillo. No hay problema, funciona muy bien.
Sin embargo, mientras simulaba, noté que si la señal del paso a paso es alta cuando los impulsos del huso se detienen (por ejemplo, alguien apaga la máquina), la señal del paso a paso permanece alta. Esto se debe a que lo puse de nuevo en el borde anterior del pulso del husillo, y no hay más.
Esto significa que (con una implementación deficiente) el paso a paso podría ejecutarse a velocidad máxima , lo que provocaría un bloqueo de la máquina. Ahora, espero que el controlador paso a paso funcione solo en la vanguardia, pero nunca se sabe.
Finalmente, la pregunta, ya que no puedo depender de mi 'reloj' (los impulsos del cabezal) para continuar hasta el infinito, ¿cuál es una buena manera de reducir el pulso paso a paso después de 'un rato'?
Como puede ver, ni siquiera puedo describirlo correctamente, así que no puedo buscarlo en Google, jajaja. Si alguien me pudiera proporcionar algunas palabras para buscar (o mejor aún, describir una técnica estándar) me iré a las carreras.
¡Gracias!
EDITAR -
Estoy experimentando con lo siguiente (escrito de memoria ...) ¿Es esta tristeza o una buena idea?
always @(posedge Stepper) begin
#50 // or whatever, this is a low Hz system...
Stepper = 0;
end
¿O la demora solo funciona en el simulador?