Forum: Mikrocontroller und Digitale Elektronik 20MSPS ADC auslesen


von Thomas (Gast)


Lesenswert?

Hallo Zusammen,

zur Zeit stehe ich vor der Aufgabe 2 AD-Wandler mit einer maximalen 
Abtastrate von 20MHz auszulesen. Die ADCs werden ein paralleles 
Interface besitzen mit jeweils 16 Bit.

Nun stellt sich die Frage ob hier ein 32Bit-Prozessor ausreicht. Leider 
habe ich mich mit der Thematik noch nicht viel beschäftigt.


Zunächst hatte ich mir überlegt, die ADCs über die GPIO anzusteuern und 
diese dann mit DMA auszulesen. Hier habe ich allerdings schon die ersten 
Schwierigkeiten, denn wie es scheint sind die GPIOs nicht unbedingt mit 
DMA "ausgestattet".

Die ADCs mit "einfachem" Bitbanging auszulesen wollte ich zunächst 
vermeiden, da ich es bei 20MHz Abtastrate schon für sehr sportlich 
halte, hier genaue Zeiten einzuhalten. Oder sind meine Sorgen hier eher 
unbegründet?

Controller, welche ich mir angesehen haben waren z.B. die ARMs von Atmel 
- hier gibt es ja eine ganze Menge. Z.B. die SAM3, welche eher langsamer 
zu sein scheinen, oder die SAM9, welche mit bis zu 400MHz zur Verfügung 
stehen.
Von Microchip gibt es auch noch Alternativen (PIC32..). Diese besitzen 
auch ein "parallel Master port", welchen man wohl "ausgiebig" einstellen 
kann. Allerdings bräuchte ich dann wohl 2 davon. (Die ADCs sollen 
zeitgleich ausgelesen werden).


Könnt ihr mir hier eventuell ein paar Hinweise geben? Ist diese Aufgabe 
mit µCs noch praktikabel, oder würdet ihr hier eher einen FPGA 
verwenden?


Viele Grüße,
  Thomas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du könntest die ADCs an das Businterface eines ARMes anschließen, dann 
ist der Zugriff auf die ADC-Register ein einfacher Speicherzugriff.

Allerdings: Wenn man einen ADC ausliest, soll ja auch noch irgendwas mit 
den ausgelesenen Daten geschehen -- wo sollen die hin? Soll dauerhaft 
mit 20 MSPS gearbeitet werden?

von Thomas (Gast)


Lesenswert?

Es muss hier nicht Dauerhaft gewandelt werden. Aufnahmezeitraum vllt. 
10ms. Ein externer SRAM wäre dafür denke ich ganz gut geeignet. Die 
weiterverarbeitung erfolgt dann nach der Messung oder auf einem PC.

Was genau ist denn dieses Bus-Interface? Beim Atmel SAM4S habe ich zwar 
ein externen Bus gefunden, diese hat jedoch nur 8Datenbits (und 
16Adressbits). Beim SAM9N habe ich auf anhieb ein Bus-Interface (EBI) im 
Datenblatt gefunden, darüber werde ich mich mal genauer schlau machen.

Sowas höhrt sich von der Art jedoch schonmal ganz gut an.

Viele Grüße,
  Thomas

von Rumpel (Gast)


Lesenswert?

Allenfalls mit einem FPGA... 20MSample waehrend 10ms bedeuten 200k Word 
Speicher pro Kanal.

von Ale (Gast)


Lesenswert?

Ein XS-1 von XMOS kann das ganz gut...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas schrieb:
> Was genau ist denn dieses Bus-Interface?

Das, wo auch ein externes SRAM angeschlossen wird.

von m.n. (Gast)


Lesenswert?

Thomas schrieb:
> Es muss hier nicht Dauerhaft gewandelt werden. Aufnahmezeitraum vllt.
> 10ms. Ein externer SRAM wäre dafür denke ich ganz gut geeignet. Die
> weiterverarbeitung erfolgt dann nach der Messung oder auf einem PC.

Dann kämem 2 x SRAM 256k x 16 und zusätzliche Logik in Betracht, die die 
Daten aufnehmen könnten.

Thomas schrieb:
> Was genau ist denn dieses Bus-Interface?

Das ist ein Interface, mit dem man insbesondere ext. Speicher mit /CS, 
/WR, /RD, A0-An sowie D0-Dn Leitungen ansprechen kann.

Ich würde für Deine Aufgabe einen Renesas-Prozessor nehmen und ihn ein 
bißchen 'stressen'.
Die RX62 gibt es mit 32-Bit Datenbus und ext. DMA-Controller, der einen 
single-address-mode unterstützt. Dieser DMA-Controller ist in der Lage, 
Daten zwischen den beiden 16-Bit ADCs und dem ext. SRAM auszutauschen, 
ohne den µC-Kern zu belasten. In einem DMA-Zyklus werden die ADCs mit 
einem Lesesignal getaktet und legen ihre Daten auf den 32-Bit Bus; 
gleichzeitig wird dem SRAM ein /WR-Signal gegeben, die Daten zu 
speichern. Der DAM-Controller adressiert das SRAM mit fortlaufenden 
Adressen.

Kommen wir zum 'Stressen'. Dieser ExDMAC braucht drei Buszyklen, wobei 
die max. Busfrequenz 50MHz betragen kann (bei 100MHz interem Takt). Mit 
drei Zyklen käme man auf rund 17MHz Abtastrate. Erhöht man die 
Busfrequenz auf 60MHz, wäre das Timing perfekt. Die Taktfrequenz des µC 
müßte um 20% erhöht werden, wobei ich keine Probleme sehe.

Der Vorteil des RX62 wäre, Datenerfassung und -verarbeitung mit einem 
handelsüblichen µC erledigen zu können. Keine Spezielle Hardware, keine 
FPGA-Programmierung.

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.