多路音頻記錄系統設計及實現反思

前言:尋找寫作靈感?中文期刊網用心挑選的多路音頻記錄系統設計及實現反思,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。

多路音頻記錄系統設計及實現反思

摘要:通過對多路音頻記錄系統的硬件系統結構進行了分析,提出了音頻記錄設備軟件的功能與架構設計方案,重點闡述了數據存儲、導出、刪除軟件功能的設計思路。通過實時長時間測試,此軟件協同系統硬件可實現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.

作者:高秀林 單位:山西國營大眾機械廠

亚洲精品一二三区-久久