Forum: FPGA, VHDL & Co. XILINX ISE zwie DCM's


von Sandra (Gast)


Lesenswert?

Liebe Kollegen!

Xilinx Virtex 5
Xilinx ISE

Ich muss 2 clocks generieren. CLK Input 100MHz, Output 75MHz und 150MHz.

Wenn ich meine clock an die DCM's hänge bekomme ich eine Fehlermeldung
ERROR:NgdBuild:462 - input pad net 'CLK_IN' drives multiple buffers

Wenn ich
1
bufgi:  IBUFG port map (s_clk_int,clk);
2
bufg75:  BUFG port map ( s_clk_75_i,s_clk_int);
3
bufg150: BUFG port map (s_clk_150_i, s_clk_int);
mache schreibt der Compiler
ERROR:NgdBuild:770 - IBUFG 'X150/CLKIN_IBUFG_INST' and BUFG 'bufg150' on 
net's_clk_150_i' are lined up in series. Buffers of the same direction 
cannot be placed in series.

lasse ich den BUFG weg und verwende nur den IBUFG ist es das selbe.

HILFE!!!
Wie geht das? Es muss doch möglich sein 2 DCM's zu verwenden!?

Bussi
Sandy

von Valko Z. (hydravliska)


Lesenswert?

Hi

wie/wo hast du den DCM instanziert?
BUFG ist ein Clock Buffer und kein DCM oder PLL.


Gruß

von Eddy (Gast)


Lesenswert?

Warum nimmst dafür zwei DCM? Einer sollte doch auch beide Takte ausgeben 
können?

von Sigi (Gast)


Lesenswert?

Ich nehme mal an, du hast beide DCMs per CoreGenerator
erzeugt: in diesem Fall treibt eine Clock zwei BUFG
(je ein BUFG für den DCM-Clockeingang), erlaubt ist
aber nur einer.
Abhilfe: entweder den generierten Code nachbearbeiten
(eine Clock, ein BUFG, zwei DCMs und daran 2 weitere
BUFGs für die Ausgabe-Clocks) oder den Code als
Schablone für eine eigene Komponente mit 2 DCMs
verwenden. Es gibt noch weitere Möglichkeiten,
versuchs aber erstmal so.
Schau mal im RefMan nach, da wird das ausführlich erklärt.

von Edi M. (Gast)


Lesenswert?

Das Thema kam schon mehrfach in der FPGA newsgroup auf. Einer der Gurus 
dort meinte, dass Xilinx etwas an den Default-Werten umgestellt habe und 
es seit einigen Versionen diese Probleme gäbe. Liegt am CoreGen. Dort 
muss man die Buffers rausnehmen.

von Sandra (Gast)


Lesenswert?

@Valko Zapalko:
Ja, ist mir klar. Ich hab die clock wie im Code gezeigt durch die Buffer 
gejagt und dann mit 2 DCM's verbunden.

@Eddy:
Das geht leider nicht. Mit einem Virtex 6 wäre es (vermutlich) kein 
Problem. Ich habe auch schon versucht 2 DCM's hintereinander zu schalten 
aber da treffe sich wieder 2 Buffer und ich bekomme die selbe 
Fehlermeldung.

@Sigi:
Vermutlich bleibt mir nichts anderes übrig. Vielleicht kann ich mit der 
Line Rate in den DCM's tricksen.

@E.M.:
Danke. Xilinx stellt immer etwas um und wir haben dann Stress.
;)

Bussi
Sandy

von Kaio (Gast)


Lesenswert?

Eddy hat recht, da deine Output Takte im Verhältnis 1:2 stehen.
Der DCM liefert dir gleichzeitig auch den doppelten Takt. Dann geht's 
auch nur mit einem DCM.
CLK0=75 MHz und CLK2X=150 MHz

von Sandra (Gast)


Lesenswert?

@Kaio:
Mein Systemtakt ist 100MHz.
Wenn ich den auf 75MHz (oder 150MHz) runtertakte (mit DCM) habe ich 
wieder 2 Buffer in Serie. Einen externen Takt kann ich nicht 
anschließen.

Bussi
Sandy

von Christian R. (supachris)


Lesenswert?

Dann musst du beim erzeugen des 2. DCM (der hinter dem ersten 
angeschlossen ist) beim Input auf "internal" stellen, dann wird kein 
zweiter Buffer erzeugt.

von Valko Z. (hydravliska)


Lesenswert?

Oder du nimmst ein PLL, multiplizierst den Eingangstakt mal 12 und 
teilst dann runter. Habe CoreGen schnell eingeworfen und scheint zu 
funktionieren.

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.