Hallo zusammen, ich habe die Aufgabe, 3 Signale im Bereich bis ca. 500kHz abzutasten (>1MS/S) und diese einer digitalen Signalverarbeitung zuzuführen und möglichst in Echtzeit auszuwerten. Dabei ist ein zeitlicher Bereich von ca. 1s zu überwachen, wobei sich das zu erfassende Ergebnis innerhalb 1ms abspielt. Meine Idee ist dazu, dass der Erfassungsbereich von 1s permanent abgetastet und im (externen) RAM als Ringpuffer vorgehalten wird. Bei Überschreitung eines bestimmten Schwellwertes wird dann die weitere Signalverarbeitung durchgeführt. Dazu bin ich z.Zt. auf der Suche nach einer Hardware-Plattform, die dieses ermöglicht. Meine ersten Überlegungen gehen in die Richtung STM32F7, da dieser wohl genug Performance(FPU, DSP-Funktionalität) zur digitalen Signalverarbeitung (z.B. FFT-Länge von 1024...4096) bieten sollte. Zudem enthält er bereits 3 AD-Wandler mit 12Bit und 2.4MS/S. Der Temperaturbereich beträgt im übrigen -40C...+85°C Was meint Ihr, bzw. habt ihr evtl. Alternativen oder evtl. eine ähnliche Aufgabe schonmal gelöst? Besten Dank vorab! Viele Grüße, John
John schrieb: > ich mach mal einen PUSH Hilft nix, offenbar fehlen noch Informationen... John schrieb: > möglichst in Echtzeit auszuwerten. Wie korrelierst du einen Puffer, der 1 Sekunde zwischenspeichert, mit dem Begriff "Echtzeit"? > Dabei ist ein zeitlicher Bereich von ca. 1s zu überwachen, wobei > sich das zu erfassende Ergebnis innerhalb 1ms abspielt. Wie oft tritt dieses Ereignis während dieser Sekunde auf?
Die Idee mit dem externen RAM klingt für mich ganz vernünftig. Was die Performance angeht kann ich auch nur spekulieren, also lasse ich es einfach. Jedenfalls musst du bei den ADCs aufpassen, dass dein Platinenlayout ordentlich ist und du Analog- und Digitalteil fein säuberlich trennst, weil nämlich sonst von den angepriesenen 12Bit nicht mehr so viel übrig bleibt. Leider ist das Layout bei vielen Dev-Boards von ST (bei allen?) sehr dürftig was das angeht.
Kommt halt darauf an was da alles berechnet werden muss. Wenn für jedes neue Abstastergebnis eine komplizierte mathematische Funktion über 3 x 1 Million Werte berechnet werden soll, dann kann man das vergessen. Ich werfe jetzt mal das Stichwort "FPGA" in die Runde.
John schrieb: > Was meint Ihr, bzw. habt ihr evtl. Alternativen oder > evtl. eine ähnliche Aufgabe schonmal gelöst? Was für eine Aufgabe? Was willst Du denn auswerten (Amplitude, Frequenz, Wellenform, Phasenlage usw.)?
wie schon von Vorrednern gesagt: Du musst mehr Informationen liefern > ich habe die Aufgabe, 3 Signale im Bereich bis ca. 500kHz > abzutasten (>1MS/S) und diese einer digitalen Signalverarbeitung > zuzuführen und möglichst in Echtzeit auszuwerten. > > Dabei ist ein zeitlicher Bereich von ca. 1s zu überwachen, wobei > sich das zu erfassende Ergebnis innerhalb 1ms abspielt. * Wie sehen die Signale aus? Vielleicht hast Du ja ein Bild von einem Signal. * Hängen die Kanäle zusammen? * Echtzeit = ? (z.B. fertig, bevor das nächste Signal kommt -> dann wären das nach Deiner Beschreibung und meinem Verständnis 1s) * Wie soll die Auswertung aussehen (also welcher Algorithmus, welche Genauigkeit)?
Der Andere schrieb: > werfe jetzt mal das Stichwort "FPGA" in die Runde. Kam mir auch kurz in den sinn, aber das ist unnötig, wenn z.B. pro Sekunde nur 1 solche Berechnung durchzuführen ist. Dann ist aber auch so ein langer Puffer unnötig, denn wenn das zu untersuchende Ereignis nach 1ms vorbei ist, warum sollte man dann die tausendfache Datenmenge speichern? John schrieb: > da dieser wohl genug Performance(FPU, DSP-Funktionalität) zur digitalen > Signalverarbeitung (z.B. FFT-Länge von 1024...4096) bieten sollte. Mit welcher Genauigkeit? Warum in Fließkommaarithmetik?
Vielen Dank für Eure Rückmeldung und die konstruktiven Kommentare! Regt doch sehr zum Nachdenken über weitere Thematik an ;-) Peter D. schrieb: > Was willst Du denn auswerten (Amplitude, Frequenz, Wellenform, > Phasenlage usw.)? Frequenz wird bei max. 500kHz liegen. Die Signalform ähnelt einer SI-Funktion Die Amplitude liegt im Bereich von 1...50 mV (ja wird per OpAmp verstärkt). asdf schrieb: > * Echtzeit = ? (z.B. fertig, bevor das nächste Signal kommt -> dann > wären das nach Deiner Beschreibung und meinem Verständnis 1s) > * Wie soll die Auswertung aussehen (also welcher Algorithmus, welche > Genauigkeit)? Korrekt. Echtzeit würde ich in dem Fall auf 1 Sekunde "spezifizieren". Das Ereignis tritt max. 1x pro Sekunde auf. Wie der Algorithmus im Details aussieht, kann ich noch nicht sagen. Jedenfalls sind FFT und trigonometrische funktionen erforderlich. Die absoulute Genauigkeit der einzelnen Kanäle ist nicht entscheidend. Eher der zeitliche Abstand untereinander. Lothar M. schrieb: > Mit welcher Genauigkeit? Warum in Fließkommaarithmetik? Ich bin ja noch in einer frühen Konzeptphase ;-) Fließkomma ist nicht zwingend erforderlich, aber beim M4/M7 praktisch gratis enthalten.
>> * Wie soll die Auswertung aussehen (also welcher Algorithmus, welche >> Genauigkeit)? > > Korrekt. Echtzeit würde ich in dem Fall auf 1 Sekunde "spezifizieren". > Das Ereignis tritt max. 1x pro Sekunde auf. > Wie der Algorithmus im Details aussieht, kann ich noch nicht sagen. > Jedenfalls sind FFT und trigonometrische funktionen erforderlich. > Die absoulute Genauigkeit der einzelnen Kanäle ist nicht entscheidend. > Eher der zeitliche Abstand untereinander. Mir ging es eher darum: Was willst Du über die Signale in Erfahrung bringen? Daraus ergibt sich dann der Algorithmus (und ggf. auch die erforderliche Präzision (also float vs int)). Hatte ich nicht gut formuliert, 'tschuldigung. Um Dir einen brauchbaren Rat geben zu können ist es für uns wichtiger zu verstehen was Du machen willst und nicht wie. Aus Deiner Ursprungbeschreibung ergibt sich ja jetzt, dass Du ein si(x)-ahnliches Signal von ca. 1ms Dauer verarbeiten musst. Wenn das Signal jetzt quasi-periodisch also regelmäßig, innerhalb eines wiederkehrenden 1s Intervalls, hättest Du ja u.U. exakt 0s Zeit für die Verarbeitung. Daher die Bitte: Kannst Du das mal für die 3 Kanäle und einen Zeitverlauf von mehreren Sekunden mal als Bild darstellen?
du musst schon konkreter werden was du über die Signale wissen willst und in welchen Bereich. Zeitliche Informationen ( Frequenz, Phase) können viele µC mit Bordmittel Spannungen( Amplitude, Signalform) geht über ADC und da wird es bei 500kHz sehr speziell
John schrieb: > Fließkomma ist nicht zwingend erforderlich, aber beim M4/M7 > praktisch gratis enthalten. In AN4841 gibt es ein paar Kenndaten zu FFT- und FIR-Performance für F429 und F746: http://www.st.com/content/ccc/resource/technical/document/application_note/group0/c1/ee/18/7a/f9/45/45/3b/DM00273990/files/DM00273990.pdf/jcr:content/translations/en.DM00273990.pdf Interessanterweise sind Float-FFT tatsächlich schneller als Q31 und nur 10% langsamer als Q15. FIR-Filter sind in F32 am schnellsten.
Christopher J. schrieb: > In AN4841 gibt es ein paar Kenndaten zu FFT- und FIR-Performance für > F429 und F746: Ah sehr coole App-Note. Die hilft ja schonmal weiter. Auf Seite 23 gibt es auch einen Vergleich mit anderen Serien (M0...M7). Meint Ihr, könnte evtl. die Datenmenge (3 Ch, AD-Wandler mit 2.4 MSPS @ 12Bit -> ca. 10 MByte pro Sekunde) auf so einem System (externes SDRAM) zum Problem werden?
Für mich klingt die Aufgabenstellung ungefähr so: Ich weiß zwar nicht, was ich überhaupt will, also mache ich mal ne FFT. Mal als grobe Abschätzung: Um überhaupt minimale Informationen zur Signalform zu gewinnnen, sollte man je Viertelwelle wenigstens 4-mal abtasten, d.h. bei 500kHz mit 8MSPS. Hat man keine 3 parallelen ADCs, braucht man für 3 Signale hinter dem MUX einen ADC mit 24MSPS.
Christopher J. schrieb: > Interessanterweise sind Float-FFT tatsächlich schneller als Q31 Sie sind natürlich auch ungenauer, denn float hat nur 6..7 signifikante Stellen. Man sollte also nicht blind statt einem int32 ein float einsetzen. John schrieb: > Meint Ihr, könnte evtl. die Datenmenge (3 Ch, AD-Wandler mit 2.4 MSPS @ > 12Bit -> ca. 10 MByte pro Sekunde) 1. Kann der da überhaupt noch 12Bit? 2. War nicht anfänglich die Rede von >1MSps? 3. Du hast diese Datenmenge eigentlich nicht, denn du willst ja nur 1 Promille dieser Sekunde auswerten. John schrieb: > Ich bin ja noch in einer frühen Konzeptphase ;-) Deshalb fragen wir ja nach dem, was das werden soll, wofür das gebraucht wird, woher das Signal kommt und welche Information in dem Signal versteckt ist.
> Hat man keine 3 parallelen ADCs, > braucht man für 3 Signale hinter dem MUX einen ADC mit 24MSPS. Hier muss man aufpassen. Ich weiß nicht wie gut die hier genannten µC sind, aber einige benötigen nach Dem Umschalten des Kanals signifikant Zeit, bevor sie die Spannung messen können.
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.