多路音频记录系统设计及实现反思

多路音频记录系统设计及实现反思

摘要:通过对多路音频记录系统的硬件系统结构进行了分析,提出了音频记录设备软件的功能与架构设计方案,重点阐述了数据存储、导出、删除软件功能的设计思路。通过实时长时间测试,此软件协同系统硬件可实现2MB/s的数据实时采集和记录,27MB/s的数据导出,满足了客户的实际应用需求。

关键词:SATA;FPGA;多线程;内存映射文件技术

引言

随着音频技术发展得越来越成熟,市面上出现了各种各样的音频采集分析设备,一般的音频信号采集都使用8位、16位的A/D转换器,对于微弱的音频信号来说,采样精度不够,为后续的信号分析带来了很大的困难。本文针对客户提出的微弱音频信号和长时间数据采集存储的要求,设计了多路音频记录系统,此系统采用24位A/D转换器,将采集的音频信号无压缩,按照特定的数据格式、文件结构将数据存储在SATA盘中。在系统空闲的情况下,可通过网口将数据导出,上位机可根据实际需求对数据解析成音频文件(wave格式),并完成时域或频域分析,用于科研分析。

1多路音频记录系统硬件结构设计

多路音频记录系统结构框图如图1所示。多路音频记录系统硬件设计主要由六部分组成。1)系统控制模块。主要负责整个系统电源控制、按键功能处理、显示屏数据显示,采用STM32来实现。2)音频信号采集器。主要用于分通道采集音频模拟信号。3)调理电路。主要对采集到的模拟音频信号进行滤波、放大。4)A/D转换器。将滤波和放大后的模拟信号转换为数字音频信号,采用24位A/D转换器,A/D采样频率48kbit/s。5)FPGA模块。主要根据A/D转换后的数据进行放大倍数的调整,并按照通道、放大倍数、音频信号整理数据按照特定的协议发送给音频数据记录模块记录、发送给系统控制软件进行显示屏显示、发送给PC机进行监控(如果需要监控的情况)。根据A/D采集频率、采样位数和通道数计算,音频记录系统每秒需要记录数据约2MB,网络模块采用百兆网芯片,此芯片理论上最大的传输速度为5MB/s,可完全满足系统要求。6)音频数据记录/管理模块。此模块对FPGA处理后的数据进行存储,并在结束采样后,PC机可通过网络将存储的数据进行导出、删除。由于音频数据记录系统需要长时间工作在记录的模式下,需要大容量的快速磁盘[1],因此采用了1TB大小的SATA电子盘。本模块软件的运行IMX6开发板上,此开发板带有WinCE系统,带有千兆网络,且有SATA电子盘接口,可完全满足系统数据存储、导出速度要求。

2多路音频记录系统软件功能及架构设计

根据多路音频记录系统的功能需求和硬件平台,其配套软件可划分为系统控制软件、音频信号采集软件、记录和管理软件。系统控制软件驻留在STM32的Flash中。主要功能包括:显示系统工作状态和故障信息;扫描按键,根据按下的按键,通告FPGA开始记录、停止记录;根据IMX6通告的时间,实时在显示屏上刷新时间;对FPGA实时发送的音频数据进行分通道显示。音频信号采集软件驻留在FPGA的RAM中。主要功能如下。1)根据当前采集到的音频信号大小调整放大倍数。2)向STM32实时发送音频数据。3)响应STM32的控制指令,数据开始记录后,向IMX6发送音频数据。音频信号存储/管理软件主要功能如下。1)向STM32通告当前时间、文件写入、系统状态。2)音频数据记录期间,接收FPGA按照数据头+序列号+多路音频数据+数据尾格式发送的数据,存储到SATA盘中。根据客户要求,音频数据在记录期间不能丢失数据,因此音频数据记录软件采用了多线程[2]、双缓存和文件映射技术[3]。3)软件设计中主线程负责通过网口异步接收数据并写入缓存,缓存写满后通告子线程将数据写入文件中,同时主线程又接收到的数据写入另外一块缓存中,避免了因此写入文件占时过长导致丢失数据的情况。由于系统需要长时间工作,为了避免写入磁盘次数过多导致磁盘碎片的产生,因此采用了文件映射技术,按照2GB的大小分配连续的空间,不仅避免了碎片的产生,还提高了文件写入速度。4)为了便于区分每次的采样和文件保存的先后顺序,SATA盘中音频文件的存储按照图3所示结构进行保存。5)采样日期使用年月日(例20180715),采样时间使用年月日时分秒(例20180715140505),音频文件采用二进制文件,文件名称按照年月日时分秒命名(例20180715140505.dat)[4]。

3结论

本文根据用户需求,设计了多通道音频记录设备,此设备经过长时间运行测试,工作稳定,数据记录准确,数据导出通过测试可达到27MB/s的速度,可快速导出文件(每个文件约2GB),此系统可广泛应用于各种需要记录多通道音频信号的场景,用于后续的科研分析。

参考文献

[1]王超,刘伟,张德聪.基于SATA的嵌入式直接存储系统[J].计算机工程,2012,38(12):232-235.

[2]王晶,黄玲娟.基于多线程的航空发动机数据采集系统软件设计[J].测控技术,2017,36(5):119-123.

[3]杨宁学,诸昌钤,聂爱丽.内存映射文件及其在大数据量文件快速存取中的应用[J].计算机应用研究,2004(8):187-188.

[4]黎小玉,田泽,刘娟,等.FC数据采集记录器软件设计与实现[J].计算机技术与发展,2014,24(3):19-21;25.

作者:高秀林 单位:山西国营大众机械厂