Projekt Signal-Auswertung mit High-Speed-ADC

OP #2267490
Lesenswert?

Hallo Leute,

beim Entwurf meiner Hardware für ein Uni-Projekt könnte ich Hilfe 
gebrauchen.
Es geht um Folgendes:

1. Ein ADC soll ein Empfangssignal mit 1GHz Bandbreite unterabtasten.
2. Die digitalisierten Daten sollen zur weiteren Verarbeitung auf den PC 
übertragen werden.

Im empfangenen Signal ist ein periodischer 128-bit breiter Bitstream, 
der jedoch als solcher nicht mehr erkennbar ist. Da es eine periodische 
Bitfolge ist, ist eine Unterabtastung möglich, ohne dass 
Nyquist-Kriterium verletzt wird. Das analoge Empfangssignal soll also 
"nur" digitalisiert werden. Was mit den digitalen Daten auf dem PC 
geschieht, ist eine andere Story.
Ich habe mich bei High-Speed-ADCs umgeschaut ein paar ausgesucht (als 
PDF angehängt). Dabei kommt es auf deren Eingangsbandbreite an. Bei dem 
ADS5103 ist sie mit 950MHz (bei -3dB) angegeben und ich frage mich, ob 
das für meine Zwecke reicht.

Schwierigkeit sehe bei der Handhabung der digitalen Daten am Ausgang des 
ADC. Die Auflösung von 10bit ist m.E. ausreichend und bei z.B. 40MSPS 
Abtastrate kommen da schon zig MByte/s zusammen (40MB/s bei 
8bit-Auflösung). Wie kann ich diese Datenmenge ohne viel Aufwand auf 
einen PC übertragen?

Vielleicht hat jemand hier aus dem Forum Erfahrung mit solchen Sachen...
Ich wäre für jeden Tipp oder Rat dankbar.

Grüße
lele
Angehängte Dateien:
Gast #2267495
Lesenswert?

naja das ist schon heftig, was steht dir den HW seitig zur Verfügung?

Gbit Ethernet?
USB2.0?
FireWire?

Die Daten könnte man event. vorher komprimieren und dann an den PC 
weiter Leiten, oder lokal Speichern wenn es geht und dnan abrufbar 
machen?

Wie lange musst du die Daten aufzeichnen?
OP #2267517
Lesenswert?

Bei der Sample-Sequenz nehme ich mal salopp 1s an.
Bei der Schnittstelle zum PC habe ich an USB 2.0 gedacht, mit einem 
FTDI-Chip relativ einfach umzusetzen.
Mit 480Mbit/s = 60MByte/s, abzüglich Overhead könnte es hinkommen. Aber 
das ist nur eine Vermutung.
Ich habe auch an einen Static-RAM gedacht, wo die Daten erst mal 
gesammelt werden und dann zum PC übertragen. Das wäre dann wohl eine 
Lösung mit einem uC oder DSP. Auf FPGA/CPLD möchte ich verzichten, da 
die Zeit (Programmieraufwand) und Mittel knapp sind.
Was könnte ich denn in so einem Fall als uC verwenden, der die Daten auf 
dem RAM vorerst unterbringt? (bevorzugt sind AVR und PIC)
OP #2267662
Lesenswert?

@Andi: solange es kein BGA ist, ist Gehäuseform nicht wichtig.

Liege ich richtig in der Annahme, dass der uC mindestens die gleiche 
Taktfrequenz haben müssße wie ADC-Abtastrate? Also bei dem ADS5103 wären 
es dann mind. 40MHz, beim LTC2242 250MHz. Oder ist eher die MIPS-Angabe 
des uC relevant? Wie ist da der Zusammenhang und worauf muss ich achten?
#2267695
Lesenswert?

Ich habe da gleich mehrere Gedanken, wenn ich den ersten Post des TE 
lese:
- A/D 10 Bit, mind. 1 GHz Bandbreite, e2v stellt sowas her, Analog 
Devices auch, sogar mit 12 Bit. Die haben Multiplex-Ausgänge, also eine 
reduzierte Rate für die Daten, "nur noch" 1.25 GSPS beim e2v. Da braucht 
es ein mächtiges FPGA zur Weiterverarbeitung der Daten.
- Die Algorithmen für die "Demodulation" müssen im  FPGA und 
angeschlossenen sehr schnellen Cache-RAMs stattfinden, sonst ist die 
Datenrate gar nicht zu schaffen. Wir reden von mindestens 2 GByte/s, die 
auch so schnell verarbeitet werden müssen. Kein Pappenstiel.....
- Der Dynamikbereich eines 10 bit A/D-Wandlers ist begrenzt, das 
thermische Grundrauschen ist bei der Bandbreite recht hoch. Man muß sehr 
aufpassen, daß das gesuchte Signal nicht im Quantisierungsrauschen 
verschwindet, und der Wandler gleichzeitig nicht übersteuert wird. Nicht 
einfach!

So ein System habe ich mal in einer Firma "erlebt". Die Programmierung 
des FPGA machte ein Dr.-Ing., der brauchte länger als 1 Jahr um es 
sauber zum Laufen zu bringen. Das Layout benötigte länger.......12 
Lagen.

Gruß, Jochen
OP #2267723
Lesenswert?

@ Jochen: Danke, du hast Recht, aber ich möchte unterabtasten - z.B. mit 
40MSPS. Deswegen habe ich oben im 1. Thread die beiden ADCs 
vorgeschlagen.
Das Quantisierungsrauschen ist nicht von Belang, da das eigentliche 
Empfangssignal ohnehin u.a. im Weißen Rauschen untergegangen ist. Aber 
darum geht es nicht. Ich arbeite am Konzept für die Übertragung der 
digitalisierten Daten zum PC. Das ist das eigentliche Problem und hier 
benötige ich Hilfe.
OP #2267755
Lesenswert?

@Jochen: Ja, danke für den Hinweis. Aber das ist mir auch bewußt, nur es 
soll dabei auch nichts "rauskommen". Die ganze Bearbeitung, 
Spektralanalyse, Korrelation mit anderen Signalen usw. erfolgt später am 
PC, aber wie gesagt - es ist eine andere Geschichte. Was später genau 
mit den Daten passiert weiß ich nicht, also um Auswertung in dem Sinne 
geht es hier nicht.
#2267771
Lesenswert?

Toll!
Schon wieder ein Marketingexperte, der sich für einen Ingenieur 
hält.....
Die Versprechen an den Aufsichtsrat werden wie Seifenblasen zerplatzen, 
und übrig bleibt - ein Verlust für die Aktionäre.
Ich habe wirklich genug von den Sprücheklopfern mit ihrem gefährlichem 
Halbwissen!
OP #2267785
Lesenswert?

Jochen Fe. schrieb:

> ... der sich für einen Ingenieur
> hält.....

...noch nicht, aber hoffentlich bald - noch bin ich Student. Habe eine 
Aufgabe vom Prof eine Hardware zu entwerfen. Aber genug Rechtfertigung - 
falls du mir keinen Rat zu meinem eigentlichen, oben beschriebenen 
Problem geben kannst, bitte ich dich diesen Thread zu ignorieren.
Für bisherige Hinweise - danke.
Gast #2268218
Lesenswert?

Hab gerade mal geschaut ob jemand was interessantes hier reingeschrieben 
hat.
Ist ja nicht so ergiegig.

Sag mal Michi (wenn du überhaupt noch hier reinschaust!):

Ist das soweit richtig das du nicht genug Samples pro Sekunde aufnimmst 
um ein Signal höher als 20 MHz (habe mal gelesen das man die 
Taktfrequenz, also hier deine 40 MHz, halbiert) noch korrekt darstellen 
zu können?
Da bleibt bis zum 1 GHz ja noch ne Menge platz ;o)
ABER das scheint auch nicht die Aufgabenstellung zu sein hier ein Signal 
bis zu 1 GHz darstellen zu wollen.
Du sollst die Daten dir du mit den 40 MHz Takt sampelst entweder über 
ein µC oder irgendeinen anderen Chip zum PC wuchten. FTDI wird da auch 
nicht ohne einen µC auskommen.
Wenn du etwas Zeit hast und 50 Euronen mitbringst dann würde ich zu 
einem PIC32MX795F512L mit 80MHz Taktrate raten (ich würde es damit 
jedenfalls mal probieren!). Wenn es nicht geht scheiß drauf und versuch 
was anderes. Damit du nicht zuviel Zeit da reinsteckst schau dir das 
Board hier an:

TDGL003  - chipKIT Max32 Development Board
http://www.microchipdirect.com/ProductSearch.aspx?Keywords=TDGL003

USB2 OTG und Ethernet 10/100, 2 gute Möglichkeiten.
Ich nehme an das du Samples über einen langen Zeitraum aufnimmst und 
weil du einen periodischen Bitstream in dem Signal versteckt hast am 
Ende durch puzzeln darauf kommst wie der aussieht. Aber das ist ja dann 
auch nicht deine Baustelle sondern das übernehmen die Jungs am PC.
Die anderen scheinen der Meinung zu sein das du nur an diesen Stream 
wieder rankommst wenn du das Signal annähernd gut wiedergeben kannst. 
Und daher wohl die Verwirrung im Thread.

Gruß
Andi
OP #2268356
Lesenswert?

@Andi: Du hast es erfasst, worum es geht. Danke für den Tipp.

Ich versuche noch mal deutlicher meine Überlegung darzustellen.
Ihr könnt ja sagen, ob ich falsch liege.
Der Sender sendet mit 1GHz Takt periodisch eine 128bit-breite Bitfolge 
(ein PN-Signal), also ein Rechteck-Signal. Die Bitfolge-Sequenz hat also 
eine Wiederholungsfrequenz von 1GHz/128=7,8125MHz
Es geht darum, inwiefern ein "langsamer" ADC für dessen Unterabtastung 
geeignet ist. Ich war nicht dabei, aber die haben diese Prozedur bereits 
mit einem Digitaloszilloskop hinbekommen. Also Unterabtastung, 
Daten-Speicherung, auf dem PC mit Matlab ausgewertet.(wie genau sie das 
gemacht haben - werde ich wohl nächste Woche in Erfahrung bringen) Jetzt 
geht es darum eine Platine mit z.B. dem ADS5103 aufzubauen, die das auch 
kann. Ich bin auf der Suche nach einem System (uC, Speicher, 
Übertragungsschnittstelle), das so eine Datenmenge (40MSPS x 10Bit = 
50MByte/s) bewältigen kann. Die meisten EvoBoards mit solchen 
High-Speed-ADCs haben einen FPGA. Ich denke mann kann es auh mit einem 
uC realisieren.
Im Moment weiß ich noch nicht so recht was ich alles bedenken muss und 
wie ich an die Sache rangehe. Deswegen suche ich Hilfe hier.
Da sind z.B. Fragen zu klären:

1. Reicht eine Samplingdauer von 1s aus?
2. Kann ich den parallelen Ausgang des ADC mit einem uC synchron 
auslesen?
3. Braucht die Schnittstelle ADC-uC einen Buffer?
4. Ist für die Verarbeitungsgeschwindigkeit die Taktfrequenz des uC 
relevant oder eher die MIPS-Angabe?
5. Wie groß soll der statische Speicher auf dem Board sein. (hängt wohl 
von Samplingdauer ab)
Gast #2268584
Lesenswert?

>4. Ist für die Verarbeitungsgeschwindigkeit die Taktfrequenz des uC
>relevant oder eher die MIPS-Angabe?
Sicher dass du dir sowas zutraust? Wenn der Prozessor für eine 
Instruktion 10 Takte braucht bringen dir 100MHz auch nix. Geht natürlich 
um die MIPS. Du musst außerdem überlegen was für nen Prozessor du nutzt. 
Wenn du ARMs oder vergleichbares benutzt kannst du evtl. sogar was mit 
DMA reißen, sprich den eigentlichen Prozessor entlasten. Kommt aber wohl 
auf die Schnittstelle zum ADC an, wenn du einen externen nutzt.

>5. Wie groß soll der statische Speicher auf dem Board sein. (hängt wohl
>von Samplingdauer ab)
40 MSPS * 10bit macht 400 MBit/s macht also 50MB/s. Wenn du eine Sekunde 
samplen willst also 50MB. Da du mit Sicherheit nicht so viel SRAM billig 
kriegst läufts wohl auf SDRAM raus. Da kann man schon mal 64MB an nen 
ARM hängen. Auf der anderen Seite kriegst du das halt auch nich durch 
100MBit Ethernet. Also die eine Möglichkeit wäre wirklich nen riesen RAM 
ranzuhängen, die andere einfach nen ARM mit Gbit LAN zu nehmen und den 
DMA die Daten von einem in den anderen Puffer zu schieben. Da ist die 
Frage ob das schnell genug geht, müsste man mal rechnen.
Alles in allem hat es schon seinen Grund, dass für sowas meist FPGAs 
genutzt werden.
OP #2269396
Lesenswert?

Es gibt eine Aktualisierung der Anforderung an meinen Empfänger.

Das Signal muß nicht zwangsläufig mit 40MSPS abgetastet werden. Da es 
sich hierbei um Unterabtastung handelt, ist die Samplingrate kein 
entscheidendes Kriterium. D.h. ich kann auch langsamer und dafür über 
längeren Zeitraum samplen - bis der Speicher eben voll ist.
Also folgende Prozedur:

- uC liest digitalen ADC-Wert aus
- uC schreibt den Wert in SRAM (paar ADC-Werte gehen solange "verloren")
- uC liest digitalen ADC-Wert aus
- uC schreibt den Wert in SRAM (paar ADC-Werte gehen solange "verloren")
...
...
- Speicher voll

Dann werden die ganzen Daten an den PC übertragen.
Die Datenübertragung soll über USB mit der simulierten 
RS232-Schnittstelle erfolgen. So die Vorgabe.
Das bedeutet der ADC tastet zwar mit 40MSPS ab, jedoch bestimmt der uC 
die "effektive" Abtastrate. Jetzt etsteht bei euch evtl. die Frage warum 
ich nicht einen langsameren ADC nehme oder den internen vom uC benutze? 
Die Antwort ist: Weil hier die Eingangsbandbreite von 1GHz entscheidend 
ist und langsame ADCs mit so einer Bandbreite gibts nicht auf dem Markt. 
Ich muss noch in Erfahrung bringen, ob 950MHz schon ausreichen. Wobei 
ich das bezweifele, da 1GHz der Takt des Senders ist und zwar nur die 
sin-Grundschwingung.
Übrigens - der Takt für mein System kommt vom Sender (vermutlich 1GHz - 
das muss ich noch erfragen), d.h. mein Empfänger soll mit dem Sender 
synchron laufen.

Hat jemand einen konkreteren Vorschlag zur Realisierung?
Welchen uC könnte ich nehmen, um die Sache möglichst einfach zu machen? 
(Andreas G. hat bereits den PIC32MX795F512L mit 80MHz vorgeschlagen)

Danke im voraus
lele
Gast #2269507
Lesenswert?

Moin Michi,

das wichtige wird das synchronisieren sein und das der PIC32MX795F512L 
mit einen Takt von 1 GHz zu synchen ist wage ich zu bezweifeln.
DMA hat der µC übrigens auch auch.
Aber ich habe keinen Plan wie das mit dem synchronisieren laufen soll.

Gruß
Andi
Gast #2269551
Lesenswert?

Michi B. schrieb:
> die Frage warum
>
> ich nicht einen langsameren ADC nehme oder den internen vom uC benutze?
>
> Die Antwort ist: Weil hier die Eingangsbandbreite von 1GHz entscheidend
>
> ist und langsame ADCs mit so einer Bandbreite gibts nicht auf dem Markt.

Du brauchst keinen so schnellen ADC, es reicht schon eine geeignet 
S&H-Einheit.
OP #2269631
Lesenswert?

@ NoPoP: Bisher habe ich keine S&H-Einheit mit 1GHz bandbreite gefunden.

Der ADC ADS808 von TI hat die Bandbreite von genau 1GHz (so brauche ich 
keinen Band- bzw. Tiefpass) und einen CMOS-Parallel-Ausgang (viele ADCs 
in diesem Sektor haben LVDS). 80MSPS Samplingrate und 12-bit-Auflösung 
sind zu viel, aber nicht entscheidend. Hat TQFP-Gehäuse.

Der erwähnte PIC32MX795F512L sollte den Ansprüchen genügen.

Was benötige ich für eine Takt-Synchronisierung? Reicht ein 
Frequenzteiler?
Angehängte Dateien:
OP #2270544
Lesenswert?

Kann mir jemand sagen wie lange der PIC32MX795F512L (80MHz) braucht, um 
einen externen 12-bit-ADC über seine I/Os auszulesen und den Wert sofort 
in einem externen SRAM abzuspeichern? Die Frage bezieht sich nur auf 
softwareseitige Umsetzung, also ohne DMA. Zur Auswahl stehen zwei SRAMs 
- einmal mit 10ns Zugriffszeit und einaml mit 55ns. Ich weiß, dass es 
von der Komplexität des Codes abhängt bzw. wie umständlich man 
programmiert hat. Ich möchte es gern so PI x Daumen wissen, bei einem 
mehr oder weniger optimalen Code.

Danke im voraus
lele
OP #2270592
Lesenswert?

Nach dem heutigen Gespräch mit dem Erbauer des Senders hab ich folgendes 
grobes Konzept: s. Bild.

ADC1 erfasst Sender-Signal, identischer ADC2 erfasst synchron das 
Empfänger-Signal. Daten werden gespeichert bis der Speicher voll ist. 
Dann erfolgt die Datenübertragung zum PC. Mir stellt sich die Frage, ob 
der Takt für ADCs vom Sender komen muss... Ich glaube in diesem Fall 
nicht.
OP #2271014
Lesenswert?

Der Bitstream läuft im Sender mit 2GHz Takt. Das Spektrum des 
eigentlichen PN-Signals ist eine sin(x)/x Funktion mit dem ersten 
Nullpunkt bei 2GHz. Da der Anteil der zu übertragenden Leistung im 
Bereich 1GHz... 2GHz sehr gering ist, wird alles über 1GHz weggefiltert, 
um es nicht senden zu müssen ("nur" 5%... 10% des Signals gehen so 
verloren).

Seit gestern habe ich etwas mehr Infos über die ganze Sache. Es ist ein 
Radar-Projekt und es soll die Phasenverschiebung zwischen dem Sende- und 
Empfangssignal gemessen werden. Sender und Empfänger befinden sich also 
in einem Gerät.
So vereinfacht sich die ganze Sache, ich nehme einen zweiten ADC. Der 
eine tastet den Sender ab, der andere den Empfänger. Da beide denselben 
Takt verwenden, laufen sie synchron. Damit erübrigt sich das Problem mit 
der Synchronisierung. Den Takt für meine Komponenten kann ich dann 
selbst vorgeben.
So stelle ich mir das ganze vor. Ist meine Überlegung soweit richtig?
OP #2271291
Lesenswert?

Ja - im uC einen Counter laufen lassen, der periodisch die Zeitpunkte 
zum Einlesen der digitalen Werte vorgibt.
Wo steht es im Datenblatt vom z.B. ADS808 (s.o.) wie lange der 
digitalisierte Messwert am ADC-Ausgang gehalten wird bzw. zum Lesen zur 
Verfügung steht? Ist diese Dauer fest vorgegeben oder ist das gleich der 
Abtastzeit bzw. davon abhängig, also z.B. bei 1MSPS wäre das 1us?
Gast #2271483
Lesenswert?

Das  mit  der Unterabtastung koennte  man ja so ausdruecken:

im ersten 128er  Zeitschlitz  wird das erste Bit abgetastet,
im  2.  das zweite,
im 3.  das dritte  u.s.w.

Da man  im 3.  Schlitz  nicht das 4.  bit  abtasten will,
muss der Takt  am ADC mit einer Praezision  von 1/3 ns  anliegen .

Der Mikrocontroller koennte mit einem Takt  von  1GHz/129 betrieben 
werden,
das stellt sicher dass das load und store immer exakt mit jedem
Zeitschlitz  ein bit spaeter passiert.

Eine PLL  kann diesen Takt generieren und sollte auch
direkt den ADC-Takt erzeugen. Den Takt vom Mikrocontroller
zu entnehmen halte ich fuer keine gute Idee, da  ist zuviel jitter
drauf.

Der Mikrocontroller kann allenfalls ein clock-gating-Signal erzeugen
mit der der PLL-Takt an den ADC weitergeschaltet wird.
Das gate-Signal muss eben ein paar ns vor dem eigentlichen ADC Takt
auf HIGH gehen,  13 Takte auf HIGH bleiben ( bei 12 bite pipelined ADC
reicht das, aber trotzdem Datenblatt checken  ) und dann wieder auf LOW.
OP #2271491
Lesenswert?

Michi B. schrieb:
> im Datenblatt vom PIC32MX steht folgendes:
>
> "• Parallel Master and Slave Port (PMP/PSP) with
> 8-bit and 16-bit Data and Up to 16 Address Lines"
>
> Bedeutet das, dass ich maximal 64k x 16bit = 128kByte externen SRAM
> nutzen kann?

Hab die Antwort selbst gefunden. Falls es noch jemanden interessiert, 
folgendes steht im Datenblatt:

Question 1:Is it possible for the PMP module to address memory devices 
larger than 64K?

Answer:Yes; however, not directly under the control of the PMP module. 
When using the PMCS2 or PMCS1 Chip Select pins, the addressable range is 
limited to 16K or 32K locations, depending on the Chip Select pin being 
used. Disabling PMCS2 and PMCS1 as Chip Selects allows these pins to 
function as address lines PMA15 and PMA14, increasing the range to 64K 
addressable locations. A dedicated I/O pin is required to function as 
the Chip Select and the user’s software must now control the function of 
this pin.
To interface to memory devices larger than 64K, use additional available 
I/O pins as the higher order address lines A16, A17, A18, etc., as shown 
in Figure 13-46.
OP #2276271
Lesenswert?

Kann mir jemand sagen mit welchem IC (Frequenzteiler) ich den Takt 
dieses ADC (Anhang) über seinen Clock-Eingang einstellen/ändern kann? 
Ich möchte bei 1MHz anfangen und aufwärts die Samplerate einstellbar 
machen (Schrittweite erst mal egal). Muss aber nicht bis 70MSPS gehen 
(s. Datenblatt), 20MSPS oder 40MSPS als Maximum würden reichen.
Angehängte Dateien:
Gast #2453741
Lesenswert?

@ Michi B.

Solche Teiler können im einfachsten Fall schnelle Logik-Binärcounter der 
HC Serie sein oder PLLs.
Bei geraden Verhältnissen billige Logik, wenn die Teiler ungerade sein 
sollen, dann PLL.
Je nach Auflösung des Phasenakkumulators kannst du Teiler bis XXXbit 
aufbauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren