Hallo,
ich habe eine Problemstellung und suche gerade nach einer Lösung. Das
Problem ist: ich möchte ein einmaliges Signal mit 100MSa/s und 16Bit
abtasten und einfach in einen Festspeicher überführen. Oszis sind dazu
entweder nicht in der Lage oder einfach sehr Kostenintensiv. Es gibt
FPGA-Lösungen mit ADC's die auch immernoch nicht billig sind aber
immerhin handlebar (NI mit dem RIO).
Ich habe Zeit und Zugriff auf entsprechende Mess-/Ätztechnik usw.
Nun die Frage:
Wie Anspruchsvoll ist es ein Board mit 2 ADC's + FPGA + 512MB SDRAM so
zum laufen zu bringen, dass die FPGA die Daten der ADC's einliest und in
einen Ringspeicher überträgt. Im Grunde eine einfache Schleife und bei
Triggerung einfach stoppt. Im zweiten Schritt könnten die Daten noch auf
einen Festspeicher übertragen werden.
In meiner Vorstellungswelt klingt das nach hochwertigen ADC's und einem
sehr einfachen FPGA mit einem großen Speicher (leider finde ich unter
den ganzen Boards (Xilinx/Altera) solch eine Konfiguration nicht).
Die Frage ist ob ich mich damit auseinandersetze und das Problem
tatsächlich lösen kann. Ich möchte verhindern, dass ich in 2 Monaten
feststellen muss, dass ich im Grunde schon von Anfang an keine Chance
hatte.
Daher die Frage: kann man das realistisch schaffen wenn man sich da 3
Monate hineinarbeitet?
Grüße
Hm, naja, da sind einige anspruchsvoelle Sachen dran.
1. 100MS/s Abtastrate bedeutet du willst Signale im MHz Bereich messen.
Dazu muss deine Schaltung um die 50MHz Bandbreite haben. Sowas macht man
nicht mal nebenbei und schon gar nicht auf einer 2-Lagen Platine. Da
sind 4 Lagen Minimum, und auch das wird in Verbindung mit dem FPGA nicht
reichen. Rechne mit einem 8-Lagen-Design, das ist realistisch, wenn du
noch was von den 16 Bit haben willst. Deine Analogtechnik muss
schließlich dann mindestens 96dB Signal-Rausch-Abstand haben, damit du
die 16 Bit nutzen kannst, wenn ich mich jetzt nicht verrechnet habe.
2. Der ADC. 16 Bit 100MSa/s sind schon sportlich, da ist viel Erfahrung
nötig, um den richtig zu treiben. Siehe oben.
3. Der SDRAM. SDRAM zu betreiben ist ebenfalls nicht gescheit mit einem
2-Lagen Design machbar, alle Leitungen müssen gleich kurz sein, die
Terminierung muss dran.
4. Das FPGA Design. Das scheint noch (bis auf den SDRAM Controller) das
geringste Problem zu sein. Problemtatisch ist der SDRAM Controller, da
muss man sich schon eine Weile einarbeiten, speziell, wenn man den auch
noch als FIFO missbrauchen will.
Ist das eine Diplomaufgabe oder sowas? Aber das ist nix für einen
Anfänger, gerade das Platinendesign.
Mein Tipp: FPGA-Demo-Board plus ADC-Platine. Dann hast du immer noch das
Analogteil, an dem du dir mindestens 3 Monate die Zähne ausbeißen
kannst.
Schau mal bei Xilinx, die haben da einige FMC Platinen gelistet, da ist
sicher was passendes dabei.
Komplett neubauen und Null Erfahrung mit FPGA in 3 Monaten sehr
sportlich.
Wenn du Erfahrung mit Analogtechnik und Elektronik hast müßtest du dir
nen FPGA Board mit DDR RAM + USB + genug IOs für selbstgebastelte
Analogwandler Platine besorgen.
Dann baust du die Wandlerplatine passend zum FPGA board selber.
Ist in einem Monat sicherlich zu schaffen.
Dann must du "nur" noch die Wandler am FPGA zum laufen bekommen.
Die DDR RAM Anbindung sollte mit den IP Cores zu machen sein.
Danach die PC Software.
z.B. als FPGA Board
http://www.ebay.de/itm/Spartan-6-LX25-FPGA-Entwicklungskit-USB-2-0-64MB-RAM-/270790226670?pt=Wissenschaftliche_Ger%C3%A4te&hash=item3f0c5af2ee
Danke für die schnelle Antwort. Den zeitlichen Rahmen habe ich jetzt
mehr oder weniger aus der Luft gegriffen.
Ich hätte auch die Möglichkeit mich erstmal einzuarbeiten mit dem
vorgeschlagenen Testboard.
Letztlich habe ich so etwas im Auge:
http://www.entegra.co.uk/x5_rx_adc_virtex5_pcie.htm
oder:
http://www.gbm.de/fpga-systeme/dime-2-module/BENADDA-16-LX155T/
Nur würde ich mir das gerne selber erarbeiten (in der Hoffnung es auch
etwas günstiger hinzubekommen). Es kann auch länger dauern - solange es
Aussicht auf Erfolg hat.
Gibt es evtl. empfehlenswerte Literatur die sich zum Einstieg gut
eignet? Dass die Anforderungen recht sportlich sind, ist mir durchaus
klar :]
Schöne Grüße
fritze^
>Nur würde ich mir das gerne selber erarbeiten (in der Hoffnung es auch>etwas günstiger hinzubekommen).
Selbst wenn Du für die Herstellung der Platine und das Bestücken nichts
zahlen musst, die Bauteile wirst Du kaufen müssen. Und die sind in
kleiner Stückzahl teuer -- und dass der erste Prototyp funktioniert ist
selten.
Eigentlich hätte man auf Deine Frage antworten können: Das weiß
vermutlich keiner besser als Du selber, und wenn Du überhaupt fragen
musst, dann wirst Du lange brauchen. (Ich habe mal etwas ähnliches
gebaut, ging mir auch so. Leider muss ich für Platine, Bauteile und
Bestückung je ca 500 Euro zahlen, daher ruht das Projekt.)
Aber mach nur, man lernt viel.
Uwe schrieb:> komplett neubauen und Null Erfahrung mit FPGA in 3 Monaten sehr> sportlich.
Vollkommen Unmöglich! Selbst, wenn alles im zweiten Schuss läuft, sind
es Analog nicht mal 60dB Güte und ich gehe nicht davon aus, dass jemand
ohne Erfahrung ein DDR-Design hinbekommt. Ich weiss, wovon ich rede und
kenne mein erstes ADC+FPGA-Design ganz genau :-)
Wenn Dir 14Bits reichen, kann ich Dir das hier empfehlen:
http://www.mikrocontroller.net/articles/Datei:Altera_fpga_based-oscilloscope-logic_analyzer-spectrum_analyzer.jpg
Gesamtkosten sind etwa $700,-
Macht 150 MHz und ein Samplespeicher ist mit dem internen Logic Analyzer
"Signal Tap" binnen Minuten aufgebaut und per JTAG ausgelesen. Du musst
also nichts bauen - abgesehen, von ein bissl ADC -Ansteuerung. Es gibt
da aber ein Beispieldesign, dass Du abwandeln kannst. Der Gesamtaufwnad
dürfte bei 2h liegen, bis es läuft. Wenn Du etwas mehr Zeit investierst,
kannst Du ein serielles Interface, USB oder Ethnet in Betrieb nehmen und
das Ganze bequem auf den PC hochladen. Da sieht es mit Beipielen aber
dunkler aus.
Naja, selbst mit ADC-Board hast du noch kein Stückchen Frontend dran.
Das ist die wahre Arbeit. Um halbwegs sinnvoll sowas ähnliches wie ein
Oszi zu haben, ist da ein riesen Grab von Analog-ICs nötig.
Das ganze wird kein echtes Oszi. Es kommen lediglich ein Antialising je
Kanal, PreAmps und für einen Kanal noch nen Integrierer rein. Dannach
wird das ganze gekapselt und soll nur funktionieren.
Mit den 14Bit und den 65MSa/s kann ich durchaus leben.
Lediglich über das Auslesen der Daten mach ich mir noch Gedanken.
Grüße
Bist du sicher, dass das ADC-Board an das DE2-70
angeschlossen werden kann? Das ADC-Board hat glaube
ich ein HSMC-Connector, das DE2-70 nicht. Es gibt
aber das kaum teuerere DE2-115 (Cyc-IV statt Cyc-II),
das ein HSMC hat.
Das Terasic ADC Board gibt es wie hier
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=67&No=278
auf den Bildern zu sehen und darunter zu lesen mit GPIO und HSMC.
Über das Auslesen machst du dir Gedanken, ja, da wären die Eckdaten
wichtig. Du schreibst ja, dass du ein einmaliges Signal abtasten
möchtest.
Also:
Wieviele Daten fallen an?
Wie schnell müssen diese ausgelesen werden?
Welche Schnittstellen bist du bereit zu bauen?
Ich speichere auch Daten in einen RAM, Spektren sind das die dann bis zu
2MBytes groß sind. Da lässt sich sehr bequem mit 921600 Baud seriell
übertragen. Das machen zwar nicht alle serielle Schnittstellen am PC
mit, aber es gibt recht günstige USB-UARTS dann kann man den PC gleich
über USB anschließen. Ich verwende http://www.poscope.com/pousb12-57
Wenn es mehr Daten sind oder schneller gehen soll, dann kannst du
Ethernet verwenden was aber deutlich schwieriger ist, ich hab mich da
nicht rangewagt. Du könntest aber auch eine SD-Card verwenden, ein
Steckplatz ist auf vielen Terasic Boards verbaut. Vielleicht ist das
noch halbwegs einfach oder es liegen Beispiele bei. Da könntest du die
Daten aus dem RAM auf Karte speichern und dann zum PC, ist halt mit
Latenz und du müsstest dich vielleicht um das Dateisystem kümmern.
Einen PC wird es im Einsatz nicht mehr geben, die Daten werden in meiner
Vorstellung einfach hintereinanderweg in den RAM und im Anschluss auf
einer SD-Karte oder über USB auf einen Datenträger gespeichert (die
SD-Karte ist aber die rezivollere Variante).
Das neuere Board hat darüber hinaus auch 128MB RAM, was zusätzlich
reizvoll ist. Die Datenmenge wird durch den Speicher vorgegeben.
Interessant sind im Grunde nur etwa 10ms, jedoch aus einem längeren
Ereignis von dem es sich lohnt auch mehr aufzunehmen (mit den 128MB RAM
wären ja rein theoretisch (128*1024*1024*8/28)/(65e6) = 589,97ms
möglich. Die Triggerung könnte hier noch Probleme bereiten. Das
Speichern als roher Bitstream müsste dann die FPGA übernehmen.
Vielleicht kann mir aber einer bei einem Verständnisproblem helfen. Der
ADC arbeitet mit 65MSa/s -> der FPGA jedoch nur mit 50MHz. Wie will er
es dennoch schaffen diese Daten einzulesen, ausser der ADC übergibt
immer 2 Daten parallel also 28Bit und das je Kanal (56Bit)?
Grüße Martin