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

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

2022-10-24
來源:FPGA技術(shù)江湖
關(guān)鍵詞: 攝像頭 硬件 處理器 FPGA

  第一部分 設(shè)計(jì)概述 / Design IntroducTIon

  1.1 設(shè)計(jì)目的

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

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

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

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

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

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

  1.3 主要技術(shù)特點(diǎn)

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

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

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

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

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

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

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

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

  1.5 主要?jiǎng)?chuàng)新點(diǎn)

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

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

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

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

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

  2.1 整體介紹

  034.JPG

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

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

  2.2 各模塊介紹

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

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

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

033.JPG

032.JPG

  2.2.2 處理器

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

  031.JPG

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

 030.JPG

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

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

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

 029.JPG

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

  該 fir 濾波器的差分方程表達(dá)式為:

 

028.JPG

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

 027.JPG

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

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

  2.2.4 相位計(jì)算模塊

  通過 FFT 算法進(jìn)行頻譜分析

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

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

  026.JPG

  運(yùn)用 CORDIC 算法計(jì)算相位

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

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

  025.JPG

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

 024.JPG

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

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

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

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

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

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

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

  第四部分 總結(jié) / Conclusions

  4.1 可擴(kuò)展之處

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

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

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

 ?。?)本項(xiàng)目使用到的 FPGA 芯片型號(hào)僅僅為 XILINX 的 A 系列入門級(jí)的 XC7A35T,如果更換為板載資源更多的型號(hào),將會(huì)進(jìn)一步提高聲源定位運(yùn)算的速度。



更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

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