Forum: Mikrocontroller und Digitale Elektronik Mischung von 64-Bit-Integer mit 32-Bit-Float-Operationen


von Walter Tarpan (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich habe gerade einen Knobelaufgabe, bei der ich gerade nicht weiter 
weiss. Ich habe zwei Variablen a und b (beide 64 Bit signed Integer), 
deren Differenz jederzeit klein genug ist, daß sie problemlos in eine 
16-Bit-Integer-Variable passt, also auch problemlos in eine 32 Bit 
float-Variable. Sie wird auch als float weiterverarbeitet.

Allerdings will ich vor der Differenzbildung den Zweig a mit einem IIR 
1. Ordnung leicht filtern. Das Filter ist als float implementiert. Zweig 
b darf keinesfalls gefiltert werden. Durch die Filterung wird die 
Differenz der beiden Variablen tendenziell eher kleiner - zur 
Mantissengröße im 32-Bit-float habe ich weiterhin mehr als genügend 
Sicherheitsabstand.

Das Ganze will ich möglichst effizient für einem ARM Cortex M4 
implementieren. Die Variablen a und b passen zwar jeweils in die 
52-Bit-Mantisse einer double-Variable, aber das wäre sozusagen die 
letzte Lösung. Mein Gefühl sagt mir, daß es eine relativ einfache 
Möglichkeit geben muss, den gefilterten und den ungefilterten Zweig in 
einen großen Integer- und einen kleinen Float-Teil aufzuspalten.

Wer hilf mir, den gordischen Knoten zu zerschlagen?

Viele Grüße
W.T.

von A. S. (Gast)


Lesenswert?

Was hindert Dich, die (Ziel-) Formeln hinzuschreiben? Mit Grenzen 
etwaiger Parameter und Eingangswerte. So rate ich rum, was ein Faktor k 
zwischen 0 und 1 wohl bedeuten mag, für Auslösung und Genauigkeit...

von Walter T. (nicolas)


Lesenswert?

Das Blockdiagramm ausgeschrieben sieht so aus:
mit
Da K und omega float-Variablen sind, sind also fast alle Terme gemischte 
Multiplikationen aus 64-Bit-Integer und 32-Bit-Float.

von Walter T. (nicolas)


Lesenswert?

Anstelle a - b < 2^23 in der Handskizze soll es natürlich heißen:

von Pandur S. (jetztnicht)


Lesenswert?

Es ist aber schon klar, dass float in diesem Kontext nichts bringt... 
bleib bei 64 bit integern und mach allenfalls fixedpoint, dh manuell das 
komma festhalten.
Eine Signalverarbeitungsaufgabe ? Welcher Sensor, welches Stellglied 
bringt mehr als zB 24 bit ?

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Sabberalot W. schrieb:
> Welcher Sensor, [...] bringt mehr als zB 24 bit ?

Jeder Zähler, wenn er nur lange genug zählen muss.

von m.n. (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Das Ganze will ich möglichst effizient für einem ARM Cortex M4
> implementieren. Die Variablen a und b passen zwar jeweils in die
> 52-Bit-Mantisse einer double-Variable, aber das wäre sozusagen die
> letzte Lösung.

Effizient bezüglich des Platzes oder der Rechenzeit?
Irgendwo gibt es hier Ausführungszeiten für double Grundrechenarten, die 
auf einem STM32F4.. mit 168 MHz jeweils um 1 µs (div) oder deutlich 
darunter liegen (add, sub, mul). Deine 'letzte Lösung' könnte vielleicht 
völlig ausreichen. Der Vorteil ist, im Gegensatz zu einem 
Skalierungsmonster die Formel direkt und nachvollziehbar formulieren zu 
können.
Probiere es einfach aus!

von Walter T. (nicolas)


Lesenswert?

m.n. schrieb:
> Deine 'letzte Lösung' könnte vielleicht
> völlig ausreichen. Der Vorteil ist, im Gegensatz zu einem
> Skalierungsmonster die Formel direkt und nachvollziehbar formulieren zu
> können.
> Probiere es einfach aus!

Mein Vorbehalt gegen die double-Implementierung (die ich 
selbstverständlich schon gemacht habe - schließlich ist sie der 
einfachste Weg, jede andere Lösung testen zu können) liegen an einer 
ganz anderen Stelle:

Ich handele mir damit eine neue Limitierung der Zähler ein. An allen 
anderen Stellen arbeite ich nur mit Differenzen. Momentan laufe ich 
damit noch in keine Probleme. Das kann sich aber mit der nächsten 
Änderung der Anforderungen schnell ändern.

von m.n. (Gast)


Lesenswert?

Walter T. schrieb:
> Momentan laufe ich
> damit noch in keine Probleme. Das kann sich aber mit der nächsten
> Änderung der Anforderungen schnell ändern.

Dann warte es doch einfach ab.

von Walter T. (nicolas)


Lesenswert?

m.n. schrieb:
> Dann warte es doch einfach ab.

Nö. Die Frage interessiert mich.

von m.n. (Gast)


Lesenswert?

Walter T. schrieb:
> m.n. schrieb:
>> Dann warte es doch einfach ab.
>
> Nö. Die Frage interessiert mich.

Dann mußt Du abwarten, bis sich jemand mit der passenden Lösung meldet 
;-)

Beitrag #5219850 wurde vom Autor gelöscht.
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.