嵌入式音頻處理入門_第1頁
嵌入式音頻處理入門_第2頁
嵌入式音頻處理入門_第3頁
嵌入式音頻處理入門_第4頁
嵌入式音頻處理入門_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

為了使PWM音頻達到相當好的質量,PWM的載波頻率應該至少12倍于信號的帶寬,而且定時器的分辨率即占空比的間隔時間應該有16位。由于載波頻率的需求,傳統PWM音頻電路曾經被用于窄帶音頻,比如超重低音。但是,利用目前的高速處理器,就可以擴展到更寬的音頻譜。PWM流必須經過低通濾波,以去除高頻載波。這通常是用驅動揚聲器的放大器電路來完成。D類放大器已經被成功地用于這種結構。當不需要放大時,一個低通濾波器就足以用作輸出級。在一些低成本應用中,聲音的品質不是那么重要,就可以把PWM流與揚聲器直接相連。在這樣的系統中,揚聲器紙盆的機械慣性充當了濾除載波頻率的低通濾波器。音頻轉換器的簡要背景音頻ADC完成A/D轉換可以有許多種方法。一個傳統的方法是逐次逼近的方案,該方案使用一個比較器對模擬輸入信號與一連串中間D/A轉換輸出之間的比較結果進行檢測,然后得到最后的結果。但目前的大多數ADC都是轉換器。這種轉換器不是使用逐次逼近的方法來產生很高的分辨率,而是使用了1位的ADC。為了對這個減少了的量化等級數進行補償,這些轉換器在比NYQUIST頻率高得多的頻率下進行過采樣操作。把這些過采樣的1位樣點流轉換成一個較低速率、較高分辨率的樣點流是使用這些轉換器內部的數字濾波模塊完成的,目的是為了適應傳統PCM流的處理。例如,一個16位441KHZ的ADC可以用64倍的過采樣率,產生一個速率為28224MHZ的1位樣點流。然后用一個數字抽取濾波器把這個超級采樣的樣點流轉換成一個速率等于441KHZ的16位樣點流。由于對模擬信號的過采樣操作,ADC放寬了對用來限制輸入信號帶寬的模擬低通濾波器的性能要求。這些轉換器還具有將輸出噪聲分布在比傳統轉換器更寬的頻譜內的優(yōu)點。正如圖3B中的框圖所指出的,AD1871ADC與BLACKFIN處理器可無縫連接。電路的模擬部分被簡化了,因為在這個討論中只有數字信號才是重要的。AD1871的過采樣率由外部晶振提供。圖中的處理器有2個串行端口SPORT和一個SPI端口,用于連接AD1871。被配置成I2S模式的SPORT是與AD1871進行數據連接的端口,而SPI端口用作控制連接。I2S協議是由PHILIPSNXP半導體為音頻信號的數字傳輸而開發(fā)的一個標準。該標準使音頻設備制造商所生產的器件可以相互兼容。確切地說,I2S是一種用于傳輸立體聲數據的3線串行接口。正如圖4A中所示,它規(guī)定了位時鐘中、數據線下和左右同步線上,而左右同步線用來選擇當前正在傳送的數據幀是左聲道的還是右聲道的。從本質上講,I2S是一個帶有兩個活動聲道的時分復用TDM串行流。TDM是一種通過一條物理鏈路傳輸超過一個聲道比如左聲道與右聲道的方法。在AD1871電路結構中,當對SPORT時鐘RSCLK和幀同步RFS線進行驅動時,ADC可以降低它從外部晶振接收到的12288MHZ采樣率。該配置保證了采樣和數據傳輸是同步的。SPI接口,如圖4B所示,是MOTOROLA為了使主處理器可以與各種數字器件相連而設計的。這個在SPI主設備與SPI從設備之間的接口由一條時鐘線SCK、兩條數據線MOSI和MISO和一條從設備選擇SPISEL線組成。其中一條數據線由主設備MOSI驅動,而另一條由從設備MISO驅動。在圖3B的例子中,處理器的SPI端口是無縫地與AD1871的SPI模塊相連接的。圖4A數據信號由AD1871使用I2S協議進行傳送BSPI3線接口用于控制AD1871帶有獨立SPI控制端口的音頻編解碼器允許主處理器在運行中修改ADC的設置。除了靜音和增益控制外,其中一個確實很有用的ADC如AD1871設置是對節(jié)電模式的設置能力。對于電池供電的應用來說,這通常是一個本質功能。DAC與編解碼器將音頻DAC與主處理器相連接與我們才討論過的與ADC連接的過程完全一樣。在一個同時使用ADC和DAC的系統中,同一個支持雙向傳輸的串行端口可以同時連接這兩者。但是,如果您正在考慮全雙工音頻,那么您最好采用一個可以同時完成模擬數字轉換和數字模擬轉換的單芯片音頻編解碼器。這樣的編解碼器的一個很好的選擇是ADI公司的AD1836,它有三個立體聲DAC和兩個立體聲ADC,而且可以通過多種串行協議進行通訊,包括I2S。在本文中,我們講到了將音頻轉換器與嵌入式處理器進行連接的一些基本內容。在本文的第二部分,我們將敘述音頻數據在存儲和處理時的格式。我們將特別回顧在選擇數據字長時的折衷方法。這是很重要的,因為這決定了所用的數據類型,而且,如果希望獲得的質量等級太高而某個特定器件達不到的時候,也可以避免選擇某些處理器。此外,數據字長的選擇有助于在增加動態(tài)范圍和增加處理能力之間的折衷選擇。音頻功能在嵌入式媒體處理中起到關鍵性的作用。雖然一般來說,音頻處理比視頻處理占用較少的處理能力,但它們具有相同的重要性。本文共包括三個部分,在第一部分中,我們將探討數據是如何從各種音頻轉換器DAC和ADC傳送給嵌入式處理器的。在這之后,我們將探討一些經常用于連接音頻轉換器的外圍接口標準。模擬與數字音頻信號之間的轉換采樣所有的A/D與D/A轉換都應該遵循SHANNONNYQUIST采樣定理。簡言之,該定理規(guī)定了模擬信號在被采樣時的速率NYQUIST采樣率必需等于或超過它的帶寬NYQUIST頻率的兩倍,以便可以在最后的D/A轉換中進行信號重構。低于NYQUIST采樣率的采樣將產生混疊,而這種混疊是那些超過NYQUIST頻率的頻率分量在低頻區(qū)的鏡像疊影。如果我們取一個帶寬限制在020KHZ范圍內的音頻信號,并在220KHZ40KHZ頻率下進行采樣,那么NYQUIST定理就能確保我們可以對原來的信號進行完美重構而不會有任何信號損失。但是,對這個020KHZ帶限信號用任何低于40KHZ的采樣率進行采樣時,將會由于混疊而產生失真。圖1示出低于NYQUIST采樣率的采樣如何使信號表示得不正確。在40KHZ頻率下采樣時,20KHZ的信號被正確地表示圖1A。但是,同樣的20KHZ正弦波,當在30KHZ頻率下采樣時,實際上看起來像是原始正弦波在一個較低頻率上的混疊圖1B。圖1A用40KHZ對20KHZ信號進行采樣可以正確地捕捉到原始信號。B用30KHZ對同一個20KHZ信號進行采樣所捕捉到的是一個被混疊了的信號低頻重影然而,沒有一個實際系統是正好用兩倍的NYQUIST頻率進行采樣的。例如,把一個信號限制于一個指定的頻帶內要使用模擬低通濾波器,但這些濾波器從來就不是理想濾波器。因此,通常用來還原音樂的最低采樣率是441KHZ而不是40KHZ,而且許多高質量系統是用48KHZ進行采樣的,以捕捉到020KHZ范圍內更加逼真的聽覺感受。由于語音信號只是我們可以聽到的頻率范圍的一小部分,所以4KHZ以下的能量就足以使還原的語音信號能夠聽得懂。基于這個原因,電話應用中通常只使用8KHZ的采樣率24KHZ。表1歸納了我們所熟悉的一些系統的采樣率。表1常用的采樣率PCM輸出音頻信號最常用的數字表示是PCM脈沖編碼調制信號。在這種表示中,對每個采樣周期內的一個模擬幅度用一個數字量進行編碼。這樣得到的數字波形是一個用來近似地表示輸入模擬波形的由抽取點組成的矢量。所有A/D轉換器的分辨率都是有限的,所以轉換器引入了數字音頻系統所固有的量化噪聲。圖2示出模擬正弦波的PCM表示圖2A,它是用一個理想的A/D轉換器進行轉換的,圖中的量化操作顯現為一種“階梯效應”圖2B。您可以看到,較低的分辨率導致了對原始波形的較差的表示圖3C。圖2A一個模擬信號B數字化之后的PCM信號C使用較少位數精度進行數字化之后的PCM信號作為一個數值例子,讓我們假設用一個24位A/D轉換器對一個模擬信號進行采樣,而這個模擬信號的范圍從2828V到2828V5656的峰峰值。24位有22416777216個量化等級。因此,有效的電壓分辨率為5656V/167772163371NV。在本文的第二部分,我們將看到編解碼器的分辨率如何影響音頻系統的動態(tài)范圍。PWM輸出脈寬調制PWM是不同于PCM的另一種調制方法,它可以直接驅動輸出電路而無需任何DAC的幫助。這在需要低成本的解決方案時特別有用。在PCM中,對每個采樣周期內的幅度進行一次編碼,而在PWM信號中描述幅度的是占空比。PWM信號可以通過通用I/O引腳產生,或者可以用許多處理器中都有的專用PWM定時器來直接驅動。為了使PWM音頻達到相當好的質量,PWM的載波頻率應該至少12倍于信號的帶寬,而且定時器的分辨率即占空比的間隔時間應該有16位。由于載波頻率的需求,傳統PWM音頻電路曾經被用于窄帶音頻,比如超重低音。但是,利用目前的高速處理器,就可以擴展到更寬的音頻譜。PWM流必須經過低通濾波,以去除高頻載波。這通常是用驅動揚聲器的放大器電路來完成。D類放大器已經被成功地用于這種結構。當不需要放大時,一個低通濾波器就足以用作輸出級。在一些低成本應用中,聲音的品質不是那么重要,就可以把PWM流與揚聲器直接相連。在這樣的系統中,揚聲器紙盆的機械慣性充當了濾除載波頻率的低通濾波器。音頻轉換器的簡要背景音頻ADC完成A/D轉換可以有許多種方法。一個傳統的方法是逐次逼近的方案,該方案使用一個比較器對模擬輸入信號與一連串中間D/A轉換輸出之間的比較結果進行檢測,然后得到最后的結果。但目前的大多數ADC都是轉換器。這種轉換器不是使用逐次逼近的方法來產生很高的分辨率,而是使用了1位的ADC。為了對這個減少了的量化等級數進行補償,這些轉換器在比NYQUIST頻率高得多的頻率下進行過采樣操作。把這些過采樣的1位樣點流轉換成一個較低速率、較高分辨率的樣點流是使用這些轉換器內部的數字濾波模塊完成的,目的是為了適應傳統PCM流的處理。例如,一個16位441KHZ的ADC可以用64倍的過采樣率,產生一個速率為28224MHZ的1位樣點流。然后用一個數字抽取濾波器把這個超級采樣的樣點流轉換成一個速率等于441KHZ的16位樣點流。由于對模擬信號的過采樣操作,ADC放寬了對用來限制輸入信號帶寬的模擬低通濾波器的性能要求。這些轉換器還具有將輸出噪聲分布在比傳統轉換器更寬的頻譜內的優(yōu)點。在本文的第2部分中,我們首先對動態(tài)范圍與精度的論題進行探討,然后再對數據格式進行深入的討論,因為數據格式是與音頻處理相關的。動態(tài)范圍與精度您也許已經見到過DB的規(guī)范,這是在目前市場上用于描述各種產品而隨處可見的。表1列出了幾種產品以及它們的信號質量,以DB為單位。表1各種音頻系統的動態(tài)范圍比較那么,這些數值究竟代表什么意思呢讓我們從確定一些定義來開始。把圖1作為對下列基本規(guī)范的“仿制數據手冊CHEATSHEET”的一個參考信號。圖1音頻系統中一些重要術語之間的關系人耳的動態(tài)范圍最響的信號電平與最安靜的信號電平之比值約為120DB。在存在噪聲的系統中,動態(tài)范圍被描述為最大信號電平與本底噪聲之間的比值。這就是說,動態(tài)范圍DB峰值電平DB本底噪聲DB純模擬系統中的本底噪聲來自系統本身的電特性。建立在模擬系統之上的數字音頻信號也會從ADC和DAC中獲得噪聲,而且還可以從模擬數據采樣過程所產生的量化誤差中獲得噪聲。另一個重要的術語是信噪比SNR。在模擬系統中,信噪比的意思是標稱信號對于本底噪聲的比值,其中的“線電平”是標稱工作電平。對于專業(yè)設備,標稱電平通常為1228VRMS,這可以轉換為4DBU。余量是標稱電平與峰值電平之間的差值,峰值電平指開始出現信號失真的電平。數字系統中的SNR定義有些不同,即SNR被定義為動態(tài)范圍。現在,有了對動態(tài)范圍的理解,我們就可以開始討論動態(tài)范圍在實際中有怎樣的用途。不做冗長的推導,讓我們簡單介紹一下什么是6DB規(guī)則。這個規(guī)則是動態(tài)范圍與計算字長之間關系的關鍵所在。完整的公式推導在式1中說明,但這里使用了簡便的表示法,意思是每增加1位的精度,將使動態(tài)范圍增加6DB。應該注意,這個6DB的規(guī)則并沒有考慮到音頻設計中的模擬子系統,所以,輸入端和輸出端的傳感器的非理想性必須另作考慮。動態(tài)范圍DB602N1766NDB其中N精度位的數目式16DB規(guī)則“6DB規(guī)則”指出,使用的位數越多,我們能獲得的系統質量就越高。但實際上,只有少數幾個真正可用的選擇。大多數適用于嵌入式媒體處理的器件有三種字長形式16位、24位和32位。表2總結了這三類處理器的動態(tài)范圍。由于我們在討論6DB規(guī)則,所以有必要對語音信號中常被使用的非線性量化方法進行一些討論。電話質量的線性PCM編碼需要12位的精度。但是,我們的耳朵對小幅度時音頻信號變化的敏感度要超過大幅度時。因此,電話通訊中使用的線性PCM采樣方法的位數用得過多。A律和律壓擴標準中使用的對數量化只用8位精度就達到了12位PCM的質量等級。為了使我們的生活更加方便,有些處理器廠商已經把A律和律壓擴標準做到了器件的串行端口中。這使處理器內核無需進行對數計算。在查看了表2之后,我們又一次回想起人耳的動態(tài)范圍約為120DB。基于這個原因,16位數據的表示法對于高質量音頻并不是太合適。因此,供應商引入了對16位系統的動態(tài)范圍進行擴展的24位處理器。這些24位的系統從C編譯器的觀點來看有點不標準,所以近年來的許多音頻設計使用了32位的處理方式。表2各種定點架構的動態(tài)范圍選擇了正確的處理器并不是萬事大吉了,因為一個音頻系統的總體質量是由“達到最低質量”元件的等級所決定的。除了處理器外,整個系統還包括像話筒和揚聲器這樣的一些模擬元件,以及使信號在模擬域與數字域之間變換的轉換器。模擬域超出了這次討論的范圍,而音頻轉換器則涉及到了數字域。假設您想使用AD1871進行音頻采樣。轉換器的數據手冊中把它解釋為一個24位的轉換器,但它的動態(tài)范圍不是144DB,而是105DB。其原因是轉換器不是一個完美無缺的系統,而供應商只給出了有用的動態(tài)范圍。如果您真的想把AD1871與24位處理器相連,那么,您整個系統的SNR將為105DB。本底噪聲將達到144DB105DB39DB。圖2是這一情況的圖形表示。但是,在數字音頻系統中還有另一個組件我們還沒有討論處理器內核內的計算。圖2一個音頻系統的SNR由最弱元件的SNR構成使數據經過處理器的計算單元會潛在地引入各種誤差。其中之一就是量化誤差。這種誤差可以在一連串導致數據值被截取或舍入向上或向下的計算中產生。例如,一個16位處理器可以對一個16位數據組成的向量作加法,然后把結果存入一個擴展字長的累加器中。但是,當累加器中的數值最終被寫入到一個16位數據寄存器中時,其中的有些位會被截去。可以看一下圖3,看看計算誤差是如何影響到實際系統的。對于一個理想的16位A/D轉換器圖3A,信噪比應該是16X696DB。如果不存在量化誤差,那么,16位計算足以把SNR保持在96DB。而24位和32位系統將分別把8位和16位置于本底噪聲以下的動態(tài)范圍中。從本質上看,這些額外的數位是被浪費掉了。圖3A在一個理想的16位96DBSNR系統中,不同字長計算時的額外數位的分配,其中忽略了量化誤差B在一個理想的16位96DBSNR系統中,不同字長計算時的額外數位的分配,其中存在量化誤差但是,所有的數字音頻系統都確實要引入舍入和截取誤差。如果我們可以量化這個誤差,如確定為18DB或3位,那么很清楚,16位計算對于維持96DB的系統SNR是不夠的圖3B。解釋這一點的另一個方法是,有效的本底噪聲被提高了18DB,因而總的SNR就降低到了96DB18DB78DB。這導致的結論是,在本底噪聲以下的額外數位有助于解決量化中出現的麻煩事。音頻的數據格式在處理器內部有許多種表示數據的方法。音頻處理中使用的兩種主要的處理器架構是定點與浮點。定點處理器設計成用整數和分數進行運算,通常固有地支持16位、24位或32位的數據。浮點處理器提供非常好的性能,并固有地支持32位或64位的浮點數據類型。但是,這些浮點處理器一般成本比較高,而且比相應的定點處理器消耗更多的功率,因而所有的實際系統都必須在質量和工程成本之間尋求一個平衡點。定點運算執(zhí)行定點運算的處理器一般對信號使用二進制補碼表示法。定點格式可以表示有符號和無符號的整數和分數。在定點處理器上使用有符號的分數格式是在數字信號處理中最常見的。整數與分數格式的差別在于二進制小數點的位置。對于整數,二進制小數點是在最低位的右邊;而對于分數,通常把它們的小數點放在符號位的右邊。圖4A表示了整數和分數的格式。圖4A分數和整數格式BIEEE75432位單精度浮點格式雖然定點的規(guī)則簡化了數值操作且節(jié)省了存儲器,但同時也存在動態(tài)范圍和精度之間的折衷。在需要保持很高分辨率同時又要使用很大數值范圍的應用場合,就需要使用一個可以根據幅值和指數而移動的小數點。浮點運算使用浮點格式就可以在同一系統中表示非常大和非常小的數。浮點數與有理數的科學記數法十分相似。浮點數是用尾數和指數描述的。尾數確定了精度,而指數控制著動態(tài)范圍。有一個標準管理著數字機的浮點運算。這個標準叫IEEE754圖4A;對于32位浮點數可以歸納如下。第31位MSB,最高位是符號位,它的0表示符號為正,它的1表示符號為負。從第30位到第23位是表示2的整次冪的指數字段EXP_FIELD,并以127作為偏移量。最后,第22位到第0位表示分數的尾數MANTISSA。隱藏位一般是指在小數點的左邊有一個1。32位的IEEE浮點數的值可以用下面的等式來表示1SIGN_BIT1MANTISSA2EXP_FIELD127依靠8位的指數和23位的尾數,IEEE754達到了動態(tài)范圍和精度之間的一個平衡。而且,IEEE浮點庫還包括了對于像、0和NAN不是一個數等附加特性的支持表3表示了從常用的浮點和定點類型可以達到的最小數和最大數。表3各種數據格式的動態(tài)范圍比較在16位架構上的仿真正如我們在前面解釋的,16位處理并不能為高質量音頻提供足夠的SNR,但這并不是說您不應該選用16位處理器作為音頻系統。例如,用一個32位的浮點機把一個算法編寫成保持原來32位數據風格的程序,是比較容易的;但一個16位處理器也可以通過非常低成本的仿真而保持32位的完整性。圖5示出了為一個嵌入式算法選擇數據類型時的一些可能性。圖5根據一個應用的目標,可以有許多滿足系統要求的數據類型在本節(jié)的余下部分,我們將描述如何在一個16位定點機上實現浮點和32位擴展精度定點格式的功能。在定點處理器上的浮點仿真在大多數的16位定點處理器上,IEEE754浮點功能是通過對C/C或匯編語言的庫調用而提供的。這些庫通過使用定點乘法和運算邏輯而對所需的浮點處理進行仿真。這種仿真需要額外的處理周期來完成。但是,當定點處理器內核的時鐘進入到500MHZ1GHZ范圍時,在對符合IEEE754的浮點運算進行仿真時需要的額外周期就不那么重要了。為了降低計算的復雜性,可以使用IEEE754的“松弛”版。這意味著浮點運算并不會實現像和NAN這樣一些標準特性。進一步的優(yōu)化是對尾數和指數使用一個更為本機化的類型。舉個例子,ADI公司的BLACKFIN定點處理器架構具有一個由十六個16位寄存器組成的寄存器組,而這個寄存器組還可以用作8個32位寄存器。在這種配置下,每個內核時鐘周期內,兩個32位寄存器可以從全部四個半寄存器中獲取操作數。為了優(yōu)化BLACKFIN寄存器組的使用,可以使用一種雙字的格式。這樣,一個字16位被保留為用作指數,而另一個字16位則保留給分數部分使用。雙精度定點仿真對于許多應用來說,16位定點數據是不夠的,如果使用仿真浮點運算,那么計算量又太大。對于這些應用,擴展精度定點仿真也許足以滿足系統的要求。使用一個高速定點處理器將確保有效降低所需的計算量。音頻中兩個常用的擴展精度格式是32位和31位定點表示。32位精確仿真32位運算是16位定點處理器的自然軟件擴展。對于那些32位寄存器組可以分為16位的兩半而進行存取的處理器來說,這些兩半的寄存器可以合起來用于表示一個32位定點數。BLACKFIN處理器的硬件結構允許單周期32位加法和減法。例如,當一個32位乘法采用累加器迭代操作時像我們馬上就要討論的有些算法情況,我們只需用3個周期內的16位乘法就可以實現32位的精度。兩個32位操作數R0和R1中的每一個都可以分為16位的兩半R0H/R0L和R1H/R1L。從圖6可以容易看出,在使用16位乘法器的指令組合來對32位乘法R0XR1進行仿真的時候,我們需要下面的操作圖6用16位操作實現32位乘法四次16位乘法以產生四個32位結果1R1LXR0L2R1LXR0H3R1HXR0L4R1HXR0H三次操作以保持在最終結果中數位的位置符號表示右移。由于我們正在做分數運算,所以結果是163131X131262,帶有一個冗余的符號位。在大多數情況下,這個結果可以截取到131,以便裝入一個32位數據寄存器。因此,乘法的結果應該以符號位為基準,或者以最大有效位為基準。這樣,那些最右邊的最小有效位可以在截取操作時被安全地截取。1R1LXR0L322R1LXR0H163R1HXR0L16一個32位乘法的最終表達式R1LXR0L32R1LXR0H16R1HXR0L16R1HXR0H在BLACKFIN架構中,這些指令可以并行執(zhí)行,以實現在三個周期內完成一次32位乘法的有效速率。31位精確仿真我們可以把最高要求31位精度的定點乘法的計算時間減少到2個周期。這個技術對于音頻系統特別有吸引力,因為音頻系統通常至少需要24位的表示法,而32位的精度也許有些過分。使用“6DB規(guī)則”,31位的精確仿真仍然保持了大約186DB的動態(tài)范圍,即使考慮了所有的量化效應之后,這仍然具有非常充裕的余量。從圖6中的乘法框圖來看,很明顯的一點是,最小有效位半字的乘法R1LXR0L對最終的結果沒有太大的貢獻。事實上,如果把結果截取為131,那么這個乘法只影響到131結果的最低位。對于許多應用來說,由這一位引起的精度損失是通過減少一次16位乘法、一次移位和一次加法以加速32位乘法而得以平衡的。31位精確乘法的表達式為R1LXR0HR1HXR0L16R1HXR0H在BLACKFIN架構中,這些指令可以并行執(zhí)行,以實現在2個周期內完成一次32位乘法的有效速率。所以,這是音頻處理中使用的數據格式的“獨家新聞”。在本文的最后一部分,我們將介紹開發(fā)嵌入式音頻應用的一些策略,主要聚焦于常用算法中的數據傳輸和構建模塊。音頻處理方法把數據送入處理器內核把數據送入處理器內核有若干種方法。例如,一個前臺程序可以對一個串行端口中的新數據進行查詢,但這種傳輸方式在嵌入式媒體處理器中是不常用的,因為這樣會降低內核的使用效率。取而代之的是,與音頻編解碼器相連的處理器一般用DMA引擎把數據從編解碼器的數據口就像一個串行口傳輸到處理器可用的某個存儲空間內。這種數據傳輸是以后臺操作的形式完成的,無需處理器內核的干預。這里的唯一開銷是對DMA序列的設定以及一旦數據緩沖區(qū)的接收或發(fā)送完成之后對中斷的處理。塊處理與樣點處理樣點處理和塊處理是處理數字音頻數據的兩種方法。在樣點處理的方法中,只要樣點一出現,處理器就處理這個樣點。這里,在每個采樣周期中的處理操作都會有開銷。許多濾波器例如FIR和職,將在下面敘述是以這樣的方式實現的,因為這種方式的有效延遲會很低。另一方面,塊處理是基于把數據傳送到處理函數之前對特定長度緩沖區(qū)的填充。有些濾波器是用塊處理的方式實現的,因為這樣比樣點處理方式更有效。其中要說明的一點是,塊處理方法大大降低了針對每個樣點而調用處理函數的開銷。而且,許多嵌入式處理器包含有多個ALU,可以對數據塊進行并行操作。另外,有些算法從本質上就是以塊處理方式操作的。其中一個大家都知道的是傅里葉變換以及它的實際使用的形式,快速傅里葉變換,或稱FFT,這種算法接受時域數據塊或空間域SPATIAL數據塊,然后把這些數據塊轉換成頻域表示。雙緩沖在基于塊處理的、使用DMA與處理器內核進行數據傳遞的系統中,必須使用雙緩沖,以便在DMA傳輸和內核之間進行仲裁。這會使處理器內核和獨立于內核的DMA引擎不會在同一時間對同一數據進行訪問,避免了數據一致性問題。為了對長度為N的緩沖區(qū)的處理進行改進,我們簡單地產生一個長度為2N的緩沖區(qū)。對于一個雙向系統,必須生成兩個長度為2XN的緩沖區(qū)。如圖1A中所示,處理器內核正在對IN1緩沖區(qū)進行處理,并將結果存儲在OUT1緩沖區(qū)中,而DMA引擎此時正在對IN0進行填充,并對OUT0中的數據進行傳輸。圖1B指出,一旦DMA引擎完成對雙緩沖區(qū)左邊半個的操作之后,它就開始把數據傳送到IN1,并從OUT1取出數據,而此時的處理器內核正在處理來自IN0的數據,并填入OUT0。這個結構有時被稱為“乒乓式緩沖”,因為處理器內核來回地對雙緩沖區(qū)的左右兩半進行處理。應該注意到,在實時系統中,串行端口的DMA或者另一個與音頻采樣率關聯的外圍設備的DMA規(guī)定了時序預算。基于這個原因,塊處理算法必須以這樣的方式進行優(yōu)化,即它的執(zhí)行時間要小于或等于DMA對雙緩沖區(qū)的一半進行數據傳輸所需的時間。二維2DDMA當數據通過像12S這樣的數據鏈路傳輸時,它可能會包含多個聲道。這些聲道可以全是從一條數據線上通過復用而輸入到同一個串行端口的。在這種情況下,2DDMA可以用來對數據進行解交織,從而使每個聲道在存儲器中是線性分配的。可以看一下圖2中對這一安排的圖示,其中從左右聲道來的樣點被解復用到兩個分離的數據塊。這個自動數據安排對于那些使用塊處理的系統是極其有用的。基本操作在音頻處理中有三個基本的構建模塊。它們是加法操作、乘法操作和時間延遲。許多更復雜的效果和算法可以用這三個基本操作來實現。加法器顯而易見的任務是把兩個信號加在一起。乘法可以用于提升或衰減音頻信號。在大多數媒體處理器中,可以在一個周期內完成多次加法和乘法操作。時間延遲有點復雜。在許多音頻算法中,當前的輸出取決于過去的輸入和輸出之間的組合。這種延遲效果是用延遲線實現的,而延遲線只不過是存儲器中用來保持過去數據的一個數組。例如,一個回聲算法可以對每個聲道保持500MS的輸入樣點。當前輸出值可以用當前輸入值與稍微衰減的過去樣點進行相加后得到。如果音頻系統是基于樣點的處理方式,那么程序設計人員可以簡單地跟蹤一個輸入指針和一個輸出指針兩者之間保持500MS樣點數的間隔,并且在每個采樣周期之后增加這兩個指針。由于延遲線要被隨后的各組數據重復使用,因此,輸入與輸出指針將需要從延遲線緩沖區(qū)的末尾回繞到起始端。在C/C中,這通常是在指針增加操作時再附帶一次求模操作完成的。對于那些支持循環(huán)緩沖見圖3的處理器來說,這個回繞操作不會增加額外的處理周期。在這種情況下,一個循環(huán)緩沖區(qū)的起始位置和長度必須只提供一次。在處理過程中,軟件增加或減少緩沖區(qū)內的當前指針,如果當前的指針位置落在緩沖區(qū)的兩個端點之外,則由硬件使指針回繞到緩沖區(qū)的起始位置。如果沒有這個自動地址生成功能,程序設計人員就必須手動地保持對緩沖區(qū)的跟蹤,因而會浪費有用的處理周期。由延遲線結構可以引出一個叫做梳狀濾波器的重要的音頻構建模塊,它本質上是一個帶有反饋的延遲線。當多個梳狀濾波器同時使用的時候,可以產生混響的效果。信號的產生在有些音頻系統中,也許需要合成一個信號例如一個正弦波。泰勒級數的函數近似法可以用來對三角函數進行仿真。而且,用均勻隨機數發(fā)生器來產生白噪聲是很容易的。但是,合成的方法也許并不適用于某些給定系統的處理預算。在具有充足存儲器的定點系統中,您可以取而代之地使用查表的方法來產生信號。這樣做的負面效應是占用了寶貴的存儲器資源,所以,作為一種折衷考慮,可以使用混合的方法。例如,您可以存儲一個不太精細的函數表,以節(jié)省通過2DDMA進行采樣解交織存儲器。在運行時,準確的值可以用插值的方法從函數表中提取出來,而插值操作比使用泰勒級數近似法的時間大為縮短。這個混合法提供了在計算時間和存儲器資源之間的很好的平衡。濾波與算法音頻系統中的數字濾波器被用來對指定頻帶內的聲波能量進行衰減或提升。最常用的濾波器形式是高通、低通、帶通和點阻。這些濾波器中的任何一種都有兩種實現方法。這就是有限沖擊響應FIR濾波器和無限沖擊響應IIR濾波器,而且它們組成了搭建像參數均衡器和圖示均衡器那樣更復雜的濾波算法的構建模塊。有限沖擊響應FIR濾波器FIR濾波器的輸出是由當前和過去輸入之和確定的,而其中的每個輸入樣點首先要乘以一個濾波器系數。示于圖4A中的FIR求和公式,也叫做“卷積”,是信號處理中最重要的操作之一。在這個公式的句法中,X為輸入向量,Y為輸出向量,而H為濾波器系數。圖4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論