Forum: Mikrocontroller und Digitale Elektronik Auswahlkriterien für die richtige Hardware


von Sören (Gast)


Lesenswert?

Hallo Leute,
ich habe dein Problem. Und zwar sitze ich hier an meiner Studienarbeit, 
in der ich ein kleines Programm mit Matlab entwickelt habe. Nun soll ich 
im Rahmen dieser Arbeit ungefähr abschätzen welcher Mikrocontroller 
dafür geeignet ist. Ich habe davon aber überhaupt keine Ahnung. Ich 
schildere hier mal das ganze Vorhaben:

Ich habe zwei Zeilenvektoren die jeweils aus 5000 Messwerten (Datentyp 
Integer) bestehen. Mit meinem kleinen Programm insgesamt so 50 Zeilen 
berechne ich daraus verschiedene Werte. Ich bekomme alle 15 min neue 
Werte. Das war es im großen und ganzen. Also Matlab braucht für das 
ganze Programm keine 10 s.

Kann man daraus jetzt ungefähr auf einen geeigneten Mikrocontroller 
schließen? Oder was müsste ich dafür noch in Erfahrung bringen?

MFG
Sören

von (prx) A. K. (prx)


Lesenswert?

Wie gross ist ein Messwert in Bits, wieviele Operationen welcher Sorte 
(Add, Mul, Div, ...) finden insgesamt pro Zyklus statt und wieviel Zeit 
steht zur Verfügung?

von TOOOHMAAATOOOH (Gast)


Lesenswert?

wie wäre es mit aufpassen in den Vorlesungen? Uns wurde erklärt wie man 
sowas macht, bzw. eigentlich ist es ja nur en bissel Verständniss was 
ein uC tut, gewürzt mit etwas gutem menschenverstand + google.
ein 8 bit controller kann 2 8bit zahlen in einem schritt miteinander 
addieren/subtrahieren (1-2 systemzyklen). Also hast du entsprechend mehr 
aufwand wenn du 32bit zahlen in einem 8bit uC addieren willst. Für eine 
Abschätzung kann man das mal so verallgemeinern. Bei Multiplikationen 
wird das noch etwas komplizierter, und die Krönung wäre wenn du uCs mit 
integrierten DSPs mit betrachten willst (Cortex M4 beispielsweise).

von Sören (Gast)


Lesenswert?

Also,

1) Ein Messwert ist 8 Byte groß und vom Typ Double, sprich jeder 
Zeilenvektor a 5000 Messwerte ist insgesamt 40 kByte groß. Ich habe zwei 
Zeilenvektoren. Diese werden von dem Programm verarbeitet.

2) Im Programm selbst, werden dann drei for-Schleifen ausgeführt. Es 
werden insgesamt zwei einfache Berechnungen mit jeweils einmal Div und 
Mul ausgeführt.
Dann wird noch ein logischer Vergleich durchgeführt.

3) Der Mikrocontroller hat dafür 15 min Zeit.

Und das wars. Also Matlab braucht dafür insgesamt 1,408 Sekunden. Und 
dabei liegen zwei Matrizen mit jeweils 1331 Zeilenvektoren vor. Also 
viel mehr als eigentlich gebraucht wird. Insgesamt ist das Programm dann 
107,325688 Bytes groß. Das müsste doch jeder kleine 8bit Mikrocontroller 
locker schaffen.

von MaWin (Gast)


Lesenswert?

> Kann man daraus jetzt ungefähr auf einen geeigneten
> Mikrocontroller schließen?

Nein.

> 1) Ein Messwert ist 8 Byte groß und vom Typ Double

Vorher waren es Integer.

> Also Matlab braucht dafür insgesamt 1,408 Sekunden.

Vorher 10 Sekunden.

Zähle die Anzahl der Fliesskommaoperationen +-*/<>

Ein Microcontroller der üblichen Art (AVR, PIC, 6502, Z80)
schafft davon ca. 1500 pro Sekunde.

Ein Microcontroller der grösseren Art (ARM ohne Floating
Point) ca. 15000 und ARM mit Floating Point Coprozessor
wie A9 über 150000.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sören schrieb:
> Ein Messwert ist 8 Byte groß und vom Typ Double
Muss der so "groß" sein?
Wie genau müssen deine Berechnungen sein?

> Mit meinem kleinen Programm insgesamt so 50 Zeilen
Wie komplex sind die Berechnungen?

> Ich bekomme alle 15 min neue Werte.
Das bekommst du ja mit einem Taschenrechner und einem Blatt Papier in 
der Zeit hin...

von Sören (Gast)


Lesenswert?

Also das Problem ist das noch nicht genau feststeht in welcher Größe 
diese Daten vorliegen werden. Deswegen ist es schwierig für mich da eine 
Aussage zu treffen. Aber es geht mir ja auch nur um eine grobe Schätzung 
welche Mikrocontroller dieses Programm in einer Zeit von 15 Minuten 
schaffen können. Ich weiß auch das 15 Minuten sehr viel Zeit ist und 
deshalb glaube ich ja das man da wirklich auf recht einfache 
Mikrocontroller zurück greifen kann.

Ansonsten stimmen die Werte so wie ich sie vorhin angegeben habe.

Die Messung muss schon sehr genau sein, weshalb die Daten auch so "groß" 
sein müssen.

Im Programm selbst kommen:
2x >
1x ==
2x /
1x -
1x *

und halt fünf spezielle Matlabbefehle vor. Ich habe das ganze aber 
bisher noch nicht in C-Code vorliegen sondern nur mit Matlab 
programmiert. Das Programm hat jetzt auch nur noch 30 Zeilen.

von (prx) A. K. (prx)


Lesenswert?

Sören schrieb:

> Die Messung muss schon sehr genau sein, weshalb die Daten auch so "groß"
> sein müssen.

Wenn wie nun skizziert 64-Bit Fliesskommarechnung erforderlich sind, 
dann such dir einen µC, dessen Compiler dies auch unterstützt. Das ist 
insbesondere bei kleinen Typen nicht selbstverständlich.

> 2x >
> 1x ==
> 2x /
> 1x -
> 1x *

7 Operationen in 15 Minuten schafft jeder. Wahrscheinlich sogar mit 
Papier und Bleistift. ;-)

Die Frage war eher, wieviele Operationen es in den geforderten 15 
Minuten sind. Nicht wieviele im Matlab-Programm stehen. Herrje - es geht 
darum, wieviele Operation pro Sekunde durchgeführt werden müssen, ist 
das derart schwer verständlich?

von Sören (Gast)


Lesenswert?

Er soll diese ganze Rechnung einmal in den 15 Minuten durchführen.

von (prx) A. K. (prx)


Lesenswert?

Ich gebs auf. Troll? So stur kann doch keiner sein.

von Ulm.Gang (Gast)


Lesenswert?

Sören schrieb:
> 1) Ein Messwert ist 8 Byte groß und vom Typ Double, sprich jeder
> Zeilenvektor a 5000 Messwerte ist insgesamt 40 kByte groß. Ich habe zwei
> Zeilenvektoren. Diese werden von dem Programm verarbeitet.
>
> 2) Im Programm selbst, werden dann drei for-Schleifen ausgeführt. Es
> werden insgesamt zwei einfache Berechnungen mit jeweils einmal Div und
> Mul ausgeführt.
> Dann wird noch ein logischer Vergleich durchgeführt.

Nimm einen 32Bit-Controller. Preislich unterscheidet er sich auch nicht 
wesentlich von den geeigneten 8Bit-Controllern, zum Beispiel:

http://de.rs-online.com/web/p/mikrocontroller-prozessoren/6868657/

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sören schrieb:
> Er soll diese ganze Rechnung einmal in den 15 Minuten durchführen.
Du solltest endlich mal die gestellten Fragen beantworten und mit der 
Information rausrücken: WELCHE Rechnung?

Das ist bisher, wie wenn ich dich frage:
Ich brauche ein Automobil fürs Fahren. Aber ein paar Kurven und Berge 
sind auch dabei, und schnell sollte es auch sein, ich weiß aber nicht 
wei schnell. Kannst du mir dann eins empfehlen, das passt?

von Peter D. (peda)


Lesenswert?

Du weißt die Anzahl der Schleifendurchläufe und die Operationen, die je 
Durchlauf gemacht werden.
Also einfach nur diese Zahlen addieren und multiplizieren.
Und dann hier hinschreiben, z.B.:

je 15min:
64bit double mul: 11111
64bit double sin: 666
64bit double div: 333333
usw.


Peter

von aus dem Staunen nicht mehr rauskommend (Gast)


Lesenswert?

wer selbst nach etlichen gutgemeinten und geduldigen Hinweisen nicht in 
der Lage ist, seine Frage so zu stellen, dass man sie beantworten kann, 
der darf eigentlich keine Studienarbeit verfassen.
Wo gibt es denn sowas???
Ich plädieren hier für einen geordneten Ratschlag-Stopp

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.