加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 第一部分 設(shè)計概述
    • 第二部分 系統(tǒng)組成及功能說明
    • 第三部分 完成情況及性能參數(shù)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于 FPGA 和麥克風(fēng)陣列的高速高精度聲源定位系統(tǒng)設(shè)計

10/08 09:50
558
閱讀需 14 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡?!爸缶蒲詺g”進入IC技術(shù)圈,這里有近50個IC技術(shù)公眾號。

第一部分 設(shè)計概述

1.1 設(shè)計目的

頻繁雜亂的鳴笛聲,不但給周邊居民的生活質(zhì)量造成很大影響,而且增加了駕駛員的疲勞,影響行駛安全,并使乘客和行人在出行時倍感煩躁不安。在大多 數(shù)城市的道路上,時常出現(xiàn)禁止鳴笛的標(biāo)志,然而并不是所有人都能自覺地遵守 規(guī)則,對鳴笛之人進行適當(dāng)?shù)奶幜P是確保這項規(guī)定能夠順利實施的必要舉措。

我們決定利用麥克風(fēng)陣列獲取聲音信號,使用 FPGA 技術(shù)計算聲音的位置, 使用 OPENMV 實現(xiàn)圖像的抓拍,最終實現(xiàn)對鳴笛車輛的準(zhǔn)確定位。

1.2 應(yīng)用領(lǐng)域

本作品實際應(yīng)用前景廣泛。

用于民用領(lǐng)域:在交通監(jiān)控中,對違規(guī)鳴笛的車輛進行定位并拍照取證,提高監(jiān)控效率;在音視頻會議系統(tǒng)中,采集會議發(fā)言人的語音信號,并進行實時處 理來確定發(fā)言人的當(dāng)前位置坐標(biāo);在安防系統(tǒng)中,利用聲源定位系統(tǒng)來輔助傳統(tǒng) 攝像頭,從而調(diào)整監(jiān)控方向,彌補了普通的運動識別在光線昏暗條件下的不足, 提升安防效果;等等。

用于軍事領(lǐng)域:既可以有效的發(fā)現(xiàn)敵方目標(biāo)所在的位置,又可以充分的隱藏 自身。

1.3 主要技術(shù)特點

(1)采用麥克風(fēng)陣列來獲取聲音信號 相較于傳統(tǒng)麥克風(fēng),麥克風(fēng)陣列具有空間選擇性,能明顯抑制干擾;可以用 于獲取多個聲源或移動聲源信號,也可以用在一些特殊場合,該系統(tǒng)對于遠處和 近處的聲源,均可以正常工作。

(2)利用 FFT 算法和 CORDIC 算法計算相位 前者是離散傅氏變換(DFT)的快速算法,是有限長序列傅里葉變換的有限 點離散采樣,從而實現(xiàn)了頻域離散化,使頻域采樣按照數(shù)字運算的方法進行。后者是一個“化繁為簡”的算法,將許多復(fù)雜的運算轉(zhuǎn)化為一種“僅需要移位和加 法”的迭代操作。

(3)用 verilog 語言編碼并利用 FPGA 實現(xiàn) 本作品用 FPGA 作處理器處理聲音信號,利用了 FPGA 硬件并行的優(yōu)勢,在 每個時鐘周期內(nèi)完成更多的處理任務(wù),超越了數(shù)字信號處理器的運算能力。

1.4 關(guān)鍵性能指標(biāo)

(1)完成對實驗室等室內(nèi)環(huán)境的靜止的鳴笛聲源定位,并用攝像頭以及舵 機云臺對鳴笛者進行抓拍,抓拍成功率超過 90%,并且每次抓拍得到的鳴笛者偏 離照片中心不超過 50%.

(2)完成對實驗室等室內(nèi)環(huán)境的緩慢移動的持續(xù)鳴笛聲源定位,并用攝像 頭以及舵機云臺對鳴笛者進行跟拍,跟拍成功率超過 90%,并且在跟拍過程中攝 像頭內(nèi)不丟失鳴笛者圖像。

(3)完成對實驗室等室內(nèi)環(huán)境的快速移動的持續(xù)鳴笛聲源定位,并用攝像 頭以及舵機云臺對鳴笛者進行跟拍,跟拍成功率超過 80%,并且在跟拍過程中攝 像頭出現(xiàn)鳴笛者的時間超過跟拍總時間的 80%.

(4)對上述指標(biāo)(1)中的抓拍在鳴笛開始的 0.5 秒內(nèi)完成抓拍

1.5 主要創(chuàng)新點

(1)所有過程完全采用數(shù)字化的信號處理方式,所有通信均為數(shù)字通信, 所有處理的信號都為數(shù)字信號,相比于易受各種干擾的模擬信號系統(tǒng),數(shù)字信號 處理抗干擾能力更強,通過多路信號并行處理來實現(xiàn)。

(2)利用了 FPGA 硬件并行的優(yōu)勢,打破了順序執(zhí)行的模式,在每個時鐘周 期內(nèi)完成更多的處理任務(wù),超越了數(shù)字信號處理器(DSP)的運算能力。通過使 用盡可能多的麥克風(fēng)通道,來提高定位的精確度。

(3)FPGA 良好的運算性能允許建立實時性良好的定位系統(tǒng),可以做到追蹤 高速行駛的鳴笛汽車。

(4)本項目將定位的空間由原有的二維空間拓展為三維空間,提高了追蹤 定位的靈活性和準(zhǔn)確性。

第二部分 系統(tǒng)組成及功能說明

2.1 整體介紹

system_diagram 本系統(tǒng)由聲源定位系統(tǒng)和圖像抓拍系統(tǒng)兩部分組成,其中聲源定位系統(tǒng) 由麥克風(fēng)陣列模塊、PDM 解碼模塊、相位計算模塊組成,后兩個模塊通過 FPGA 板實現(xiàn),圖像抓拍系統(tǒng)通過 OPENMV 實現(xiàn)。

聲源產(chǎn)生聲音信號,傳送給麥克風(fēng)陣列,編碼產(chǎn)生 PDM 波,再通過接收 PDM 波的緩沖區(qū),送入高階 fir 濾波器實現(xiàn)對 PDM 的解碼,然后將結(jié)果傳入 相位計算模塊,即先通過 FFT 算法進行頻譜分析,再利用 CORDIC 算法計算 相位得到聲源的坐標(biāo),最后通過基于 OPENMV 的圖像抓拍系統(tǒng)顯示聲源位置 并抓拍。

2.2 各模塊介紹

2.2.1 麥克風(fēng)陣列模塊

我們用到的硅麥型號為 SPW0690LM4H-1,這是一種小型、高性能、低功耗, 底部端口硅數(shù)字麥克風(fēng)與單位 PDM 輸出。包括一個聲傳感器,一個低噪聲輸入緩沖器和 sigma-delta 調(diào)制器。

它具有的特性:低失真/高 AOP、高信噪比、低功耗模式下低電流消耗、平 坦的頻率響應(yīng)、高驅(qū)動能力、射頻屏蔽、支持雙多路通道、極穩(wěn)定的性能、全指 向性等等。在采集聲音方面,在很寬的頻帶內(nèi)增益保持一致,高保真的采集語音 信號,靈敏度高,能夠檢測到環(huán)境中微弱的聲音信號。它的全指向性可以拾取各 方向的聲音,對來自四面八方的聲音同樣敏感,特別適合用在本項目中。

2.2.2 處理器

本作品使用 Ego1 開發(fā)板作為處理器,型號為 Xilinx Artix-7 系列的 XC7A35T-1CSG324C FPGA。

Xilinx 7系列的FPGA芯片內(nèi)部集成了兩個12bit位寬、采樣率為1MSPS的ADC, 擁有多達 17 個外部模擬信號輸入通道,為用戶的設(shè)計提供了通用的、高精度的模擬輸入接口。

2.2.3 PDM 解碼模塊——基于高階 fir 低通濾波器

PDM 的解碼采用高階 fir 濾波器的算法。PDM 編碼雖然只有 0 和 1 兩種電平, 但 PDM 編碼保留了原始的未編碼數(shù)據(jù)的所有頻率分量,同時增加了高頻噪聲成 分 FIR 濾波器是數(shù)字信號處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特征的同時具有嚴(yán)格的線性相頻特性,其單位抽樣響應(yīng)是有限長的,此系統(tǒng)穩(wěn)定。根據(jù)自頂向下的層次化、模塊化的設(shè)計思想,將整個濾波器的設(shè)計劃分為多個模塊, 利用硬件描述語言 Verilog 進行各個模塊的功能設(shè)計,并用 Matlab 軟件設(shè)計 98階濾波器各抽頭系數(shù)。

對 PDM 編碼進行傅里葉變換,得到的頻率響應(yīng)如下圖:

由于聲音定位系統(tǒng)是為了得到人耳可分辨的聲音,或得到清晰的騎車鳴笛聲音,并且人耳可以分辨的聲音頻率為 20-20000Hz,而高于 20000Hz 的聲音信號是我們不需要的,所以我們的低通濾波器的通帶頻率設(shè)置為 0-20000Hz,截止頻率設(shè)置為 48000Hz,阻帶頻率設(shè)置為 100000Hz。PDM 信號經(jīng)過該濾波器, 不僅可以實現(xiàn) PDM 信號向 PCM 信號的解碼,還順帶濾除了我們不需要的高頻聲音信號。

該 fir 濾波器的差分方程表達式為:

將原始信號進行編碼,并經(jīng)過 97 階 fir 低通濾波器的信號與原始信號的對比圖如圖 9、10 所示,其中綠色的為解碼后的信號,藍色的為原始信號。

由圖可知,設(shè)計的濾波器較好的將編碼后的信號還原為原始信號,并且原始信號所包含的頻率分量受到的影響較小。

用 VIVADO 軟件編寫 verilog 語言實現(xiàn)該 97 階的數(shù)字濾波器,由于需要大量 的串行浮點運算,所以所消耗的時間較多,但通過硬件,可用并行運算進行處理。通過計算,我們設(shè)計的 97 階濾波器需要 97 個乘法器和 98 個加法器,具體代碼見附錄。

2.2.4 相位計算模塊

通過 FFT 算法進行頻譜分析

FFT 是離散傅氏變換(DFT)的快速算法,是有限長序列傅里葉變換的有限點 離散采樣,從而實現(xiàn)了頻域離散化,使頻域采樣按照數(shù)字運算的方法進行。

使用 Xilinx Vivado 內(nèi)置的 Fast FourierTransform IP core 進行快速傅里葉變換, 配置使用 Radix-2 架構(gòu),使用 8 通道,每個通道一幀包含 512 個數(shù)據(jù)點。輸入的數(shù)據(jù)位寬為 16 位,輸出則采用 Fixed Point、Unscale,同時為順序輸出,配置如圖 12。

運用 CORDIC 算法計算相位

CORDIC 算法是一個“化繁為簡”的算法,將許多復(fù)雜的運算轉(zhuǎn)化為一種“僅 需要移位和加法”的迭代操作。

假設(shè)在 xy 坐標(biāo)系中有一個點 P1(x1,y1),將 P1 點繞原點旋轉(zhuǎn)θ角后得到 點 P2(x2,y2)。

于是可以得到 P1 和 P2 的關(guān)系:

2.2.5 圖像抓拍系統(tǒng)

在本作品中,使用分辨率為 640*480 的以數(shù)字圖像傳感器為核心的攝像頭, 并使用具有角度不斷變化并可以保持的舵機,構(gòu)成圖像抓拍系統(tǒng)。

OPENMV 通過接收 FPGA 串口發(fā)送的聲源位置信息,從而控制舵機轉(zhuǎn)向聲源 的方向,使得我們使用的攝像頭可以準(zhǔn)確的對準(zhǔn)聲源,并下達指令給上位機(PC) 進行拍照或錄像。照片將存儲在上位機的內(nèi)存中。

第三部分 完成情況及性能參數(shù)

(1)完成了在實驗室對靜止的鳴笛聲源進行定位,并用攝像頭以及舵機云 臺對鳴笛者進行抓拍,抓拍成功率超過 95%,并且每次抓拍得到的鳴笛者偏離照 片中心不超過 30%,抓拍延時在 0.5 秒以內(nèi)。

(2)完成對實驗室的快速移動的持續(xù)鳴笛聲源的定位,并用攝像頭以及舵 機云臺對鳴笛者進行實時跟拍,跟拍成功率超過 80%,并且在跟拍過程中攝像頭 出現(xiàn)鳴笛者的時間超過跟拍總時間的 95%

(3)上位機屏幕能夠?qū)崟r顯示攝像頭的情況,并且儲存了抓拍到的鳴笛者 照片,以及持續(xù)鳴笛跟拍的視頻。

第四部分 總結(jié)

4.1 可擴展之處

(1)我們使用的 4 路數(shù)字麥克風(fēng)陣列 PCB 板預(yù)留了額外的 28 個空焊的麥克 風(fēng)接口,可以擴展至 32 路。從而可以盡可能地減小數(shù)字麥克風(fēng)接收的誤碼率, 并且再次提高定位的精度。

(2)我們用來控制舵機云臺的 OPENMV 擁有自帶的攝像頭,并且具有圖像 識別等功能,將來可以使用 OPENMV 進行圖像處理并配合聲源定位系統(tǒng)進行綜 合跟拍以及抓拍,從而提高跟拍的成功率以及抓拍的準(zhǔn)確度。

(3)我們使用了高性能的上位機對跟拍和抓拍的圖像進行實時顯示,并保 存到上位機中。上位機將來可以對保存下來的照片進行二次分析,對抓拍到的車 輛進行車牌識別,并將違章記錄上傳到云端,并利用大數(shù)據(jù)進行監(jiān)管,對一些違 章次數(shù)較多的車輛進行處罰。

(4)本項目使用到的 FPGA 芯片型號僅僅為 XILINX 的 A 系列入門級的 XC7A35T,如果更換為板載資源更多的型號,將會進一步提高聲源定位運算的速度。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

任何技術(shù)的學(xué)習(xí)就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。