オーディオの自作の話題を中心に盛り上げてください
新しいHPのURL http://www.easyaudiokit.com

お気楽オーディオキット資料館

3475192

浮動小数点計算いらないかも - kobayashi

2017/01/04 (Wed) 20:20:46

浮動小数点はいらないかもです。

FS = DPLL × XTAL(100MHzなど)/(2^32)

これは先に計算できますよね。
XTAL(100MHzなど)/(2^32)
10^8Hz / (2^32) = 0.023283064

FS = DPLL × 0.023283064 となります。

0.023283064は整数型だと0になるので逆数にして
42.94967296 となります。

FS = DPLL / 42.94967296 となります。
FS ≒ DPLL / 43 です。

自分の勘違いがあるかもしれないので皆さん検討お願いします。

Re: 浮動小数点計算いらないかも - d

2017/01/05 (Thu) 04:48:31

浮動小数点、あってもいいんですが、そんなにコード増えますか?

割り算はコストがでかいので、掛け算のみにして(2^32を割るだけなので逆数をとるようにする)


float mul(float a, float b){
return a * b;
}

int trunc(float a){
return (int) a;
}

DPLL がlong型なので

float to_float(long a){
return a;
}
もあってもいいかもしれません。

調べたのがXC8しかないのですが、
600ワード程度しか増えませんでした。

あとは計算をいくら追加しても、関数呼び出しなので
ワード数の増加はわずかだと思います。

Re: 浮動小数点計算いらないかも - ヒロ

2017/01/06 (Fri) 02:40:50

もちろん割り算は使わず、掛け算のみでやっています。あと、整数に丸めると誤差が大きくなりすぎると思います。long変数(32Bit)を用いてケタを調整しながら演算する手もありますが、かなり面倒ですので・・・。
 ちなみに現状83%の使用率ですが、浮動小数点を含むサブルーチン(メニュー項目1つ)をすべてコメントアウトアウトすると67%になりました。16%減ったわけで、16kBのPICですから約2kBの消費です。浮動少数点演算だけでなくprintf関数にも浮動小数点表示をさせていますから、ROM容量を喰うのかな、と思います。もっともサブルーチン全体をコメントアウトしているので、1~2%は余分に減っていると思いますが、いづれにしても浮動小数点を加えると一気にメモリーを消費するようです。CCSのコンパイラの特性かもしれません。

Re: 浮動小数点計算いらないかも - d

2017/01/07 (Sat) 11:58:14

どうもそのようですね。
コンパイラがあまりコードサイズのことは考えられてないのかもしれません。

PIC18Kシリーズへの移植、おつかれさまです。
これで、もしプログラムエリアが足りなくなっても
PIC18F27K40(128kB,64kWord)のPICが使えますね。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.