基于麦克风阵列声源定位系统的FPGA实现

时间:2011-05-24来源:网络


2 各模块设计实现
2.1 FIR带通滤波模块
为了消除噪声和回声干扰的影响,首先需要进行滤波。语音信号的带宽是0.3~3.4 kHz,因而需要设计一个带通滤波器滤除语音信号带宽之外的噪声。为了使处理过的信号相位不发生变化即保持线性相位,需要采用FIR滤波器。
这里采用切比雪夫逼近法,由Matlab滤波器设计工具求得滤波器的各系数,乘以1024进行量化,转化为CSD编码以提高其运行效率,最后由Verilog代码实现。
2.2 半重叠汉明窗模块
为了保证语音信号平稳性,一帧信号的时间窗长度选为10~30 ms。而采样器频率为10 kHz,为了便于FFT处理选择25.6 ms即帧长为256点。为了保证统计特征的连续性和得到更好的语音处理效果,各帧之间进行50%的重叠,即每次处理只更新12.8 ms的数据。这样,一帧内的信号可以近似认为是平稳的。

f.jpg


分帧是用可移动的有限长度窗口进行加权的方法实现,这就是用某窗函数w(n)乘以s(n),从而形成加窗的语音信号sw(n)=s(n)×w(n),其中窗函数的值存储在内部存储资源中。常用的窗函数有汉明窗与矩形窗,汉明窗比矩形窗的平滑效果更好,故选择汉明窗,其表达式如式(5)所示
g.jpg
其中,N是帧长。
2.3 FFT运算模块
由于语音信号是连续的实时采样,为了能使传来的语音信号连续不断的处理,这里采用了乒乓结构,即采用两个分别能存储一帧数据的双口RAM,第一个RAM在存储新数据时,第二个RAM进行FFT运算,并存储其结果。然后,第一个RAM进行FFT运算,并存储其结果,第二个RAM存储新的数据,这样就保证了信号处理的连续性。

h.jpg


乒乓存储时由倒序地址模块产生倒序存储地址,使RAM中存储数据为倒序,为FFT运算做准备。为了加快运算速度,蝶形运算旋转因子,先由Matlab软件生成,量化为12位带符号数,然后存储在内部ROM里面。
整个FFT运算单元由状态机设计完成,共由5个状态完成;S1状态输出第一个操作数地址;S2状态得到第一个操作数,输出第二个操作数地址;S3状态得到第2个操作数,计算出第一个结果;S4状态寄存第一个结果,计算出第二个结果;S5状态寄存第二个结果,产生下一级运算地址。

1 2 3

关键词: FPGA 麦克风阵列 声源定位 系统

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版