Conversión de reloj de 100 MHz a reloj de 65 MHz para VGA

He escrito un código HDL para convertir la frecuencia del reloj en FPGA (100 MHz) a una frecuencia compatible con mi monitor VGA (65 MHz):

reg FLAG = 0;
reg [26:0]count;
always@(posedge clock)
begin
    if(reset)
    count <= 'd0;

    else if(count==65000000)
    begin
        FLAG = 1;
        count <= 'd0;
    end
    else
    begin
        count <= count+1;
        FLAG=0;
    end
end

El valor de la bandera seguiría cambiando de 0 a 1 con una frecuencia de 65 MHz, pero aparentemente eso no funciona para mí. ¿Alguien puede señalar el error aquí? Además, ¿hay una mejor manera de convertir una frecuencia de reloj a otra?

100000000 = 1 segundo, 65000000 = 0,65 segundos - no está cambiando la frecuencia
No puede hacer 65 MHz desde 100 MHz con contadores. Tendrías que contar una fracción del tiempo. Si cuentas una vez con un contador de 100MHz, la salida ya estaría en 50MHz. Una forma de obtener 65MHz es con un PLL que multiplica la frecuencia. primero y luego se divide para obtener los 65MHz. Por ejemplo, podrías multiplicar 100 MHz por 13, luego dividir por 20 y obtener 65 MHz.
Específicamente en Artix, desea utilizar un módulo DCM (administrador de reloj digital), que puede multiplicar y dividir frecuencias por una amplia gama de factores. 65/100 no sería ningún problema.
Otra opción es obtener una salida muy nerviosa, en promedio de 65 MHz.
¿Cómo hacemos eso @pipe...?
La señal resultante sería tan mala que ni siquiera quiero discutirla. Esperemos que @DaveTweed escriba una respuesta real para usted.
@DaveTweed ... ¿Puede dar más detalles sobre cómo usar DCM?
Lea la documentación: 7 Series FPGAs Clocking Resources User Guide (UG472) . Aparentemente, ahora se llaman "Mosaicos de administración de reloj". Habrá un "Asistente" en Vivado para ayudarte a configurarlo.
@pipe, ni siquiera puedes hacer eso porque 65 MHz es más de la mitad de 100 MHz. Al menos no sin jugar con la lógica combinatoria en el reloj de 100 MHz.
@ThePhoton Buen punto, ni siquiera pensé en eso. Pero la idea es estúpida de todos modos, la salida resultante sería (probablemente) completamente inutilizable...
¿Cómo determinaste que necesitas un reloj de 65 MHz? Sé que los monitores VGA estándar funcionan a 640x480 a 60 fps y requieren un reloj de píxeles de 25,2 MHz. Consulte esta respuesta electronics.stackexchange.com/questions/271148/…
Estoy tratando de manejar una pantalla de 1024X768 a 60 Hz. Consulte el enlace: web.mit.edu/6.111/www/s2004/NEWKIT/vga.shtml
Veo. Puede usar el bloque de IP del asistente de reloj para crear el reloj aproximado. Además, ¿cómo conectas tu monitor a FPGA? ¿Tienes un conductor?
Yo uso un cable VGA estándar. ¿Qué es este bloque de IP?
Asistente del reloj . El cable VGA estándar no produce una señal VGA estándar, es solo un cable. Necesita algo que genere señales de control apropiadas. Sé que esto no está relacionado con la pregunta, pero es posible que encuentre este problema más adelante.

Respuestas (2)

Vas a tener que instanciar un DCM o PLL para hacer esto. Consulte la sección de sincronización en el manual de la FPGA que está utilizando para saber cómo hacerlo correctamente. Deberá hacer algo como 100 MHz / 10 * 65 / 10 = 65 MHz o quizás 100 MHz * 13 / 20 = 65 MHz. Deberá asegurarse de que el VCO funcione en el rango de frecuencia adecuado.

Debe asegurarse de no pasar el límite máximo de DCM o PLL, solo lea el UG472 para obtener ayuda. La mejor manera de hacer esto es usar la guía que viene con Vivado para crear el bloque o la configuración correctos.

Respondiendo a mi propia pregunta, utilicé Clocking Wizard, que forma parte de Vivado, gracias a @Naz por orientarme en la dirección correcta. Clocking Wizard crea un módulo para usted y, según sus especificaciones, puede generar cualquier frecuencia de reloj a partir de ese módulo.

El asistente de reloj se puede encontrar en Project Manager->Catálogo IP->Características y diseño de FPGA->Clocking.

Para obtener más detalles sobre el uso correcto de Clocking Wizard, consulte el siguiente enlace: http://gadgetfactory.net/learn/2017/02/22/fpga-clocking-clocking-wizard-in-xilinx-ise/#Run_the_clocking_wizard_to_generate_your_desired_clocks