20MSPS ADC auslesen

Gast #2951615
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
Gast #2951648
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
Gast #2951698
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.

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