高秀林
(山西國營大眾機械廠, 山西 太原 030000)
隨著音頻技術(shù)發(fā)展得越來越成熟,市面上出現(xiàn)了各種各樣的音頻采集分析設(shè)備,一般的音頻信號采集都使用8位、16位的A/D轉(zhuǎn)換器,對于微弱的音頻信號來說,采樣精度不夠,為后續(xù)的信號分析帶來了很大的困難。
本文針對客戶提出的微弱音頻信號和長時間數(shù)據(jù)采集存儲的要求,設(shè)計了多路音頻記錄系統(tǒng),此系統(tǒng)采用24位A/D轉(zhuǎn)換器,將采集的音頻信號無壓縮,按照特定的數(shù)據(jù)格式、文件結(jié)構(gòu)將數(shù)據(jù)存儲在SATA盤中。在系統(tǒng)空閑的情況下,可通過網(wǎng)口將數(shù)據(jù)導(dǎo)出,上位機可根據(jù)實際需求對數(shù)據(jù)解析成音頻文件(wave格式),并完成時域或頻域分析,用于科研分析。
多路音頻記錄系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 多路音頻記錄系統(tǒng)框圖
多路音頻記錄系統(tǒng)硬件設(shè)計主要由六部分組成。
1)系統(tǒng)控制模塊。主要負責整個系統(tǒng)電源控制、按鍵功能處理、顯示屏數(shù)據(jù)顯示,采用STM32來實現(xiàn)。
2)音頻信號采集器。主要用于分通道采集音頻模擬信號。
3)調(diào)理電路。主要對采集到的模擬音頻信號進行濾波、放大。
4)A/D轉(zhuǎn)換器。將濾波和放大后的模擬信號轉(zhuǎn)換為數(shù)字音頻信號,采用24位A/D轉(zhuǎn)換器,A/D采樣頻率48 kbit/s。
5)FPGA模塊。主要根據(jù)A/D轉(zhuǎn)換后的數(shù)據(jù)進行放大倍數(shù)的調(diào)整,并按照通道、放大倍數(shù)、音頻信號整理數(shù)據(jù)按照特定的協(xié)議發(fā)送給音頻數(shù)據(jù)記錄模塊記錄、發(fā)送給系統(tǒng)控制軟件進行顯示屏顯示、發(fā)送給PC機進行監(jiān)控(如果需要監(jiān)控的情況)。根據(jù)A/D采集頻率、采樣位數(shù)和通道數(shù)計算,音頻記錄系統(tǒng)每秒需要記錄數(shù)據(jù)約2 MB,網(wǎng)絡(luò)模塊采用百兆網(wǎng)芯片,此芯片理論上最大的傳輸速度為5 MB/s,可完全滿足系統(tǒng)要求。
6)音頻數(shù)據(jù)記錄/管理模塊。此模塊對FPGA處理后的數(shù)據(jù)進行存儲,并在結(jié)束采樣后,PC機可通過網(wǎng)絡(luò)將存儲的數(shù)據(jù)進行導(dǎo)出、刪除。由于音頻數(shù)據(jù)記錄系統(tǒng)需要長時間工作在記錄的模式下,需要大容量的快速磁盤[1],因此采用了1TB大小的SATA電子盤。本模塊軟件的運行IMX6開發(fā)板上,此開發(fā)板帶有WinCE系統(tǒng),帶有千兆網(wǎng)絡(luò),且有SATA電子盤接口,可完全滿足系統(tǒng)數(shù)據(jù)存儲、導(dǎo)出速度要求。
根據(jù)多路音頻記錄系統(tǒng)的功能需求和硬件平臺,其配套軟件可劃分為系統(tǒng)控制軟件、音頻信號采集軟件、記錄和管理軟件。軟件結(jié)構(gòu)框圖如圖2所示。
圖2 軟件結(jié)構(gòu)框圖
系統(tǒng)控制軟件駐留在STM32的Flash中。主要功能包括:顯示系統(tǒng)工作狀態(tài)和故障信息;掃描按鍵,根據(jù)按下的按鍵,通告FPGA開始記錄、停止記錄;根據(jù)IMX6通告的時間,實時在顯示屏上刷新時間;對FPGA實時發(fā)送的音頻數(shù)據(jù)進行分通道顯示。
音頻信號采集軟件駐留在FPGA的RAM中。主要功能如下。
1)根據(jù)當前采集到的音頻信號大小調(diào)整放大倍數(shù)。
2)向STM32實時發(fā)送音頻數(shù)據(jù)。
3)響應(yīng)STM32的控制指令,數(shù)據(jù)開始記錄后,向IMX6發(fā)送音頻數(shù)據(jù)。
音頻信號存儲/管理軟件主要功能如下。
1)向STM32通告當前時間、文件寫入、系統(tǒng)狀態(tài)。
2)音頻數(shù)據(jù)記錄期間,接收FPGA按照數(shù)據(jù)頭+序列號+多路音頻數(shù)據(jù)+數(shù)據(jù)尾格式發(fā)送的數(shù)據(jù),存儲到SATA盤中。根據(jù)客戶要求,音頻數(shù)據(jù)在記錄期間不能丟失數(shù)據(jù),因此音頻數(shù)據(jù)記錄軟件采用了多線程[2]、雙緩存和文件映射技術(shù)[3]。
3)軟件設(shè)計中主線程負責通過網(wǎng)口異步接收數(shù)據(jù)并寫入緩存,緩存寫滿后通告子線程將數(shù)據(jù)寫入文件中,同時主線程又接收到的數(shù)據(jù)寫入另外一塊緩存中,避免了因此寫入文件占時過長導(dǎo)致丟失數(shù)據(jù)的情況。由于系統(tǒng)需要長時間工作,為了避免寫入磁盤次數(shù)過多導(dǎo)致磁盤碎片的產(chǎn)生,因此采用了文件映射技術(shù),按照2 GB的大小分配連續(xù)的空間,不僅避免了碎片的產(chǎn)生,還提高了文件寫入速度。
圖3 音頻文件存儲結(jié)構(gòu)
4)為了便于區(qū)分每次的采樣和文件保存的先后順序,SATA盤中音頻文件的存儲按照圖3所示結(jié)構(gòu)進行保存。
5)采樣日期使用年月日(例20180715),采樣時間使用年月日時分秒(例20180715140505),音頻文件采用二進制文件,文件名稱按照年月日時分秒命名(例 20180715140505.dat)[4]。
本文根據(jù)用戶需求,設(shè)計了多通道音頻記錄設(shè)備,此設(shè)備經(jīng)過長時間運行測試,工作穩(wěn)定,數(shù)據(jù)記錄準確,數(shù)據(jù)導(dǎo)出通過測試可達到27 MB/s的速度,可快速導(dǎo)出文件(每個文件約2 GB),此系統(tǒng)可廣泛應(yīng)用于各種需要記錄多通道音頻信號的場景,用于后續(xù)的科研分析。