Forum: Mikrocontroller und Digitale Elektronik Maximale Datenrate für einen Mikrocontroller


von Martin (Gast)


Lesenswert?

Vorneweg: Es handelt sich um ein Hobbyprojekt und ich habe keine 
Erfahrung mit FPGAs.
Wie groß ist die Datenrate die ein handelsüblicher, leistungsstarker 
Mikrocontroller wie z.B. der STM32F4 kontinuerlich verarbeiten kann?
Ich möchte ein Signal mit einem 18Bit ADC mit parallelem Interface 
abtasten. Die Ergebnisse sollen eingelesen werden und dann Minimum, 
Maximum und ein kontinuierlicher Mittelwert berechnet werden. Eventuell 
wäre noch interessant, die Anzahl der Messwerte in einem bestimmten 
Wertebereich abzuspeichern. Die Rohdaten vom ADC müssen aber nicht 
abgespeichert werden.
Der Mikrocontroller muss wärend der Messung keine weiteren Aufgaben 
übernehmen. Wie schnell könnte ich den ADC also takten?

von Stefan (Gast)


Lesenswert?

Die Frage ist zu grob formuliert. Welcher konkrete ADC wird verwendet 
und wie sieht das Programm aus (in Assembler)?

Du musst die Ausführzeiten der einzelnen Befehle zusammen rechnen.

von Stefan (Gast)


Lesenswert?

Mal anders herum gefragt: Welche Datenrate brauchst Du mindestens?

von Martin (Gast)


Lesenswert?

Ist wie gesagt ein Bastelprojekt zum experimentieren und neue 
Erkentnisse gewinnen, also ist "so schnell wie möglich" eine erlaubte 
Spezifikation. Der ADC schafft 1MSPS, wenn eine höhere Verarbeitungsrate 
möglich ist, wechsle ich auf einen 10MSPS 16Bit ADC.

von m.n. (Gast)


Lesenswert?

Martin schrieb:
> Wie groß ist die Datenrate die ein handelsüblicher, leistungsstarker
> Mikrocontroller wie z.B. der STM32F4 kontinuerlich verarbeiten kann?
> Ich möchte ein Signal mit einem 18Bit ADC mit parallelem Interface
> abtasten. Die Ergebnisse sollen eingelesen werden und dann Minimum,
> Maximum und ein kontinuierlicher Mittelwert berechnet werden.

Martin schrieb:
> Der ADC schafft 1MSPS, wenn eine höhere Verarbeitungsrate
> möglich ist, wechsle ich auf einen 10MSPS 16Bit ADC.

1MHz problemlos und auch per Interrupt auswertbar; bei 10MHz ist die 
Frage, was mit den Daten passieren soll und wieviel Zeit dafür benötigt 
wird.

von Martin (Gast)


Lesenswert?

naja 18Befehle reichen wohl nicht ganz aus um Min/Max und Mittelwert zu 
bestimmen. Gibt es einen schnelleren Controller der aber noch per Hand 
lötbar ist?

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Gibt es einen schnelleren Controller der aber noch per Hand
>lötbar ist?
Alles außer BGA ist von Hand lötbar!
Zu deinem eigentlichen Problem:
18Bit ist in dem Fall suboptimal, es braucht 2 Lesezyklen um einen 
Abtastwert einzulesen.16 Bit wären da vorzuziehen. Wenn du da noch 
großartig was verarbeiten willst, sieht's mit "normalen" MC's duster 
aus. Das geht dann wohl Richtung DSP (Blackfin,...)

Grüsse

von Martin (Gast)


Lesenswert?

Der Flexible memory controller (FMC) beim STM32 hat 8-,16-, 32-bit data 
bus width. Bis auf die "Speicherverschwendung" dürfte es also keinen 
Unterschied machen ob 16 oder 18Bit parallel eingelesen werden. Die 
Verarbeitung ist eh 32Bit.

von Udo S. (urschmitt)


Lesenswert?

Wenn du eh nur Min Max und Mittelwert bilden willst, dann ist die 
Wahrscheinlichkeit ziemlich hoch, daß du auch eine geringere Abtastrate 
fahren kannst.
Ist irgendwie mal wieder ne Frage nach: "Ich weiss nicht wofür, aber ich 
will alles dicker, schneller, größer."

von мальеикий тролл (Gast)


Lesenswert?

Einen Mittelwert rechnet man eh nicht ueber N-Werte, sondern 
exponentiell. Dann eght er naemlich viel schneller. Einen Min-Max macht 
man auch nicht ueber N Werte, sondern auch exponentiell. Dann geht der 
auch schneller.
Mir scheint das Ganze auch ein ueberzogener Furz zu sein.

von lalala (Gast)


Lesenswert?

мальеикий тролл schrieb:
> Einen Mittelwert rechnet man eh nicht ueber N-Werte, sondern
> exponentiell. Dann eght er naemlich viel schneller. Einen Min-Max macht
> man auch nicht ueber N Werte, sondern auch exponentiell.

Was meinst Du mit 'exponentiell'

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Der Flexible memory controller (FMC) beim STM32 hat 8-,16-, 32-bit data
>bus width.
Ich weiss jetzt nicht welchen STM32 du verwendest, aber meiner hat nur 8 
oder 16 Bit Busbreite.

Grüsse

von Stefan F. (Gast)


Lesenswert?

> Was meinst Du mit 'exponentiell'

Stell Dir einen Integrierer mit R/C Tiefpass vor:
1
Eingang o---[===]----+----o Ausgang
2
                     |
3
                    ===
4
                     |
5
                    GND

Der Kondensator wird auf den Mittelwert (genauer gesagt: Effektiv-Wert) 
der Eingangsspannung geladen. Wenn die Eingangsspannung z.B. zwischen 1V 
und 3V hin und her springt, dann glättet der Kondensator diese 
Schwankungen auf 2 Volt.

Das kann man mathematisch umsetzen und dazu braucht man nicht die n 
Samples zu speichern, sondern erhöht oder verringert den gespeicherten 
Wert beim Einlesen jedes Samples. Im einfachsten Fall so:

uint_32_t mittelwert=0;
while (1) {
  uint32_t diff=ADC-mittelwert;
  mittelwert+=diff/10;
}

Angenommen, du misst ganz hintereinander oft den Wert 100, dann hat die 
Variable "mittelwert" auch den Wert 100. Jetzt kommt einmal ein 
Ausrutscher mit dem Wert 200. Dann ist mittelwert=120. Wenn danach 
wieder immer nur 100 gemessen wird, geht "mittelwert" schrittweise 
wieder runter auf 100 (120, 118, 117, 116, 115, 114 ... 101, 100).

Anstatt die Differenz durch 10 zu dividieren, kann man auch andere 
Teiler verwenden oder das Ganze logarithmisch machen, falls das für den 
Anwendungsfall von Vorteil ist. Dann würden sich starke Abweichungen 
überproportional auf das Messergebnis auswirken.

von decius (Gast)


Lesenswert?

Ich denke was  мальеикий тролл meinte ist der exponentielle oder auch 
gleitende Mittelwert. sucht danach mal bei wikipedia.

von lalala (Gast)


Lesenswert?

Alles klar. Gleitender Mittelwert kenne ich. 'exponentiell' war ein 
neuer Begriff für mich.

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.