Soy nuevo aquí y tengo el siguiente problema. He desarrollado un módulo en vhdl que escala la frecuencia de un clk de entrada por el valor de preescalado de entrada (0-255) s.t. la frecuencia de la señal de salida es f_out = f_in / (1 + preescala).
Mi diseño funciona bien en la simulación, pero de pasados cursos universitarios y experiencia, sé que esto aún está lejos de funcionar en hardware.
Lo que creo que podría causar un problema es lo siguiente: Tengo una señal interna que cambia de nivel cuando debería producirse un flanco ascendente para clk_out y una que cambia de nivel cuando se produce un límite descendente para clk_out. clk_out es simplemente un XOR de ambos ... así que detrás de estas dos señales internas con búfer tengo una pequeña parte combinatoria que genera clk_out. Mi diseño mantiene el ciclo de trabajo en un 50% para que se pueda generar un flanco descendente en un flanco descendente de clk_in, por lo que no puedo simplemente clop_out flop.
Así que mis preguntas son:
- ¿La parte combinatoria causará problemas en un diseño de fpga? Después de todo ... clk_out se usará como una señal cloxk.
- ¿Hay tal vez una mejor manera de abordar esto? Realmente solo necesito el borde ascendente de clk_out, por lo que el ciclo de trabajo no es demasiado crítico, sin embargo, ¿cómo me doy cuenta? ¿Me doy cuenta del caso clk_in = clk_out?