Hallo Forengemeinde... ich plane ein "kleines" Projekt, wo schnell (ca. 1GS) Analogwerte gesampelt werden und in einen Rechner geschaufelt werden, wo die Messwerte dann in Echtzeit visualisiert werden. Ich habe null Erfahrung mit FPGAs, aber mit µCs... ICh würde mich daher gerne erkundigen, was ich für sowas genau brauche. Ich denke der FPGA ist ein muss, allein wegen der Geschwindigkeit, doch wie macht so ein FPGA das? Wie schnell laufen die Teile? Wird der extern angeschlossene Takt vervielfacht? Wo müsste ich ansetzen? Die externen ADCs werden sicher über SPI o.ä. abgefragt? Wie aufwändig ist es, eine SPI auf einem FPGA zu programmieren und wie schnell wird das ganze? Welche schnittstelle verwendet man üblicherweise für den Zweck, um den FPGA mit dem Rechner zu koppeln? Ich wäre den Highspeed-Gurus sehr dankbar, wenn ihr mir eventuell einen brauchbaren und ansetzbaren link oder eine beschreibung geben könntet. Vielen Dank schon mal Gruß Martin
Öhm...also wenn du so fragst: Lass es. Mit deinem Kenntnisstand wird das nix. 1GHz ADC am FPGA ist auch für Experten kein Pappenstiel. Erst mal brauchst du einen ziemlich teuren und schnellen FPGA, der überhaupt 1GHz an den I/Os macht. Mit SPI ist da natürlich überhaupt nichts. Welchen ADC hast du dir denn ausgeguckt? Für solche Abtastraten gibts ja eh kaum welche. Und wie sieht das Analogteil aus? Das muss ja dann eine Bandbreite von ein paar Hunder MHz haben. Und was heißt in Echtzeit? Wie viele Samples willst du wie oft am Bildschirm anzeigen? Da gehört ja dann noch eine Datenübertragung und Pufferung dazu. Beim Sample-FIFO wirds schon haarig bei 1GHz, das macht intern kein FPGA, da müsstest du einen ADC mit integriertem FIFO benutzen, dann ist das recht gemütlich machbar. Schnittstelle zum PC wäre USB 2.0 oder jetzt 3.0 oder PCI Express denkbar. Soll das privat oder beruflich werden?
Martin schrieb: > ich plane ein "kleines" Projekt, wo schnell (ca. 1GS) Analogwerte > gesampelt werden und in einen Rechner geschaufelt werden, wo die > Messwerte dann in Echtzeit visualisiert werden. Kling nach einen selbstgebauten Oszi oder Spektrumanalysator. Echtzeitvisualisierung? Wenn du davon ausgehst daß man maximal 10 - 20 Bilder pro Sekunde gerade wahrmehmen kann, dann hast du 50 bis 100 Millionen Messwerte pro Bild, wenn du davon ausgehst daß du nur 1 Bild pro Sekunde halbwegs geistig erfassen kannst, dann sind es eine Milliarde, wie kriegst du die auf einen Bildschirm?
Martin schrieb: > ich plane ein "kleines" Projekt, wo schnell (ca. 1GS) Analogwerte > gesampelt werden und in einen Rechner geschaufelt werden, wo die > Messwerte dann in Echtzeit visualisiert werden. Vergiß Echtzeit, kein Mensch kann eine Milliarde Meßwerte pro Sekunde erfassen. Vergiß Selbstbau, kaufe ein fertiges Digital-Oszi. Die Leute wissen, wie man 1GHz schaltungstechnisch beherrscht. Dazu gehört langjährige Erfahrung, besonders beim Platinenlayout. Für den ungeübten Schaltungsbastler beginnen die Probleme schon ab 100kHz..1MHz. Peter
Hey, das ging ja echt flott, danke für die Anregungen. Soweit habe ich natürlich noch nicht gedacht und bin halt noch am planen. Das Projekt darf ruhig was kosten, auch wenn es für den Privaten zweck gedacht ist. Ziel ist es, mal ein inpedanzangepasstes multilayer design auf die Beine zu stellen, mich in FPGA´s einzuarbeiten und die Geschwindigkeiten und Schwierigkeiten. Ich bin noch auf der Suche nach derartigen adcs. Wenn ihr mir welche empfehlen könnt, sehr gerne... Natürlich möchte ich diese genauigkeit haben, weil ich am Rechner später nah genug in das Signal reinzoomen möchte. Erfassen möchte ich transiente Signale, die für das dynamische Verhalten von nachgeschalteten Komponenten interessant sind. Es soll eine Messkarte werden mit einem Interface zu Labview oder MAtlab, wo die Daten entsprechend aufbereitet werden können. Es geht mir eigentlich mehr um die Kommunikation zwischen PC und "FGPA-Messkarte"... Über den Analogteil mache ich mir im moment noch keine Gedanken. PCIe ist mir ein Begriff und ich habe oft gesehen, dass man die Übertragung zum PC über einen solchen Link macht. Wie aufwändig ist sowas? Ich meine, allein die PCIe Specs haben es in sich. Mit USB habe ich schon viel gemacht, aber 12Mbit ist doch bei USB 2.0 schluss odeR? danke nochmal für die Hilfestellung... Gruß Martin
@Peter:
>langjährige Erfahrung, besonders beim Platinenlayout
danke für die kontruktive Anregung, aber wie gesagt... irgendwann muss
man ja mal Anfangen mit dem Design, um irgendwann auch zu den Leuten mit
langjärigen Erfahrungen zu gehören.
Martin schrieb: > Ich bin noch auf der Suche nach derartigen adcs. Die Chinesen verwenden in ihren DSOs bündelweise Typen mit 100-200MHz parallel mit gestaffelten Sample-Zeiten. Wird Gründe haben. Ausserdem kannst du dann klein anfangen und dich hocharbeiten, ohne gleich den teueresten verfügbaren Highspeed-ADCs nachzuweinen. Gleich in die Vollen zu gehen geht mit Sicherheit schief. > ich schon viel gemacht, aber 12Mbit ist doch bei USB 2.0 schluss odeR? > danke nochmal für die Hilfestellung... 480Mb/s.
@AK: Danke für die Information, 12Mbit war usb 1 :-) >Die Chinesen verwenden in ihren DSOs bündelweise Typen mit 100-200MHz >parallel mit gestaffelten Sample-Zeiten. Wird Gründe haben. Kannst du mir dazu nähere Informationen geben? Wie meinst du das mit gestaffelten Sample-Zeiten? Die ADCs samplen nacheinander und dann wird das "ergebnis" bzw. die Samples zusammengeschmissen? gruß martin
Martin schrieb: > gestaffelten Sample-Zeiten? Die ADCs samplen nacheinander und dann wird > das "ergebnis" bzw. die Samples zusammengeschmissen? So in der Art. Schau dich hier im Forum mal nach Wittig bzw. Welec um. Da gibts Detailinformation über eine solche Konfiguration im Rahmen eines Projektes für neue Firmware für deren DSOs.
A. K. schrieb: > Die Chinesen verwenden in ihren DSOs bündelweise Typen mit 100-200MHz > parallel mit gestaffelten Sample-Zeiten. Wird Gründe haben. Auch die aktuellsten Kisten von Agilent, die mit 32 GHz Bandbreite und 80 GSa/s nutzen ebenfalls nur ADCs mit 250 MSa/s Abtastrate. Du kannst ja mal abschätzen wie viele von diesen ADCs in so einem Oszilloskop verbaut sind. Richtig, sehr viele. 80G/250M sind 320. Und das pro Kanal. Die Leute von Agilent kriegen das Interleaving aber erstaunlich gut hin... Gruß Silvio
Silvio K. schrieb: > verbaut sind. Richtig, sehr viele. 80G/250M sind 320. Und das pro Kanal. Bei 4 Kanälen wird dann aber offenbar doch paarweise zusammengelegt. Aber das sind wenigstens wieder Geräte mit anständiger Einbautiefe von 0,5 Meter und 20kg Gewicht. Seit den DSOs mit LCD sieht man ja sonst nur noch so flache Butterbrotdosen. ;-)
Bei dem Welec DSO werden vier Max1121 ADCs mit je 250 MSa/s im Interleave mit verschobenen Takten betrieben, so dass insgesamt eine Abtastrate von 1 GSa erreicht wird. http://sourceforge.net/apps/trac/welecw2000a/
2 Stück ADS5463 im Interleave Modus oder einen ADS5400 gleich so. Für die 2x500MHz gibts von TI glaub ich sogar ein Demoboard mit dem Virtex 5. Unter so einem Boliden brauchst du da gar nicht anzufangen.
A. K. schrieb: > Bei 4 Kanälen wird dann aber offenbar doch paarweise zusammengelegt. Ja, das ist richtig. Bei allen 4 Kanälen erreicht man wahrscheinlich "nur" noch 40 GSa/s. Gruß
Von Analog Devices gibt es ganz nette ADCs http://www.national.com/pf/AD/ADC083000.html#Overview Da muss man sich gute Triggermechanismen überlegen. Bei solchen Datenaufkommen kann man nur minimalste Zeiträume zwischenspeichern. Ich hatte mal eine Anwendung im Kopf bei der ich zunächst nur einen ADC08200 hatte - der liefert 200MSPS zu je 8 Bit, also verhältnismäßig zu GS/s noch recht moderat. Nun wollte ich "nur" 8 Sekunden permanent sampeln, und 8 Bit sind nun auch nicht der Overkill. Nun hatte ich mal ganz primitiv nachgerechnet: 200MSPS * 8 Bit Auflösung = Datenaufkommen von 200 MB/s (!). Wo speichert man sowas hin? Das einzige was da praktikabel ist, ist ein DDR3 RAM aus einem normalen PC. Einige FPGA Hersteller bieten zwar Interfaces für RAM an aber das macht keinen Spaß und ist utopische Arbeit. Schon alleine das Platinenlayout für RAMs ist eine Drecksarbeit. Wegen der tollen Laufzeiten muss man Leiterbahnen so kurz wie möglich halten, einige müssen künstlich länger gemacht werden, damit die Signale synchron ankommen, etc. Das ist absoluter Wahnsinn. Hast du mal geschaut was das für Preise sind für solche High-Speed-ADCs? Hast du gesehen was das für Gehäuse sind? Hast du einen Reflowofen? Hast du schonmal ein HF-Layout geroutet? Hier mal ein wenig für den Einstieg zu FPGAs und Oszi http://www.fpga4fun.com/digitalscope.html sonst könnte man versuchen direkt auf PCI-Express gehen: http://www.fpga4fun.com/PCI-Express.html Das ist alles ziemlicher Wahnsinn. So vom Preis her was hast du so gedacht? Eine ADC mit 1GS/s kostet wenn du beim Hersteller nach einem Muster verlangst sicherlich 500€ (auch als Muster). Die Platinenherstellung in deinen Dimensionen sicher auch als Einzelstück 200€. Dann brauchst du noch einen FPGA - nachdem das nicht der kleinste sein wird kostet das sicherlich 100€ od. mehr. Am besten wirst du aber ein Demoboard nehmen. Wieviel Ahnung hast du denn vom Analogteil der Oszischaltung?
Hallo Martin, also ich habe auch sowas gebaut, allerdings mit 4 Kanälen und je 2 GigaSamples/Sekunde. Allerdings verwende ich keine ADC, sondern einen VHS DSP welcher zu Real-Time-Sampling von Radarsignalen verwendet wird. Koste gerade mal netto 980 Euro und erfordert ein NDA. Der DSP sendet allerdingsnicht die Roh-Daten (das würde nicht mal USB3.0 Schaffen) sonder berechnet die Sampingkurve und schickt Verktordaten. Anderst kann mann die 8.000.000.000 x 20 bit nicht handhaben Das ganze habe ich an einen USB 3.0 Device controller angeschlossen. Prinzipiel würde auch ein HighSpeed USB 2.0 reichen, nur da machen die Microcontroller nicht mit. Ich denke, das Du bei 50-80 MSPS ganz gut liegen wirst, was auch von Hobby-Bastlern noch bewältigt werden kann. Anm.: Nahe zu alle ADC die schneller als 50 MSPS sind, verwenden ein LVDS interface, grüße Michelle
Martin schrieb: > PCIe ist mir ein Begriff und ich habe oft gesehen, dass man die > Übertragung zum PC über einen solchen Link macht. Wie aufwändig ist > sowas? Ich meine, allein die PCIe Specs haben es in sich. Mit USB habe > ich schon viel gemacht, aber 12Mbit ist doch bei USB 2.0 schluss odeR? > danke nochmal für die Hilfestellung... Für PCIe gibt es Device-Microcontroller mit Parallel-Interface daran. Den Sourcecode für den PCIe Teil bekommste von einem µC Hersteller. Danach ist absoulut kein Unterschied zwischen einem USB-µC und PCIe-µC. Also ich habe hier Device-µC von PLX und anderen für PCI, PCI-X und PCIe. Einziger Nachteil ist halt, das Du dir für Dein Betriebssystem (es ist egal, ob Linux, BSD, DOS oder Windows) einen Treiber schreiben mußt. Grüße Michelle
Martin schrieb: > Kannst du mir dazu nähere Informationen geben? Wie meinst du das mit > gestaffelten Sample-Zeiten? Die ADCs samplen nacheinander und dann wird > das "ergebnis" bzw. die Samples zusammengeschmissen? Du tust einfach Phasen-Verschoben samplen. Sprich, Du nimmst eine Polyphase-Oszylator mit 8 oder 12 Phasen und schießt ebenso viele ADCs daran an, dann werden die entsprechend der Phasen getrigert und Samplen. Somit hat jeder ADC nur 1/8 bzw 1/12 der Arbeit zu erledigen und der µC erledigt den rest... Grüße Michelle
Naja, die Datenübertragung wird sein kleinstes Problem sein. Da gibts jetzt den Cypress FX3, der kann USb 3.0 SuperSpeed, das sollte reichen. Die Dtenaufnahme und erst Recht das Frontend sind die wahren Herausforderungen.
Hallo Michelle, ich habe zwei Sachen, die mich wirklich interessieren: Michelle Konzack schrieb: > Verktordaten Kannst du mir erklären wie du bzw der "VHS DSP" die Vektordaten berechnet? Ich hoffe, dass fällt noch nicht unter das NDA. Ich gehe davon aus, dass du 7 bis 8 skalare Zahlen überträgst. 4 Amplituden und 3 bis 4 Phasen von den Grundwellen der Kanäle(?). Wie berechnest du die Zahlen aus den Zeitbereichsdaten? FFT wird's wohl nicht sein, oder? Zweite Sache: Welcher Mikrocontroller kann PCIe. Das wäre mir neu, wäre aber sehr heiß darauf? Viele Grüße Silvio
Für diese DSPs ist nichts öffentlich. Alles was ich dafür bekommen habe, ist ein BLOB, welchen ich in mein Programm einbinde. Die die das genau machen kann ich nicht sagen, denn der Soucecode dafür kostet extra... Also ich will irgendwann wenn ich Zeit habe, mit mal das von den anderen Herstellern mit dem Parallel-Sampling mit mehreren ADCs ansehen, dennd ie sachen mit den NDAs gehen schrecklich auf den Geist, besonderst wenn die Front-Ends alle unter Linux und GPL sein sollen. Gibt mittlerweile auch eine PCIe Device-Controller auf Basis des OMAP 44xx, wird derzeit aber nur an ausgewählte Firmen vergeben (ich bin nicht darunter) Wenn Du mit FPGAs machen willst, rate ich Dir dazu, denn die gibt es bereits mit fertigem PCIe Device. Grüße Michelle
Die OMAP 44xx-Serie habe ich bei TI nicht gefunden. Ist wohl wirklich exklusiv. Noch mal zum PCIe. Ich habe diese Demo-Karte von Lattice, die zur Zeit im Angebot ist(99$+55$Versand), gekauft. Ich befürchte der verwendete IP-Core ist unerschwinglich und dadurch doch nicht nutzbar. Ich bin noch nicht firm in FPGAs und auch nicht in PCIe. Ich überlege, da PCIe und USB auf meiner Sicht sehr ähnlich sind, gleich alles auf USB zu machen. Cypress sei dank, geht das wohl mit mäßigem Aufwand. Mal sehen. PCIe: Treiber schreiben+, FPGA-, direkter Portzugriff+ USB: Zugriff nur über vorgegebene Endpunkte-, USB-BUS-Struktur-, Einfach durch Cypress+ Ich kann mich nicht entscheiden...Wird wohl noch eine Weile dauern
PCIe geht auch auf einfach, wenn du den PEX8311 nimmst. Der ist etwas betagt, aber funktioniert. Da ist ein signierter Windows Treiber kostenlos dabei, Linux Treiber auch, und in der Hardware gibts ein paralleles Local Bus Interface. DMA Controller ist gleich eingebaut. Die PCIe direkt im FPGA Lösung ist auf den ersten Blick elegant, aber du brauchst zusätzlich zum Hardware-Teil noch einen DMA IP Core sowie einen passenden Treiber. DMA IP kostet etwa 12k€ für ein Projekt (PLDA), Treiber etwa 7k€ für Windows (Jungo). Wir werden daher erst mal bei PEX8311 und USB bleiben. FX3 sei Dank. Ich hoffe mal, der geht genauso problemlos mit WinUSB zusammen wie der FX2. Die Cypress Treiber sind einfach grauenvoll. Die bisherigen Versuche mit dem Demoboard waren vielversprechend.
Martin, mehrere ADCs interleaved ist nicht ohne, man muss die entweder direkt "synchron" bekommen (was du garantiert nicht hinkriegst, das fängt schon beim layout an) oder danach mühsam abgleichen. Der einziger grund warum chinesen es sehr gerne für deren DSOs nehmen ist der preis (ADC08D500 150EUR, 4-5 x AD9288 50EUR). Viel einfacher wird statt mehreren 100-250MSs ADCs sowas wie ADC08D500 zu nehmen. Im DES mode wirst Du dann 1GSs haben bei einem externen clock von 500MHz, z.b. ADF4360 dafür nehmen. Die daten kommen dann per LVDS, mit einem 250MHz clock was schon angenehmer zu bearbeiten ist. Als sample speicher kommt FPGA selber in frage (wird aber nciht so gross sein) oder DDR2/3 (weil günstig), evt. ein 250MHz async SRAM (aber teuer) könnte ausreichen. Das grosste problem wird passendes FPGA board zu sein, es muss vor allem schon der DDR2/3 speicher drauf sein und vernünftige LVDS gerechte anschlüsse. Boards wie ZTEX/OHO mit 2.54 header kannst du knicken, lieber sowas wie Zefant oder noch besser Trenz Electronic GigaBee XC6SLX45 (dafür reicht auch die freie ISE edition). Für erste versuche würde sogar der Trenz carrier board für GigaBee reichen, später müsste aber sowieso ein eigenes board kommen mit dem ADC08D500/ADF4360 (2-6layer) und FX3/Gbit LAN/PCIe. So mindestens 500-600EUR muss du dafür einkalkulieren.
Silvio K. schrieb: > Die OMAP 44xx-Serie habe ich bei TI nicht gefunden. Ist wohl wirklich > exklusiv. Das ist so ne Sache die mich echt nervt, den ich wurde von TI zum Workshop eingeladen, habe da für ein paar 100 Euro mitgemacht für das ich nicht mal die Chips kaufen kann... Texas Instruments verkauft die Chips nur an Net-Book und TabletPC Hersteller die mindestens 100.000 Stück abnehmen! > Noch mal zum PCIe. Ich habe diese Demo-Karte von Lattice, die > zur Zeit im Angebot ist(99$+55$Versand), gekauft. Ich befürchte der > verwendete IP-Core ist unerschwinglich und dadurch doch nicht nutzbar. > Ich bin noch nicht firm in FPGAs und auch nicht in PCIe. Ich überlege, > da PCIe und USB auf meiner Sicht sehr ähnlich sind, gleich alles auf USB > zu machen. Cypress sei dank, geht das wohl mit mäßigem Aufwand. Mal > sehen. Also mein PanelPC ist auf basis eines Marvel Armada 300 (2000MHz) und ich habe den moit einem Marvel Discovery MV78200 (1200MHz) gekoppelt weil dieser 2 PCIe 4x ports hat, welche sich auf bis zu 8x PCIe 1x aufteilen lassen. Ich wollte die 4 Zusatzmodule direkt über 1x PCIe 4x und 3x PCI 1x anbinden, nur war das ganze mit der Sicherheit und so sch..., das ich nun ein einem PCIe 1x dann einen USB 3.0 Controller (also so einer, wie er auch auf den PCIe Karten ist) fest angeschlossen habe und nun alles über eine USB 3.0 Device Contrilelr à la FX3 mache. Somit sind sämmtliche Probleme auf einmal erschlagen worden Treiber für USB 3.0 gibt es mittlerweile unter allen Betriebssystemen und ich muß da nichts mehr programmieren. > PCIe: Treiber schreiben+, FPGA-, direkter Portzugriff+ > USB: Zugriff nur über vorgegebene Endpunkte-, USB-BUS-Struktur-, Einfach > durch Cypress+ > > Ich kann mich nicht entscheiden...Wird wohl noch eine Weile dauern Also ich empfehle Dir USB 3.0! Grüße Michelle
Michelle Konzack schrieb: > Also ich empfehle Dir USB 3.0! Danke, Michelle, das werde ich beherzigen. Ich werde mir den FX3 angucken. Viele Grüße Silvio
Christian R. schrieb: > PEX8311 Den habe ich auch schon einmal in Betracht gezogen. Aber aus PCIe wieder PCI zumachen, um einen "normalen" Bus zuhaben, ist doch echt M...! Früher war die Welt noch einfach. Leider sterben die gut-handelbaren Busse aus. Erst ISA, OK langsam aber als Basteleinstieg sehr nett. Jetzt PCI. Schade. Ich merke gerade,i ch habe den 8311 mit dem 8112 verwechselt. Deshalb auch die Treiber. Habe mich schon gewundert. Gruß Silvio
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.