《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 教程:如何利用FPGA硬件并行的優(yōu)勢設計高速高精度聲源定位系統(tǒng)

教程:如何利用FPGA硬件并行的優(yōu)勢設計高速高精度聲源定位系統(tǒng)

2022-10-24
來源:FPGA技術江湖

  第一部分 設計概述 / Design IntroducTIon

  1.1 設計目的

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

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

  1.2 應用領域

  本作品實際應用前景廣泛。

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

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

  1.3 主要技術特點

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

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

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

  1.4 關鍵性能指標

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

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

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

 ?。?)對上述指標(1)中的抓拍在鳴笛開始的 0.5 秒內完成抓拍

  1.5 主要創(chuàng)新點

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

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

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

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

  第二部分 系統(tǒng)組成及功能說明 / System ConstrucTIon & FuncTIon DescripTIon

  2.1 整體介紹

  034.JPG

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

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

  2.2 各模塊介紹

  2.2.1 麥克風陣列模塊

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

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

033.JPG

032.JPG

  2.2.2 處理器

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

  031.JPG

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

 030.JPG

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

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

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

 029.JPG

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

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

 

028.JPG

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

 027.JPG

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

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

  2.2.4 相位計算模塊

  通過 FFT 算法進行頻譜分析

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

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

  026.JPG

  運用 CORDIC 算法計算相位

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

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

  025.JPG

  于是可以得到 P1 和 P2 的關系:

 024.JPG

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

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

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

  第三部分 完成情況及性能參數 / Final Design & Performance Parameters

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

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

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

  第四部分 總結 / Conclusions

  4.1 可擴展之處

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

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

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

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



更多信息可以來這里獲取==>>電子技術應用-AET<<

mmexport1621241704608.jpg

本站內容除特別聲明的原創(chuàng)文章之外,,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點。轉載的所有的文章,、圖片,、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者,。如涉及作品內容,、版權和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected]