數字信號處理的實質為數值運算。運算過程中,系統中的係數、輸入輸出等都要以二進制的形式存儲在有限長的存儲單元中,此時有限長度的數的精度就是有限的。具體實現中可能會產生誤差。在數字系統中因有限字長引起誤差的因素主要為以下三種:
- 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 位字長的數據,數據截尾或捨入必然會引入字長效應。
如果在計算過程中增加字長來保證運算結果不產生截尾和捨入的話,耗費資源變多,在沒有反饋的系統中可以如此操作。如果在有反饋網絡的系統中,如數字濾波器,每次閉環運算都會增加一部分字長,循環運算下來需要的資源越來越多。