mikrocontroller.net

Forum: FPGA, VHDL & Co. Clock Constraints in cilinx vivado


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: vivado_clk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuche nun gerade seit Stunden die Taktrate via vivado Constraints 
zu definieren. Ich habe ein DIGILENT ARTY S7 board. Im Contraint gibt es 
die 100MHz clock definition:
set_property -dict { PACKAGE_PIN R2    IOSTANDARD SSTL135 } [get_ports { CLK100MHZ }]; #IO_L12P_T1_MRCC_34 Sch=ddr3_clk[200]
create_clock -add -name sys_clk_pin -period 10.000 -waveform {0 5.000}  [get_ports { CLK100MHZ }];

in meiner verilog Beschreibung kann ich nun den Port CLK100MHZ  Nutzen.
Nun möchte ich aber gern, einen 60MHz Takt haben.

ALso hätte ich gedacht man bräuchte nun eine PLL bei der man den 100MHz 
Takt um den Faktor 3 Multipliziert und um den Faktor 5 Teilt.
create_generated_clock -divide_by 5 -multiply_by 3 -source [get_ports {CLK100MHZ}]  clk2

WIe müsste der create_generated_clock für 60MHz aussehen?

Autor: C. A. Rotwang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
vivado_clk schrieb:

> ALso hätte ich gedacht man bräuchte nun eine PLL bei der man den 100MHz
> Takt um den Faktor 3 Multipliziert und um den Faktor 5 Teilt.


Wenn du mit PLL eine interne DCM meinst, brauchst du am eingangspin nix 
anders constrainen, du musst lediglich eine DCM passend generieren und 
instanziieren. Zum Generieren nimmst du am besten den clocking wizard 
aus dem IP Catalog (Siehe snippet im Anhang)

PS: Durch einen Fehler in der Vorschau, ist womöglich das snippet 
doppelt und die Doublette kann nicht entfernt werden.

Autor: vivado_clk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Wenn ich nun versuche den clock wizzard zu laden dann bekomme ich 
komische fehler:
create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0
FALSE
ERROR: [IP_Flow 19-3188] Error occurred while initializing 'pll_clk_wiz_0_0'
Tcl error in update procedure while setting value 'MMCM' on the parameter 'PRIMITIVE'. FALSE

ERROR: [IP_Flow 19-3428] Failed to create Customization object pll_clk_wiz_0_0
CRITICAL WARNING: [IP_Flow 19-973] Failed to create IP instance 'pll_clk_wiz_0_0'. Error during customization.
ERROR: [BD 41-1712] Create IP failed with errors
ERROR: [BD 5-7] Error: running create_bd_cell  -vlnv xilinx.com:ip:clk_wiz:6.0 -type ip -name clk_wiz_0 .
ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors.
endgroup

Autor: vivado_clk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja nun ich würde es gerne ohne die IP versuchen.

Ich verstehe die OCnstrints syntax noch nicht so ganz. Aber es muss odch 
möglich sein, den vorhanden 100Mhz clock auf 60mhz zu bringen.

ich meine den create:generated_clock gobt es. .. ich verstehe nur noch 
wie man dieses constraint korrekt benutzt.

Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vivado_clk schrieb:
> Ja nun ich würde es gerne ohne die IP versuchen.
>
> Ich verstehe die OCnstrints syntax noch nicht so ganz. Aber es muss odch
> möglich sein, den vorhanden 100Mhz clock auf 60mhz zu bringen.
>
> ich meine den create:generated_clock gobt es. .. ich verstehe nur noch
> wie man dieses constraint korrekt benutzt.

Such dir nen Tutorial, mit timingconstraints kann man m.W. noch keine 
Taktgenerierung im FPGA steuern ausser Instanziierung des passenden 
FPGA-Moduls gehts es nicht.

http://users.wpi.edu/~rjduck/MMCM%20Vivado%20example%20VHDL.pdf
Beitrag "Vivado Clocking Wizard Clock-Output funktioniert nicht in Testbench"

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vivado_clk schrieb:
> Aber es muss odch möglich sein, den vorhanden 100Mhz clock auf 60mhz zu
> bringen.

Nein, das geht nicht. Du brauchst zwingend einen MMCM. Den kannst du 
über den Wizzard generieren oder manuell instanziieren, aber das will 
bei sowas eigentlich auch keiner.

Die Constraints sind lediglich dazu da, den Tools zu sagen, worauf sie 
optimieren und prüfen sollen.

Wenn du den MMCM nutzt, macht der IP Generator das für dich, da musst du 
erst mal gar nichts selbst angeben.

Ansonsten gibts auch einen Constraints Wizzard, wenn du das 
synthetisierte oder implementierte Design öffnest.

Autor: Vancouver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einem create_generated_clock-Constraint kannst Du keinen Clock 
erzeugen, sondern Du spezifizierst damit nur die Frequenz eines 
abgeleiteten Clocks. Erzeugen musst Du den selbst. Das ganze ist in 
diesem Video recht gut erklärt:

https://www.xilinx.com/video/hardware/creating-generated-clock-constraints.html

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.