Hallo zusammen, ich will/muss eine A/D-Wandlung mit einer Abtastrate von 400MS/s durchführen. Spannungsbereich 0V..2V. Zur Applikation: Es sollen 300 Messwerte aufsummiert und an den Softcore in einem FPGA weitergegeben werden. Dieser Wert wird dann weiter verarbeitet. Ich bin nun hin und hergerissen. Ein Xilinx Spartan-6 SP605 Evakit hätte ich hier. Ob es mit dem Spartan-6 überhaupt gehen kann, weiß ich nicht - er könnte ja (theoretisch bis zu 1GHz nach dem PLL). Wenn ich die A/D-Wandlung auf zwei ADCs aufteile, dann müßte/könnte es doch gehen - oder? Da (wie immer) die Zeit drängt könnte ich für das FPGA dann z.B. so ein Modul nehmen: http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_65_143&products_id=897 Nur was mache ich mit dem ADC? Da wäre mir ein Modul auch am liebsten - weil meine Kenntnisse über HF im GHz-Bereich schon recht begrenzt sind. Hier gäbe es schon Module: http://www.xilinx.com/products/boards_kits/fmc.htm#ADDA --> leider ohne Preise und ohne Lieferzeiten :-( --> Hat jemand eine Anregung für mich, wie ich diese A/D-Wandlung am Besten realisieren könnte? Am Besten/Einfachsten mit Modulen... Man müsste z.B. wegen ESD-Schutz etc. sicherlich seeehr viel beachten und seeehr viel Erfahrung mitbringen... oder? Ich habe mir mal das Welec-DSO angeschaut. Das Routing mit den abgerundeten Leiterbahnen ist sicherlich nur ein winziges Teilchen des ganzen Puzzles... Viele Grüsse, Poolspieler
Andreas N. schrieb: > ich will/muss eine A/D-Wandlung mit einer Abtastrate von 400MS/s > durchführen. Spannungsbereich 0V..2V. > > Zur Applikation: > Es sollen 300 Messwerte aufsummiert und an den Softcore in einem FPGA > weitergegeben werden. Früher (tm) hätte man das genau andersrum gemacht: Erst einen Analog-TP und dann gemütlich mit ein paar MSa/s abgetastet.
>Nur was mache ich mit dem ADC? Da wäre mir ein Modul auch am liebsten -
weil meine Kenntnisse über HF im GHz-Bereich schon recht begrenzt sind.
Dann lass es sein. Es macht keinen Sinn. Kauf ein Scope und lies es aus.
Ein normales Scope dieser Klasse hat ein Ethernet interface.
> Dann lass es sein. Es macht keinen Sinn. Kauf ein Scope und lies es aus. > Ein normales Scope dieser Klasse hat ein Ethernet interface. Genau das will ich ja (indirekt) machen! Ich WILL ja ein Modul mit der fertigen HF-Seite. Ein fertiges Scope scheidet aus, weil auf diverse externe Takte (exakter Auslesezeitpunkt) reagiert - und darauf wiederum Takte nach Aussen erzeugt werden sollen. Ausserdem gibt es noch weitere Peripherie, die vom FPGA gesteuert werden muss. Vielleicht hat doch jemand ein schönes Modul - oder zumindest ein Reference Design für mich :-) Wenn alle Stricke reissen, dann werde ich mir halt doch ein Eva-Board von ANALOG oder LINEAR oder so, kaufen. Dieses in Betrieb nehmen und dannn kopieren bzw. in meine Schaltung integrieren... FRAGE: Wenn man den analogen Teil mal beiseite lässt: Was denkt ihr: Ist es mit einem Spartan6 möglich, die ADCs auszulesen und die Werte zu addieren? Gefühlt würde ich JA sagen. Ich bin auch gerade dabei, für mein Spartan-6 EVA-Board eine Test-IP zu schreiben, um es zu testen. Eine weitere Meinung vorab wäre halt nett gewesen... Viele Grüsse, Poolspieler
Die Gigasample-ADC gibts ja, z.B. 12 Bit bis 3,6 GS/s http://www.ti.com/ww/en/analog/dataconverters/gigadc/rf-sampling.shtml parallele LVDS-Ausgänge, ein Eval-Board gibts auch dazu.
oder 8bit http://www.ti.com/tool/adc08d500dev Der preis ist etwas hoch, dafür bekommt man aber eine komplette lösung. Du kannst aber auch im netz die firmware + fpga design + sw für das board finden (Virtex 5), dann auf Spartan 6 umbauen und den analog teil selber bauen (schaltplan vom analog und digital teil gibts auch im netz) Das wird dich so um die 500-700EUR kosten (+ Sparatn 6 board), die WaveVision sw wird damit auch laufen (solange du FX2 für USB nimmst).
Hallo Thomas, der Preis wäre gerade noch OK, wenn es 12bit wären UND ein Ethernet-Controller OnBoard wäre. Curtiss Wright hat sehr schöne Sachen im Angebot: http://www.cwcdefense.com/products/analog-io-digital-io/analog-io/adc-510-analog-io.html --> allerdings gibt es auf der Seite keine Preise. Über Google habe ich einen Artikel gefunden - wenn man dem glauben kann, dann sind die Preise 5stellig - und das ist zu viel :-( Ich werde mal noch weiter suchen vielleicht finde ich ja doch noch eine bezahlbare Komplettlösung... Eventuell beginne ich auch mit dem http://www.ti.com/tool/ads4122evm Modul. Plus ein Spartan-6 - VORHER werde ich aber wohl eine Test-IP plus Simulation schreiben, um sicher zu sein, dass das Timing auch erreichbar ist... Weitere Vorschläge sind gerne willkommen :-) Viele Grüsse, Poolspieler
Ich hätte noch 4x 250MSPS 10bit ADCs abzugeben, handelt sich um MAX1124. Ansonsten kann ich auch nur die Evalboards oder sogar nur die Performance Development Kits im Falle von TI empfehlen, für das Geld was die Kosten bringst du die Hardware nicht im ersten Schuss funktionierend auf einen Multilayer, schon gar nicht bei vollkommen fehlender Erfahrung. branadic
Hallo branadic, vielen Dank für Deine Antwort! 10bit sind leider zu wenig... Ich benötige mindestens 12bit. >für das Geld was >die Kosten bringst du die Hardware nicht im ersten Schuss funktionierend >auf einen Multilayer, schon gar nicht bei vollkommen fehlender >Erfahrung. Die Erfahrung fehlt "nur" im GHz-Bereich. Für Spartan3E habe ich bereits Multilayer Boards entwickelt - und die laufen gut. Trotzdem hast Du Recht! Man braucht nicht glauben, dass man einen Spartan-6 oder gar einen Virtex inklusive Peripherie im ersten Layout zu 100% zum laufen bringt. Das ist nicht realistisch. Anscheinend hast Du ja Erfahrung mit dem MAX1124. Denkst Du, dass man den Spartan-6 (mit bis zu 1GHz nach PLL) eine Abtastrate von 400MSPS erreichen kann? Viele Grüsse, Poolspieler
Andreas N. schrieb: > Denkst Du, dass man den Spartan-6 (mit bis zu 1GHz nach PLL) eine > Abtastrate von 400MSPS erreichen kann? Das hängt auch davon ab, über viele Leitungen/Pins Deine Bits verteilt werden. Hier mal ein Auszug aus dem Datenblatt "Spartan-6 FPGA Data Sheet: DC and Switching Characteristics" (DS162), Abschnitt "Performance Characteristics". Duke
Duke Scarring schrieb: > Andreas N. schrieb: >> Denkst Du, dass man den Spartan-6 (mit bis zu 1GHz nach PLL) eine >> Abtastrate von 400MSPS erreichen kann? > Das hängt auch davon ab, über viele Leitungen/Pins Deine Bits verteilt > werden. Es wird ein paralleler Bus von 12 Bit sein, der über eine (oder zwei) Taktleitungen gesteuert wird. Wahrscheinlich LVDS. > Hier mal ein Auszug aus dem Datenblatt "Spartan-6 FPGA Data Sheet: DC > and Switching Characteristics" (DS162), Abschnitt "Performance > Characteristics". Das verstehe ich gerade nicht, warum ist die Taktrate bei einer HÖHEREN Data Width GRÖßER? Das hätte ich genau anders herum erwartet??? Ok, RTFM habe ich noch nicht gemacht - werde ich aber noch :-) Kann es mir trotzdem jemand kurz vorab erklären? Viele Grüsse, Poolspieler
Andreas N. schrieb: > t es mit einem Spartan6 möglich, die ADCs auszulesen und die Werte zu > > addieren? Der Spartan 6 macht samplingtechnisch ohne Weiteres 250MHz, wenn man alles schön pipelined und ordentlich Register reinhaut. Deine 300 Werte kriegst Du in einem Akku sicher mit 200MHz summiert, hast also die Option, 2 parallelle DACs, Datensysteme zu nehmen. Wenn der DAC mit 400MHz kommt, würde ich parallel versetzt abtasten. Obdu es mit 400 MHz machen kannst, kann ich Dir nicht sagen. Ich habe noch nichts gebaut, das jenseits der 300 MHz mit dem S6 klag.
Hi, wenns fertige Module sein sollen, hab ich folgendes im Einsatz gehabt: TI ADS5463 EVM TI FMC-ADC-ADAPTER (passt mechanisch nicht bei allen FPGA-Boards) Xilinx SP601 oder SP605 Datenraten sind gar kein Problem, wie oben schon zu lesen war kann der Spartan-6 selbst im Speedgrade -2 (der normalerweise auf den Evaluationboards drauf ist) 950MHz Signale eintakten und gleich deserialisieren. Du gehst also für einen 12-Bit ADC z.B. mit 12 LVDS-Pärchen auf den FPGA, jedes davon transportiert z.B. 400 MBit/s. Im Spartan-6 instanziierst du dann für jedes LVDS-Pärchen ein ISERDES2-Pärchen, das die Daten parallelisiert und verlangsamt. Intern hast du dann z.B. 12 x 4 Bit bei 100 MBit/s. Sebastian
Sebastian B. schrieb: > Hi, > > wenns fertige Module sein sollen, hab ich folgendes im Einsatz gehabt: > > TI ADS5463 EVM > TI FMC-ADC-ADAPTER (passt mechanisch nicht bei allen FPGA-Boards) > Xilinx SP601 oder SP605 Ein SP605 habe ich schon auf meinem Tisch stehen. Damit werde ich dann wohl die ersten Versuche machen. Ansonsten werde ich mir eines der Module bestellen und es mit dem Xilinx Board verbinden. Evtl. werde ich halt das Adapterboard selbst entflechten - das sollte ja "relativ" schnell gemacht sein ;-) > Datenraten sind gar kein Problem, wie oben schon zu lesen war kann der > Spartan-6 selbst im Speedgrade -2 (der normalerweise auf den > Evaluationboards drauf ist) 950MHz Signale eintakten und gleich > deserialisieren. > > Du gehst also für einen 12-Bit ADC z.B. mit 12 LVDS-Pärchen auf den > FPGA, jedes davon transportiert z.B. 400 MBit/s. Im Spartan-6 > instanziierst du dann für jedes LVDS-Pärchen ein ISERDES2-Pärchen, das > die Daten parallelisiert und verlangsamt. Intern hast du dann z.B. 12 x > 4 Bit bei 100 MBit/s. > > Sebastian Danke für Deine Einschätzung! Das motiviert mich für die weitere Entwicklungsarbeit! Vielen Dank auch für alle anderen Beiträge! Gruß, Poolspieler
Sebastian B. schrieb: > Du gehst also für einen 12-Bit ADC z.B. mit 12 LVDS-Pärchen auf den > > FPGA, jedes davon transportiert z.B. 400 MBit/s. Viel Spass bei der Definition des Master-Slave SERDES für 12 Bit. Ich habe mich wochenlang damit aufgehängt, bis der Buffermist gestimmt hat. Mit Coregen ging es damals gar nicht und per Hand nur mit viel Gewürge.
Ron Bayer schrieb: > Sebastian B. schrieb: >> Du gehst also für einen 12-Bit ADC z.B. mit 12 LVDS-Pärchen auf den >> >> FPGA, jedes davon transportiert z.B. 400 MBit/s. > Viel Spass bei der Definition des Master-Slave SERDES für 12 Bit. Ich > habe mich wochenlang damit aufgehängt, bis der Buffermist gestimmt hat. > Mit Coregen ging es damals gar nicht und per Hand nur mit viel Gewürge. Da sehe ich jetzt das Problem nicht so recht. Einfach den riesigen Codehaufen von der XAPP1064 nehmen, die Takterzeugung per PLL und den ISERDES2 in der gewünschten Konfiguration rausoperieren. Die Teile korrekt zu verdrahten, dass die Bits auch in der richtigen Reihenfolge aus dem ISERDES rauskommen, ist ein bisschen fummelig, aber mit einer kleinen Testbench relativ fix zu prüfen. Ich hatte hier mal irgendwo ein Beispiel eingestellt für die Sendeseite zur Ansteuerung eines TFT. Schaut aber fast genauso aus.
Mein Spartan 6 (-3) sampelt ohne Probleme komplette Busse mit ChipsScope auf 350 MHz. Da gehen auch 400 behaupte ich mal.
Hallo JBB, es gibt von ANALOG Bausteine, die sowohl LVDS, als auch CMOS können. Ist das auch mit CMOS im Spartan-6 machbar - oder sollte es doch lieber LVDS sein? Viele Grüsse, Poolspieler
Andreas N. schrieb: > oder sollte es doch lieber > LVDS sein? Bei solchen Frequenzen sollte man schon LVDS nehmen. Außerdem kann man dann die ISERDES/OSERDES in diesem Mode nutzen, wo man noch mehr Bits raus/rein schieben kann. Ist alles ein ziemliches Gefummel, auch trotz XAPP1064, aber naja. Man muss dann auch aufpassen, dass das zu den IO-Bänken passt, die haben da die Beschränkung, dass ein BUFIO nur eine halbe Bank versorgen kann. Leider sind die Xilinx Boards da beknackt angeschlossen, ich kann beispielsweise das LTM9011-14 Board nicht direkt an das SP605 anschließen, weil die Signale über mehrere Bänke verstreut sind.
Die meisten ADCs übertragen die Daten bei dieser Geschwindigkeit als DDR Signal. Demnach muss man zuerst ein IDDR Register verwenden und dann ein ISERDES. Jetzt habe ich es bei Spartan nicht in Erinnerung ob es ein ISERDES mit DDR Eingang gibt oder ob man zuerst das IDDR benutzen muss und dann ein ISERDES
Man kann die ISERDES in den DDR Modus schalten (4 Bit -> 8 Bit), und dann zwei (Master und Slave) zusammen, wenn man LVDS hat. Somit kommt man auf max. 16 Bits pro LVDS Paar.
Ich glaube ich muss mich mit den ISERDES noch mal genauer auseinandersetzen. Diese scheine für zukünftige Designs sehr interessant zu sein
Hallo, ich habe mir (noch relativ oberflächlich...) die ISERDES Sache angeschaut. Irgendwie habe ich aber ein Verständnisproblem: Ich verstehe ISERDES so: Wenn man einen SERIELLEN Datenstrom hat, dann macht ISERDES daraus einen PARALLEN Datenstrom - es wird also deserialisiert. Aus einem hochfrequenten seriellen Datenstrom wird ein niederfrequenterer paralleler... Das ganze geht auch anders herum - aus einem im FPGA parallel anliegenden Datenwort (z.B. 16Bit) wird ein serielles Signal erzeugt also serialisiert. Nur wie bringt mich das bei meinem Problem weiter? Ich habe einen analogen Baustein, der 14 Datenleitungen und eine Clockleitung hat. Wenn der Clock auf HIGH geht, dann werden die 14 Datenleitungen aktualisiert. WIE bzw. WO greift hier ISERDES? Ich hätte es mit einem einfachen Zustandsautomaten realisiert - aber das scheint wohl nicht zu gehen - oder wo ist mein Denkfehler? Viele Grüsse, Poolspieler
Hallo nochmal, ich habe mir ISERDES genauer angeschaut. Ich habe nun folgendes Verständnis: - Es liegen z.B. 4 Datenbits und ein Clock mit z.B. 400MHz am FPGA-Eingang an (der Clock muss NICHT synchron zum FPGA System Clock sein) - Bei jeder steigenden Flanke des Clocks werden die 4 Datenbits übernommen - wenn z.B. ein Serdes-Factor von 8 eingestellt ist, dann werden alle 8 Clocks die insgesamt 32 Datenbits PARALLEL ausgegeben - jedes mal, wenn dies passiert, generiert SERDES einen Clock (serdesstrobe), der zur Synchronisation übergeordneter IPs verwendet wird --> habe ich dies richtig verstanden? Was meint Ihr: Kann man den Clock (400MHz) vom FPGA erzeugen lassen, oder sollte man lieber einen externen Clock Generator verwenden? Ich habe gehört, dass ein externer Clock wohl die bessere Wahl sei... Viele Grüße, Poolspieler
Hi Andreas, serdestrobe ist ein Eingang vom ISERDES. Wenn du schon einen 400 MHz Clock von außen bekommst, kannst du diesen einfach per BUFIO2 an die diveren ISERDES verteilen. Der BUFIO2 kann den schnellen EIngangstakt auch herunterteilen für CLKDIV und FPGA fabric. Sebastian PS: Oben wurde ja schon geschrieben, das du mit einem BUFIO2 nur eine halbe Bank des FPGA erreichen kannst. Das deckt bei den Xilinx Dev-Boards meist nicht alle FMC Pins ab. Notfalls hilft hier die verwendung von BUFPLL, damit geht IIRC die ganze Bank.
Hallo Sebastian, vielen Dank für Deine Antwort! > Wenn du schon einen 400 MHz Clock von außen bekommst, kannst du diesen > einfach per BUFIO2 an die diveren ISERDES verteilen. Der BUFIO2 kann > den schnellen EIngangstakt auch herunterteilen für CLKDIV und FPGA > fabric. --> Den Clock habe ich noch NICHT - bzw. es ist noch offen, wie dieser erzeugt wird. Die Frage ist, ob die 400MHz vom FPGA per PLL erzeugt und nach aussen gegeben werden können. Ich habe mit dem clock generator und dem clock wizard im EDK experimentiert, das aber bisher nicht geschafft :-( Sonderlich gut dokumentier oder gar intuitiv ist das (wie so oft bei Xilinx) nicht... Die 400MHz von aussen zu erzeugen wäre die zweite Wahl. Oder spricht etwas explizit für diese Lösung? Zum Verständnis: Ich bin gerade dabei, das Projekt zu planen. Ich habe also die Hardware (bis auf ein Xilinx EVA Board SP605) noch nicht. Deshalb wäre ich auch in der Lage, den Clock extern zu erzeugen - wenn es denn sein müßte... Viele Grüße, Andreas
Den Sample-Takt intern erzeugen und dann ausgeben ist immer di schlechtere Variante, da du dir dann Jitter rein holst. Und dann ist dann direkt in digitales Rauschen umrechenbar. Also lieber extern mit einem sehr jitterarmen Oszillator erzeugen, sofern überhaupt verfügbar. Mit den BUFPLL hab ich irgendwie auch nicht alle 8 Kanäle des LTM9011 Demoboards auslesen können, da war wieder irgendwas anderes, was dem nicht gefallen hat, weiß aber nicht mehr genau, was.
Christian R. schrieb: > Den Sample-Takt intern erzeugen und dann ausgeben ist immer di > schlechtere Variante, da du dir dann Jitter rein holst. Und dann ist > dann direkt in digitales Rauschen umrechenbar. Also lieber extern mit > einem sehr jitterarmen Oszillator erzeugen, sofern überhaupt verfügbar. > Hallo Christian, ich habe es gerade ausprobiert - es ist zumindest möglich, mit dem clock generator im EDK 400 MHz zu erzeugen (wenn man es DIREKT im MHS-File macht...) und diese dann "external" zu machen und auf einen Pin des FPGAs zu legen. Der Jitter würde mich analog für diese spezielle Anwendung nicht stören. Und wenn doch extern (wie gesagt, die Hardware steht noch nicht): Welchen Oszillator würdest Du vorschlagen? Gibt es da ein "Allheilmittel"? Viele Grüße, Andreas
Andreas N. schrieb: > Und wenn doch extern (wie gesagt, die Hardware steht noch nicht): > Welchen Oszillator würdest Du vorschlagen? Gibt es da ein > "Allheilmittel"? Oha, naja, bei 400Mhz wirds mit einem reinen XO schwierig, da müsste man dann einen VCXO nehmen oder sowas. Wir haben immer gute Erfahrungen mit Jauch gemacht. Aber Allheilmittel weiß ich keins.
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.