固定小数点数

DSPは扱うオペランドの型によって二つの種類に分けることができます。一つは固定小数点DSPで、もう一つは浮動小数点DSPです。なぜ、整数DSPはないのでしょうか。なぜ、固定小数点DSPが必要なのでしょうか。

DSPが固定小数点数を扱う理由は、それが整数よりも信号処理に適した型であるからです。それは入出力を考えてみれば即座にわかります。例えばDAC( Digital-to-Analog Converter )を考えてみましょう。DACはDSPが計算した結果をアナログ出力に変換する素子です。DACにはいろいろな種類がありますが、ビット数の違いはDACを選ぶ上で一番重要な要素です。例えば10ビットのDACは1024通りの値をアナログ信号に変えることができますし、12ビットのDACは4096通りの値をアナログ信号に変えることができます。

ここで、システムを10ビットDACで開発したとしましょう。これは先にあげたように1024通りの結果をアナログ出力できます。では、このDACを12ビット品に置き換えたと考えてください。これで4096通りの結果をアナログ出力できるようになります。と、いうことは出力信号の振幅が4倍になると考えていいのでしょうか?

これはまずいです。「DACを高級なものに換えたらラジカセの音が大きくなった」では困ります。DACを高級なものに換える時、我々が期待するのはより繊細で滑らかな音ではないでしょうか。このような違いは信号を右詰めで考えるか左詰めで考えるかの違いであると考えられます。DACを換えて音の大きさが変わるというのは、信号のディジタル表現を右詰めで考えている場合です。この場合増えたビットが左(MSB側)に充てられるため、ビットを増やせば大きな音が鳴るようになります。逆に左詰めで考えると増えたビットは右(LSB側)に充てられるため、ビットを増やせばより繊細な音を表現できることになります(下図)。

データの左詰めと右詰め

自然信号をディジタル化したり、ディジタル化したデータを自然信号に戻す場合、変換器の性能で自然信号の大きさが変わっては困ります。DACのビット数の変化は信号の精度の変化として与えられたほうが処理が自然になります。このように、自然信号の自然な表現は左詰め表現であるといえるのです。固定小数点数はこの左詰め表現に非常によく合います。固定小数点数の表現の仕方はいくつもありますが、どのような場合も小数点のすぐ右側に信号を左詰めで置けば、先に説明したような左詰め表現を行えます。

固定小数点数の実装の仕方が多彩なため、小数点の左側に何ビット、右側に何ビットを割り当てるかでその固定小数点数の形をあらわすことがあります。例えば、1.15表現とは、小数点の左に1ビット、右に15ビット割り当てる方式です。1.31表現とは小数点の左に1ビット、右に31ビットです。

1.15表現は多くの固定小数点DSPが用いる形式です。この方法は小数点の左の1ビットを符号に使いますので、数値表現はすべて小数点以下となり、±1の範囲の値しか表現できません。8.8表現のような数を扱う場合、一般の固定小数点DSPはハードウェアが対応していませんので乗算結果をソフトウェアで補正しながら使うことになります。

9.31表現は固定小数点が40ビットアキュームレーターを使うときに用いる表現です。この方法は1.15表現の固定小数点数の積を桁落ちなく表現できる上、256回までの積和を行っても決してあふれない優れた表現形式です。

蛇足ですが整数は16.0表現と考えると固定小数点数の特殊な場合であることがわかります。そして、決して右詰めに使うこともできないことがわかります。なぜなら、小数点の右にビットがないからです。

以上のように固定小数点数はDSPが信号処理を行いやすいデータ形式なのです。

⇒次は丸め

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |