fixed point?

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

Reply to
Repzak
Loading thread data ...

Hej Kasper

Hvilken processor ?

m.v.h lasse

Reply to
Lasse Madsen

Hvad med at betragte det som tusindedele og regne med integer

Reply to
Kurt Boesen

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
Reply to
Christen Fihl

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.