基于DSP的數(shù)字效果器的研究 作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫(kù)查詢 收藏 摘要:提出了一種基于TMS320VC5402的音頻信號(hào)處理系統(tǒng)。介紹了該系統(tǒng)的總體方案和硬軟件設(shè)計(jì),并對(duì)音頻信號(hào)的處理算法進(jìn)行了論述。實(shí)際使用證明,所述的基于DSP的硬件和軟件系統(tǒng)是一個(gè)很好的音頻信號(hào)采集與處理系統(tǒng)。關(guān)鍵詞:音頻信號(hào) 音頻效果 數(shù)字信號(hào)處理 在調(diào)音臺(tái)和各種音響設(shè)備上,效果器是一種不可缺少的設(shè)備。有了效果器,才有了聲音的千變?nèi)f化。高質(zhì)量的效果器能達(dá)到令人滿意的效果,使人有身臨其境的感覺?,F(xiàn)在效果器上的效果種類越來越多,有的多達(dá)幾十種。實(shí)際上從聲學(xué)原理考慮,一共只有五種基本效果: (1)延時(shí)/延遲類(包括延時(shí)、延遲、混響、殘響等), (2)壓縮類(包括噪聲門、均衡器等), (3)失真類(包括各種失真、金屬、“臟”效果器等), (4)合唱類(包括立體聲、鑲邊、八度器等), (5)濾波器(包括哇音、相位等)。 目前國(guó)內(nèi)的效果器市場(chǎng)多被國(guó)外產(chǎn)品所壟斷,價(jià)格昂貴。國(guó)產(chǎn)的效果器又多為模擬實(shí)現(xiàn),成本高、損耗大、干擾大、穩(wěn)定性差,且參數(shù)不易修改。而基于DSP的數(shù)字效果器,是一種具有內(nèi)置的數(shù)字接口且可進(jìn)行數(shù)字音頻處理的音響系統(tǒng),它能克服以上缺點(diǎn),達(dá)到令人滿意的效果。1 系統(tǒng)總體方案 音頻信號(hào)處理系統(tǒng)如圖1所示,整個(gè)系統(tǒng)由單片機(jī)MCU、數(shù)字信號(hào)處理器DSP、A/D和D/A轉(zhuǎn)換器、外擴(kuò)存儲(chǔ)器、顯示屏和鍵盤等組成。其中MCU作為主機(jī),整個(gè)系統(tǒng)的初始化和控制都由它來完成。DSP作為從機(jī),主要完成音頻信號(hào)的算法處理,實(shí)現(xiàn)各種效果。而LED則把通過鍵盤控制的各種效果及其參數(shù)顯示出來,以便工作人員及時(shí)調(diào)整和修改。由于DSP內(nèi)部存儲(chǔ)器較小,不能滿足系統(tǒng)數(shù)據(jù)和程序存儲(chǔ)需要,所以需要外擴(kuò)存儲(chǔ)器。 系統(tǒng)工作時(shí),輸入的音頻信號(hào)是模擬信號(hào),經(jīng)過高精度、高速度的ADC轉(zhuǎn)換之后得到一串?dāng)?shù)字信號(hào),分幀送入到波形輸入緩沖區(qū)RAM。然后經(jīng)過DSP內(nèi)部高速處理,通過各種算法實(shí)現(xiàn)各種效果。經(jīng)過處理的音頻信號(hào)再輸入到高精度、高速度的DAC轉(zhuǎn)換器中,還原成模擬的聲音信號(hào),經(jīng)音響功率放大電路放大輸出。 為了實(shí)現(xiàn)音效的實(shí)時(shí)處理,加入了緩沖區(qū)。系統(tǒng)中各模塊是同時(shí)進(jìn)行處理的,一部分信號(hào)正在ADC中進(jìn)行轉(zhuǎn)換,而另一部分信號(hào)則正在DSP處理器中進(jìn)行算法處理。整個(gè)系統(tǒng)以流水線方式進(jìn)行工作,保證了對(duì)音效的實(shí)時(shí)處理。 2 系統(tǒng)硬件電路的設(shè)計(jì) DSP芯片選用美國(guó)TI公司的TMS320VC5402(以下簡(jiǎn)稱‘C5402),單片機(jī)選用PIC16F72,A/D和D/A轉(zhuǎn)換器選用24位的CS4228A,其較寬的動(dòng)態(tài)范圍能夠滿足高保真的音頻系統(tǒng)的要求。 2.1 ‘C5402 ‘C5402是TI公司于1999年10月推出的性價(jià)比較高的定點(diǎn)數(shù)字信號(hào)處理器,主要特點(diǎn)如下: %26;#183;具有先進(jìn)的多總線結(jié)構(gòu),三條16位數(shù)據(jù)存儲(chǔ)器總線,一條程序存儲(chǔ)器總線和四條地址總線; %26;#183;操作速率達(dá)100MIPS; %26;#183;40位算術(shù)邏輯單元(ALU),包括一個(gè)40位桶形移位器和兩個(gè)40位累加器;%26;#183;一個(gè)17%26;#215;17乘法器和一個(gè)40位專用加法器,允許16位帶/不帶符號(hào)的乘法; %26;#183;整和維特比加速器,用于提高維特比編譯碼的速度; %26;#183;8?jìng)€(gè)輔助寄存器及一個(gè)軟件棧,允許使用最先進(jìn)的定點(diǎn)DSP、C語(yǔ)言編譯器; %26;#183;數(shù)據(jù)/程序?qū)ぶ房臻g為1M%26;#215;16位,內(nèi)置4K%26;#215;16位ROM和16K%26;#215;16位RAM; %26;#183;內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)時(shí)鐘產(chǎn)生器、兩個(gè)多通道緩沖串行口、一個(gè)8位與外部處理器通信的HPI口、兩個(gè)16位定時(shí)器以及6通道DMA控制器; %26;#183;低功耗,工作電源為3V和1.8V(內(nèi)核)。 DSP通過其McBSP口與CS4228A相連。McBSP串口是在TDM串口和BSP串口的基礎(chǔ)上發(fā)展而來的。它既可以實(shí)現(xiàn)時(shí)分多路通訊功能,又可以通過DSP提供的DMA功能實(shí)現(xiàn)不用CPU參與的自動(dòng)緩存功能,從而把 DSP從繁重的串口通訊中解放出來,提高了運(yùn)行的效率。McBSP串口由數(shù)據(jù)接收發(fā)送部分、時(shí)鐘及幀同步信號(hào)產(chǎn)生器、多通道選擇以及CPU中斷信號(hào)和DMA同步信號(hào)等組成。同以前的串口相比,McBSP串口具有相當(dāng)大的靈活性。串口的接收和發(fā)送時(shí)鐘CLKR和CLKX既可由外部設(shè)備提供,又可由內(nèi)部時(shí)鐘產(chǎn)生器提供;幀同步信號(hào)FSX和FSR的輸入、輸出極性可以進(jìn)行選擇;串口的信號(hào)發(fā)送和接收部分既可單獨(dú)運(yùn)行,又可合在一起配合工作;CPU中斷信號(hào)和DMA同步信號(hào)使得Mc BSP串口可由CPU控制運(yùn)行,也可脫離CPU通過直接內(nèi)存存取單獨(dú)運(yùn)行;多通道選擇部分使得串口具備了多通道信號(hào)通訊能力。 正是由于McBSP串口所特有的靈活性,使其可以滿足T1/E1標(biāo)準(zhǔn)和AC97標(biāo)準(zhǔn)。它的多通道接收和發(fā)送能力可達(dá)128?jìng)€(gè)通道,數(shù)據(jù)寬度可在8、12、16、20、24和32比特中任選,可進(jìn)行A律和μ律壓縮和擴(kuò)展。8比特?cái)?shù)據(jù)傳送時(shí)可選擇從高位或低位開始傳送,幀同步信號(hào)和數(shù)據(jù)時(shí)鐘信號(hào)的極性可編程,內(nèi)部時(shí)鐘和幀同步信號(hào)產(chǎn)生器也可由軟件編程控制。 2.2 A/D和D/A電路 CS4228A多媒體數(shù)字信號(hào)編解碼器(CODEC)在一個(gè)壓縮的28針SSOP芯片上可提供兩個(gè)模/數(shù)轉(zhuǎn)換器和6個(gè)數(shù)/模轉(zhuǎn)換器,并分別帶有音量控制功能。CS4228A芯片具有功能較強(qiáng)、連接方便、控制容易的特點(diǎn)。該芯片與環(huán)繞聲解碼器相結(jié)合,成為DVD機(jī)、A/V功放接收器和汽車音響的理想芯片。它可支持杜比數(shù)碼AC-3、AAC、DTS、杜比邏輯環(huán)繞聲(Dolby Pro-Logic)、THX和MPEG等標(biāo)準(zhǔn)。一個(gè)靈活的串行接口允許使用Left Justified、Right Justified、I2S、或One Line Data 模式。采樣率可達(dá)100kHz,具有可連接片外靜音電路的靜音控制引腳,片內(nèi)具有抗混疊和輸出平滑濾波器。 在本系統(tǒng)中,CS4228A采用主模式的工作方式。在工作過程中,LRCK管腳向DSP發(fā)出一個(gè)幀同步信號(hào),而采樣的數(shù)據(jù)信號(hào)將接著幀同步信號(hào)后由SDOUT管腳向DSP傳送,從而完成采樣的全過程。經(jīng)過DSP處理的數(shù)據(jù)信號(hào)由BDX0管腳向CS4228A傳送。CS4228A與DSP之間的主要接線如圖2所示。 2.3 單片機(jī)部分 單片機(jī)主要完成兩部分的工作,一是對(duì)CS4228A的操作,通過CCLK、CDIN、CS和RST管腳實(shí)現(xiàn)對(duì)它的初始化和工作模式的選擇;另一就是對(duì)鍵盤和LED的控制,實(shí)現(xiàn)效果選擇和參數(shù)顯示。 3 軟件設(shè)計(jì) 軟件部分包括DSP編程和單片機(jī)編程。DSP編程的主要任務(wù)是完成音頻信號(hào)的算法處理,單片機(jī)編程的重點(diǎn)則是管理DSP操作和應(yīng)用層軟件的編寫。本系統(tǒng)若完全采用匯編語(yǔ)言進(jìn)行編程,比較麻煩,而C語(yǔ)言以其靈活性和易移植性已經(jīng)廣泛應(yīng)用在開發(fā)系統(tǒng)中。對(duì)于更復(fù)雜的系統(tǒng)更是如此。本系統(tǒng)采用了混合編程的方法。 這里主要介紹一下音頻算法處理的實(shí)現(xiàn)。在進(jìn)行算法研究時(shí),先在PC機(jī)上用Matlab進(jìn)行仿真,然后再移植到DSP平臺(tái)中。考慮到效率問題,可進(jìn)一步進(jìn)行手工匯編的調(diào)整。在各種效果實(shí)現(xiàn)的過程中,延時(shí)不僅是一種最基本的輸出效果,也是實(shí)現(xiàn)其它輸出效果的基礎(chǔ),如混響效果、合唱效果、弗蘭格效果,都離不開延時(shí)。 基本的延時(shí)有兩種,其中一種是不帶反饋的,其原理如圖3所示,它只是對(duì)輸入實(shí)現(xiàn)一次延時(shí),能實(shí)現(xiàn)回聲效果;另一種是帶反饋控制的延時(shí),它能實(shí)現(xiàn)聲音的反復(fù)延時(shí)、重復(fù)播放,其原理如圖4所示。還有一種特殊的延時(shí),它的延時(shí)時(shí)間是可變的,可以在基本延時(shí)結(jié)構(gòu)的基礎(chǔ)上加一個(gè)低頻振蕩器(LFO)來實(shí)現(xiàn)。一般情況下,可以用正弦波或者三角波來實(shí)現(xiàn)。在合唱和弗蘭格效果的實(shí)現(xiàn)過程中就要用到這種延時(shí)。其原理如圖5所示。 目前,基于數(shù)字化的延時(shí)設(shè)備的應(yīng)用已非常有效。實(shí)際上,數(shù)字延時(shí)設(shè)備的實(shí)現(xiàn)非常簡(jiǎn)單,只要有一定容量的內(nèi)存,在每一個(gè)取樣間隔將先前值從存儲(chǔ)器的一個(gè)單元中讀出來,然后將當(dāng)前的輸入值存儲(chǔ)在另一個(gè)存儲(chǔ)單元中(有時(shí),這兩個(gè)存儲(chǔ)區(qū)域可能是同一個(gè)區(qū)域,所以在寫入一個(gè)值前,必須首先將其中的值讀出)即可。在下一個(gè)取樣期間,讀寫存儲(chǔ)區(qū)間的另一個(gè)區(qū)域,當(dāng)?shù)竭_(dá)存儲(chǔ)器底部時(shí),又將從第一個(gè)存儲(chǔ)區(qū)域開始循環(huán)。編寫一個(gè)延時(shí)程序一般會(huì)使用兩個(gè)指針:一個(gè)讀指針和一個(gè)寫指針,用來記錄從存儲(chǔ)器讀出的地址和寫入存儲(chǔ)器的地址。每進(jìn)行一次操作指針就會(huì)自動(dòng)加一。對(duì)于第一種不帶反饋的延時(shí),可用如下C程序?qū)崿F(xiàn): void delay() { int i,j,k; for (i=0;i<=delay_size;i++) { if (i>=delay) j=i-delay; //work out the buffer position else j=i-delay+delay_size+1; //add the delayed sample to the input sample s=input+delay_buffer[j]*decay; //store the result in the delay buffer,and output delay_buffer[i]=s; output=s; } } 混響也是一種比較常用且重要的效果,其實(shí)現(xiàn)比較復(fù)雜,要通過六個(gè)并聯(lián)的梳狀濾波器comb和一個(gè)全通濾波器allpass才能很好地實(shí)現(xiàn)。其實(shí)現(xiàn)過程如圖6所示。4 CCS集成開發(fā)平臺(tái)的應(yīng)用 Code Composer Studio 簡(jiǎn)稱CCS,是TI公司推出的為開發(fā)TMS320系列DSP軟件的集成開發(fā)環(huán)境。CCS工作在Windows操作系統(tǒng)下,采用圖形接口界面,提供有編輯工具和工程管理工具。CCS所集成的代碼調(diào)試工具具有各種調(diào)試功能,包括原TI公司提供的C源代碼調(diào)試器和模擬器所具有的全部功能,支持ASM編程、C語(yǔ)言編程以及ASM和C語(yǔ)言混合編程。能對(duì)TMS320系列DSP進(jìn)行指令級(jí)的仿真和可視化的實(shí)時(shí)數(shù)據(jù)分析。CCS在調(diào)試和仿真時(shí)具有很強(qiáng)的功能:允許中斷點(diǎn)、剖析點(diǎn)及探測(cè)點(diǎn)三種斷點(diǎn)設(shè)置,分別實(shí)現(xiàn)程序斷點(diǎn)、實(shí)時(shí)分析和數(shù)據(jù)導(dǎo)入等功能。此外,還提供豐富的輸入/輸出庫(kù)函數(shù)和信號(hào)處理的庫(kù)函數(shù),極大地方便了TMS320系列DSP軟件的開發(fā)過程。在程序編譯時(shí),設(shè)定不同的編譯選項(xiàng)來控制優(yōu)化目標(biāo),如使用-pm、-o3和內(nèi)聯(lián)函數(shù)等,其效果是顯著的,計(jì)算速度可提高很多。 本文設(shè)計(jì)完成的的音頻信號(hào)處理系統(tǒng)實(shí)現(xiàn)了音頻的壓縮、失真、均衡、延時(shí)、混響等效果,各種效果可以單獨(dú)使用,也可以串接使用,都能達(dá)到預(yù)想的效果。把相同的電吉它信號(hào)分別輸入ZOOM 505(日產(chǎn)電吉它音效器)系統(tǒng)和本系統(tǒng),然后在時(shí)域與頻域以及振幅與相位上對(duì)輸出波形進(jìn)行比較,可以看出最后的音色效果幾乎一樣。將它用于調(diào)音臺(tái)或效果器等音頻設(shè)備,具有廣闊的市場(chǎng)前景。
評(píng)論