您的当前位置:首页基于FPGA的声音定位系统设计

基于FPGA的声音定位系统设计

来源:小侦探旅游网
基于FPGA的声音定位系统设计

汪诗怡;殳国华;李丹

【摘 要】针对道路鸣笛监控问题,研究了现有的声音定位技术,选取基于到达时差定位技术为基本思路建立简易的基于FPGA的二维声音定位系统.系统的硬件部分利用麦克风阵列、运放、分压电路和电压偏移电路对声音信号进行接收和处理,使最终输出的电压信号满足basys3开发板的采样要求.软件部分包括采样、时延计算、定位计算和VGA显示,其中时延计算和定位计算部分首先建立了数学模型,后根据模型完成算法的编写.最终系统能显示声音所处的位置并能实时追踪声音的移动轨迹,但是对声音有一定的限制且定位的精度有限. 【期刊名称】《电气自动化》 【年(卷),期】2019(041)001 【总页数】3页(P68-70)

【关键词】声音定位;到达时差;FPGA;麦克风阵列;VGA显示 【作 者】汪诗怡;殳国华;李丹

【作者单位】上海交通大学 电子信息与电气工程学院,上海 200240;上海交通大学 电子信息与电气工程学院,上海 200240;上海交通大学 电子信息与电气工程学院,上海 200240 【正文语种】中 文 【中图分类】TP368.1

0 引 言

在大多数城市的道路上,时常出现禁止鸣笛的标志,然而并不是所有人都能自觉地遵守规则,对鸣笛之人进行适当的处罚是确保这项规定能够顺利实施的必要举措。如何准确地找到鸣笛的车辆是其中最关键的技术性问题,这个问题涉及到声音的定位。声音定位的问题由来已久,解决方案也不少。目前成熟的解决方案之一是通过麦克风阵列获取声音信号,再利用数字信号处理技术计算声音的位置[1]。 一般来说,基于麦克风阵列的声音定位算法可划分为三类:一是基于最大输出功率的可控波束形成技术;二是基于高分辨率谱估计技术;三是基于到达时差技术[2]。本次设计采用基于到达时差的方法。基于到达时差的方法分为两个步骤进行,首先需要获取麦克风阵列中各阵元间的声音延迟时间,再利用获取的时间差,结合已知的麦克风阵列的空间位置进一步确定出声音的位置[3]。

本文中的声音定位系统由OV7725摄像头、声音传感器模块、basys3开发板和VGA显示屏构成,声音传感器模块接收声音信号并对其进行预处理,basys3开发板采集存储声音信号并计算出声源的位置,VGA显示屏显示摄像头拍摄的定位区域和计算所得的声音位置。 1 声音定位系统的数学模型

声音定位系统的数学模型主要包括两部分:时延计算模型和定位计算模型。 1.1 时延计算模型

时延计算模型的核心是广义互相关算法[4]。声音定位系统共4个麦克风,将声音信号转变为电压信号,通过采集4个通道的电压信号并对这4组数据进行相关性运算,可获得两两通道之间的时延。

假设x1(t)和x2(t)分别为阵元1、2的接收信号(忽略噪声),s(t)为声源信号,T为声音到达两个阵元的时延,α1为声音到达阵元1时的幅值,α2为声音到达阵元2

时的幅值,因为声音在传播过程中存在损耗,故α1<1、α2<1。 x1(t)=α1s(t)x2(t)=α2s(t-T) (1)

x1(t)、x2(t)的互相关函数为: Rx1x2(τ)=α1α2E[x1(t)·x2(t+τ)] (2)

将式(1)代入式(2)中,可得:

Rx1x2(τ)=α1α2E[s(t) s(t-T+τ)]=α1α2Rss(τ-T) (3)

由(3)式,因为Rss(τ-T)≤Rss(0),τ=T时,Rss(τ-T)取得最大值,x1(t)、x2(t)互相关函数Rx1x2(τ)也取得最大值。

由于采集到的电压信号是有固定长度的离散序列,两组离散序列的互相关函数为两者的卷积。设N为每个通道采集的样本数,表达式为: (4)

设采样频率为fs,Rx1x2(τ)最大时τ=τmax,则时延T的表达式为: (5)

用verilog语言描述时延算法,算法流程见图1。 图1 时延算法流程图

对时延算法进行仿真测试。输入共4个通道,输入的数据随机生成,每个通道采集样本数N=1 024,通道2、通道3、通道4的数据滞后通道1依次1、2、3个时钟周期,图2中变量idata1、idata2、idata3、idata4分别记录了1、2、3、4通道的仿真数据。经过时延计算,所得仿真结果如图3所示,其中变量max12、max13、max14最终分别为1 022、1 021和1 020,由式(5)可知,时延分别为

其中f为时钟频率,即时延为1、2、3个时钟周期,与输入情况相符。故认为算法正确。 图2 输入数据图 图3 仿真结果图 1.2 定位计算模型 图4 麦克风阵列平面图

由4个麦克风阵列组成一个长方形平面(32 cm×24 cm),通过时延计算模型所得互相关函数最大值处横坐标(max12、max13、max14)和横轴中点坐标(1 023)的大小关系可以将长方形平面分为4个部分[5],如图4所示。 区域Ⅰ:max12<1 023& max14<1 023 区域Ⅱ:max12>1 023& max14<1 023 区域Ⅲ:max12>1 023 & max14>1 023 区域Ⅳ:max12<1 023& max14>1 023

由式(5)可知,2、3、4通道与1通道之间的时延分别为: (6)

假设声音传播速度为C,则声源到麦克风1、2的距离差Δd12、声源到麦克风1、3的距离差Δd13和声源到麦克风1、4的距离差Δd14分别为: Δd12=T12·CΔd13=T13·CΔd14=T14·C (7)

图5 区域分割示意图

麦克风阵列平面的每个区域都可分割成M个子区域,如图5所示,每部分中分出4个子区域,根据实际情况可再进行细分,每个子区域都有一个中心,图中的黑点

代表子区域的中心。计算每个中心点(ai,bi)距离麦克风1、2的距离差距离麦克风1、3的距离差以及距离麦克风1、4的距离差可形成一个列表。

由式(7)得出的Δd12、Δd13和Δd14与每个中心点(ai,bi)处的和之间存在的误差分别为err12,err13和err14: (8) (9) (10)

设总误差error为各项误差的平方和: error=err122+err132+err142 (11)

在定位算法中,首先确定声音处于Ⅰ、Ⅱ、Ⅲ、Ⅳ中的哪个部分,确定了这一点后,计算(Δd12,Δd13,Δd14)与该部分每个中心点处的总误差,选取误差最小的中心点,则可以认为声音处于该中心点所属的子区域,大致确定声音的位置。设声音的坐标为(x,y),确定坐标的数学模型为: S={(ai,bi)|1≤i≤M} (12)

2 系统硬件设计

硬件部分的功能是将声音信号转换为basys3开发板可采集的电压信号。原理图见图6。其中由虚线框出的部分为声音传感器模块内部电路,该模块通过麦克风以及运放将声音信号转化为电压信号并放大,输出为OUT1,由于basys3开发板ADC采样的电压范围默认为0~1 V,故在模块外部加入分压以及电压偏移电路,

使最终输出(OUT2)满足0~1 V电压范围。分压电路和电压偏移电路中均采用电位器,可根据实际情况调节R5、R6、R7的大小以满足要求,其中R7/R6必为1/9,使电压偏移稳定在0.5 V,R5/R7的值确定电压缩小的倍数。 图6 硬件部分原理图 3 系统软件设计

软件部分采用vivado2015.4编写,包括采样部分、时延计算部分、定位计算部分和显示部分,如图7所示。 图7 软件部分流程图

采样部分:采用轮询的方法获得4个采样通道的数据并将数据分别存入4个存储器中,采样频率为200 kHz,4个存储器的大小均为1 024。

时延计算部分:读取4个存储器中的数据,采用时延计算模型分别计算通道1、2的时延、通道1、3的时延和通道1、4的时延。

定位计算部分:根据已经计算出的时延和定位计算模型计算出声音的位置。 显示部分:读取摄像头数据,并和计算所得的坐标一起通过VGA显示。 4 测试结果

图8 测试结果示意图

声音采用手机播放,可以是周期性信号,也可以是连续的一段音乐。由于采样频率和存储器大小的限制,为确保时延计算的准确性,声音的频率最好在400 Hz以上,最终显示结果由十字标注,如图8所示,测试结果是声源位于箭头处。由于声源为手机,目标较大,且测试环境存在一定的干扰,故定位的精度有限。但是也由于声源是手机且不仅仅限制为有规律的声音信号,故存在一定的实际应用价值。 5 结束语

本次设计以基于到达时差的定位技术为基础,建立了简易的声音定位系统。FPGA为处理器,麦克风阵列接收声音信号,硬件电路处理声音信号,摄像头和VGA显

示屏显示图像和声音坐标,最终实现对声音的定位并且实时追踪声音的动向。但定位的精度不够,硬件和软件都需要再优化,提高定位精度,增强抗干扰能力。 参考文献:

【相关文献】

[1] 周浩洋.基于麦克风阵列的声源定位方法研究[D].大连:大连理工大学,2002. [2] 周文斐.基于FPGA的声源定位[D].天津:天津大学,2010.

[3] 徐斌,夏小虎,于春丽.基于麦克风阵列的室内声音定位导航系统设计[J].机电产品开发与创新,2013,26(5):11-13.

[4] 孙洋,徐慨,杨海亮.基于广义互相关时延估计算法的性能分析[J].计算机与数字工程,2013,41(1):33-34.

[5] 王益平,王皓,吴衡,等.基于到达时差的低功耗声音定位系统[J].机电工程,2013,30(8):1016-1018.

因篇幅问题不能全部显示,请点此查看更多更全内容