文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181931
中文引用格式: 周靜雷,李騰飛,馮源. 可用于電聲測試系統(tǒng)的專業(yè)音頻接口設計[J].電子技術應用,2019,45(1):105-108.
英文引用格式: Zhou Jinglei,Li Tengfei,F(xiàn)eng Yuan. Design of professional audio interface available for electroacoustic testing system[J]. Application of Electronic Technique,2019,45(1):105-108.
0 引言
電聲測試系統(tǒng)主要用于測試揚聲器、傳聲器等產品的電聲性能,是電聲產品研發(fā)和生產過程中不可缺少的設備。電聲測試系統(tǒng)一般需要借助于聲卡來實現(xiàn)音頻信號的模數(shù)和數(shù)模轉換[1-2]。聲卡設計上更側重于音質效果,聲卡的音效處理功能在電聲測試中是用不到的,使電聲測試系統(tǒng)增加了不必要的成本;一般聲卡需借助于同步協(xié)議才能完成連續(xù)掃頻測試[2]。開發(fā)電聲測試系統(tǒng)專用音頻接口,有利于提高電聲測試精度,簡化測試流程,并降低成本。本文設計的音頻接口上位機軟件使用C++程序設計語言設計,提供了接口函數(shù),可供電測量系統(tǒng)軟件調用。高速USB2.0接口通信,能夠以較快的速度傳輸音頻數(shù)據(jù)[3]。下位機以STM32F429作為主控芯片,該芯片有FMC接口,可擴展SDRAM用于存儲音頻數(shù)據(jù)[4];使用WM8978音頻編解碼器實現(xiàn)對音頻信號的數(shù)模和模數(shù)轉換,該芯片采用了Δ-Σ技術[5],能夠實現(xiàn)16位和24位采樣精度,最高支持192 kHz采樣率,滿足了電聲測試系統(tǒng)的需求[4-7]。
1 音頻接口工作原理
在電聲測試系統(tǒng)中,音頻接口的作用實現(xiàn)D/A和A/D轉換功能,為電聲測量儀器提供激勵信號,并將輸入的信號轉化為音頻數(shù)據(jù),供計算機軟件分析,音頻接口錄音和播放功能流程如圖1所示。下位機能夠通過識別不同采樣率、不同采樣精度、不同聲道數(shù)的wav文件對音頻編解碼器進行配置,按上位機的要求執(zhí)行錄音或播放功能。
2 音頻接口硬件設計
如圖2所示,音頻接口由4路2通道音頻接口組成,總共有8個輸入通道和8個輸出通道,因此能夠用于揚聲器功率試驗系統(tǒng)[8-9]等需要多通道測試的電聲測試系統(tǒng)中,軟件通過4個2位DIP開關分配的設備ID號對4路2通道音頻接口進行區(qū)分,4路2通道音頻接口的USB接口匯總到一個USB HUB上,USB HUB通過1路USB接口與計算機相連,減少了對計算機USB接口數(shù)量的需求。
圖3是使用1路2通道音頻接口的電聲測試系統(tǒng),每個2通道音頻接口能夠實現(xiàn)單聲道或立體聲錄音和播放,錄音和播放功能既能單獨進行,又能同步進行。音頻接口的主控芯片為STM32F429,通過I2C串行總線對音頻編解碼器的功能進行設置;通過I2S內置音頻總線與音頻編解碼器WM8978進行音頻數(shù)據(jù)傳輸;通過ULPI接口外擴1片USB PHY芯片USB3300,實現(xiàn)高速模式的USB2.0通信;通過FMC靈活存儲控制器接口外擴1片內存大小為32 MB的SDRAM芯片W9825G6KH-6,存儲音頻數(shù)據(jù)。
3 音頻接口軟件設計
3.1 下位機軟件設計
下位機軟件基于STM32標準庫設計,程序流程圖如圖4所示。實驗證明,硬件上電之后首先要延時一段時間才能對硬件進行初始化,否則會導致音頻編解碼器初始化失敗,這是因為WM8978芯片上電后需要一定的時間啟動,硬件啟動之后I2C才能寫入配置命令。
硬件初始化配置如圖5所示。為了使錄音和播放能夠同步進行,主I2S為從I2S提供時鐘,使主控芯片能夠與音頻編解碼器進行同步全雙工通信,但是導致了錄音和播放的采樣率只能相同。為了不間斷地進行錄音或播放,主I2S和從I2S都配置為DMA雙緩沖模式[6],CPU對DMA的一個緩沖區(qū)進行讀寫時,不必停止錄音或播放,DMA可以使用另一個緩沖區(qū)。USB初始化為高速模式的USB2.0 CDC設備,USB接收音頻數(shù)據(jù)使用的是在SDRAM中申請的數(shù)據(jù)接收緩沖區(qū)。
硬件初始化完成后,下位機會等待USB連接,期間LED燈不斷閃爍。USB連接之后LED燈常亮,當下位機接收到上位機的命令之后會根據(jù)命令值執(zhí)行相應的功能,這些功能如下:
(1)查詢設備狀態(tài)功能,能夠向上位機返回播放狀態(tài)、錄音狀態(tài)、設備ID號、播放音量、采樣率、采樣精度等信息。其中錄音狀態(tài)包括錄音關閉、錄音開啟、同步錄音、錄音完成4種狀態(tài),播放狀態(tài)包括播放關閉和播放開啟2種狀態(tài)。
(2)設置采樣方式功能,設置錄音和播放的采樣精度為24位或16位,采樣率為8 kHz~192 kHz。
(3)播放開關和錄音開關功能,從I2S使用的是主I2S的時鐘信號,這樣做可以保證錄音和播放的同步,但是造成了主I2S關閉后,從I2S不能使用的問題。解決這個問題的方法是,硬件初始化完成后,主I2S不斷發(fā)送DMA緩沖區(qū)的數(shù)據(jù)到音頻編解碼器,如果要打開播放功能,只需向主I2S的DMA緩沖區(qū)寫入音頻數(shù)據(jù)即可,如果要關閉播放功能,則寫入空數(shù)據(jù)。如果通過關閉從I2S的方法關閉錄音,會導致無法確定下一次從I2S開啟后,傳輸?shù)牡谝粋€數(shù)據(jù)屬于哪個輸入通道,造成錄音數(shù)據(jù)的左右聲道不確定,因此只能通過控制CPU是否讀取從I2S緩沖區(qū)數(shù)據(jù)的方式控制錄音功能的開啟或關閉,只需使用一個錄音開關標志位就能做到這一點。
(4)同步錄音功能,同時開啟播放和錄音功能,錄音和播放采用的是相同的時鐘信號,理論上能夠實現(xiàn)錄音和播放的完全同步。
3.2 上位機軟件設計
上位機軟件分為主線程和通信線程,主線程能夠查找接入計算機的USB設備,并將音頻接口的USB設備句柄添加到通信線程。主線程提供的接口函數(shù)能夠將用戶對設備操作的信息發(fā)送到通信線程,通信線程根據(jù)查詢到的設備運行狀態(tài)信息和從主線程接收的設備操作信息決定要向下位機發(fā)送的控制命令類型以及如何進行數(shù)據(jù)傳輸。
上位機軟件具體工作流程如圖6所示,為了實現(xiàn)熱插拔功能,上位機軟件開啟后首先向主窗體注冊USB CDC設備,上位機軟件就可以通過接收Windows操作系統(tǒng)的WM_DEVICECHANG消息識別USB插拔事件。上位機軟件通過調用libusb庫函數(shù)實現(xiàn)USB通信[10],主線程首先要初始化libusb庫,然后查找USB總線和總線上的設備,根據(jù)設備描述符篩選出音頻接口,依次打開所有的音頻接口獲得其USB設備的句柄,并查詢其設備號,通過設備號可以得知當前句柄對應的音頻接口通道。主線程將設備句柄和對應的設備號傳送給通信線程,通信線程就可以對4路2通道音頻接口分別進行操作了。最后軟件進入等待操作狀態(tài),用戶對USB設備進行插拔后軟件會重新查找設備。用戶通過設備接口函數(shù)進行操作之后,主線程會將設備的操作信息發(fā)送到通信線程中。
通信線程建立后會不停地查詢設備狀態(tài)信息,判斷USB通信是否正常并查詢下位機的運行狀態(tài)。接收到主線程的設備操作信息之后,通信線程會將其與設備狀態(tài)信息進行對比,根據(jù)信息的不同之處,向下位機發(fā)送相應的命令或進行數(shù)據(jù)傳輸。這種設計方案保證了上位機和下位機運行狀態(tài)的同步,使整個系統(tǒng)運行更加穩(wěn)定。
4 性能測試
4.1 信號輸出性能測試
計算機分別使用PreSonus AudioBox 1818 VSL專業(yè)聲卡和音頻接口輸出正弦信號,使用APx525音頻分析儀分別測量其總諧波失真,測量結果如圖7所示,音頻接口在整個音頻頻段輸出激勵信號的總諧波失真均低于專業(yè)聲卡,在1 000 Hz處的總諧波失真為-77 dB,而專業(yè)聲卡為-53.7 dB。
4.2 信號采集性能測試
分別將聲卡和音頻接口用于電聲測量系統(tǒng)中,采集由音頻分析儀信號源輸出的正弦信號,測量電壓如圖8所示,在10 Hz~20 kHz的范圍內,音頻接口的幅頻特性與專業(yè)聲卡類似,20 kHz以上性能優(yōu)于專業(yè)聲卡。
4.3 同步錄音功能驗證
上位機軟件讀取波形為1 kHz正弦信號,采樣率為48 000 Hz,采樣精度為16位,時長為1 s的wav文件之后,如圖9所示,在第1個和第48 000個音頻數(shù)據(jù)點處插入標記。然后將音頻接口輸入和輸出通道相連,使用同步錄音功能直接對輸出信號進行同步采集,采集到圖10所示的波形。圖9和圖10的標記值在相同的位置,說明音頻接口的同步錄音功能能夠實現(xiàn)錄音和播放完全同步。
5 結論
本文設計的音頻接口與PreSonus AudioBox 1818 VSL專業(yè)聲卡相比,輸出通道的總諧波失真更低,輸入通道的幅頻特性更好,能夠實現(xiàn)錄音和播放的完全同步,同時又具有成本低的優(yōu)點,完全可以取代專業(yè)聲卡用于電聲測量系統(tǒng)。
參考文獻
[1] 胡良紅.揚聲器電聲參數(shù)綜合檢測系統(tǒng)研制[D].桂林:桂林電子科技大學,2015.
[2] 郭慶,楊東奇,徐翠鋒.揚聲器電聲參數(shù)自動測試系統(tǒng)的設計[J].科學技術與工程,2015,15(34):56-63.
[3] 馮劍鋒,張波,楊東凱.基于高速USB3300接口的FPGA數(shù)據(jù)采集器設計與實現(xiàn)[C].全國信號和智能信息處理與應用學術會議會刊,2013.
[4] 田谞,王宏偉,其木蘇榮.基于STM32F429的音頻信號發(fā)生器[J].微型機與應用,2014(24):87-90.
[5] 張瑜,孟慶楠,楊開宇,等.基于Δ-Σ技術和FPGA的數(shù)據(jù)采集系統(tǒng)[J].電子技術應用,2011,37(6):141-144.
[6] 周靜雷,孫長城.基于STM32的音頻播放與記錄控制器設計[J].微處理機,2017,38(1):67-70.
[7] 劉麗.嵌入式WM8960音頻驅動及多線程播放器的設計[D].哈爾濱:哈爾濱工業(yè)大學,2015.
[8] 周靜雷,王浩,李倩,等.大功率揚聲器單元的功率試驗系統(tǒng)設計[J].國外電子測量技術,2018,37(5):89-92.
[9] 楊軍.關于揚聲器功率試驗的一些新趨勢[J].電聲技術,2017(Z4).
[10] 李生.基于SOPC的嵌入式數(shù)據(jù)傳輸系統(tǒng)設計[D].杭州:杭州電子科技大學,2012.
作者信息:
周靜雷,李騰飛,馮 源
(西安工程大學 電子信息學院,陜西 西安710048)