基于麥克風(fēng)陣列聲源定位系統(tǒng)的FPGA實現(xiàn)
2.4 本幀互功率譜模塊
第一路信號FFT結(jié)果與第二路信號FFT結(jié)果的共軛相乘得到本幀互功率譜。
若第一路是r1+i1,第二路是r2+i2,其共軛為r2-i2,相乘時可用式(6),式(7)所示的計算方法,這樣可以減少一次乘法運算,節(jié)省內(nèi)部資源
其中,R和I是本幀互功率譜的實部和虛部;r1和r2是FFT結(jié)果的實部;i1和i2是FFT結(jié)果的虛部。
2.5 頻域加權(quán)模塊
本幀互功率譜乘以存放在ROM中的加權(quán)函數(shù),使互相關(guān)函數(shù)峰值更加突出。調(diào)用內(nèi)部乘法器模塊即可完成。
2.6 功率譜平滑模塊
對加權(quán)模塊結(jié)果,進(jìn)行連續(xù)數(shù)幀的累加以平滑互功率譜,使峰值便于檢測。調(diào)用內(nèi)部加法器模塊即可完成。
2.7 反FFT模塊
對平滑結(jié)果進(jìn)行反FFT運算,求得互相關(guān)函數(shù)。根據(jù)FFT原理,反FFT運算可借助于FFT模塊計算。即將FFT運算中旋轉(zhuǎn)因子取倒數(shù),最后的輸出乘以1/N就可以用來計算反FFT。為防止運算過程中發(fā)生溢出,可將1/N分配到每一級蝶形運算中。由于1/N=(1/2)M,所以每級的每個蝶形輸出支路均有一相乘因子1/2,即右移一位即可。
2.8 峰值檢測模塊
對FFT結(jié)果求模即是求的值,然后求出其模值的峰值,即相應(yīng)的語音信號時延值。
2.9 定位算法模塊
根據(jù)角度距離定位法,聲源相對原點的水平角θazimuth為
其中,a是麥克之間的間距;d是聲源到麥克對的距離差。
聲源相對原點的仰角φelevation為
其中,a是麥克之間的間距;d是聲源到麥克對的距離差。
由上可知,需要計算反余弦函數(shù)值確定出相應(yīng)的角度值。反余弦函數(shù)是超越函數(shù),可以用泰勒級數(shù)近似計算這個函數(shù),但較為麻煩且精度不高,而CORDIC算法是由移位和加減運算組成,所以比較適合FPGA的實現(xiàn),速度較快且具有較高的迭代精度。本系統(tǒng)使用高速9級流水線結(jié)構(gòu)實現(xiàn)CORDIC算法。迭代關(guān)系如下
式(10)是迭代的初始條件,式(11)是根據(jù)本次坐標(biāo)值判定下次迭代方向,式(12)~式(14)是下次迭代公式。
算法經(jīng)過數(shù)次迭代后θ的值即是*****。實際中使用9級迭代,可以得到7位精度。最小角度精度為0.111 905。
3 模塊仿真和綜合報告
Quartus II是Altera公司開發(fā)的綜合性PLD軟件,內(nèi)嵌綜合器和仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。而且具有運行速度快、界面統(tǒng)一、功能集中、易學(xué)易用等特點。
本設(shè)計使用Quartus II8.0對各個模塊進(jìn)行仿真驗證。通過仿真,驗證了各個系統(tǒng)模塊可以準(zhǔn)確的工作,并完成了整個設(shè)計功能。選取Alte-ra公司Cyclone II系列中的EP2C35F484C8器件對整個程序進(jìn)行時序仿真,其主要資源消耗為:總邏輯單元為3740/3 3216,總存儲單元為74 240/483 840,總管腳為387/475??偝朔ㄆ鳛?6/35。仿真結(jié)果表明,本文所述實現(xiàn)方法結(jié)構(gòu)可行,可以獲得良好的性能,其最高速率可以達(dá)到87.3 MHz,完全滿足系統(tǒng)要求。
4 結(jié)束語
本設(shè)計通過FPGA來實現(xiàn)整個系統(tǒng),充分利用了Altera公司FPGA產(chǎn)品高速大容量開發(fā)靈活方便等優(yōu)點,并使用QuartusⅡ開發(fā)環(huán)境所提供的庫資源,同時最大限度地利用和發(fā)揮了FPGA的優(yōu)勢,從而簡化了系統(tǒng)設(shè)計,縮短了設(shè)計周期。本文引用地址:http://2s4d.com/article/191197.htm
評論