新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 嵌入式音頻處理基礎(二)

嵌入式音頻處理基礎(二)

—— Fundamentals of Embedded Audio Processing (Part 2)
作者:David Katz, Rick Gentile和Tomasz Lukasiak ADI公司 時間:2008-09-18 來源:電子產品世界 收藏

  在本文的第2部分中,我們首先對動態(tài)范圍與精度的論題進行探討,然后再對數據格式進行深入的討論,因為數據格式是與處理相關的。

本文引用地址:http://m.butianyuan.cn/article/88167.htm

動態(tài)范圍與精度

  您也許已經見到過dB的規(guī)范,這是在目前市場上用于描述各種產品而隨處可見的。表1列出了幾種產品以及它們的信號質量,以dB為單位。

表1  各種系統(tǒng)的動態(tài)范圍比較

  那么,這些數值究竟代表什么意思呢?讓我們從確定一些定義來開始。把圖1作為對下列基本規(guī)范的“仿制數據手冊(cheat sheet)”的一個參考信號。


圖1  系統(tǒng)中一些重要術語之間的關系

  人耳的動態(tài)范圍(最響的信號電平與最安靜 的信號電平之比值)約為120 dB。在存在噪聲的系統(tǒng)中,動態(tài)范圍被描述為最大信號電平與本底噪聲之間的比值。這就是說,

  動態(tài)范圍(dB)=峰值電平(dB)—本底噪聲(dB)

  純模擬系統(tǒng)中的本底噪聲來自系統(tǒng)本身的電特性。建立在模擬系統(tǒng)之上的數字音頻信號也會從ADC和DAC中獲得噪聲,而且還可以從模擬數據采樣過程所產生的量化誤差中獲得噪聲。

  另一個重要的術語是信噪比(SNR)。在模擬系統(tǒng)中,信噪比的意思是標稱信號對于本底噪聲的比值,其中的“線電平”是標稱工作電平。對于專業(yè)設備,標稱電平通常為1.228 Vrms,這可以轉換為+4 dBu。余量是標稱電平與峰值電平之間的差值,峰值電平指開始出現(xiàn)信號失真的電平。數字系統(tǒng)中的SNR定義有些不同,即SNR被定義為動態(tài)范圍。

  現(xiàn)在,有了對動態(tài)范圍的理解,我們就可以開始討論動態(tài)范圍在實際中有怎樣的用途。不做冗長的推導,讓我們簡單介紹一下什么是6 dB規(guī)則。這個規(guī)則是動態(tài)范圍與計算字長之間關系的關鍵所在。完整的公式推導在式1中說明,但這里使用了簡便的表示法,意思是每增加1位的精度,將使動態(tài)范圍增加6 dB。應該注意,這個6 dB的規(guī)則并沒有考慮到音頻設計中的模擬子系統(tǒng),所以,輸入端和輸出端的傳感器的非理想性必須另作考慮。

  動態(tài)范圍(dB)= 6.02n + 1.76 ≈ 6n dB
  其中n =精度位的數目
  式1:6 dB規(guī)則

  “6 dB規(guī)則”指出,使用的位數越多,我們能獲得的系統(tǒng)質量就越高。但實際上,只有少數幾個真正可用的選擇。大多數適用于媒體處理的器件有三種字長形式:16位、24位和32位。表2總結了這三類的動態(tài)范圍。

  由于我們在討論6 dB規(guī)則,所以有必要對中常被使用的非線性量化方法進行一些討論。電話質量的線性PCM編碼需要12位的精度。但是,我們的耳朵對小幅度時音頻信號變化的敏感度要超過大幅度時。因此,電話通訊中使用的線性PCM采樣方法的位數用得過多。A律和μ律壓擴標準中使用的對數量化只用8位精度就達到了12位PCM的質量等級。為了使我們的生活更加方便,有些廠商已經把A律和μ律壓擴標準做到了器件的串行端口中。這使內核無需進行對數計算。

  在查看了表2之后,我們又一次回想起人耳的動態(tài)范圍約為120 dB?;谶@個原因,16位數據的表示法對于高質量音頻并不是太合適。因此,供應商引入了對16位系統(tǒng)的動態(tài)范圍進行擴展的24位處理器。這些24位的系統(tǒng)從C編譯器的觀點來看有點不標準,所以近年來的許多音頻設計使用了32位的處理方式。

表2  各種定點架構的動態(tài)范圍

  選擇了正確的處理器并不是萬事大吉了,因為一個音頻系統(tǒng)的總體質量是由“達到最低質量”元件的等級所決定的。除了處理器外,整個系統(tǒng)還包括像話筒和揚聲器這樣的一些模擬元件,以及使信號在模擬域與數字域之間變換的。模擬域超出了這次討論的范圍,而音頻則涉及到了數字域。

  假設您想使用AD1871進行音頻采樣。的數據手冊中把它解釋為一個24位的轉換器,但它的動態(tài)范圍不是144 dB,而是105 dB。其原因是轉換器不是一個完美無缺的系統(tǒng),而供應商只給出了有用的動態(tài)范圍。

  如果您真的想把AD1871與24位處理器相連,那么,您整個系統(tǒng)的SNR將為105dB。本底噪聲將達到144dB-105dB=39dB。圖2是這一情況的圖形表示。但是,在數字音頻系統(tǒng)中還有另一個組件 我們還沒有討論:處理器內核內的計算。


圖2  一個音頻系統(tǒng)的SNR由最弱元件的SNR構成

  使數據經過處理器的計算單元會潛在地引入各種誤差。其中之一就是量化誤差。這種誤差可以在一連串導致數據值被截取或舍入(向上或向下)的計算中產生。例如,一個16位處理器可以對一個16位數據組成的向量作加法,然后把結果存入一個擴展字長的累加器中。但是,當累加器中的數值最終被寫入到一個16位數據寄存器中時,其中的有些位會被截去。

  可以看一下圖3,看看計算誤差是如何影響到實際系統(tǒng)的。對于一個理想的16位A/D轉換器(圖3a),信噪比應該是16 x 6 = 96 dB。如果不存在量化誤差,那么,16位計算足以把SNR保持在96 dB。而24位和32位系統(tǒng)將分別把8位和16位置于本底噪聲以下的動態(tài)范圍中。從本質上看,這些額外的數位是被浪費掉了。


圖3 (a)在一個理想的16位96 dB SNR系統(tǒng)中,不同字長計算時的額外數位的分配,
其中忽略了量化誤差  (b) 在一個理想的16位96 dB SNR系統(tǒng)中,
不同字長計算時的額外數位的分配,其中存在量化誤差

  但是,所有的數字音頻系統(tǒng)都確實要引入舍入和截取誤差。如果我們可以量化這個誤差,如確定為18dB(或3位),那么很清楚,16位計算對于維持96dB的系統(tǒng)SNR是不夠的(圖3b)。解釋這一點的另一個方法是,有效的本底噪聲被提高了18dB,因而總的SNR就降低到了96dB -18dB = 78dB。這導致的結論是,在本底噪聲以下的額外數位有助于解決量化中出現(xiàn)的麻煩事。

音頻的數據格式

  在處理器內部有許多種表示數據的方法。音頻處理中使用的兩種主要的處理器架構是定點與浮點。定點處理器設計成用整數和分數進行運算,通常固有地支持16位、24位或32位的數據。浮點處理器提供非常好的性能,并固有地支持32位或64位的浮點數據類型。但是,這些浮點處理器一般成本比較高,而且比相應的定點處理器消耗更多的功率,因而所有的實際系統(tǒng)都必須在質量和工程成本之間尋求一個平衡點。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉