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.
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.
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?
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.
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.
@ 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
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?
@ 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
@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
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.
@ 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
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.
@ 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
Immerhin habe ich schon eine 3MBIT RS232 auf dem Virtex 5 implementiert. ^^
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.