C言語を固定小数点化する
VHDLではすべての信号を固定小数点にする必要がありますが、いきなりVHDLコーディングする前に、C言語を固定小数点化してみましょう。
(1) 変数をすべて整数化する
  • 変数がintやlong longになっている(コーヒーブレーク1)
  • 乗算の後、右ビットシフトでレンジ合せ。
(2) 固定小数点FFTを実行する
  • スペクトルが6kHzに存在する。
  • 固定小数点化してもスペクトルの形は変わらない。
(3) 固定小数点FFTの結果検証
  • スペクトルの大きさは15,000近い
  • 入力振幅の500倍以上になり得るので注意(コーヒーブレーク2)。
Back

@VC++における整数型とレンジ
型名 ビット数 範囲
char 8

-128 to 127

short 16

-32,768 to 32,767

long 32

-2,147,483,648
to 2,147,483,647

int 32

-2,147,483,648
to 2,147,483,647

long long 64

-9,223,372,036
,854,775,808 to 9,223,372,036
,854,775,807

(VC++以外の処理系ではこの限りでない)

A入力波形の振幅は±32にどどめる

1024ポイントFFT場合、その結果(スペクトル)は最大1024倍になり得ます。したがってスペクトルの振幅を16ビット(-32,768 to 32,767)に収めたい場合、入力波形の振幅を(‐32 to 32)にとどめておく必要があります。

Top Page