So multiplizieren Sie die Basissystemuhr mit .xdc-Einschränkungen in Vivado

Geben Sie hier die Bildbeschreibung einDiese Frage mag lächerlich rudimentär sein, aber ich habe die verfügbaren Anleitungen und Videos von Xilinx durchgesehen und mir die Haare ausgerissen ... mein Problem ist einfach Folgendes: Ich möchte den 100-MHz-Basistakt auf meinem nexys4-DDR-Board verwenden und ihn mit 2 multiplizieren. Kann kann dies einfach mit der .xdc-Constraint-Datei erreicht werden? Ich habe versucht, die IP des Taktungsassistenten zu verwenden, aber vielleicht verstehe ich einfach nicht, wie ich die Uhr in Bezug auf mein Quelldesign instanziieren soll. Ich habe ein paar relevante Aufnahmen beigefügt, um mein Problem besser zu erklären. Jede Hilfe auf diesem würde sehr geschätzt werden.

Antworten (2)

Nein, das kannst du nicht.

Die .xdc steuert nicht das Design, sie informiert das Tool über die physische Realität des Boards. Das Einstellen des Takts auf 100 MHz oder 200 MHz ändert das Design in keiner Weise, das Tool überprüft immer, ob Ihr Design mit der von Ihnen eingegebenen Einschränkung funktioniert. Wenn Sie vergessen, eine Einschränkung einzugeben oder eine falsche Einschränkung eingeben, geraten Sie in eine Situation, in der das Tool Ihnen sagt, dass das Design funktioniert, obwohl dies nicht der Fall ist (oder umgekehrt).

Sie müssen den Stempelassistenten verwenden. Der Eingangstakt für den Taktassistenten kommt von einem Oszillator auf der Platine (oder einem anderen Takt, der von einem Taktassistenten generiert wird), in Ihrem Fall der 100-MHz-Oszillatortakt. Sie stellen die Parameter des Assistenten für die gewünschten Ausgangstaktfrequenzen ein (2x Zeiteingangstakt), und voilà!

Es gibt mehrere Referenzdesigns für Ihr Board, Sie sollten sich diese ansehen, um zu sehen, wie die Kernfunktionen funktionieren.

Danke für Ihre Antwort. Ich habe tatsächlich etwas mehr getan, als nur die .xdc-Datei über create_clock-Befehle zu ändern. Mein Prozess war: 1) Erstellen Sie eine benutzerdefinierte IP eines einfachen SVGA-Controllers. 2) Verwenden Sie das Blockdesign, um den Taktungsassistenten mit dem SVGA-Block zu verknüpfen und die externen Pins mit den entsprechenden Pins zu verbinden, auf die ich in der .xdc-Datei verwiesen habe. 3) Erstellen Sie .v aus einer extrapolierten Instanziierungsvorlage aus der RTL 4)Hierarchie aktualisieren und abschließend kompilieren. Das Ganze geht durch und sagt, dass es die Last mit der richtigen Geschwindigkeit antreibt, aber in Wirklichkeit passiert nichts.
Hast du es simuliert?
Nein, habe ich noch nicht, scheint aber der wahrscheinlich nächste Schritt zu sein. Ich werde eine Testbench schreiben und sehen, was ich kann. Danke für deine Antwort
Ein SVGA-Block ist ziemlich komplex, Ihr Problem könnte überall sein. Wenn Sie sich bezüglich Ihrer Uhr nicht sicher sind, isolieren Sie das Problem. Sie können beispielsweise einen Zähler erstellen, der alle 200e6 Taktzyklen eine LED umschaltet, oder einfach die Uhr ausgeben und ihre Frequenz auf einem Oszilloskop messen. Wenn Xilinx für die Arbeitsuhr 200 MHz meldet, bedeutet dies, dass Sie die Taktstruktur wahrscheinlich richtig angeschlossen haben.

Meines Wissens nicht. Im Allgemeinen müssen Sie die Eingangstaktfrequenz in der Beschränkungsdatei angeben und dann die erforderlichen Taktverwaltungs-/PLL-Komponenten instanziieren, um die neue Taktfrequenz zu synthetisieren. Die Einschränkung für die interne Uhr sollte von den Tools automatisch generiert werden.