fixed point?

Nov 03, 2004 3 Replies

Hey (smider den lige her også.. den ligger også i programmering.c)



Først, dette er uC relatreret og jeg regner med at bruge keil...



Jeg legede lige med at gange 2 floats sammen, og det ser ud til at tage alt for lang tid...



Er der nogle der ved om det er muligt kun at bruge 16bit float i keil, og evt hvordan ?



Kan man komme til at regne med 16 bit fixed point, for det vil vel gå stærkere..



jeg skal gerne så langt ned i tid jeg kan nå at lave 2 gange og nogle adder på 20uS hvilket svarer til mindre end 330 cycles og en normal muliply tager vidst omkring 9 cycles...



er der nogle måder jeg kan gange decimal tal sammen på hurtigere.. evt et lib eller helst integreret i keil



Kasper


Hvad med at betragte det som tusindedele og regne med integer

Prøv at kikke i gruppen comp.dsp Der diskuteres disse sager tit.

I fixed point skal du tage hensyn til hvor store og hvor små tal du vil kunne behandle. Hvis du sætter kommaet midt mellem de 2 bytes i de 16 bits, så kan du benytte tal op til ca 126.996 og ned til ca 0.004 nær nul (uden at snakke om fortegn).

Sådanne tal kan blot lægges samme med alm cpu additioner.

Når de ganges, så fylder resultatet jo 32 bits (hvis du kan opnå dette i din cpu). Disse 32 bits skal skifts 8 bit ned og gemmes i 16 bit igen. Har du ikke 32 bits til rådighed som resultat, kan du fx skift begge med 4 bits først. (Så mistes der information, men måske brugbart).

Fixed point i 8.8 system (8 før og 8 efter komma) X = A + B

Y = (A * B ) shr 8 eller Y = (A shr 4) * (B shr 4)

Husk fortegnet!!

Christen Fihl http://HSPascal.fihl.net

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required