Forum: FPGA, VHDL & Co. 85MHz Clock für externes IC


von Johann (Gast)


Lesenswert?

Hallo @ all,

ich habe einen einen Virtex 5 und ein externes IC für die 
Datenübertragung. Zudem ist auf meinem Board noch ein 50MHz Quarz 
verbaut.

Aus dem 50MHz Takt möchte ich im FPGA per DCM einen 85MHz Takt erzeugen 
und gleichzeitig einen 2. Takt der 3mal so schnell ist wie der 85MHz 
Takt.

Der 85MHz Takt soll dann den FPGA über einen Clock Pin verlassen und 
direkt an den exteren IC gehen. Ist dies OK oder ist der Jitter bei 
dieser Lösung zu stark?

Den 3 mal so schnellen Takt benötige ich um Daten für die Übertragung 
bereitzustellen.

von Christian R. (supachris)


Lesenswert?

Den Jitter gibt entweder der Core-Generator aus oder steht im 
Datenblatt. Ob der für deine Anwendung zu hoch ist, musst du selber 
entscheiden. Einen hochauflösenden ADC sollte man damit nicht treiben. 
Zur Ausgabe des Taktes sollte man ein ODDR-FlipFlop benutzen.

von Johann (Gast)


Lesenswert?

Wenn man einen exterenn Clock benutzt, dann verwendet man ja als I/O 
Buffer einen Clock Buffer. Kann man diesen nicht auch als Ausgang 
benutzen?
Ist es nicht sinnvoller einen Clock Buffer als einen ODDR zu verwenden?

von Christian R. (supachris)


Lesenswert?

Bei Xilinx gibts keine didizierten Clock-Ausgangs-Buffer. Wenn man von 
einem CLK-Netz direkt auf den Ausgang geht, gibts eine Warnung, dass das 
entsprechende Signal im ganzen nicht als CLK geroutet werden kann. In 
allen User Guides ist der Weg über das ODDR FF angegeben. Auch Xilinx 
benutzt das bei den IP-Cores selbst so. Weiterer Vorteil: Bei 
DDR-Ausgängen ist dann der CLK, den man mit ausgibt absolut in Phase mit 
den Daten.

von Johann (Gast)


Lesenswert?

Also benutze ich demnach ein ODDR. Den eienn Eingang lege ich auf 0 und 
den anderen auf 1. Dann nur noch mit dem CLK verbidnen und fertig. 
Erzeugt das nicht zu viel Jitter?

Außerdem habe ich doch dann einen Phasenverschub, da das ODDR ja eine 
gewisse Zeit zum schalten benötigt.

von Falk B. (falk)


Lesenswert?

@  Johann (Gast)

>Also benutze ich demnach ein ODDR. Den eienn Eingang lege ich auf 0 und
>den anderen auf 1. Dann nur noch mit dem CLK verbidnen und fertig.

Ja.

>Erzeugt das nicht zu viel Jitter?

Nicht mehr als duch den DCM erzeigt wird, wenn er aus 50 MHz die 85 
macht.

>Außerdem habe ich doch dann einen Phasenverschub, da das ODDR ja eine
>gewisse Zeit zum schalten benötigt.

Phasenverschiebung zu was? Sollen synchron noch Daten ausgegeben werden? 
Dann ist das ODDR erst recht das Mittel der Wahl.

MFG
Falk

von Johann (Gast)


Lesenswert?

Hallo Falk

Mein externes IC benötigt 1 Clk (85MHz) und 28Bit Datenbus. Mit jeder 
ansteigenden CLK-Flanke sollen neue Daten übertragen werden. Die Daten 
werden im BlockRAM zwischengespeichert. So das ich diese dann aus dem 
BlockRAM lade in diese dann direkt ausgebe.Kann ich die Daten aus dem 
BlockRAM direkt an die Ausgänge des FPGA legen oder sollte man 
dazwischen noch mal einen FF schalten?

von Falk B. (falk)


Lesenswert?

@  Johann (Gast)

>BlockRAM lade in diese dann direkt ausgebe.Kann ich die Daten aus dem
>BlockRAM direkt an die Ausgänge des FPGA legen

Im Prinzip ja, aber praktisch nicht sinnvoll.

> oder sollte man dazwischen noch mal einen FF schalten?

Ja. Diese werden dann in die IOBs gesetzt und damit hast du ein 
perfektes Ausgabetiming und relaxte Routingbedingungen.

MFG
Falk

von Falk B. (falk)


Lesenswert?

@Johann (Gast)

>Aus dem 50MHz Takt möchte ich im FPGA per DCM einen 85MHz Takt erzeugen
>und gleichzeitig einen 2. Takt der 3mal so schnell ist wie der 85MHz
>Takt.

Macht also nochmal 255 MHz, not bad.

>Den 3 mal so schnellen Takt benötige ich um Daten für die Übertragung
>bereitzustellen.

Du willst den FPGA intern mit 255 MHz takten? Sportlich. Und vor allem 
ungewöhnlich. Meistens hat man im FPGA breite Datenpfade und kann mit 
moderaten Taktfrequenzen arbeiten. Für die Datenübertragung nimmt man 
dann höhere Takte, um mit wenig Datenleitungen auszukommen (z.B. LVDS, 
DVI, etc.)

MFG
Falk

von Johann (Gast)


Lesenswert?

Ich speicher zuerst einige Daten, die ich zuvor vom AD-Wandler erhalten 
habe in einem Block RAM zwischen. Wenn das Signal digitalisiert ist, 
möchte ich die Daten an den PC übertragen. Hierzu verwende ich das 
Camera Link Interface. Das Camera Link Interface wird durch ein externes 
IC übernommen. Dies benötigt einen Takt (max. 85MHz) und einen 28Bit 
breiten Datenbus.

Wenn ich die Daten aus dem Block RAM laden und ausgeben möchte, dann 
muss man zuerst die Adresse anlegen. Zudem benötigt man einen Komerator 
um das ganze wieder anzuhalten. Ich dachte ich benötige 3 Takte um dies 
zu realisieren deshalb auch 3x85MHz.

von Falk B. (falk)


Lesenswert?

@  Johann (Gast)

>möchte ich die Daten an den PC übertragen. Hierzu verwende ich das
>Camera Link Interface. Das Camera Link Interface wird durch ein externes
>IC übernommen. Dies benötigt einen Takt (max. 85MHz) und einen 28Bit
>breiten Datenbus.

So weit, so gut.

>Wenn ich die Daten aus dem Block RAM laden und ausgeben möchte, dann
>muss man zuerst die Adresse anlegen. Zudem benötigt man einen Komerator
>um das ganze wieder anzuhalten. Ich dachte ich benötige 3 Takte um dies
>zu realisieren deshalb auch 3x85MHz.

;-)
So jung und unerfahren, und schon mit Papis Porsche, ähhh Virtex5 
rumspielen wollen.
Sehr amüsant.

Um Daten mit 85 MHz aus einem BRAM zu lesen und auszugeben braucht man 
ziemlich genau 85 MHz.
Das sind Grundlagen der Digitaltechnik.
Und 255 MHz sind selbst in einem V5 sportlich, aber machbar. Hier 
allerdings vollkommen unnötig.

MFG
Falk

von Johann (Gast)


Lesenswert?

Der Porsche ist zudem noch ein richtiges Hammerteil (Speedgrade -3) und 
dann noch die SX50T Variante. Ich glaube das Teil kostet schon breits 
1500€. War auf einem Entwicklungsboard bereits vorhanden.

Sicher kann man es in einem Takt erledigen. Aber meistens kommt dort 
noch etwas hinzu so das ich lieber mit dem einen oder anderen Takt mehr 
kalkuliere.

von Falk B. (falk)


Lesenswert?

@  Johann (Gast)

>Sicher kann man es in einem Takt erledigen.

Dann TU ES!

> Aber meistens kommt dort
>noch etwas hinzu so das ich lieber mit dem einen oder anderen Takt mehr
>kalkuliere.

Klar, weil man sich so einen Luxus ja bei 85 MHz auch noch locker 
leisten kann.
Merke: Nur weil es PCs mit 2 GHz++ für nen Appel & Ei im Laden zu kaufen 
gibt, heißt das NICHT, dass man ein FPGA mal locker lockig ebenso takten 
kann.
Wenn du Larifari machen willst dann programmier Java, dort kannst du für 
"Hello World" 10 MB verbraten.
Hardwareentwicklung läuft anders.

MFG
Falk

von Johann (Gast)


Lesenswert?

Immerhin habe ich schon eine 3MBIT RS232 auf dem Virtex 5 implementiert. 
^^

von Falk B. (falk)


Lesenswert?

Mein Held!

von Christian R. (supachris)


Lesenswert?

Bei FPGAs heißt das Zauberwort Pipelining mit breiten Bussen. Da 
brauchts keine hohen Takte. Und gerade bei so einer Datenaufnahme in 
einen FIFO ist die Latenz durch die Pipeline relativ egal.

von Johann (Gast)


Lesenswert?

Noch mal Danke für die Infos.

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.