Forum: FPGA, VHDL & Co. Takt, Global Clock Network und Routing Delays


von FPGA-User (Gast)


Lesenswert?

Hallo,

mein Vorhaben: ein Spartan-3 soll als video-verarbeitende Einheit
dienen. Auf der Eingangsseite bekommt der FPGA Daten von einem LVDS
21:3 Deserializer UND Daten von einem Video Prozessor. Alle
Eingangsdaten kommen mit einem hohen Bit-Count rein.
Auf der Ausgangsseite werden die verarbeitenden Signale über einen
LVDS-Serializer auf ein Display gegeben.

Mein Frage:

Es ist bestimmt sinnvoll die alle Daten des Video Prozessors an die I/O
der gleichen FPGA-Bank zu legen und das gleiche beim LVDS, um Routing
Delays so gering wie möglich zu halten. Wenn man das nicht machen
würde, wie kritisch wären die Delays ?

Ein weitere Frage:

Müssen Clock-Signale, wie z.B. Pixelclock immer über die bestimmten
Pins auf die Global Clock Networks gelegt werden. Welchen Folgen hat
es, wenn man die Clock Signale auf einfache I/O-Pins legt ? Was genau
ist das Global Clock Network bzw. welche Aufgaben erfüllt es ? Wie
kritisch ist es z.B. einen I2C-Takt nicht auf ein Global Clock Network
zu legen ?

weitere Frage:

Der FPGA wird mit 50 MHz betrieben. Kann man, um einen Pixeltakt auf
der Ausgangsseite zu generieren, mittel DCM die 50MHz mittels eines
gewissen Teilerverhältnis herunterteilen ? Wie führt man den
generierten Takt dann nach außen (über normale I/O-Pins)?

weitere Frage:

Wie erzeuge ich einen Takt, der größer wie meine 50Mhz ist mit der der
FPGA betrieben wird (z.B. 100Mhz) ? Wie funktioniert das ?





Danke für Eure Hilfe ?

von Hagen (Gast)


Lesenswert?

>Wie erzeuge ich einen Takt, der größer wie meine 50Mhz ist mit der
> der FPGA betrieben wird (z.B. 100Mhz) ? Wie funktioniert das ?

Das habe ich schon gemacht, deshalb beantworte ich mal nur diese
Frage.

Am einfachsten fand ich folgenden Weg: Du öffnest den Schematic Editor
und fügst einen DCM ein, stellst per rechten Mausklick deine
Eigenschaften ein. Dann erzeugst du per Export ein VHDL daraus und
kopierst das nach Bedarf in deinen VHDL Source. Wichtig ist das du dir
aber vorher die AN's zu DCM's runterlädst und am besten das dortige
Beispiel zur Verwendung der DCM's als Schematik nachbaust. Die haben
nämlich noch einige IBuf's (oder OBuf's ??) verwendetet um
sicherzustellen das es keinen Skew gibt.
Mit zwei solcher kaskadeirter DCM's konnte ich so 4 verschiedene Takte
erzeugen. Auf Grund der Buffer werden diese Clocks intern global als
Clocksignale geroutet.

Gruß Hagen

von FPGA-User (der andere) (Gast)


Lesenswert?

du machst mir Spass, woher soll man wissen ob irgendwas
kritisch ist, wenn man die Eingangsfrequenz nicht kennt.
Gib doch mal genauere Infos über Taktraten (wie hoch,
wie viele verschiedene Takte gibt es usw.)

Mit einer DCM kann der Takt höher oder niedriger gelegt
werden, also z.B. 25 MHz oder 300 MHz - das dürfte das geringste
Problem bei Deinem Projekt sein.

Ein Blockschaltbild würde für die Beantwortung der restl.
Fragen viel helfen.

von Hagen (Gast)


Angehängte Dateien:

Lesenswert?

Das kam bei dem Experiment heraus.

Der verwendete Buffer der DLL war ein BUFG, nicht IBUF oder OBUF,
sorry. Das Shiftregister im Design stellt sicher das die Clock's erst
aktiv werden wenn die DLL sich gelockt hat, sprich synchronisert hat.
Über das Signal LOCKED = '1' kannst du abfragen ob die DLL's sich
synchronisert haben.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

>du machst mir Spass, woher soll man wissen ob irgendwas
>kritisch ist, wenn man die Eingangsfrequenz nicht kennt.
>Gib doch mal genauere Infos über Taktraten (wie hoch,
>wie viele verschiedene Takte gibt es usw.)

;) danke das ich dir helfen durfte und gleich einen Anschiss bekomme
;)

Schau dir die DLL's an

      CLK0: out std_logic;
      CLK180: out std_logic;
      CLK270: out std_logic;
      CLK2X: out std_logic;
      CLK90: out std_logic;
      CLKDV: out std_logic;

CLK0 ist die Eingangsclock 1 zu 1 durchgereicht aber mit korregiertem
Dutycycle von 50%. CLK180,CLK270,CLK90 die gleiche Clock aber mit
andere Phase in Grad, logisch oder.
CLK2X der doppelt Takt.
CLKDV ist deine benutzerdefinierte Clock je nach Multiplikationsfaktor
/ Divisionsfaktor.

Im Obigen Beispiel werden 2 DLL's benutzt. 3 stehen glaube ich zur
Verfügung.

Bleibt nur noch die Frage offen ob ich damals das Ding für einen
Spartan-3 entwickelt hatte oder ein anderes Teil, auf alle Fälle
Xilinx.

Ich warte nun auf den nächsten Anschiss, bitte gibs mir dolle !

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Häää, gibts hier zwei User namens FPGA-User ?? Das ist doch schei.e und
muß ja zu Verweschlungen führen.

@FPGA-User (der andere): sorry ich hatte dich verwechselt.

Gruß Hagen

von FPGA-User (der andere) (Gast)


Lesenswert?

genau, es gibt jetzt offenbar 2 davon, ich grübel schon
an einem neuen Namen....
also ich bin der, der die Einsen mitgezählt hat :-)

von Hagen (Gast)


Lesenswert?

Hm, das ist eben der nachteil eines Forums ohne Anmeldung. Ich für
meinen Teil hätte als Neuankömmling zumindestens mal gesucht ob mein
Name schon benutzt wird und dann einen anderen gewählt.
Ich weiß aber das Du -> FPGA-User (ein anderer) schon länger anwesend
hier bist. Man könnte den Verdacht aussprechen das FPGA-User
absichtlich seinen Namen so gewählt haben könnte.

Gruß hagen

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.