基于麦克风阵列声源定位系统的FPGA实现
2.4 本帧互功率谱模块
第一路信号FFT结果与第二路信号FFT结果的共轭相乘得到本帧互功率谱。
若第一路是r1+i1,第二路是r2+i2,其共轭为r2-i2,相乘时可用式(6),式(7)所示的计算方法,这样可以减少一次乘法运算,节省内部资源
其中,R和I是本帧互功率谱的实部和虚部;r1和r2是FFT结果的实部;i1和i2是FFT结果的虚部。
2.5 频域加权模块
本帧互功率谱乘以存放在ROM中的加权函数,使互相关函数峰值更加突出。调用内部乘法器模块即可完成。
2.6 功率谱平滑模块
对加权模块结果,进行连续数帧的累加以平滑互功率谱,使峰值便于检测。调用内部加法器模块即可完成。
2.7 反FFT模块
对平滑结果进行反FFT运算,求得互相关函数。根据FFT原理,反FFT运算可借助于FFT模块计算。即将FFT运算中旋转因子取倒数,最后的输出乘以1/N就可以用来计算反FFT。为防止运算过程中发生溢出,可将1/N分配到每一级蝶形运算中。由于1/N=(1/2)M,所以每级的每个蝶形输出支路均有一相乘因子1/2,即右移一位即可。
2.8 峰值检测模块
对FFT结果求模即是求的值,然后求出其模值的峰值,即相应的语音信号时延值。
2.9 定位算法模块
根据角度距离定位法,声源相对原点的水平角θazimuth为
其中,a是麦克之间的间距;d是声源到麦克对的距离差。
声源相对原点的仰角φelevation为
其中,a是麦克之间的间距;d是声源到麦克对的距离差。
由上可知,需要计算反余弦函数值确定出相应的角度值。反余弦函数是超越函数,可以用泰勒级数近似计算这个函数,但较为麻烦且精度不高,而CORDIC算法是由移位和加减运算组成,所以比较适合FPGA的实现,速度较快且具有较高的迭代精度。本系统使用高速9级流水线结构实现CORDIC算法。迭代关系如下
式(10)是迭代的初始条件,式(11)是根据本次坐标值判定下次迭代方向,式(12)~式(14)是下次迭代公式。
算法经过数次迭代后θ的值即是*****。实际中使用9级迭代,可以得到7位精度。最小角度精度为0.111 905。
3 模块仿真和综合报告
Quartus II是Altera公司开发的综合性PLD软件,内嵌综合器和仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。而且具有运行速度快、界面统一、功能集中、易学易用等特点。
本设计使用Quartus II8.0对各个模块进行仿真验证。通过仿真,验证了各个系统模块可以准确的工作,并完成了整个设计功能。选取Alte-ra公司Cyclone II系列中的EP2C35F484C8器件对整个程序进行时序仿真,其主要资源消耗为:总逻辑单元为3740/3 3216,总存储单元为74 240/483 840,总管脚为387/475。总乘法器为16/35。仿真结果表明,本文所述实现方法结构可行,可以获得良好的性能,其最高速率可以达到87.3 MHz,完全满足系统要求。
4 结束语
本设计通过FPGA来实现整个系统,充分利用了Altera公司FPGA产品高速大容量开发灵活方便等优点,并使用QuartusⅡ开发环境所提供的库资源,同时最大限度地利用和发挥了FPGA的优势,从而简化了系统设计,缩短了设计周期。本文引用地址:http://www.amcfsurvey.com/article/191197.htm
评论