高秀林
(山西國營大眾機械廠, 山西 太原 030000)
隨著音頻技術發展得越來越成熟,市面上出現了各種各樣的音頻采集分析設備,一般的音頻信號采集都使用8位、16位的A/D轉換器,對于微弱的音頻信號來說,采樣精度不夠,為后續的信號分析帶來了很大的困難。
本文針對客戶提出的微弱音頻信號和長時間數據采集存儲的要求,設計了多路音頻記錄系統,此系統采用24位A/D轉換器,將采集的音頻信號無壓縮,按照特定的數據格式、文件結構將數據存儲在SATA盤中。在系統空閑的情況下,可通過網口將數據導出,上位機可根據實際需求對數據解析成音頻文件(wave格式),并完成時域或頻域分析,用于科研分析。
多路音頻記錄系統結構框圖如圖1所示。

圖1 多路音頻記錄系統框圖
多路音頻記錄系統硬件設計主要由六部分組成。
1)系統控制模塊。主要負責整個系統電源控制、按鍵功能處理、顯示屏數據顯示,采用STM32來實現。
2)音頻信號采集器。主要用于分通道采集音頻模擬信號。
3)調理電路。主要對采集到的模擬音頻信號進行濾波、放大。
4)A/D轉換器。將濾波和放大后的模擬信號轉換為數字音頻信號,采用24位A/D轉換器,A/D采樣頻率48 kbit/s。
5)FPGA模塊。主要根據A/D轉換后的數據進行放大倍數的調整,并按照通道、放大倍數、音頻信號整理數據按照特定的協議發送給音頻數據記錄模塊記錄、發送給系統控制軟件進行顯示屏顯示、發送給PC機進行監控(如果需要監控的情況)。根據A/D采集頻率、采樣位數和通道數計算,音頻記錄系統每秒需要記錄數據約2 MB,網絡模塊采用百兆網芯片,此芯片理論上最大的傳輸速度為5 MB/s,可完全滿足系統要求。
6)音頻數據記錄/管理模塊。此模塊對FPGA處理后的數據進行存儲,并在結束采樣后,PC機可通過網絡將存儲的數據進行導出、刪除。由于音頻數據記錄系統需要長時間工作在記錄的模式下,需要大容量的快速磁盤[1],因此采用了1TB大小的SATA電子盤。本模塊軟件的運行IMX6開發板上,此開發板帶有WinCE系統,帶有千兆網絡,且有SATA電子盤接口,可完全滿足系統數據存儲、導出速度要求。
根據多路音頻記錄系統的功能需求和硬件平臺,其配套軟件可劃分為系統控制軟件、音頻信號采集軟件、記錄和管理軟件。軟件結構框圖如圖2所示。

圖2 軟件結構框圖
系統控制軟件駐留在STM32的Flash中。主要功能包括:顯示系統工作狀態和故障信息;掃描按鍵,根據按下的按鍵,通告FPGA開始記錄、停止記錄;根據IMX6通告的時間,實時在顯示屏上刷新時間;對FPGA實時發送的音頻數據進行分通道顯示。
音頻信號采集軟件駐留在FPGA的RAM中。主要功能如下。
1)根據當前采集到的音頻信號大小調整放大倍數。
2)向STM32實時發送音頻數據。
3)響應STM32的控制指令,數據開始記錄后,向IMX6發送音頻數據。
音頻信號存儲/管理軟件主要功能如下。
1)向STM32通告當前時間、文件寫入、系統狀態。
2)音頻數據記錄期間,接收FPGA按照數據頭+序列號+多路音頻數據+數據尾格式發送的數據,存儲到SATA盤中。根據客戶要求,音頻數據在記錄期間不能丟失數據,因此音頻數據記錄軟件采用了多線程[2]、雙緩存和文件映射技術[3]。
3)軟件設計中主線程負責通過網口異步接收數據并寫入緩存,緩存寫滿后通告子線程將數據寫入文件中,同時主線程又接收到的數據寫入另外一塊緩存中,避免了因此寫入文件占時過長導致丟失數據的情況。由于系統需要長時間工作,為了避免寫入磁盤次數過多導致磁盤碎片的產生,因此采用了文件映射技術,按照2 GB的大小分配連續的空間,不僅避免了碎片的產生,還提高了文件寫入速度。

圖3 音頻文件存儲結構
4)為了便于區分每次的采樣和文件保存的先后順序,SATA盤中音頻文件的存儲按照圖3所示結構進行保存。
5)采樣日期使用年月日(例20180715),采樣時間使用年月日時分秒(例20180715140505),音頻文件采用二進制文件,文件名稱按照年月日時分秒命名(例 20180715140505.dat)[4]。
本文根據用戶需求,設計了多通道音頻記錄設備,此設備經過長時間運行測試,工作穩定,數據記錄準確,數據導出通過測試可達到27 MB/s的速度,可快速導出文件(每個文件約2 GB),此系統可廣泛應用于各種需要記錄多通道音頻信號的場景,用于后續的科研分析。