Forum: FPGA, VHDL & Co. Geschwindigkeitsvorteil Virtex6 zu Virtex 4 und Evalboard


von A. W. (wiwil)


Lesenswert?

Hallo zusammen,

für ein Physikalisches Experiment mit Röntgenstrahlen erfassen wir 
Detektorcounts in Abhängigkeit von verschiedenen äußeren Zuständen.
Die Detektorpulse sind sehr kurz und wir erfassen sie im Moment mit 
einem Virtex-4 womit die Erfassung mit 100MHz Clock noch vernünftig 
läuft.
Um den neuen Detektor richtig ausnutzen zu können, möchten wir das ganze 
schneller betreiben können.
Welche Geschwindigkeitsvorteile sind in etwa von einem Virtex-6 zu 
erwarten.
Hat jemand eine Bezugsquelle, wo das ML605 wirklich erhältlich ist?
Gibt es schon sonstige Boards mit dem Virtex-6?

Gruß
Andreas

von mki (Gast)


Lesenswert?

Ich denke die Frage sollte eher heißen mit welcher Geschwindigkeit kann 
ich meinen Detektor auslesen. Ich bin mir zwar nicht 100%ig sicher 
jedoch vermute ich der Virtex4 hat auch ein paar PLL´s die eine 200MHz 
Frequenz liefern. Für eienen ersten Test sollte wäre das kostengünstiger 
als ein neuer FPGA.

von A. W. (wiwil)


Lesenswert?

Das ist richtig, bin auf dem Gebiet auch totaler Anfänger und hab den 
Code bisher nur übernommen.
Aber beim compilieren steht da max. Frequenz 165 MHz. Das bedeutet doch, 
dass ich den FPGA nur so hoch takten darf, wenn ich keine Fehler 
riskieren möchte, oder sehe ich das falsch?
Und daher die Frage, ob beim Virtex6 da ein wesentlich anderer Wert zu 
erwarten ist.

von Mathi (Gast)


Lesenswert?

Das ist richtig.
Versuch doch einfach mal das Design für einen Virtex 6 zu übersetzen.
Wird der V6 nicht schon in der ISE unterstützt?

von Christian R. (supachris)


Lesenswert?

Also der Virtex 6 dürfte schon schneller sein, schließlich läuft da der 
BlockRAM auch mit 600MHz, der Virtex4 schafft "nur" 500MHz auf dem RAM 
udn den DSP Slices.

Probier´s doch einfach aus. Mach ein neues Projekt in ISE mit dem Virtex 
6 und schau, was der ausspuckt.

Wo zeigt der die Frequenz an? Nach der Sythese oder nach dem 
Place&Route? Die Frequenz nach der Synthese ist ein grober Richtwert, 
die kann durch das Routing noch um einiges nach oben oder nach unten 
verändert werden.

Wie voll ist der FPGA jetzt? Je voller desto langsamer wirds in den 
meisten Fällen....

von mki (Gast)


Lesenswert?

Ich vermute mal auf dem FPGA ist ein Softcore wie der PicoBlaze drauf. 
Wenn der nur bis 164MHz stabil läuft dann wird es sich bei einem anderen 
FPGA auch nicht wirklich viel ändern. Wobei dort meiner Meinung nach 
nicht das Problem liegt, sondern wirklich an der Frequenz des Detektors. 
Den kann man unabhängig von der CPU Frequenz durchaus schneller 
betreiben - falls es nicht sogar schon gemacht wird. Für jemanden der 
bis jetzt noch gar nichts mit einem FPGA gemacht hat wird es schwer 
werden dieses zu kontrollieren bzw. zu ändern.

von A. W. (wiwil)


Lesenswert?

Hmm, meine Xilinx ISE Version 10.1 kennt den Virtex 6 leider noch nicht.

Einen Softcore oder auch den eingebauten PowerPC nutze ich nicht, wie 
kann ich denn erkennen, was dann meine sichere Maximalgeschwindigkeit 
ist? Ausprobieren bis zur Grenze kann ja nicht die einzige Möglichkeit 
sein, oder? Die 164MHz sind tatsächlich nach der Synthese, wo kann ich 
die Geschwindigkeit nach dem Route and Place ablesen?

Gibt es hierzu ein vernünftiges Tutorial, was Timings, beste 
Geschwindigkeitsausnutzung und sowas betrifft. Bei VHDL programmiert man 
ja doch recht abstrakt, so dass einem nicht bewusst ist, welcher Befehl 
Resourcen frisst.
Bei uns hier an der Uni machen zwar viele was mit FPGAs aber in der 
Hinsicht kann einem auch keiner weiterhelfen...

Was den Detektor betrifft, der kann Pulse generieren, die eine 
einstellbare Pulsbreite von 5-50 ns haben.

Wenn ich die Pulsbreite vergrößere, ergibt sich halt eine größere 
Totzeit, während der keine weiteren Ereignisse erfasst werden, ist daher 
unerwünscht. Im Moment muss ich aber mit größerer Pulsbreite arbeiten, 
um alle Pulse sicher erfassen zu können.

Schonmal vielen Dank für eure Hilfe!

Gruß
Andreas

von Matthias G. (mgottke)


Lesenswert?

Das Problem mit den erreichbaren Geschwindigkeiten ist noch etwas 
komplexer. Einfach einen andern FPGA einsetzen und "nichts" zu ändern 
muss nicht unbedingt eine höhere Maximalfrequenz zur Folge haben:

Neben der eigentlichen Verhaltensbeschreibung gibt es noch ein Sack voll 
Parameter die ebenfalls zu beachten sind. Z.B. Timing-Constrains, die 
Verwendung der IOs und der zugehörigen IO-Standards usw.

Angenommen der FPGA wird von einem externen Takt synchron betrieben ohne 
die Verwendung von irgendwelchen PLLs im internen des FPGAs und das 
Timings-Constain des Clocks ist auf die 100 MHz angepasst, dann 
versuchter die Synthese dieses Timing hinzubekommen. Die Timinganalyse 
ergibt dann z.B. eine theoretische maximale Clockfrequenz von 165 MHz. 
Da sagt sich das Tool doch: Wunderbar! Alles funktioniert. Warum sollte 
ich daran was weiter optimieren? Wenn man nun aber das Timingconstrain 
auf Beispielsweise 200 MHz setzt, dann versucht die Synthese dies auch 
hin zu bekommen.

Bei Verwendung von PLLs im FPGA versuchen die meisten Tools schon das 
Timing auf die Ausgangsfrequenz der PLL zu optimieren.

Und jetzt wird es spannend: Leider hilft es nicht einfach das Timing auf 
einen X-beliebigen Wert (z.B. 500 MHz) hochzusetzen und mal zu schauen 
was der FPGA wohl kann. Das funktioniert nicht. Die Timing-Constrains 
sollten schon auf die Erfordernisse angepasst werden. Weiterhin gibt es 
aber noch Viiiiiieeeeele Parameter an denen man drehen kann um ein 
optimiertes Syntheseergebnis zu erreichen. Speedoptimierung erfordert 
Erfahrung. Sorry.

von Uwe Bonnes (Gast)


Lesenswert?

Schon die Ausgabe von xst (der .syr  Report) gibt eine erste 
Geschwindigkeitsabschaetzung und zeigt die laengsten Pfade. Diese Pfade 
sollte man dann ueberdenken.

von Christian R. (supachris)


Lesenswert?

Andreas Wiese schrieb:
> Hmm, meine Xilinx ISE Version 10.1 kennt den Virtex 6 leider noch nicht.

Dann installier dir die 11.1 und Update auf 11.4 und dann hast du alle 
aktuellen Virtex 6 auch drin. An der Uni habt ihr doch garantiert eine 
Hochschullizenz dafür....

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Andreas Wiese schrieb:
> Was den Detektor betrifft, der kann Pulse generieren, die eine
> einstellbare Pulsbreite von 5-50 ns haben.

Man muss ja nicht immer gleich den Vorschlaghammer rausholen. Wenn du 
ein IDDR des Virtex4 verwendest, erhälst du den Wert deines 
Eingangssignals an der steigenden und fallenden Flanke. Das ist bei 
deinen 100MHz bereits eine Auflösung von 5 ns.
Falls das nicht reicht, erzeugst du dir einen 200 MHz Takt. Damit 
betreibst du das IDDR und zwei 4 Bit Schieberegister, jedes für einen 
Ausgang des IDDR. Die parallelen Daten der Sregs schreibst du mit 8 Bit 
Breite und  200 MHz in ein BRAM. Den liest du auf der anderen Seite mit 
16 Bit Breite und 100MHz aus. Damit liegt deine Auflösung bei 2,5 ns.

Mit einem ISERDES müsste man auch was machen können.

Tom

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.