APP下载

基于STM32和FPGA的声源成像系统设计

2018-07-27佘黎煌张立立

实验室研究与探索 2018年7期
关键词:麦克风声源上位

岳 蒂, 栾 峰, 佘黎煌, 丁 山, 张立立

(东北大学 计算机科学与工程学院,沈阳 110169)

0 引 言

近年来,随着科学技术和生活水平的提高,人们越来越注重对声音进行控制和处理。而正确的确定声音位置是实现声音控制的前提,因此声源定位技术应运而生[1]。多年来声源定位是国内外研究的重点课题,初期的研究主要应用于雷达、声呐等军事系统[1]。随着时代的发展,声源定位技术也逐渐地应用到民用和工业系统中,比如:视频电话会议、智能机器人听觉[2]、机器故障诊断、降噪等。随着嵌入式技术的迅速发展,当前市场上的声源定位类产品,在设计实现上仍存在一些问题[3],例如,如何降低成本,如何缩小体积以提高可移动与便携性等[4-5]。因此,声源定位的研究与开发具有较强的实际价值和理论意义。本文以声源定位算法为核心,设计了一个基于嵌入式平台的声源定位及成像系统。

1 系统的硬件设计

系统的主控制器使用同类产品中性能较高的增强型STM32单片机,其时钟频率达到168 MHz、功耗低、具有更快的模数转换速度、更强大的输入/输出端口 (input/output, I/O)复用功能以及更快的通用同步/异步串行接收/发送器(Universal Synchronous / Asynchronous Receiver / Transmitter, USART)和串行外设接口(Serial Peripheral Interface, SPI)通信速度[6]。系统主要包括FPGA模块、TF卡模块、FSMC接口、USB模块和Qt上位机等模块。

整体框架如图1所示。TF卡模块负责存储数据、USB模块负责下位机与Qt上位机之间的数据通信、Qt上位机负责将系统得到的声源信息通过图形用户界面显示出来。综合设计实现了对空间区域内进行声源定位并通过上位机进行声源成像显示的功能。

图1 系统的整体框架图

1.1 TF卡模块

由于系统所需数据量大、占用空间多,而STM32自身的内存空间有限,大多数情况下需要从外部设备读取数据再做处理,因此系统需要引入数据存储单元。针对小型嵌入式系统,大多都使用SD卡或TF卡。开发板板载的是TF卡接口,STM32系列芯片上带有SDIO 控制器[7],iCore3 核心板上将SDIO 连接到TF卡座上,硬件连接如图2所示。

图2 TF卡模块

1.2 FPGA模块

虽然STM32已经有一定的运算速度,但是由于该系统工程计算量和数据量较大,如果运算速度低,实时性和工程实现效果将不能得到保证。FPGA拥有时钟频率高、内部延迟小、工作效率高、并行运行、存储方式多样、设计灵活通用和全部的控制逻辑由硬件完成等优点[8-9]。因此系统采用FPGA模块实现系统中运算量比较大的矩阵自相关计算。

综合使用锁相环(Phase Locked Loop, PLL)倍频、双口随机存取存储器(Random Access Memory, RAM)、乘法器等模块,并通过Verilog HDL语言编程实现此功能。FPGA模块中的整体电路架构如图3所示。

图3 FPGA模块的整体电路架构图

1.3 USB 模块

iCore3开发板的USB接口通过调用STM32的库来实现STM32的USB设备通信,由于STM32 芯片不带高速物理层(Physical Layer,PHY),这里用STM32和USB330连接的方式来实现数据的高速传输,硬件连接示意图如图4所示。

图4 USB模块

1.4 FSMC高速并行传输模块

可变静态存储控制器FSMC是STM32系列采用一种新型的存储器扩展技术,在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展[10]。本系统主要用FSMC来实现STM32与FPGA 间高速并行的数据传输。STM32自带FSMC 控制器,本系统为实现FSMC 与FPGA 之间的通信,在FPGA 内部建立一个RAM块,FPGA桥接STM32和RAM块,通过FSMC总线从STM32向RAM块中写入数据,然后FPGA读取RAM 中的数据进行运算。FSMC总线连接的原理图如图5所示。

图5 FSMC接口原理图

1.5 Qt上位机

本文利用基于STM32与FPGA搭建的系统来实现声源定位成像,数据包含声音和图像。上位机主要是将计算得到的声源位置信息通过图形用户界面显示出来。本系统采用Qt图形界面框架作为上位机显示软件,设计如图6所示的界面,实现如下功能:上位机点击连接按钮向下位机发送连接请求,下位机进行连接,连接成功后,上位机通过向下位机发送命令完成数据传输,上位机接收数据并进行处理和显示。

图6 Qt上位机图形界面

本系统中,上位机接收两个类型数据:一是当前的图片数据,二是经系统运算得到的声音强度数据。图片数据不做任何处理,在声音强度数据经过均值滤波后,使用RGB888类型的调用函数将声音强度数据与图像数据的红(Red,R)、绿(Green,G)、蓝(Blue,B)3个分量按照显色原理进行叠加,最后将合成后的图像进行显示。

2 系统的软件设计

本系统的主程序流程图如图7所示,主要由初始化程序、数据调用程序、声源定位算法、数据传输程序、均值滤波算法、数据成像程序等几部分组成。系统上位机为Qt,下位机主要为STM32,FPGA归STM32控制。系统启动后,首先进行初始化。然后由Qt发起信号建立连接,STM32处于连接检测状态,直至连接成功。成功后STM32将TF卡内的声音原始数据按照要求提取,并将数据做简单处理后送入FPGA进行自相关运算,再经过算法处理后, STM32将得到的数据做索引排序后将有用数据保留并写入TF卡中。接下来STM32将处理完后的结果和图像数据送入上位机。上位机接收到声音强度数据和图像数据后,先进行均值滤波再进行成像显示,至此,系统实现了声源定位及成像显示的全过程。

图7 系统的主程序流程图

2.1 声源定位算法

在麦克风阵列声源定位方法中,基于到达时间差(Time Difference of Arrival,TDOA)的声源定位算法有着运算原理易于理解、定位精度较高等特点,因此适用于在嵌入式设备上实现。基于TDOA的声源定位算法实现过程,一般分为延时估计和声源定位两个部分,时延估计的精确度直接决定了声源定位的精度,所以是算法的核心部分[11-12]。时延估计方法有很多,应用较为广泛的是基于相关分析的估计方法[13]。

(1) TDOA时延估计算法原理。声波在空气中以一定的速度传播,不同位置的麦克风接收到的声音信号有不同的相位,利用彼此间的相位差可获取同一个声源信号到达每个麦克风的时间延迟。在近场模型中,声源的时延如图8所示。Mi、Mj为两个麦克风,M0为参考麦克风,Xi(n)、Xj(n)为两个麦克风接收到的声音信号,d为两个麦克风之间的距离,t为信号到达两麦克风之间的时间延迟,c为声音在空气中的传播速度,c·t为声程差,为任意点声源到达各个麦克风的距离,为任意点声源到达参考麦克风的距离。

图8 声源的时延原理图

(2) TDOA 时延估计算法中的自相关。已知声源所在平面与麦克风所在平面平行,且距离、麦克风的坐标已知,假设声源处在图像的某一块区域内,则可计算出任意点声源到达各个麦克风的距离L和参考原点的距离L0:

从而计算出声源到达每个麦克风与参考原点的相对距离差[14]:

ΔL=L-L0

(3)

在已知声音在空气中的传播速度v和采样频率f就可以得出每个麦克风相对于参考原点的相对时延:

(4)

将实际的声音数据按照每一区域内相对于参考原点的相对时延做延迟后取出每一区域的多通道数据分别构成矩阵A,将这些矩阵分别自相关,归一化后构成声音强度矩阵SP,声音强度矩阵中的值越大则对应的区域是声源位置的可能性就越大[15]。

SP=ATA

(5)

2.2 基于FPGA的自相关运算

通常情况下,矩阵自相关按照定义的方法编码即可,但是在FPGA中需要一次性用矩阵两列对应位置上的元素同时相乘,而如果矩阵每一列的元素数量比较大,一般的 FPGA 芯片的资源有限,难以满足要求。因此将的自相关运算简化为的任意一行数据和的每一列数据的相关运算,经实验验证此方法归一化后与完整的自相关归一化后定位效果一致。

TF卡中存储的数据类型是浮点型,在Quartus II中,两个浮点数相乘至少需要5个时钟周期,这样对程序运行速度、时间以及设计难度产生了负面影响。为了加快运行速度,又由于FSMC是16位的数据线,因此将浮点数处理为16位整型数据进行运算。为了节省FPGA内的资源,最终选择用乘累加的方法来实现该运算,基本流程如图9所示。I1和I2是乘法器的两个输入,矩阵的元素按照行的顺序依次流入通道,每一行的第一个元素赋给I1,剩下的几个元素依次赋给I2,逐次依此进行乘累加和运算,即可得到自相关结果。

图9 自相关数据流动图

3 系统功能测试

为了验证此套设计方案的合理性,先对设计声源成像系统进行分模块的功能测试,再对整体进行性能测试。

3.1 FSMC总线与FPGA通信测试

在FPGA内部建立RAM块,通过FSMC总线从STM32向RAM块中写入0~511的字符型数据,然后将RAM内数据读取后并进行取反显示。结果如图10所示。

图10 FSMC总线测试结果

3.2 USB传输功能测试

STM32通过USB上传一幅图片到上位机,显示图片并测试传输速度。结果如图11所示,并得到传输速度为32.7 m/s。图片选用系统测试时使用摄像头从声源场采集到的图片,图中实验人员通过手机播放声音设置声源点,手机下方即为声源处,系统通过多通道麦克风阵列采集声音数据。

图11 USB传输测试结果

3.3 系统性能测试

系统的最终运行结果如图12和13所示,图中红色矩形为麦克风采集的声音数据经过系统运算处理得到的声源图像。通过将声源图像叠加到摄像头采集的图片上,可以验证系统的定位成像结果准确。

图12 自相关运算由STM32中完成

对比声源成像效果可得,矩阵自相关运算由FPGA和STM32的处理结果基本一致。在FPGA晶振为25 MHz的前提下,进一步的实际测试表明,由STM32和FPGA完成成像计算耗时分别为0.8 s和0.6 s。因此,本套系统的设计方案在完成声源定位和成像功能的基础上,通过合理的使用FPGA,缩短了算法的计算时间、提高了系统的成像效率,达到了由STM32和FPGA 协同完成声源定位及成像的预期设计目标。

4 结 语

本文根据声源定位研究现状以及现有声源定位产品存在的不足,结合嵌入式技术的发展成果,通过分析现有的定位方法,研究并设计了基于STM32和FPGA的声源定位和成像系统。利用STM32外设丰富、易于实现,FPGA并行运行、运行速度快的优势,采用STM32作为主控制器,利用FPGA实现复杂的矩阵自相关运算,并在此基础上将声源可视化,完成成像显示。本文的意义在于应用嵌入式技术,通过STM32与FPGA的协同设计,在硬件平台上实现了声源定位与成像系统。此嵌入式声源成像系统有效地提高了系统的运行速度,增加了声源定位的效率,而且其硬件集成度高、功耗低,这些都为声源定位系统的小型化和便携化的开发与设计提供了参考。

猜你喜欢

麦克风声源上位
GRAS发布新12Bx系列、支持TEDS的测量麦克风电源模块
虚拟声源定位的等效源近场声全息算法
Binaural Rendering based on Linear Differential Microphone Array and Ambisonic Reproduction
基于GCC-nearest时延估计的室内声源定位
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
麦克风的艺术
基于ZigBee和VC上位机的教室智能监测管理系统
运用内积相关性结合迭代相减识别两点声源
麦克风