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


von vivado_clk (Gast)


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:
1
set_property -dict { PACKAGE_PIN R2    IOSTANDARD SSTL135 } [get_ports { CLK100MHZ }]; #IO_L12P_T1_MRCC_34 Sch=ddr3_clk[200]
2
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.
1
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?

von C. A. Rotwang (Gast)


Angehängte Dateien:

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.

von vivado_clk (Gast)


Lesenswert?

Danke für die Antwort.

Wenn ich nun versuche den clock wizzard zu laden dann bekomme ich 
komische fehler:
1
create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0
2
FALSE
3
ERROR: [IP_Flow 19-3188] Error occurred while initializing 'pll_clk_wiz_0_0'
4
Tcl error in update procedure while setting value 'MMCM' on the parameter 'PRIMITIVE'. FALSE
5
6
ERROR: [IP_Flow 19-3428] Failed to create Customization object pll_clk_wiz_0_0
7
CRITICAL WARNING: [IP_Flow 19-973] Failed to create IP instance 'pll_clk_wiz_0_0'. Error during customization.
8
ERROR: [BD 41-1712] Create IP failed with errors
9
ERROR: [BD 5-7] Error: running create_bd_cell  -vlnv xilinx.com:ip:clk_wiz:6.0 -type ip -name clk_wiz_0 .
10
ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors.
11
endgroup

von vivado_clk (Gast)


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.

von C. A. Rotwang (Gast)


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"

von Christian R. (supachris)


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.

von Vancouver (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.