Guten Abend, eigentlich beschäftige ich mich momentan mit einem ganz anderem Thema, allerdings ist mir das so eine Frage hochgekommen die mich beschäftigt. Mir geht es darum wie Daten aus schnellen ADCs (>100Msps) eigentlich verarbeitet werden. Ich stelle mir das ganze wie folgt vor: Ein ADC macht seine Messungen. Diese schreibt er in einen dazu passenden Speicher, z.B. in einen RAM. Der RAM besteht evtl. aus mehreren parallelen einzelnen Speichern um mehr Speicher zu haben und damit die Daten auch so schnell aufgezeichnet werden können, falls ein einzelner RAM zu langsam ist. Nun kommt der Punkt an dem ich nicht weiß wie es weiter gehen könnte. Der RAM ist irgendwann mal voll und zur Darstellung des Signales muss er ausgelesen werden. Dies könnte ja nun ein normaler ATmega machen. Allerdings dauert dies auch wesentlich länger und der ADC hört mit seinen Messungen auch nicht auf um nichts zu verpassen. Liege ich nun mit meiner Vorstellung richtig? Wie werden die Daten nach der Speicherung weiter verarbeitet damit sich Schreibe und Lesevorgang nicht in die Quere kommen? Eine Vermutung von mir wäre, einfach so viel RAM zu benutzen, bis man zum Auslesen genug zeit hat bevor der jeweilige RAM wider beschrieben wird. So was würde aber bedeuten das der Speicher bei noch höheren Sample Raten wahnsinnig steigen würde.
Sowas macht man oft auch mit Dual Port RA oder FIFOs, und nach der (getriggerten) Messung gibts eine Totzeit zum Auslesen und Anzeigen der Daten. Je nach Hersteller z.B. von schnellen Oszilloskopen gibts da noch unterschiedliche Ansätze die Totzeit zu minimieren.
Bei 8bit und 160MSps mit einem 16Mx8bit RAM nach 100ms voll. So schnell wird das ein AVR bestimmt nicht auslesen können. Dafür sind FPGAs bestimmt besser geeignet, zumal die ADCs i.d.R. ja kein Speicherinterface haben, sondern die Daten parallel ausgeben und ein "Wandlung ist fertig" Ausgang haben. Die FPGAs können die Daten auch noch komprimieren, sodass mehr Zeit gespeichert werden kann oder dass weniger Speicher ausreicht. Ein SRAM in der dieser Größe ist schweine teuer. SDRAM dagegen ansich spott billig, aber die Ansteuerung ist aufwendiger. Ich habe mir auch mal 2 Dinge überlegt. 1. Ein schneller Logikanalyzer. Die Inputs gehen direkt an die Eingänge von einem SRAM und die Adresse wird mit einem Zähler bestimmt, der z.B. durch einen 100MHz Takt die Adresse hoch zählt. Doch um eine gewisse Menge speichern zu können, braucht man schon etwas an Speicher. Und SRAM mit 4Mx8bit oder 8Mx8bit kostet bei Mouser 50€+ (ohne MwSt) und ist im ätzenden BGA Gehäuse. 2. Ein schnellen ADC mit FPGA und SDRAM als Oszi. Mouser bietet ja 250MSPS ADCs schon für 15-35€ an, als FPGA wollte ich Altera nehmen (hab n Demoboard und sie sind auch bei Mouser zu haben) und SDRAM gibts auch billig im TSOP Gehäuse. Da ist neben dem Know-How wie man die analogen aber auch digitalen Signale mit der Frequenz routet, auch der FPGA ein Problem. Ich habe spaßeshalber mal geguckt. Wenn man mit (glaube) über 166MHz ein SDRAM beschreiben will, braucht man solche FPGAs, die nicht mehr im TQFP Gehäuse kommen, sondern im BGA mit >200 Pins. Das wiederum hat zur Folge, dass man selbst mit 4 lagigen PCBs und "normalen" Vias nicht mehr hin kommt. Und dann wird die Platine ja schnell richtig teuer. Für das Geld der Platine kkann man sich ja schon fast n neues Rigol Oszi kaufen, das mit Sicherheit besser funktioniert. Ich sehe es sonst eher so, dass es ums bauen geht, aber bei den Preisen hört es dann doch irgendwann auf ;) 100MSPS sind schon einiges für kleine bis mittlere uCs. Ich hab jedenfalls beide Ideen verworfen ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.