基于TMS320VC5402的音頻信號(hào)采集與處理系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
近年來,隨著DSP技術(shù)的普及和低何等、高性能DSP芯片的出現(xiàn),DSP已越來越多地被廣大的工程師所接受,并越來越廣泛地被應(yīng)用于各個(gè)領(lǐng)域,例如:語音處理、圖像處理、模式識(shí)別及工業(yè)控制等,并且已日益顯示出其巨大的優(yōu)越性。DSP是利用專門或通用的數(shù)字信號(hào)處理芯片,以數(shù)字計(jì)算的方法對(duì)信號(hào)進(jìn)行處理,具有處理速度快、靈活、精確、抗干擾能力強(qiáng)、體積小及可靠性高等優(yōu)點(diǎn),滿足了對(duì)信號(hào)快速、精確、實(shí)時(shí)處理及控制的要求?;赥MS320C5402芯片,筆者研制了一套音頻信號(hào)實(shí)時(shí)采集與處理系統(tǒng),并已作為有關(guān)音效器研制的硬件試驗(yàn)平臺(tái)。
1 系統(tǒng)總線方案
系統(tǒng)總線方案框圖如圖1所示。音頻信號(hào)(如:電吉它的單聲道聲音信號(hào)是150mV的電信號(hào))經(jīng)過高精度高速的ADC轉(zhuǎn)換后得到一串?dāng)?shù)字信號(hào),分幀輸入到波形輸入緩沖區(qū)RAM。然后由手動(dòng)控制一種或幾種處理算法將音頻信號(hào)調(diào)入TMS320C5402的內(nèi)部進(jìn)行高速運(yùn)算。經(jīng)過處理的音頻信號(hào),再輸入到高精度高速的DAC轉(zhuǎn)換器中,還原成模擬的聲音信號(hào),經(jīng)音箱功率放大電路放大輸出。
利用緩沖區(qū)的目的是進(jìn)行音效的實(shí)時(shí)處理。系統(tǒng)中各模塊是同時(shí)進(jìn)行處理的,一部分信號(hào)正在ADC中進(jìn)行轉(zhuǎn)換,而另一部分信號(hào)則在DSP處理器中同時(shí)進(jìn)行算法處理,即整個(gè)系統(tǒng)是以流水線的方式進(jìn)行工作。
2 硬件電路的設(shè)計(jì)
高保真的音頻系統(tǒng)應(yīng)該具有較寬的動(dòng)態(tài)范圍,選擇16~24位的ADC和DAC能完全捕獲或恢復(fù)高保真的音頻信號(hào)。系統(tǒng)的核心芯片(DSP)選用美國TI公司的TMS320VC5402[1](以下簡稱'C5402)。
2.1 DSP芯片
作為DSP家庭高性價(jià)比代表的16位定點(diǎn)DSP芯片,'C5402適用于語音通信等實(shí)時(shí)嵌入應(yīng)用場(chǎng)合。與其它'C54X芯片一樣,'C5402具有高度靈活的可操作性和高速的處理能力。其性能特點(diǎn)如下:操作速率可達(dá)100MIPS;具有先進(jìn)的多總線結(jié)構(gòu),三條16位數(shù)據(jù)存儲(chǔ)器總線和一條程序存儲(chǔ)器總線;40位算術(shù)邏輯單元(ALU),包括一個(gè)40位桶形移位器和兩個(gè)40位累加器;一個(gè)17×17乘法器和一個(gè)40位專用加法器,允許16位帶/不帶符號(hào)的乘法;整合維特比加速器,用于提高維特比編譯碼的速度;單周期正規(guī)化及指數(shù)譯碼;8個(gè)輔助寄存器及一個(gè)軟件棧,允許使用業(yè)界最先進(jìn)的定點(diǎn)DSP C語言編譯器;數(shù)據(jù)/程序?qū)ぶ房臻g為1M×16bit,內(nèi)置4K×16bit ROM和16K×16bit RAM;內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)時(shí)鐘產(chǎn)生器、兩個(gè)多通道緩沖串口、一個(gè)與外部處理器通信的8位并行HPI口、兩個(gè)16位定時(shí)器以及6通道DMA控制器且低功耗。與'C54X系列的其它芯片相比,'5402具有高性能、低功耗和低價(jià)格等特點(diǎn)。它采用6級(jí)流水線,且當(dāng)RPT(重復(fù)指令)時(shí),一些多周期的指令就變成了單周期的指令;芯片內(nèi)部RAM和ROM可根據(jù)PMST寄存器中的OVLY和DROM位靈活設(shè)置。這些都有利于算法的優(yōu)化。
'C5402采用3.3V和1.8V電源供電,其中I/O采用3.3V電源供電,芯片的核采用1.8V電源供電。而實(shí)際常用的只有5V電源,所以必須采用電源轉(zhuǎn)換芯片。選用TPS7301和TPS7333兩塊電源轉(zhuǎn)換芯片(它們都是TI公司為配合DSP而設(shè)計(jì)的電源轉(zhuǎn)換芯片),分別接上適當(dāng)?shù)耐鈬娮?,?gòu)成電阻分壓器,即可調(diào)整兩塊芯片的輸出電壓分別為3.3V和1.8V。
2.2 A/D電路 基本的時(shí)鐘信號(hào)可以來自CPU時(shí)鐘,也可以來自晶振時(shí)鐘,這在SRGR2寄存器中的第13位設(shè)置。基本時(shí)鐘輸入后,經(jīng)CLKGDV(SRGR1的第7位到第0位)所設(shè)置的值進(jìn)行第一次分頻,得到位時(shí)鐘信號(hào)(由BCLKX1腳輸出)。值得注意的是,位時(shí)鐘信號(hào)最高為DSP頻率的一半。位時(shí)鐘信號(hào)經(jīng)FPER(SRGR2的第11位到第0位)和FWID(SRGR1的第15位到第8位)所設(shè)置的值進(jìn)一步分頻得到采樣時(shí)鐘信號(hào)(由BFSX1腳輸出),F(xiàn)PER和FWID分別設(shè)置采樣時(shí)鐘信號(hào)的低電平和高電平的時(shí)間值。'C5402與PCM1744的硬件接線如圖4所示。 另外,樂音具有較大的動(dòng)態(tài)范圍,但音響設(shè)備本身允許的信號(hào)動(dòng)態(tài)范圍是有限的。如果對(duì)樂音不作處理直接送到音箱,則會(huì)產(chǎn)生大信號(hào)過載而失真,從而使小信號(hào)淹沒在噪聲中的情形,音質(zhì)因而下降。設(shè)計(jì)算法對(duì)音頻信號(hào)進(jìn)行壓縮處理,其目的就是來改變信號(hào)的動(dòng)態(tài)范圍,使大信號(hào)的強(qiáng)度變?nèi)?,小信?hào)的強(qiáng)度增強(qiáng),即信號(hào)的放大倍數(shù)隨著輸入信號(hào)的電平而改變。壓縮算法要保證系統(tǒng)的頻率響應(yīng)保持平坦。
PCM1800是雙聲道單片Δ-∑型20位ADC,單+5V電源供電,信噪比為95dB,動(dòng)態(tài)范圍為95dB,其內(nèi)部嵌有高通濾波器,具有PCM音頻接口和四種數(shù)據(jù)格式,分為主控和受控兩種模式,采樣頻率可選為32kHz、44.4kHz和48kHz。
PCM1800構(gòu)成音頻信號(hào)采集系統(tǒng)時(shí),主要涉及到BCK(位時(shí)鐘信號(hào))、LRCK(采樣時(shí)鐘信號(hào))、FSYNC(幀同步信號(hào))、DOUT(數(shù)字信號(hào)輸出)、SYSCLK(系統(tǒng)時(shí)鐘輸入)這幾個(gè)對(duì)時(shí)序有要求引腳。通過對(duì)引腳MODE0和MODE1進(jìn)行編程,可讓PCM1800工作于主控模式(Master Mode)。此時(shí),BCK、LRCK、FSYNC均作為輸出,其時(shí)序由PCM1800內(nèi)部的時(shí)鐘產(chǎn)生電路控制。但SYSCLK只能由外部提供(這里用'C5402的TOUT腳輸出信號(hào)提供)。PCM1800的系統(tǒng)時(shí)鐘只能是256fs、384fs或者512fs,這里fs是單頻信號(hào)采樣頻率。在主控模式時(shí),F(xiàn)SYNC用來指明PCM1800的DOUT輸出的有效數(shù)據(jù),它的上升沿表明一幀數(shù)據(jù)的起始,下降沿表明一幀數(shù)據(jù)的結(jié)束。FSYNC的頻率是采樣時(shí)鐘頻率LRCK的2倍 。在此模式下,位時(shí)鐘信號(hào)BCK的頻率是采樣時(shí)鐘頻率LRCK的64倍。
通過對(duì)PCM1800的FMT0、FMT1兩引腳編程(FMT0=1,FMT1=0),可以設(shè)置PCM1800輸出的數(shù)據(jù)格式為20位的IIS格式。為了保證在數(shù)據(jù)處理時(shí)不影響新數(shù)據(jù)的接收以及在接收數(shù)據(jù)時(shí)不斷正在進(jìn)行的數(shù)據(jù)處理過程,采用了多通道緩沖同步串口(McBSP)。PCM1800與'C5402連接后,'C5402使用緩沖串口0接收數(shù)據(jù),各種同步信號(hào)由PCM1800產(chǎn)生,'C5402是被動(dòng)接收各種信息。PCM1800與'C5402的硬件接線圖如圖2所示。
2.3 D/A電路
PCM1744是雙聲道立體聲DAC,包含數(shù)字濾波器和輸出放大器,動(dòng)態(tài)范圍為95dB,具有多種采樣頻率可選,最高可達(dá)96kHz。采用24位的IIS數(shù)據(jù)輸入格式。PCM1744的操作主要涉及到LRCIN(采樣時(shí)鐘信號(hào)輸入)、BCKIN(位時(shí)鐘信號(hào)輸入)、SCKI(系統(tǒng)時(shí)鐘輸入)、DIN(數(shù)據(jù)輸入)這幾個(gè)對(duì)時(shí)序有要求的引腳。PCM1744與'C5402連接后,'5402使用緩沖串口1發(fā)送數(shù)據(jù),各種時(shí)鐘信號(hào)均由'C5402產(chǎn)生,PCM1744被動(dòng)接收各種信息。PCM1744的系統(tǒng)時(shí)鐘信號(hào)(SCKI)由'C5402的TOUT引腳提供,TOUT是'C5402的定時(shí)器輸出信號(hào)引腳,有較強(qiáng)的驅(qū)動(dòng)能力,可以驅(qū)動(dòng)多個(gè)芯片。PCM1744的數(shù)據(jù)接收時(shí)鐘格式必須是IIS格式,'C5402在緩沖串口寄存器中設(shè)置各種時(shí)鐘方式時(shí),必須滿足IIS格式的要求。'C5402作為主動(dòng)工作器件,可以對(duì)其緩沖串口輸出信號(hào)進(jìn)行調(diào)整。輸出的采樣時(shí)鐘信號(hào)、位時(shí)鐘信號(hào)可以在McBSP寄存器SRGR1和SRGR2中設(shè)置,設(shè)置遵循圖3的原則。[!--empirenews.page--]
PCM1800完成音頻信號(hào)采集后,在DSP的外擴(kuò)程序存儲(chǔ)器中嵌入相應(yīng)的處理算法,語音信號(hào)經(jīng)處理后,再從PCM1744輸出。
3 軟件設(shè)計(jì)
軟件部分主要包括DSP編程和PC編程。DSP程的主要任務(wù)是初始化、管理板上的資源和完成音頻的處理算法,可參考有關(guān)資料。PC編程重點(diǎn)則是管理DSP操作和應(yīng)用層軟件編寫。
3.1 A/D與D/A程序設(shè)計(jì)
為了在20kHz的音響頻段獲得優(yōu)良的音頻輸出,A/D和D/A的采樣頻率應(yīng)該達(dá)到44.1kHz或48kHz。要正確編寫采樣和輸出音頻信號(hào)的程序,必須對(duì)'C5402的McBSP相關(guān)寄存器(spcr1,spcr2,rcr1,rcr2,xcr1,xcr2,srgr1,srgr2,mcr1,mcr2,rcera1,rcerb1,xcera,xcerb,pcr1)進(jìn)行正確的設(shè)置[1],以滿足'C5402和PCM1744、PCM1800的各種時(shí)序要求(位同步、幀同步、時(shí)鐘信號(hào)等)。為了使TOUT能給外圍器件提供時(shí)鐘信號(hào),就設(shè)計(jì)到DSP的定時(shí)和中斷操作,具體請(qǐng)參考TI提供的Spru302.pdf資料。
3.2 DSP和PC的編程
DSP程序首先初始化'C5402和模擬接口。在分配好相應(yīng)的緩沖區(qū)和產(chǎn)生相應(yīng)的中斷之后,進(jìn)行各項(xiàng)音效處理算法,例如:壓縮、失真、蛙聲、房間噪聲抑制ZNR、放大、均衡、合唱、鑲邊、延時(shí)反唱等,或者幾種算法混合進(jìn)行。
PC的編程包括DSP接口部分和應(yīng)用層編程部分。在PC程序的開始,與DSP接口部分的程序先調(diào)用初始化函數(shù),將DSP程序下載到DSP(初始化程序在DSP中載入一個(gè)很小的自舉程序,然后通過自舉程序一段一段地把全部程序載入DSP)中。初始化完成后,與DSP接口部分程序再按自定義的“通信協(xié)議”在指定位置讀出DSP處理結(jié)果幀或DSP的請(qǐng)求幀,并將它交給上一層(應(yīng)用程序)處理。應(yīng)用程序亦通過與DSP接口部分程序向DSP發(fā)出各種命令。上層應(yīng)用程序是用戶使用系統(tǒng)的界面,它提供語音數(shù)據(jù)庫管理和系統(tǒng)管理等功能。
3.3 基于優(yōu)化工具的程序優(yōu)化
根據(jù)用戶的要求,選擇C程序優(yōu)化器和匯編優(yōu)化器,對(duì)編碼器的特定性能如代碼長度、計(jì)算速度等進(jìn)行優(yōu)化。使用方法是在編譯(Built Options)時(shí)設(shè)定不同的編譯選項(xiàng)來控制優(yōu)化目標(biāo)。根據(jù)我們的實(shí)踐,認(rèn)為選擇下列幾項(xiàng)進(jìn)行優(yōu)化對(duì)提高計(jì)算速度等的影響較大:
(1)-pm:程序級(jí)全局優(yōu)化,包括程序的外部訪問、全局變量的優(yōu)化和函數(shù)的外部調(diào)用。
(2)-o3:采用三級(jí)優(yōu)化技術(shù)。其中第一級(jí)優(yōu)化主要完成消除無用賦值和局部公共表達(dá)式等,第二級(jí)優(yōu)化主要完成循環(huán)算法的優(yōu)化并將循環(huán)中的數(shù)組訪問轉(zhuǎn)化為指針增量形式、實(shí)施循環(huán)展開。消除全局公共了表達(dá)式和無用賦值等,第三級(jí)優(yōu)化主要完成消除冗余代碼、簡化表達(dá)式和語句、使用內(nèi)聯(lián)(inline)函數(shù)并展開等。-03在上述基礎(chǔ)上還完成消除從未使用的函數(shù)、對(duì)函數(shù)聲明進(jìn)行重排序和對(duì)函數(shù)使用的內(nèi)聯(lián)形式等。
(3)使用內(nèi)聯(lián)函數(shù)(intrinsic)。'C5402編譯器提供的intrinsi可以快速優(yōu)化C代碼。Intrinsic是直接映射為內(nèi)聯(lián)的'C5402指令的特殊函數(shù)(ETSI函數(shù))。Intrinsic用前下劃線表示,使用時(shí)同函數(shù)的調(diào)用一樣。
實(shí)際表明:選擇上述幾項(xiàng)進(jìn)行優(yōu)化,只要編譯選項(xiàng)選擇適當(dāng),其效果很顯著的,計(jì)算速度可提高5~10倍,當(dāng)然其代碼長度會(huì)有少許增加。
3.4 音頻信號(hào)處理算法簡介[2]
在聲音的拾取和傳輸過程中,由于設(shè)備和器件的限制,其幅度對(duì)頻率的響應(yīng)并不是一致的,極有可能出現(xiàn)某些頻率成分的增益太大或太小。對(duì)于頻率響應(yīng)特性的這類缺陷,需要進(jìn)行適當(dāng)?shù)恼{(diào)整。音頻信號(hào)的均衡算法,這是通過軟件設(shè)計(jì)調(diào)節(jié)某些頻率成分的增益,對(duì)其進(jìn)行提升或衰減。聲音信號(hào)經(jīng)均衡處理后,可以彌補(bǔ)頻率響應(yīng)特性的缺隱,也可以人為地制造一些較好的音響效果。
當(dāng)然,音頻信號(hào)的處理是一個(gè)很復(fù)雜的過程,例如,電吉它音效器還包括調(diào)制、延時(shí)混響等算法的處理。
本文設(shè)計(jì)的音頻信號(hào)采集與處理系統(tǒng),已作為電吉他等音效器研制的硬件試驗(yàn)平臺(tái),并具有如下算法:壓縮模塊、失真模塊、ZNR/AMP模塊、均衡模塊、調(diào)制模塊、延時(shí)混響模塊。各個(gè)模塊可以單獨(dú)使用,也可以串聯(lián)使用,并采用兩個(gè)LED數(shù)碼顯示器表示選擇好的混合音效模式。它大大改變了電吉它自身的音色,可產(chǎn)生壓縮、失真、蛙聲、房間噪聲擼制(ZNR)、放大、均衡、合唱、鑲邊、延時(shí)反響等多種單獨(dú)的音色效果,也可同時(shí)使用幾種音色效果,極大地豐富了電吉他現(xiàn)場(chǎng)演奏效果。把相同的電吉它信號(hào)分別輸入ZOOM 505(日本ZOOM公司生產(chǎn))和該系統(tǒng),然后分別把輸出波形在時(shí)域與頻域以及幅值與相位上進(jìn)行分析比較,進(jìn)行算法的優(yōu)化處理,可以發(fā)現(xiàn)最終音色效果相差無幾。另外,在此系統(tǒng)中,既有A/D又有D/A,構(gòu)成一個(gè)閉環(huán),可自發(fā)自收;而算法則集中在DSP芯片內(nèi)進(jìn)行模塊化處理,這給系統(tǒng)的設(shè)計(jì)和調(diào)試帶來了很大的方便。所以,如果能在本文提出的以TMS320VC5402 DSP芯片為核心器件的音頻信號(hào)采集與處理系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)出功能及效果與ZOOM 505相比美的電吉它音效器,可以從根本上改變國內(nèi)目前的電吉它音效器市場(chǎng)基本上被國外產(chǎn)生所壟斷的局面[3],具有很強(qiáng)的實(shí)用價(jià)值。