Huellkurvenberechnung in Floats oder 32Bit-Integern?

Gast #2252066
Lesenswert?

Hallo Gemeinde,

ich versuche gerade eine Implementierung eines SID-Chips entsprechend 
der Datenblaetter auf einem Atmega32 (wie sicherlich viele vor mir). Nun 
habe ich ein Performance-Problem bei der Envelope-Berechnung. Da der SID 
mit einem sehr weiten Dauernbereich (2ms-8000ms, resp. 6ms - 24000ms) 
arbeitet, und ich der Kompatibilitaet halber die Registerwerte nicht 
streichen moechte, komme ich bei der Berechnung unguenstiger 
Konstellationen (geringe Lautstaerkeveraenderung ueber sehr lange 
Zeiten) an die Grenzen des 16Bit-Raumes.

Loesen kann ich das Problem, in dem ich in den 32Bit-Zahlenraum gehe. 
Dieses scheint aber bei der Verwendung von mehr als 2 Oszillatoren, 
SPI-Ansteuerung, Huellkurven und einer DDS-Tastrate von 8kHz nicht mehr 
zu klappen. Die Wavetables werden im Ram gehalten und sollten nicht 
allzusehr bremsen.

Weiss einer von euch, wie performant die Verarbeitung von 32Bit Integern 
im Atmega ist? Vielleicht auch im Vergleich zu 16Bit Zahlen? Waehre die 
Verwendung von Float-Multiplikationen letztlich schneller?

Bislang muss der Atmega nur 8- oder 16Bit-Zahlen verarbeiten und eben 3 
32Bit-Multiplikationen pro 1/8000s durchfuehren. Getaktet wird mit 
16MHz.

Ich waere fuer einen Tipp dankbar.


Mit Gruss

Mike

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren