Hallo @ all FPGA User, Wir benötigen eine schnelle Datenerfassungskarte (400MHz). Nun habe ich gesehn das Ti neue ADCs im Angebot hat (Monoflopwandler mit 400 und 500MHz). Jetzt wollte ich mal einen Spartan 6 ausprobieren. Hierzu will ich einfach den 400MHz Wandler direkt (12LVDS Paare) an den FPGA anschließen. Über einen externen Quarz von 50MHz ,den ich im FPGA mit Hilfe vom DCM auf 400MHz aufbohre wollte ich dann die Ansteuerung des ADC vornehmen. Im Prinzip muß man "nur" denn 400MHz Takt auf den ADC geben und gleichzeitig die Ports einlesen. Diese 12 Bits wollte ich dann über eine Camera Link Schnittstelle an eine Framgrabberkarte senden. Ist das realistisch, das man mit dem Spartan 6 eine solche Anwendung hinbekommt? Schalten die LVDS-Ports des SPartan 6 denn überhaupt schnell genug, oder muß ich diese an spizielle Ports hängen?
Ich glaube der Spartan wird dazu vielleicht nicht so gut geeignet sein, denn der BlockRAM zum Beispiel geht nur bis 250MHz....musst du erst mal schauen, was die einzelnen Komponenten so mitmachen.
Ich meine ja den neuen Spartan6. Da geht der BlockRAM sicherlich deutlich schneller als 250MHz. Außerdem kann man ja einen nexternen DDR2 RAM als Zwischenpuffer nehmen.
Ich meine auch den neuen Spartan 6 und dessen Blockram schafft 250MHz. Über den neuen Memory Controller und externen RAM sollte es denke ich aber klappen. Die PLL geht bis 1050MHz, also ausreichend. Musst halt gucken, ob das mit den Inputs klappt, denn der Spartan bietet keine kalibrierten, temperaturstabilen Input-Delays.
1050MHz ist ja eine Hammergeschwindigkeit ^^. Mich wundert halt nur das man den internen Clock bis 1050MHz hochtreiben kann, jedoch der interne BlockRam nur bis 250MHz geht. Jedoch kann man ja mehrere BlockRams parralel betreiben. Wenn man der Datenbus des ADCs 12Bit ist, dann erzeugt man einen Fifo den man z.B. mit 1000MHz befüllt und alle 250MHz wird dann in die RAMs geschrieben. Danke schon mal für die Infos Christian. Hast Du schon mit den neuen Spartan 6 oder Virtex 6 gearbeitet?
Ich habe mal versucht das ganze auf Papier zu bringen. Es gibt z.B. von Ti einen 12Bit 500MHz Wandler (ADS5444). Dieser bekommt das Signal und einen Clock. Die Frequenz des Clocks beträgt z.B. 400Mhz. Der AD-Wandler erzuegt 12LVDS Datenpaare und ein LVDS DATA_READY Signal. Diese möchte ich auf einen FIFO geben, der 24LVDS Bits speichern kann. Vielleicht gibt es auch eine bessere Möglichkeit als mit dem Fifo. Aus dem Fifo kommt dann alle 200MHz 24Bit LVDS Daten, die an den Spartan 6 gehen. Den Clock kann man über einen FLIPFLOP herunterteilen. Ob dies allerdings die beste Methode ist bezweifel ich. Vielleicht hat ja jemand einen besseren Vorschlag. Der Entwurf befindet sich im Anhang
Naja, Problem dürfte sein, dass sich die busmatching FIFOs intern nur mit BlockRam realisieren lassen. Somit beißt sich die Katze in den Schwanz. Nee, gearbeitet hab ich damit noch nicht, aber mal testweise ein Virtex 4 Design umgesetzt, um zu schauen, ob man da eventuell auf den wesentlich günstigeren Spartan 6 gehen kann. Ist aber nicht so einfach, der hat einige Beschränkungen. Zum Beispiel müssen die IDDR und ODDR auf einem IOB mit dem gleichen Takt laufen. Beim Virtex gibts verschiedene. Dann die angesprochenen suboptimalen IDELAY....naja, irgendwo mussten sie ja sparen. Anscheinend lässt sich auch der BlockRAM nicht zu beliebig großen Blöcken zusammen hängen (oder es ist noch ein Bug im ISE). Die 172 RAM Blöcke des LX75 lassen sich nicht zu einem 128k x 18 FIFO zusammen koppeln....64k x 18 geht....
Ich habe mir mal die neuste 11.4 gestern runtergeladen und zu Hause mal installiert. Ich werde mal versuchen über Weihnachten ein Design zu erzeugen und hier zu veröffentlichen.
>Über einen externen Quarz von 50MHz ,den ich im FPGA mit >Hilfe vom DCM auf 400MHz aufbohre wollte ich dann die Ansteuerung des >ADC vornehmen. Und der Jitter stört nicht?
Warum muss es eigentlich unbedingt ein Spartan 6 sein? Mal abgesehen von den 400MHz ist das Ding gerade mal als ES verfügbar....
>Warum muss es eigentlich...
Mit Verlaub: 340kByte für so eine hingeschwierte Skizze -- bei anderen
reicht das für eine komplette Diplomarbeit.
Stefan Salewski schrieb: >>Über einen externen Quarz von 50MHz ,den ich im FPGA mit >>Hilfe vom DCM auf 400MHz aufbohre wollte ich dann die Ansteuerung des >>ADC vornehmen. > > Und der Jitter stört nicht? Volle Zustimmung. Einen FPGA-Ausgang als Clock für einen ADC zu verwenden ist ein typischer Anfängerfehler.
Helmut S. schrieb: > Volle Zustimmung. > Einen FPGA-Ausgang als Clock für einen ADC zu verwenden ist ein > typischer Anfängerfehler. Die meisten DSOs bis 1500 eur (auch Agilent) benutzen auch nix anderes, ein FPGA der clock signal für ADCs erzeugt. Es sind "nur" 100 bis 200Mhz die da benutzt werden, dafür aber an bis zum 10 ADCs. Mir ist schon klar das geräte in der preisklasse keine "reference designs" sind, aber auch nicht unbedingt von anfängern gebaut.
Thomas R. schrieb: > Helmut S. schrieb: > >> Volle Zustimmung. >> Einen FPGA-Ausgang als Clock für einen ADC zu verwenden ist ein >> typischer Anfängerfehler. > > Die meisten DSOs bis 1500 eur (auch Agilent) benutzen auch nix anderes, > ein FPGA der clock signal für ADCs erzeugt. > > Es sind "nur" 100 bis 200Mhz die da benutzt werden, dafür aber an bis > zum 10 ADCs. > > Mir ist schon klar das geräte in der preisklasse keine "reference > designs" sind, aber auch nicht unbedingt von anfängern gebaut. Hallo Thomas, lies doch mal Seite 23 und vergleiche das mit der Jitter-Spec von FPGA-Ausgängen. http://www.analog.com/static/imported-files/data_sheets/AD9230.pdf ADCs haben übrigens meistens einen Clock-Ausgang für die Daten. Den nimmst du am besten als FPGA-Clock.
Vielleicht werde ich es dann erst mal mit dem Virtex5 versuchen. Ti hat dort ein Evaluation Board im Angebot. ADS5474 ADX. Dort ist ein Virtex 5 (XC5VSX50T) verbaut. Dies ist ein sehr interessantes Board. Es befindet sich ein SMA-Steckverbinder drauf. Dort kann man einen externen Clock für die Digitalisierung einspeisen. Der Clock wird dann in ein LVDS-Signal gewandelt und wird an den 1. AD angeschlossen. Für den 2. AD-Wandler werden einfach die P mit der N des Clock vertauscht. Somit erreicht man ein 180° Phasenverschiebung. Demnach digitalisiert der 1. AD-Wandler mit der ansteigenden Clock Flanke und der 2. Wandler mit der abfallenden Clock Flanke. Bei Virtex 5 sind die IO/Port schnell genug um 400MHz Daten zu erkennen. So weit so gut. Die beiden AD-Wandler besitzen eine Data Ready Ausgang (LVDS), die an den FPGA gehen. Die Data Ready Leitungen sind beim FPGA an die LVDS-Clockeingänge angeschlossen, so das diese auf den Clock Buffer gehen. BANK 4: AC18 --> IO_L6P_GC_4 BANK 4: AB17 --> IO_L6N_GC_4 1. Jetzt zu meiner Frage wie programmiert man am besten den Datenempfang? Erzeuge ich einen Prozess, der mit jeder anteigenden Flanke die Daten in einen BlockRAMadresse schreibt? Oder muss ich diesen Clock noch mit einem PLL oder DCM bearbeiten?
Autor: Thomas R. (tinman) >Die meisten DSOs bis 1500 eur (auch Agilent) benutzen auch nix anderes, >ein FPGA der clock signal für ADCs erzeugt. Für ein 8 Bit DSO mag das noch OK sein. Im ersten Postings des Threadsstarters stand etwas von (12LVDS Paare), also nehme ich an er will 12 Bit. Bei viel Jitter kann er die unteren aber vergesssen.
Stefan Salewski schrieb: > > Für ein 8 Bit DSO mag das noch OK sein. Im ersten Postings des > Threadsstarters stand etwas von (12LVDS Paare), also nehme ich an er > will 12 Bit. Bei viel Jitter kann er die unteren aber vergesssen. stimmt, habe nicht aufmerksam genug gelesen.
Hy Sebastian Ich hab vor mir eine ähnliche Aufhabe, ich muss ein ADS54RF63 mit einem ML506 (XC5VSX50T) verbinden, und das steurenprogram schreiben. Ich habe bis jetz nicht so viel gemacht, aber vileicht können wir uns in verbindung setzen und bei der aufgabe uns miteinandern helfen.
Ich bin jetzt erst mal vom Spartan 6 weg, da der interne SRAM nur mit ca. 200 oder 250MHz läuft und die I/O Schaltzeit auch recht knapp war. Ich verwende jetzt auch den "XC5VSX50T". Hierzu habe ich von TI ein Evaluations-Board bestellt. Dieser enthält den FPGA XC5VSX50T. Ich habe auch schon angefangen ein kleines Programm zu schreiben. Nur als Hinweis. Für diesen FPGA kann man nicht mehr das Webpack benutzten sondern benötigt die ISE Software, die so ca. 2000 bis 4000€ kostet. Das mit dem gegenseitigen Austauschen finde ich toll ^^
Wie ich sehe hast Du den 12Bit 550MHz AD-Wandler ausgewählt. Ich benutzte den 14Bit 400MHz Wandler. Auf meinem Board ist der XC5VSX50T mit dem Speedgrade -1 verbaut. Hier ist die maximale Frequenz für Counter und RAM 450MHz (zur Info). Jedoch muß der RAM richtig konfiguriert werden, sonst kann dieser nur zwischen 200 und 300 MHz betrieben werden. Wenn auf Deinem Board der FPGA mit dem Speedgrade -3 verbaut ist, dann kann der RAM mit maximal 550MHz betrieben werden. http://www.xilinx.com/support/documentation/data_sheets/ds202.pdf siehe Seite 48 im Datenblatt (link) Jedoch muß man auch sagen das der FPGA vom Preis her auch deutlich teurer ist als das Speedgrade 1. Womit ich erst mal begonnen habe: Ich habe ein Signal mit dem Namen Trigger. Wenn der Trigger von Low auf High wechselt, dann möchte ich X-Datenpunkte speichern. Die DAten werden dann erst einmal in einem Block Ram gespeichert. Um dies umzusetzten benötigt man also einen Counter der mitzählt wie viele Punkte man bereits ab dem Triggerevent digitalisiert hat. Dieser Counter ist auch gleich mein Adresszähler für den RAM. Zudem benötige ich auch einem Comparator. Dieser vergleicht halt ob die vorgegebene Anzahl an Datenpunkten bereits digitalisiert wurde. Fals die Anzahl noch nicht erreicht wurde, wird die EN-Leitung vom Block-Ram auf 1 gesetzt. Ist die Anzahl an Datenpunkten erreicht, so wird die EN-Leitung vom Block RAM auf 0 gesetzt. Somit werden keine weiteren Daten in den Block RAM geschrieben. Hier sei auch wieder darauf hingewiesen, das der Counter und der Comparator mit maximal 450MHz (beim Speedgrade -1 und 550MHz beim Speedgrade -3 funktioniert).
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.