Hallo,
für mein neustes Projekt benötige ich 8 ADCs mit 3MS, die alle
gleichzeitig sampeln.
Nun habe ich bereits einen ADC herausgesucht. SPI, 3MS, 10Bit, alles
super, aber:
Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen
der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben
werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege
steht.
Mich würde interessieren wie ihr das so macht.
Grüße
Michael
>Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen>der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben>werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege>steht.
Wieso?
Braucht's halt 3SPI's. Wo ist das Problem? Mit einem AVR brauchst du da
ohnehin nicht mal dran denken.
Grüsse
@ Michael Sonst (Gast)
>Nun habe ich bereits einen ADC herausgesucht.
Welchen?
>Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen>der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben>werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege>steht.
Warum? Weil ein normaler SPI-Master nicht 8 Stück gleichzeitig auslesen
kann? Ok, das ist ein Problem. Mit einem CPLD ginge es aber, dort kriegt
man 8 SPI-Master rein, die man dann vom uC aus lesen kann, ggf. sogar
mit parallelem (memory mapped) Interface. In die Richtung wird es so
oder so laufen, denn du hast ja immerhin 3x8=24 Msmps = 240Mbit/s, die
du in Echtzeit irgendwo speichern musst. Ein kleiner AVR kann das nicht
mehr, ein größerer ARM kann das auch nur memory mapped oder über
anderes, schnelle Schnittstellen.
Habe sowas ähnliches gemacht. 16ADC 12Bit 3MSamples. Gemeinsamer Clock
und nCS, separate Datenleitunge. Die ADC's werden von einem FPGA
angesteuert, funktioniert wunderbar. Problematisch wird aber die
Übertragung zum Computer.
@Falk Brunner:
-Den MAX11117.
-Hatte schon drüber nachgedacht die Datenleitungen in je ein Latch zu
schieben.
@Tach:
Ja, warum? 240MBit/s Ist ja nicht unbedingt viel.
@Delta:
Klingt sehr ähnlich =) Ist das öffentlich?
Grüße
Michael
Michael Sonst schrieb:> @Delta:> Klingt sehr ähnlich =) Ist das öffentlich?
Nein, das Projekt ist leider nicht öffentlich. Ist aber eigentlich auch
keine grosse Sache. Bei Fragen stehe ich natürlich gerne zur Verfügung.
Ich würde mir mal anschauen, ob ich mit 8 Wandlern eine Daisy Chain
aufbauen könnte. Immerhin steht im Datenblatt, dass der Baustein QSPI
könne. Dann hast du einen einzigen SS für alle ADCs. Siehe dort unten:
http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
Allerdings habe ich den schlimmen Verdacht, dass da bei Maxim einer
nicht weiß, was QSPI ist...
@Lothar: Laut Datenblatt hat der Baustein nur VDD, GND, AIN, nCS, DOUT,
SCLK, kein MISO :-/
Ehrlich gesagt ist das doch nicht wirklich eine Sonderlocke die ich da
basteln will. Seltsam, dass es hierzu so wenig Informationen gibt.
Grüße
Michael
Michael Sonst schrieb:> @Tach:> Ja, warum? 240MBit/s Ist ja nicht unbedingt viel.
Na dann :-)
Ich hab das auch schon mal gemacht.
Waren 10x 14Bit x 3MHz, also geringfügig mehr...allerdings hatte ich
einen FPGA und konnte mir mit entsprechend vielen SPI-Schnittstellen
bzw. Logik behelfen.
Entweder willst Du die Daten direkt im uC weiterverarbeiten oder Du
willst Sie irgendwohin übertragen.
Beides ist nicht gerade ohne (persönliche Meinung).
Delta hatte ja schon erwähnt dass selbst eine Übertragung zum PC nicht
ohne ist. Evtl. mit Gigabit-Ethernet ;-)
@Tach: Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf
Grundlage dieses Threads u.a. entsccheiden. :-)
Leider scheint es hiefür allerdings keine 0815 Lösung zu geben.
Grüße
Michael
Michael Sonst schrieb:> @Lothar: Laut Datenblatt hat der Baustein nur VDD, GND, AIN, nCS, DOUT,> SCLK, kein MISO :-/
Dann ist das Datenblatt schon auf der ersten Seite Müll, denn QSPI ist
SPI, nur eben "Queued" als Daisy Chain...
Michael Sonst schrieb:> @Tach: Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf> Grundlage dieses Threads u.a. entsccheiden. :-)
Nimm einen MachXO, lies alle ADC parallel ein und gib sie irgendwie
dorthin weiter, wo du die Daten eigentlich brauchst. Wo brauchst du die
eigentlich?
Oder du nimmst einen ADC, der Daisy Chain kann, oder, oder oder...
Die CPU könnte (ohne CPLD) 8 Bit parall. einlesen, und zwar je Befehl
die einzelnen Databits der 8 SPI-Slaves. Macht (für die 8 ADCs) 10
EinleseBefehle je Wert, insges 333ns, also 33ns je einzelnen
EinleseBefehl.
(Die gelesenen Bits müssten danach nat noch aufgeteilt werden, was nat
wieder etwas Rechenleistung kostet).
(damit noch Rechenleist. übrig bleibt, müssten die EinleseBefehle nat
schneller abgearb. werden)
@ MCUA (Gast)
>die einzelnen Databits der 8 SPI-Slaves. Macht (für die 8 ADCs) 10>EinleseBefehle je Wert, insges 333ns, also 33ns je einzelnen>EinleseBefehl.
Nebenbei muss aber noch der SPI-Takt generiert werden, und das synchron.
Naja, solche Tricks sind machmal schon OK, aber irgendwann wird es
albern. Ein FPGA macht das mit einem müden Lächeln.
>Nebenbei muss aber noch der SPI-Takt generiert werden,
Kann aus den \RD-Signal abgezweigt werden (bzw ist das selbe), muss
nicht synchr sein.
>Naja, solche Tricks sind machmal schon OK,
sagte ja nicht dass das die einzigste Möglichkeit wäre, aber Manche
verwenden auch dicke Brummer, wo s überhaupt nicht nötig wäre.
Ausserdem, schnell genug lesen muss die CPU sowiso können, da hilft auch
ein FPGA nicht (sofern man es nicht als Co-Proz benutzt).
Tach schrieb:> Delta hatte ja schon erwähnt dass selbst eine Übertragung zum PC nicht> ohne ist. Evtl. mit Gigabit-Ethernet ;-)
Ich verwende zur Übertragung des Streams USB3 (mit dem Cypress FX3).
Steckt aber noch in den Kinderschuhen.
Falk Brunner schrieb:> Ein FPGA macht das mit einem müden Lächeln.
;) Kann ich bestätigen.
Michael Sonst schrieb:> Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf> Grundlage dieses Threads u.a. entsccheiden. :-)
Was willst du denn machen? Was willst du mit den gewonnen Daten
anstellen? Verarbeiten, Komprimieren, Speichern, Anzeigen usw?