Estoy trabajando en un circuito en Verilog para ser implementado en una FPGA. La salida del circuito de la unidad de un motor paso a paso. La entrada es una secuencia de pulsos de una máquina.
Puedo generar un paso a paso de pulso cada X husillo de pulsos. No hay problema, funciona muy bien.
Durante la simulación, sin embargo, me di cuenta de que si el paso a paso de la señal es alta cuando el husillo de pulsos de parada (por ejemplo, alguien que apaga la máquina), el paso a paso de la señal se mantiene alta. Esto es debido a que me puse de nuevo a la baja en el borde de ataque del eje de pulso, y no hay más.
Esto significa que (con una mala implementación) el paso a paso, se podría correr a toda velocidad lo que provocaría una máquina de choque. Ahora, espero que el controlador paso a paso iba a funcionar sólo en el borde de ataque, pero nunca se sabe.
Finalmente, la pregunta - ya no puedo depender de mi "reloj" (el eje de pulsos) para continuar ad infinitum, lo que es una buena manera de hacer el paso a paso, pulso ir de baja después de un rato.'
Como se puede ver, ni siquiera puedo describirlo adecuadamente, así que no puedo Google, jeje. Si alguien pudiera facilitarme algunas palabras para buscar en (o, mejor aún, a describir una técnica estándar) voy a estar fuera de las carreras.
Gracias!
EDITAR -
Estoy experimentando con el siguiente (escrito de memoria...) Es que esta tristeza, o una buena idea?
always @(posedge Stepper) begin
#50 // or whatever, this is a low Hz system...
Stepper = 0;
end
¿O es que el retraso sólo trabajo en el simulador?