999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2008-12-31 00:00:00DavidKatz,RickGentileTomaszLukasiak
電子產(chǎn)品世界 2008年9期

在本文的第2部分中,我們首先對(duì)動(dòng)態(tài)范圍與精度的論題進(jìn)行探討,然后再對(duì)數(shù)據(jù)格式進(jìn)行深入的討論,因?yàn)閿?shù)據(jù)格式是與音頻處理相關(guān)的。

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

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

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

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

動(dòng)態(tài)范圍(dB)=峰值電平(dB)一本底噪聲(dB)純模擬系統(tǒng)中的本底噪聲來自系統(tǒng)本身的電特性。建立在模擬系統(tǒng)之上的數(shù)字音頻信號(hào)也會(huì)從ADC和DAC中獲得噪聲,而且還可以從模擬數(shù)據(jù)采樣過程所產(chǎn)生的量化誤差中獲得噪聲。

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

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

動(dòng)態(tài)范圍(dB)=6.02n+1.76≈6n dB

其中n=精度位的數(shù)目

式1:6dB規(guī)則

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

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

在查看了表2之后,我們又一次回想起人耳的動(dòng)態(tài)范圍約為120 dB。基于這個(gè)原因,16位數(shù)據(jù)的表示法對(duì)于高質(zhì)量音頻并不是太合適。因此,供應(yīng)商引入了對(duì)16位系統(tǒng)的動(dòng)態(tài)范圍進(jìn)行擴(kuò)展的24位處理器。這些24位的系統(tǒng)從C編譯器的觀點(diǎn)來看有點(diǎn)不標(biāo)準(zhǔn),所以近年來的許多音頻設(shè)計(jì)使用了32位的處理方式。

選擇了正確的處理器并不是萬事大吉了,因?yàn)橐粋€(gè)音頻系統(tǒng)的總體質(zhì)量是由“達(dá)到最低質(zhì)量”元件的等級(jí)所決定的。除了處理器外,整個(gè)系統(tǒng)還包括像話筒和揚(yáng)聲器這樣的一些模擬元件,以及使信號(hào)在模擬域與數(shù)字域之間變換的轉(zhuǎn)換器。模擬域超出了這次討論的范圍,而音頻轉(zhuǎn)換器則涉及到了數(shù)字域。

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

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

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

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

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

音頻的數(shù)據(jù)格式

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

定點(diǎn)運(yùn)算

執(zhí)行定點(diǎn)運(yùn)算的處理器一般對(duì)信號(hào)使用二進(jìn)制補(bǔ)碼表示法。定點(diǎn)格式可以表示有符號(hào)和無符號(hào)的整數(shù)和分?jǐn)?shù)。在定點(diǎn)處理器上使用有符號(hào)的分?jǐn)?shù)格式是在數(shù)字信號(hào)處理中最常見的。整數(shù)與分?jǐn)?shù)格式的差別在于二進(jìn)制小數(shù)點(diǎn)的位置。對(duì)于整數(shù),二進(jìn)制小數(shù)點(diǎn)是在最低位的右邊;而對(duì)于分?jǐn)?shù),通常把它們的小數(shù)點(diǎn)放在符號(hào)位的右邊。圖4a表示了整數(shù)和分?jǐn)?shù)的格式。

雖然定點(diǎn)的規(guī)則簡化了數(shù)值操作且節(jié)省了存儲(chǔ)器,但同時(shí)也存在動(dòng)態(tài)范圍和精度之間的折衷。在需要保持很高分辨率同時(shí)又要使用很大數(shù)值范圍的應(yīng)用場合,就需要使用一個(gè)可以根據(jù)幅值和指數(shù)而移動(dòng)的小數(shù)點(diǎn)。

浮點(diǎn)運(yùn)算

·使用浮點(diǎn)格式就可以在同一系統(tǒng)中表示非常大和非常小的數(shù)。浮點(diǎn)數(shù)與有理數(shù)的科學(xué)記數(shù)法十分相似。浮點(diǎn)數(shù)是用尾數(shù)和指數(shù)描述的。尾數(shù)確定了精度,而指數(shù)控制著動(dòng)態(tài)范圍。

有一個(gè)標(biāo)準(zhǔn)管理著數(shù)字機(jī)的浮點(diǎn)運(yùn)算。這個(gè)標(biāo)準(zhǔn)叫IEEE- 754(圖4a);對(duì)于32位浮點(diǎn)數(shù)可以歸納如下。第31位(MSB,最高位)是符號(hào)位,它的O表示符號(hào)為正,它的1表示符號(hào)為負(fù)。從第30位到第23位是表示2的整次冪的指數(shù)字段(exp_field),并以127作為偏移量。最后,第22位到第0位表示分?jǐn)?shù)的尾數(shù)(mantissa)。隱藏位一般是指在小數(shù)點(diǎn)的左邊有一個(gè)1。

32位的IEEE浮點(diǎn)數(shù)的值可以用下面的等式來表示:

(-1)sign_bit×(1.mantissa)*2(exp_field-127)

依靠8位的指數(shù)和23位的尾數(shù),IEEE-754達(dá)到了動(dòng)態(tài)范圍和精度之間的一個(gè)平衡。而且,IEEE浮點(diǎn)庫還包括了對(duì)于像??、0和NaN(不是一個(gè)數(shù))等附加特性的支持

表3表示了從常用的浮點(diǎn)和定點(diǎn)類型可以達(dá)到的最小數(shù)和最大數(shù)。

在16位架構(gòu)上的仿真

正如我們在前面解釋的,16位處理并不能為高質(zhì)量音頻提供足夠的SNR,但這并不是說您不應(yīng)該選用16位處理器作為音頻系統(tǒng)。例如,用一個(gè)32位的浮點(diǎn)機(jī)把一個(gè)算法編寫成保持原來32位數(shù)據(jù)風(fēng)格的程序,是比較容易的;但一個(gè)16位處理器也可以通過非常低成本的仿真而保持32位的完整性。圖5示出了為一個(gè)嵌入式算法選擇數(shù)據(jù)類型時(shí)的一些可能性。

在本節(jié)的余下部分,我們將描述如何在一個(gè)16位定點(diǎn)機(jī)上實(shí)現(xiàn)浮點(diǎn)和32位擴(kuò)展精度定點(diǎn)格式的功能。

在定點(diǎn)處理器上的浮點(diǎn)仿真

在大多數(shù)的16位定點(diǎn)處理器上,IEEE-754浮點(diǎn)功能是通過對(duì)C/C++或匯編語言的庫調(diào)用而提供的。這些庫通過使用定點(diǎn)乘法和運(yùn)算邏輯而對(duì)所需的浮點(diǎn)處理進(jìn)行仿真。這種仿真需要額外的處理周期來完成。但是,當(dāng)定點(diǎn)處理器內(nèi)核的時(shí)鐘進(jìn)入到500 MHz-1GHz范圍時(shí),在對(duì)符合IEEE-754的浮點(diǎn)運(yùn)算進(jìn)行仿真時(shí)需要的額外周期就不那么重要了。

為了降低計(jì)算的復(fù)雜性,可以使用IEEE-754的“松弛”版。這意味著浮點(diǎn)運(yùn)算并不會(huì)實(shí)現(xiàn)像?和NaN這樣一些標(biāo)準(zhǔn)特性。

進(jìn)一步的優(yōu)化是對(duì)尾數(shù)和指數(shù)使用一個(gè)更為本機(jī)化的類型。舉個(gè)例子,ADI公司的Blackfin定點(diǎn)處理器架構(gòu)具有一個(gè)由十六個(gè)16位寄存器組成的寄存器組,而這個(gè)寄存器組還可以用作8個(gè)32位寄存器。在這種配置下,每個(gè)內(nèi)核時(shí)鐘周期內(nèi),兩個(gè)32位寄存器可以從全部四個(gè)半寄存器中獲取操作數(shù)。為了優(yōu)化Blackfin寄存器組的使用,可以使用一種雙字的格式。這樣,一個(gè)字(16位)被保留為用作指數(shù),而另一個(gè)字(16位)則保留給分?jǐn)?shù)部分使用。

雙精度定點(diǎn)仿真

對(duì)于許多應(yīng)用來說,16位定點(diǎn)數(shù)據(jù)是不夠的,如果使用仿真浮點(diǎn)運(yùn)算,那么計(jì)算量又太大。對(duì)于這些應(yīng)用,擴(kuò)展精度定點(diǎn)仿真也許足以滿足系統(tǒng)的要求。使用一個(gè)高速定點(diǎn)處理器將確保有效降低所需的計(jì)算量。音頻中兩個(gè)常用的擴(kuò)展精度格式是32位和31位定點(diǎn)表示。

32位-精確仿真

32位運(yùn)算是16位定點(diǎn)處理器的自然軟件擴(kuò)展。對(duì)于那些32位寄存器組可以分為16位的兩半而進(jìn)行存取的處理器來說,這些兩半的寄存器可以合起來用于表示一個(gè)32位定點(diǎn)數(shù)。Blackfin處理器的硬件結(jié)構(gòu)允許單周期32位加法和減法。

例如,當(dāng)一個(gè)32位乘法采用累加器迭代操作時(shí)(像我們馬上就要討論的有些算法情況),我們只需用3個(gè)周期內(nèi)的16位乘法就可以實(shí)現(xiàn)32位的精度。兩個(gè)32位操作數(shù)(R0和R1)中的每一個(gè)都可以分為16位的兩半(R0.H/R0.L和R1.H/R1.L)。

從圖6可以容易看出,在使用16位乘法器的指令組合來對(duì)32位乘法R0×R1進(jìn)行仿真的時(shí)候,我們需要下面的操作:

*四次16位乘法以產(chǎn)生四個(gè)32位結(jié)果

1.R1.L×R0.L

2.R1.L×R0.H

3.R1.H×R0.L

4.R1.H×R0.H

*三次操作以保持在最終結(jié)果中數(shù)位的位置(符號(hào)>>表示右移)。由于我們正在做分?jǐn)?shù)運(yùn)算,所以結(jié)果是1.63(1.31×1.31=2.62,帶有一個(gè)冗余的符號(hào)位)。在大多數(shù)情況下,這個(gè)結(jié)果可以截取到1.31,以便裝入一個(gè)32位數(shù)據(jù)寄存器。因此,乘法的結(jié)果應(yīng)該以符號(hào)位為基準(zhǔn),或者以最大有效位為基準(zhǔn)。這樣,那些最右邊的最小有效位可以在截取操作時(shí)被安全地截取。

1.(R1.L×R0.L)>>32

2.(R1.L×R0.H)>>16

3.(R1.H×R0.L)>>16

一個(gè)32位乘法的最終表達(dá)式

((R1.L×R0.L)>>32+(R1.L×R0.H)>>16)+((R1.H×R0.L)>>16+R1.H×R0.H)

在Blackfin架構(gòu)中,這些指令可以并行執(zhí)行,以實(shí)現(xiàn)在三個(gè)周期內(nèi)完成一次32位乘法的有效速率。

31位-精確仿真

我們可以把最高要求31位精度的定點(diǎn)乘法的計(jì)算時(shí)間減少到2個(gè)周期。這個(gè)技術(shù)對(duì)于音頻系統(tǒng)特別有吸引力,因?yàn)橐纛l系統(tǒng)通常至少需要24位的表示法,而32位的精度也許有些過分。使用“6 dB規(guī)則”,31位的精確仿真仍然保持了大約186 dB的動(dòng)態(tài)范圍,即使考慮了所有的量化效應(yīng)之后,這仍然具有非常充裕的余量。

從圖6中的乘法框圖來看,很明顯的一點(diǎn)是,最小有效位半字的乘法R1.L×R0.L對(duì)最終的結(jié)果沒有太大的貢獻(xiàn)。事實(shí)上,如果把結(jié)果截取為1.31,那么這個(gè)乘法只影響到1.31結(jié)果的最低位。對(duì)于許多應(yīng)用來說,由這一位引起的精度損失是通過減少一次16位乘法、一次移位和一次加法以加速32位乘法而得以平衡的。

31位精確乘法的表達(dá)式為

((R1.L×R0.H)+(R1.H×R0.L))>>16+(R1.H×R0.H)

在Blackfin架構(gòu)中,這些指令可以并行執(zhí)行,以實(shí)現(xiàn)在2個(gè)周期內(nèi)完成一次32位乘法的有效速率。

所以,這是音頻處理中使用的數(shù)據(jù)格式的“獨(dú)家新聞”。在本文的最后一部分,我們將介紹開發(fā)嵌入式音頻應(yīng)用的一些策略,主要聚焦于常用算法中的數(shù)據(jù)傳輸和構(gòu)建模塊。

主站蜘蛛池模板: 在线精品亚洲一区二区古装| 国产亚洲欧美日本一二三本道| 伦伦影院精品一区| 欧洲成人在线观看| 亚洲高清中文字幕| 亚洲swag精品自拍一区| 一级福利视频| 国内精品一区二区在线观看 | 国产综合精品日本亚洲777| 天天激情综合| 99精品免费在线| 国产亚洲视频播放9000| 久久精品aⅴ无码中文字幕| 凹凸精品免费精品视频| 91福利一区二区三区| 蜜芽一区二区国产精品| 欧美日韩中文国产| 91精品网站| 91精品人妻互换| 国产午夜精品一区二区三| 国产精品福利导航| 亚洲日韩精品伊甸| 91色在线观看| 久久77777| 在线国产91| 女同久久精品国产99国| 最新日韩AV网址在线观看| a级毛片免费网站| 最新日韩AV网址在线观看| 在线亚洲小视频| 欧美日韩一区二区三区在线视频| 色综合热无码热国产| 久久青草免费91观看| 国产一级裸网站| 91网在线| 91精品国产91久无码网站| 色精品视频| 欧美成人在线免费| 秋霞午夜国产精品成人片| 亚洲精品成人片在线播放| 毛片视频网址| 97青青青国产在线播放| 夜夜操狠狠操| 91探花国产综合在线精品| 亚洲国产成人在线| 欧美无遮挡国产欧美另类| 人妻无码一区二区视频| 毛片一区二区在线看| 国产农村妇女精品一二区| 国产高清在线观看| 国产91高清视频| 日韩经典精品无码一区二区| 精品三级在线| 日本精品一在线观看视频| 久久精品无码国产一区二区三区 | 国产门事件在线| 不卡无码h在线观看| 欧美成人怡春院在线激情| 亚洲日韩AV无码一区二区三区人| 亚洲美女一区| 国产三级成人| 无码国产伊人| 香蕉在线视频网站| 性做久久久久久久免费看| 青青青国产精品国产精品美女| 国产激情第一页| 亚洲一级毛片免费看| 一区二区三区四区精品视频| 欧美第一页在线| 91免费片| 亚洲久悠悠色悠在线播放| 婷婷亚洲综合五月天在线| 人人91人人澡人人妻人人爽| 亚洲三级视频在线观看| 精久久久久无码区中文字幕| 国产精品嫩草影院视频| 亚洲无码91视频| 老司机aⅴ在线精品导航| 久综合日韩| 1769国产精品视频免费观看| 狠狠干综合| 国产精品白浆在线播放|