Konvertieren eines 100-MHz-Takts in einen 65-MHz-Takt für VGA

Ich habe einen HDL-Code geschrieben, um die Frequenz des Takts auf FPGA (100 MHz) in eine Frequenz umzuwandeln, die mit meinem VGA-Monitor (65 MHz) kompatibel ist:

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

Der Wert des Flags würde sich bei einer Frequenz von 65 MHz ständig von 0 auf 1 ändern, aber das funktioniert anscheinend nicht für mich. Kann hier jemand auf den Fehler hinweisen? Gibt es auch eine bessere Möglichkeit, eine Taktfrequenz in eine andere umzuwandeln?

100000000 = 1 Sek., 65000000 = 0,65 Sek. - Sie ändern die Frequenz nicht
Mit Zählern kann man aus 100 MHz keine 65 MHz machen. Sie müssten einen Bruchteil der Zeit zählen. Zählt man einmal mit einem 100MHz Zähler, läge der Ausgang bereits bei 50MHz. Eine Möglichkeit, 65 MHz zu erhalten, ist mit einer PLL, die die Frequenz multipliziert. zuerst und teilt dann, um die 65 MHz zu erhalten. Zum Beispiel könnten Sie 100 MHz mit 13 multiplizieren, dann durch 20 teilen und 65 MHz erhalten.
Speziell auf dem Artix möchten Sie ein DCM-Modul (Digital Clock Manager) verwenden, das Frequenzen mit einer Vielzahl von Faktoren multiplizieren und dividieren kann. 65/100 wäre überhaupt kein Problem.
Eine weitere Option ist eine sehr zittrige Ausgabe mit durchschnittlich 65 MHz.
Wie machen wir das @pipe ...?
Das resultierende Signal wäre so schlecht, dass ich es nicht einmal diskutieren möchte. Hoffen wir, dass @DaveTweed eine tatsächliche Antwort für Sie schreibt.
@DaveTweed ... Können Sie näher darauf eingehen, wie DCM verwendet wird?
Lesen Sie die Dokumentation: 7 Series FPGAs Clocking Resources User Guide (UG472) . Anscheinend heißen sie jetzt "Clock Management Tiles". In Vivado gibt es einen "Wizard", der Ihnen bei der Konfiguration hilft.
@pipe, das kannst du nicht einmal tun, weil 65 MHz mehr als die Hälfte von 100 MHz sind. Zumindest nicht, ohne mit kombinatorischer Logik auf dem 100-MHz-Takt herumzuspielen.
@ThePhoton Guter Punkt, habe nicht einmal darüber nachgedacht. Aber die Idee ist sowieso doof, die resultierende Ausgabe wäre (wahrscheinlich) völlig unbrauchbar ...
Wie haben Sie festgestellt, dass Sie einen 65-MHz-Takt benötigen? Ich weiß, dass die Standard-VGA-Monitore 640 x 480 bei 60 fps liefern und einen Pixeltakt von 25,2 MHz benötigen. Sehen Sie sich diese Antwort an electronic.stackexchange.com/questions/271148/…
Ich versuche, ein Display für 1024 x 768 bei 60 Hz anzusteuern. Siehe den Link: web.mit.edu/6.111/www/s2004/NEWKIT/vga.shtml
Ich verstehe. Sie können den IP-Block des Uhrassistenten verwenden, um die ungefähre Uhr zu erstellen. Wie verbinden Sie Ihren Monitor mit FPGA? Haben Sie einen Fahrer?
Ich verwende ein Standard-VGA-Kabel. Was ist dieser IP-Block?
Uhr-Assistent . Ein Standard-VGA-Kabel erzeugt kein Standard-VGA-Signal – es ist nur ein Kabel. Sie brauchen etwas, das entsprechende Steuersignale erzeugt. Ich weiß, dass dies nicht mit der Frage zusammenhängt, aber Sie können später auf dieses Problem stoßen.

Antworten (2)

Dazu müssen Sie ein DCM oder PLL instanziieren. Lesen Sie den Taktungsabschnitt im Handbuch für das von Ihnen verwendete FPGA, um zu erfahren, wie Sie dies richtig machen. Sie müssen so etwas wie 100 MHz / 10 * 65 / 10 = 65 MHz oder vielleicht 100 MHz * 13 / 20 = 65 MHz machen. Sie müssen sicherstellen, dass der VCO im richtigen Frequenzbereich arbeitet.

Sie müssen sicherstellen, dass Sie die maximale Grenze des DCM oder der PLL nicht überschreiten, lesen Sie einfach das UG472 zur Hilfe. Verwenden Sie dazu am besten die Anleitung, die Vivado beiliegt, um die richtigen Blöcke/Einstellungen zu erstellen.

Um meine eigene Frage zu beantworten, habe ich den Clocking Wizard verwendet, der Teil von Vivado ist, danke an @Naz, dass er mich in die richtige Richtung gewiesen hat. Clocking Wizard erstellt ein Modul für Sie und abhängig von Ihren Spezifikationen können Sie jede Taktfrequenz aus diesem Modul generieren.

Den Clocking Wizard finden Sie unter Project Manager->IP Catalog->FPGA Features and Design->Clocking.

Für weitere Details zur korrekten Verwendung des Clocking Wizard habe ich auf den folgenden Link verwiesen: http://gadgetfactory.net/learn/2017/02/22/fpga-clocking-clocking-wizard-in-xilinx-ise/#Run_the_clocking_wizard_to_generate_your_desired_clocks