Der Betreff ist auch schon die frage, ich möchte den STM32F050 bzw. 51 zum Regeln benutzen bin mir jedoch nicht sicher ob er eine Hardware Multiplizierer besitzt oder nicht. Weiß das zufällig jemand?
Danke danke ... und wo soll das stehen? ich mine wenn ich da fündig geworden wäre hätte ich nicht gefragt ... oder meinst du nach dem Motto wenn es nicht drin steht hat er auch keine?
Sascha Beh schrieb: > oder meinst du nach dem Motto wenn es nicht drin steht hat er auch > keine? Ja, so isses. Z.B. der Nuvoton NUC120 ist auch Cortex M0, hat es aber: - Single-cycle 32-bit hardware multiplier Peter
Sascha Beh schrieb: > Danke danke ... und wo soll das stehen? > ich mine wenn ich da fündig geworden wäre hätte ich nicht gefragt ... > oder meinst du nach dem Motto wenn es nicht drin steht hat er auch > keine? Beim Hersteller: http://www.st.com/internet/mcu/subclass/1588.jsp Die Antwort steht z.B. im "Programming Manual".
Peter Dannegger schrieb: > Z.B. der Nuvoton NUC120 ist auch Cortex M0, hat es aber: > - Single-cycle 32-bit hardware multiplier Cortex-M0 dürfen die Multipliziereinheit auch iterativ (in 32 Schritten) implementieren, das ist dann nicht so viel besser also Software. Es lohnt sich also sowas bei Hersteller nachzugucken.
Marco M. schrieb: > Cortex-M0 dürfen die Multipliziereinheit auch iterativ (in 32 Schritten) > implementieren, das ist dann nicht so viel besser also Software. Das "nicht soviel besser" ist immer noch eklatant. Stell die Rechnung mal auf wieviele Zyklen der Softwareansatz mit Schiebe- und Additionsinstruktionen braucht.
humm ... ich glaub ich probiere einfach mal wie schnell ich den PID berechnen kann ... mybe reichts ja ... ich mein ich will damit ein öden PIC18F ersätzen das müstte er doch irgendwie schaffen
Maxx schrieb: > Marco M. schrieb: >> Cortex-M0 dürfen die Multipliziereinheit auch iterativ (in 32 Schritten) >> implementieren, das ist dann nicht so viel besser also Software. > > Das "nicht soviel besser" ist immer noch eklatant. Stell die Rechnung > mal auf wieviele Zyklen der Softwareansatz mit Schiebe- und > Additionsinstruktionen braucht. Das hängt davon ab, wie deine Eingangsdaten beschaffen sind. Wenn du z.B. nur ein 32-Bit Ergebnis erwartest, dann kannst du die Shift-Add Geschichte leicht ausrollen und mit zwei Instruktionen pro Bit erledigen. Das kann ARM eigentlich sehr gut:
1 | // unsigned multiplikation in ARM Mode |
2 | mov res,#0 |
3 | tst a, #1 |
4 | movne res,b |
5 | tst a, #2 // if (a & 2) |
6 | addne res,res,b,asl #1 // res+=b<<1; |
7 | tst a, #4 // if (a & 4) |
8 | addne res,res,b,asl #2 // res+=b<<2; |
Der Cortex-M0 kann aber nur Thumb, da hätte müsste man also einen Test mit Sprung machen. Bei einer 32x32=>64 Multiplikation kommt man so auf 2-6 Operationen pro Bit. Der allgemeine Fall dürfte also sowas wie 128 Zyklen liegen. Allerdings könnte man mit Sprungtabellen die auf Multiplikationen mit Konstanten verweisen, die Zeit auf 2-3 Zyklen pro gesetztem Bit im Multiplikator runterkriegen. Der allgemeine Fall dürfte also wohl so um den Faktor 3-4 langsamer sein. Spezialfälle können dann wieder schneller sein. Wenn du z.B. Operanden mit einem eingeschränkten Definitionsbereich (z.B. 0<=x<=1023) hast, dann kannst du deine Softwareroutine so anpassen, daß sie nur die benötigten Bits überhaupt anschaut. Ein 10x18 Bit Multiplizierer muss maximal 10 Mal Shiften/Addieren und hat keinen Überlauf zu verarbeiten. Bei einem one-cycle Multiplizierer kann man sich diese Überlegungen allerdings schenken, der ist dann einfach 100-200 Mal schneller und fertig.
Auch wenn die Frage bereits alt ist:
Laut dem "STM32F0xxx Cortex-M0 programming manual" hat die uC-Familie
einen ein Schritt Hardware Multiplizierer ("including a single-cycle
multiplier").
siehe auch:
http://www.st.com/web/en/resource/technical/document/programming_manual/DM00051352.pdf
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.