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