デジタル信号処理の本質は数値演算です。演算過程では、システム内の係数、入出力などが二進数の形式で有限長の記憶単位に保存されるため、この時有限長の数の精度は有限です。具体的な実装では誤差が生じる可能性があります。デジタルシステムにおいて有限字長によって引き起こされる誤差の要因は主に以下の三つです:
- AD 変換器がアナログ入力信号を離散的な電圧レベルの集合に変換する際に生じる量子化効果。
- 係数を有限ビットの二進数で表現する際に生じる量子化効果。
- 演算過程で字長を制限するために行われる切り捨て操作やオーバーフローを防ぐために信号レベルを圧縮する有限字長効果。
1 AD 変換の有限字長効果#
AD 変換器は二つの部分に分けられます:サンプリングと量子化。サンプリングは連続的なアナログ信号を離散信号に変換し、量子化は各サンプリング値を有限字長で表現します。その統計的意味での等価構造は図のようになります:
量子化後の取値は、正確なサンプリング値と量子化誤差の和として表されます。すなわち
このモデルは以下の仮定に基づいています:
- $e (n)$ は平稳なランダムサンプリング列です
- $e (n)$ は等概分布特性を持っています
- $e (n)$ はホワイトノイズ過程です
- $e (n)$ は $x (n)$ と無関係です
$e (n)$ が等概分布を持つため、丸め誤差、補数切り捨て、原码切り捨ての確率分布は以下のようになります:
- 丸め時、平均は 0、分散は $\frac {\delta^2}{2}$
- 補数切り捨て時、平均は $-\frac {\delta}{2}$、分散は $\frac {\delta^2}{12}$
- 原码切り捨て時、平均は 0、分散は $\frac {\delta^2}{3}$
量子化信号対雑音比の表現は
したがって、丸め後、字長が 1 ビット増加するごとに、SNR は約 6dB 増加します。
2 システム演算における有限字長効果#
二進数演算において、定点数の加算は字長を変えませんが、データのオーバーフローを引き起こす可能性があります。定点数の乗算には字長効果が存在します。なぜなら、2 つの B ビット字長の定点数を掛けると、すべての有効ビットを保持するためには 2B ビット字長のデータが必要であり、データの切り捨てや丸めは必然的に字長効果を引き起こします。
計算過程で字長を増加させて演算結果が切り捨てや丸めを引き起こさないようにする場合、リソースの消費が増えます。フィードバックのないシステムではこのように操作できますが、フィードバックネットワークのあるシステム、例えばデジタルフィルタでは、各クローズドループ演算ごとに字長が一部増加し、循環演算を繰り返すことで必要なリソースがますます増加します。