新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的數(shù)字效果器的研究

基于DSP的數(shù)字效果器的研究

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

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉