4 votos

Verilog - una línea permanece alto, lo necesito para ir a la baja después de un tiempo

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?

4voto

SandeepJ Puntos 1339

La mejor manera (dependiendo de la complejidad de su diseño final será) probablemente sería usar un rápido CMOS de oscilador para su CPLD reloj del sistema, y la tengan en el proceso de los pulsos de entrada y de salida de los motores paso a paso de pulso.
De esta manera, el reloj está funcionando todo el tiempo cuando el sistema está encendido, y se puede tomar el tiempo el período de la última entrada de pulso - si es por encima de un cierto límite, establecido el paso a paso de la línea de bajo.

Esta es la manera en que una sincrónico trabajos de diseño, tiene un sistema independiente amplia reloj y este se utiliza para "leer" (es decir, en un registro) y externas del proceso asincrónico de señales (como contraposición a las señales externas de sincronización de la lógica directamente)

Otra manera más sencilla sería tener otra entrada "reset" de la línea que establece en todos los registros y salidas a un determinado estado cuando se va de baja. Puede utilizar un simple RC paso bajo filtro en la entrada de pulsos de modo que cuando se pare, la línea de baja y el CPLD restablece.

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