岳 蒂, 欒 峰, 佘黎煌, 丁 山, 張立立
(東北大學 計算機科學與工程學院,沈陽 110169)
近年來,隨著科學技術和生活水平的提高,人們越來越注重對聲音進行控制和處理。而正確的確定聲音位置是實現聲音控制的前提,因此聲源定位技術應運而生[1]。多年來聲源定位是國內外研究的重點課題,初期的研究主要應用于雷達、聲吶等軍事系統[1]。隨著時代的發展,聲源定位技術也逐漸地應用到民用和工業系統中,比如:視頻電話會議、智能機器人聽覺[2]、機器故障診斷、降噪等。隨著嵌入式技術的迅速發展,當前市場上的聲源定位類產品,在設計實現上仍存在一些問題[3],例如,如何降低成本,如何縮小體積以提高可移動與便攜性等[4-5]。因此,聲源定位的研究與開發具有較強的實際價值和理論意義。本文以聲源定位算法為核心,設計了一個基于嵌入式平臺的聲源定位及成像系統。
系統的主控制器使用同類產品中性能較高的增強型STM32單片機,其時鐘頻率達到168 MHz、功耗低、具有更快的模數轉換速度、更強大的輸入/輸出端口 (input/output, I/O)復用功能以及更快的通用同步/異步串行接收/發送器(Universal Synchronous / Asynchronous Receiver / Transmitter, USART)和串行外設接口(Serial Peripheral Interface, SPI)通信速度[6]。系統主要包括FPGA模塊、TF卡模塊、FSMC接口、USB模塊和Qt上位機等模塊。
整體框架如圖1所示。TF卡模塊負責存儲數據、USB模塊負責下位機與Qt上位機之間的數據通信、Qt上位機負責將系統得到的聲源信息通過圖形用戶界面顯示出來。綜合設計實現了對空間區域內進行聲源定位并通過上位機進行聲源成像顯示的功能。

圖1 系統的整體框架圖
由于系統所需數據量大、占用空間多,而STM32自身的內存空間有限,大多數情況下需要從外部設備讀取數據再做處理,因此系統需要引入數據存儲單元。針對小型嵌入式系統,大多都使用SD卡或TF卡。開發板板載的是TF卡接口,STM32系列芯片上帶有SDIO 控制器[7],iCore3 核心板上將SDIO 連接到TF卡座上,硬件連接如圖2所示。

圖2 TF卡模塊
雖然STM32已經有一定的運算速度,但是由于該系統工程計算量和數據量較大,如果運算速度低,實時性和工程實現效果將不能得到保證。FPGA擁有時鐘頻率高、內部延遲小、工作效率高、并行運行、存儲方式多樣、設計靈活通用和全部的控制邏輯由硬件完成等優點[8-9]。因此系統采用FPGA模塊實現系統中運算量比較大的矩陣自相關計算。
綜合使用鎖相環(Phase Locked Loop, PLL)倍頻、雙口隨機存取存儲器(Random Access Memory, RAM)、乘法器等模塊,并通過Verilog HDL語言編程實現此功能。FPGA模塊中的整體電路架構如圖3所示。

圖3 FPGA模塊的整體電路架構圖
iCore3開發板的USB接口通過調用STM32的庫來實現STM32的USB設備通信,由于STM32 芯片不帶高速物理層(Physical Layer,PHY),這里用STM32和USB330連接的方式來實現數據的高速傳輸,硬件連接示意圖如圖4所示。

圖4 USB模塊
可變靜態存儲控制器FSMC是STM32系列采用一種新型的存儲器擴展技術,在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展[10]。本系統主要用FSMC來實現STM32與FPGA 間高速并行的數據傳輸。STM32自帶FSMC 控制器,本系統為實現FSMC 與FPGA 之間的通信,在FPGA 內部建立一個RAM塊,FPGA橋接STM32和RAM塊,通過FSMC總線從STM32向RAM塊中寫入數據,然后FPGA讀取RAM 中的數據進行運算。FSMC總線連接的原理圖如圖5所示。

圖5 FSMC接口原理圖
本文利用基于STM32與FPGA搭建的系統來實現聲源定位成像,數據包含聲音和圖像。上位機主要是將計算得到的聲源位置信息通過圖形用戶界面顯示出來。本系統采用Qt圖形界面框架作為上位機顯示軟件,設計如圖6所示的界面,實現如下功能:上位機點擊連接按鈕向下位機發送連接請求,下位機進行連接,連接成功后,上位機通過向下位機發送命令完成數據傳輸,上位機接收數據并進行處理和顯示。

圖6 Qt上位機圖形界面
本系統中,上位機接收兩個類型數據:一是當前的圖片數據,二是經系統運算得到的聲音強度數據。圖片數據不做任何處理,在聲音強度數據經過均值濾波后,使用RGB888類型的調用函數將聲音強度數據與圖像數據的紅(Red,R)、綠(Green,G)、藍(Blue,B)3個分量按照顯色原理進行疊加,最后將合成后的圖像進行顯示。
本系統的主程序流程圖如圖7所示,主要由初始化程序、數據調用程序、聲源定位算法、數據傳輸程序、均值濾波算法、數據成像程序等幾部分組成。系統上位機為Qt,下位機主要為STM32,FPGA歸STM32控制。系統啟動后,首先進行初始化。然后由Qt發起信號建立連接,STM32處于連接檢測狀態,直至連接成功。成功后STM32將TF卡內的聲音原始數據按照要求提取,并將數據做簡單處理后送入FPGA進行自相關運算,再經過算法處理后, STM32將得到的數據做索引排序后將有用數據保留并寫入TF卡中。接下來STM32將處理完后的結果和圖像數據送入上位機。上位機接收到聲音強度數據和圖像數據后,先進行均值濾波再進行成像顯示,至此,系統實現了聲源定位及成像顯示的全過程。

圖7 系統的主程序流程圖
在麥克風陣列聲源定位方法中,基于到達時間差(Time Difference of Arrival,TDOA)的聲源定位算法有著運算原理易于理解、定位精度較高等特點,因此適用于在嵌入式設備上實現。基于TDOA的聲源定位算法實現過程,一般分為延時估計和聲源定位兩個部分,時延估計的精確度直接決定了聲源定位的精度,所以是算法的核心部分[11-12]。時延估計方法有很多,應用較為廣泛的是基于相關分析的估計方法[13]。
(1) TDOA時延估計算法原理。聲波在空氣中以一定的速度傳播,不同位置的麥克風接收到的聲音信號有不同的相位,利用彼此間的相位差可獲取同一個聲源信號到達每個麥克風的時間延遲。在近場模型中,聲源的時延如圖8所示。Mi、Mj為兩個麥克風,M0為參考麥克風,Xi(n)、Xj(n)為兩個麥克風接收到的聲音信號,d為兩個麥克風之間的距離,t為信號到達兩麥克風之間的時間延遲,c為聲音在空氣中的傳播速度,c·t為聲程差,為任意點聲源到達各個麥克風的距離,為任意點聲源到達參考麥克風的距離。

圖8 聲源的時延原理圖
(2) TDOA 時延估計算法中的自相關。已知聲源所在平面與麥克風所在平面平行,且距離、麥克風的坐標已知,假設聲源處在圖像的某一塊區域內,則可計算出任意點聲源到達各個麥克風的距離L和參考原點的距離L0:
從而計算出聲源到達每個麥克風與參考原點的相對距離差[14]:
ΔL=L-L0
(3)
在已知聲音在空氣中的傳播速度v和采樣頻率f就可以得出每個麥克風相對于參考原點的相對時延:
(4)
將實際的聲音數據按照每一區域內相對于參考原點的相對時延做延遲后取出每一區域的多通道數據分別構成矩陣A,將這些矩陣分別自相關,歸一化后構成聲音強度矩陣SP,聲音強度矩陣中的值越大則對應的區域是聲源位置的可能性就越大[15]。
SP=ATA
(5)
通常情況下,矩陣自相關按照定義的方法編碼即可,但是在FPGA中需要一次性用矩陣兩列對應位置上的元素同時相乘,而如果矩陣每一列的元素數量比較大,一般的 FPGA 芯片的資源有限,難以滿足要求。因此將的自相關運算簡化為的任意一行數據和的每一列數據的相關運算,經實驗驗證此方法歸一化后與完整的自相關歸一化后定位效果一致。
TF卡中存儲的數據類型是浮點型,在Quartus II中,兩個浮點數相乘至少需要5個時鐘周期,這樣對程序運行速度、時間以及設計難度產生了負面影響。為了加快運行速度,又由于FSMC是16位的數據線,因此將浮點數處理為16位整型數據進行運算。為了節省FPGA內的資源,最終選擇用乘累加的方法來實現該運算,基本流程如圖9所示。I1和I2是乘法器的兩個輸入,矩陣的元素按照行的順序依次流入通道,每一行的第一個元素賦給I1,剩下的幾個元素依次賦給I2,逐次依此進行乘累加和運算,即可得到自相關結果。

圖9 自相關數據流動圖
為了驗證此套設計方案的合理性,先對設計聲源成像系統進行分模塊的功能測試,再對整體進行性能測試。
在FPGA內部建立RAM塊,通過FSMC總線從STM32向RAM塊中寫入0~511的字符型數據,然后將RAM內數據讀取后并進行取反顯示。結果如圖10所示。

圖10 FSMC總線測試結果
STM32通過USB上傳一幅圖片到上位機,顯示圖片并測試傳輸速度。結果如圖11所示,并得到傳輸速度為32.7 m/s。圖片選用系統測試時使用攝像頭從聲源場采集到的圖片,圖中實驗人員通過手機播放聲音設置聲源點,手機下方即為聲源處,系統通過多通道麥克風陣列采集聲音數據。

圖11 USB傳輸測試結果
系統的最終運行結果如圖12和13所示,圖中紅色矩形為麥克風采集的聲音數據經過系統運算處理得到的聲源圖像。通過將聲源圖像疊加到攝像頭采集的圖片上,可以驗證系統的定位成像結果準確。

圖12 自相關運算由STM32中完成
對比聲源成像效果可得,矩陣自相關運算由FPGA和STM32的處理結果基本一致。在FPGA晶振為25 MHz的前提下,進一步的實際測試表明,由STM32和FPGA完成成像計算耗時分別為0.8 s和0.6 s。因此,本套系統的設計方案在完成聲源定位和成像功能的基礎上,通過合理的使用FPGA,縮短了算法的計算時間、提高了系統的成像效率,達到了由STM32和FPGA 協同完成聲源定位及成像的預期設計目標。
本文根據聲源定位研究現狀以及現有聲源定位產品存在的不足,結合嵌入式技術的發展成果,通過分析現有的定位方法,研究并設計了基于STM32和FPGA的聲源定位和成像系統。利用STM32外設豐富、易于實現,FPGA并行運行、運行速度快的優勢,采用STM32作為主控制器,利用FPGA實現復雜的矩陣自相關運算,并在此基礎上將聲源可視化,完成成像顯示。本文的意義在于應用嵌入式技術,通過STM32與FPGA的協同設計,在硬件平臺上實現了聲源定位與成像系統。此嵌入式聲源成像系統有效地提高了系統的運行速度,增加了聲源定位的效率,而且其硬件集成度高、功耗低,這些都為聲源定位系統的小型化和便攜化的開發與設計提供了參考。