Forum: FPGA, VHDL & Co. ADC + FPGA + DRAM


von fritze^ (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

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

von fritze^ (Gast)


Lesenswert?

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^

von Salewski, Stefan (Gast)


Lesenswert?

>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.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

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.

von Gustl B. (-gb-)


Lesenswert?

Hallo,
ich wollte einen Oszi selber bauen, also auch ADC + FPGA, aber ja das 
lohnt sich nicht wirklich. Jetzt will ich villeicht mal Messdaten damit 
digitalisieren und auswerten und ein uraltes Gerät ersetzen.

Jedenfalls hatte ich nach billigen schnelle ADCs gesucht und da gibt es 
von der Firma Terasic welche die auf deren Boards passen.

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=67&No=278

Hier gibt es auch noch welche:
http://www.knjn.com/ShopFlashy.html

von fritze^ (Gast)


Lesenswert?

Das ist die Altera-Lösung:

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=53&No=226&PartNo=2

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=278

Die hatte ich heute Nachmittag auch schon im Auge. Die ist im Vergleich 
zu meinen bisherigen Lösungen um den Faktor 10-15 günstiger, quasi ein 
Schnäppchen.

Wobei ich diese hier auch recht interessant finde.
http://www.ztex.de/usb-fpga-1/usb-fpga-1.11.d.html

Danke schonmal an dieser Stelle. Es scheint jedenfalls nicht unmöglich 
zu sein. Nur das war mir erstmal wichtig.

Grüße fritze^

von Christian R. (supachris)


Lesenswert?

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.

von fritze^ (Gast)


Lesenswert?

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

von Sigi (Gast)


Lesenswert?

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.

von Gustl B. (-gb-)


Lesenswert?

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.

von fritze^ (Gast)


Lesenswert?

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

von Sigi (Gast)


Lesenswert?

Der Eingangstakt hat 50MHz; lässt sich aber intern
auf deine Wunschfreq. umwandeln (Stichwort PLL/DCM etc.).

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
Noch kein Account? Hier anmelden.