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
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?
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).
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.
> 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.
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...
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.
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?
Er soll diese ganze Rechnung einmal in den 15 Minuten durchführen.
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/
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.