Dividir un reloj en Verilog, ¿está bien?

3

Dividir un reloj en Verilog es un ejercicio básico, y hay un montón de respuestas en línea sobre cómo hacerlo. Lo que quiero saber es si está bien usar un reloj que se ha dividido usando verilog en un FPGA real para hacer flip flops.

Lo pregunto porque el conocimiento común dicta que nunca debemos poner una lógica combinacional en una línea de reloj y luego usar la señal resultante para impulsar el reloj de un flip flop.

Claro, un divisor de reloj no es lo que llamaríamos lógica combinacional, pero al final del día, todavía estaría poniendo puertas lógicas entre una red de reloj compleja (probablemente) y la señal de reloj de un flip-flop .

Vale la pena señalar que ciertamente he hecho esto en algunos proyectos de hardware y ha funcionado, pero fue en un FPGA de bajo rendimiento. Me pregunto si esto funcionaría de manera consistente y confiable en la mayoría de los FPGA, o si simplemente tuve suerte con el chip que estaba usando.

    
pregunta johnny_boy

1 respuesta

2

Hay algunas cosas a considerar

  1. El chip debe tener realmente la ruta para llevar una señal de reloj desde una salida de registro a una red de reloj. La mayoría de los FPGA con los que he trabajado pueden hacer una comprobación.

  2. Las redes de reloj son un recurso limitado, mientras que algunos chips pueden sincronizar las redes normales, ya que es probable que tengan un peor comportamiento de tiempo.

  3. Es probable que tengas que decirle manualmente al analizador de tiempo lo que estás haciendo para obtener un comportamiento / análisis de tiempo adecuado; es probable que los detalles sean específicos del chip.

  4. Es probable que haya un sesgo de fase sustancial entre el reloj original y el reloj generado.

  5. Para asegurarse de que el reloj esté limpio, debe provenir directamente de una salida de registro, no de lógica combinatoria.

En general, puede hacerlo, pero lo consideraría un último recurso. La mayoría de las veces puede obtener resultados similares con muchos menos dolores de cabeza utilizando señales de habilitación y / o utilizando múltiples salidas del pll del chip.

    
respondido por el Peter Green

Lea otras preguntas en las etiquetas