于智欣
摘要:FPGA設(shè)計(jì)課程內(nèi)容復(fù)雜且應(yīng)用靈活,傳統(tǒng)的授課方法使得課程內(nèi)容變得抽象,不易被學(xué)生理解。因此,結(jié)合當(dāng)下最熱門的電子偵察領(lǐng)域,利用一種虛擬時(shí)反測(cè)向新技術(shù),結(jié)合FPGA設(shè)計(jì)實(shí)現(xiàn)一種新的測(cè)向系統(tǒng)。該系統(tǒng)的設(shè)計(jì)采用Xilinx公司FPGA開發(fā)板,通過信號(hào)的傳輸、控制、處理以及存儲(chǔ)等技術(shù)手段,比較全面地學(xué)習(xí)和探索了FPGA設(shè)計(jì)的基礎(chǔ)功能。這樣不僅能夠提高學(xué)生的學(xué)習(xí)興趣,同時(shí)鍛煉了學(xué)生的動(dòng)手能力,更好地提升了學(xué)生對(duì)于該課程知識(shí)和技術(shù)的掌握。
關(guān)鍵詞:FPGA;虛擬時(shí)反;測(cè)向系統(tǒng);教學(xué)研究與實(shí)踐
一、前言
FPGA是指現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA),其優(yōu)勢(shì)能夠解決定制電路的不足以及克服原有可編程器件門電路數(shù)有限的缺點(diǎn)[1]。目前主要以Xilinx和Altera兩家公司的開發(fā)板作為主流,它們各自有配套的軟件,其中分別以為Vivado和QuartusII使用最為廣泛,采用的編程語言以VHDL以及Verilog為主,同時(shí)配合C語言進(jìn)行控制。通過FPGA可以進(jìn)行多通道的設(shè)計(jì),這種設(shè)計(jì)是基于FPGA設(shè)計(jì)最大的優(yōu)勢(shì),利用有限資源快速實(shí)現(xiàn)所需功能。FPGA設(shè)計(jì)作為一門實(shí)用性強(qiáng)的課程,通過傳統(tǒng)的授課方式進(jìn)行講解不利于學(xué)生的理解,應(yīng)該搭配前沿技術(shù)的系統(tǒng)設(shè)計(jì),在實(shí)現(xiàn)系統(tǒng)功能的過程中逐步掌握該門課程的核心知識(shí),快速完成本門課程的學(xué)習(xí)[1]。
時(shí)間反轉(zhuǎn)技術(shù)具有自適應(yīng)聚焦特性,可以考慮將其應(yīng)用于電磁信號(hào)測(cè)向領(lǐng)域中,這樣做能夠提高在復(fù)雜電磁環(huán)境下的測(cè)向性能。2004年G.Lerosey等人第一次成功地將時(shí)間反轉(zhuǎn)技術(shù)應(yīng)用到了電磁實(shí)驗(yàn)中。將時(shí)間反轉(zhuǎn)技術(shù)引入到輻射源目標(biāo)探測(cè)領(lǐng)域中,通過對(duì)其原理的分析可知該技術(shù)具有良好的抗干擾性,適用于復(fù)雜的電磁環(huán)境。同時(shí)還對(duì)時(shí)間反轉(zhuǎn)理論的具體算法進(jìn)行了分析和比較,發(fā)現(xiàn)其計(jì)算簡(jiǎn)單、易于硬件工程實(shí)現(xiàn)的優(yōu)勢(shì)[2]。
本文以提高系統(tǒng)運(yùn)算速度、實(shí)現(xiàn)測(cè)向的實(shí)時(shí)性為基本要求,利用現(xiàn)有的技術(shù)提出一種基于虛擬時(shí)反被動(dòng)DOA估計(jì)算法的FPGA并行實(shí)現(xiàn)方案,通過該方案的設(shè)計(jì)與仿真實(shí)現(xiàn),增強(qiáng)學(xué)生的主觀能動(dòng)性,進(jìn)一步提高該課程的教學(xué)質(zhì)量。首先給出硬件設(shè)計(jì)方案的原理,然后介紹該算法的硬件并行實(shí)現(xiàn)模塊的IP核,最后通過Xilinx公司的Virtex-7信號(hào)處理板完成實(shí)驗(yàn)設(shè)計(jì)與驗(yàn)證[3]。
二、測(cè)向系統(tǒng)的FPGA設(shè)計(jì)方案
通過天線陣接收一段時(shí)長(zhǎng)的待測(cè)信號(hào),然后利用一個(gè)測(cè)向系統(tǒng)對(duì)信號(hào)進(jìn)行處理,該系統(tǒng)由A/D采集模塊、雙倍速率(Double Data Rate3,DDR3)數(shù)據(jù)傳遞模塊、虛擬時(shí)反被動(dòng)測(cè)向并行算法的FPGA實(shí)現(xiàn)模塊以及上位機(jī)中能量最大值搜索模塊組成。首先使用AD采集卡采集一段待測(cè)的盲信號(hào),通過DMA方式存入DDR3中待用,將與之對(duì)應(yīng)的時(shí)延補(bǔ)償點(diǎn)以及下變頻數(shù)據(jù)由上位機(jī)計(jì)算完成后,通過PCIE總線協(xié)議(Peripheral Component Interconnect Express,PCIE)利用XDMA核將其存入DDR3對(duì)應(yīng)地址中,以上數(shù)據(jù)都需要存在DDR3的固定地址。通過尋址方式將DDR3的數(shù)據(jù)利用DMA寫入虛擬時(shí)反被動(dòng)測(cè)向的FPGA實(shí)現(xiàn)模塊,進(jìn)行時(shí)延補(bǔ)償,使信號(hào)波形對(duì)齊,把運(yùn)算結(jié)果再通過DMA方式存入DDR3固定地址下,最后通過PCIE上傳至上位機(jī),進(jìn)行能量最大值搜索,找到的最大能量值所對(duì)應(yīng)的位置即為信源所在方向。數(shù)據(jù)的采集與傳輸采用文獻(xiàn)中的設(shè)計(jì)方案,本章重點(diǎn)介紹該系統(tǒng)中虛擬時(shí)反被動(dòng)測(cè)向并行算法的FPGA實(shí)現(xiàn)模塊的設(shè)計(jì)[4]。
(一)雙通道數(shù)據(jù)傳輸原理
為了實(shí)現(xiàn)數(shù)據(jù)高速移動(dòng),且保證數(shù)據(jù)流不被阻塞,本文提出了一種基于FPGA的雙通道設(shè)計(jì)方案。兩個(gè)通道的數(shù)據(jù)移動(dòng)分別由直接存儲(chǔ)器訪問(Direct Memory Access,DMA)控制器實(shí)現(xiàn)。在設(shè)計(jì)中,需要知道數(shù)據(jù)的基地地址和DDR3的數(shù)據(jù)量。這種設(shè)計(jì)不受天線陣陣型的限制,本章以16陣元的陣列進(jìn)行設(shè)計(jì)。兩個(gè)通道待測(cè)信號(hào)分別存儲(chǔ)在DDR3的指定區(qū)域,數(shù)據(jù)的基址為0x80000000段和0x40000000段。每個(gè)地址單元存儲(chǔ)128bit數(shù)據(jù),128bit數(shù)據(jù)代表8個(gè)16bit信號(hào)。為了更直觀地展示上述過程,給出了數(shù)據(jù)傳輸?shù)慕Y(jié)構(gòu)框圖,如圖1所示。圖中N1-N8和N9-N16分別表示天線陣16個(gè)陣元接收到的數(shù)據(jù)。設(shè)天線陣有16個(gè)陣元,可將該陣列接收的信號(hào)分為兩組,即2個(gè)8元天線陣進(jìn)行計(jì)算,整個(gè)設(shè)計(jì)分為兩個(gè)相同的通道。這兩個(gè)通道同時(shí)處理8個(gè)陣元接收的信號(hào),數(shù)據(jù)移動(dòng)方式和信號(hào)處理方式相同,但數(shù)據(jù)存儲(chǔ)的DDR3地址區(qū)域不同。由于兩條通道的設(shè)計(jì)原理是相同的[5],為簡(jiǎn)便起見,下面將以一個(gè)通道(即8陣元的天線陣)為例進(jìn)行描述。
(二)搜索域并行處理原理
根據(jù)前文中的虛擬點(diǎn)個(gè)數(shù)的計(jì)算公式以及FPGA開發(fā)板的資源,設(shè)搜索步長(zhǎng)為Δ? ,N表示一次并行處理虛擬點(diǎn)的個(gè)數(shù),則完成一次DOA估計(jì)所需要的并行處理次數(shù)為KDOA。此處給出兩種陣列類型的并行處理次數(shù)計(jì)算公式。
若天線陣為均勻圓形天線陣列,當(dāng)陣列進(jìn)行二維DOA估計(jì)時(shí),KDOA的計(jì)算公式為:
同理,若天線陣為均勻十字叉陣列,當(dāng)陣列進(jìn)行二維DOA估計(jì)時(shí),KDOA的計(jì)算公式為:
對(duì)于上述KDOA的選取,需要根據(jù)FPGA開發(fā)板的資源而定,本設(shè)計(jì)采用KDOA=10。對(duì)于圓形陣列,當(dāng)搜索步長(zhǎng)為1°時(shí),一共要處理450個(gè)虛擬點(diǎn),因此需要將此過程循環(huán)45次。對(duì)于十字叉天線陣列,當(dāng)搜索步長(zhǎng)為1°時(shí),一共要處理360個(gè)虛擬點(diǎn),因此需要將此過程循環(huán)36次。
(三)硬件設(shè)計(jì)原理
測(cè)向系統(tǒng)的整體框圖如圖2所示,本文將待測(cè)的信號(hào)存入計(jì)算機(jī)中,并利用計(jì)算機(jī)計(jì)算時(shí)延補(bǔ)償點(diǎn)以及下變頻數(shù)據(jù),以上數(shù)據(jù)都通過PCIE方式寫入DDR3的固定地址中。通過DMA方式將DDR3的數(shù)據(jù)傳輸至FPGA中,并利用尋址方式分別寫入Memory_delay和Memory_data1~ Memory_dataN模塊中。Memory_delay中保存時(shí)延補(bǔ)償點(diǎn),Memory_data1~ Memory_dataN分別保存天線陣1~N陣元的數(shù)據(jù)。下一步將DDR3中下變頻的數(shù)據(jù)利用DMA傳輸方式傳出,并與已保存的Memory_data1~ Memory_dataN中的數(shù)據(jù)做乘法運(yùn)算,將結(jié)果經(jīng)過低通濾波器(LPF)進(jìn)行濾波,得到下變頻后的信號(hào)。然后將該信號(hào)輸入到循環(huán)并行處理模塊,該模塊中SP表示全部掃描點(diǎn)數(shù),Q表示第幾次循環(huán),其中Q=1,2,…,SP/M。M表示循環(huán)一次能夠處理的掃描點(diǎn),M的選擇主要與信號(hào)處理板的資源有關(guān),并且最好選擇能夠被SP整除的值。令每個(gè)掃描點(diǎn)處理模塊都有N路數(shù)據(jù),利用控制數(shù)據(jù)存儲(chǔ)模塊的讀使能將掃描點(diǎn)處的多路信號(hào)對(duì)齊并輸出,讀使能信號(hào)是由Memory_delay中的時(shí)延補(bǔ)償點(diǎn)通過Delay Control module將時(shí)延點(diǎn)轉(zhuǎn)換為讀使能信號(hào)Rd_enN_M。將第M個(gè)模塊輸出的N路數(shù)據(jù)SP_dataN_M通過加法器組求和并求其能量值。由于資源有限,因此在硬件設(shè)計(jì)中掃描點(diǎn)能量值運(yùn)算使用求信號(hào)和的絕對(duì)值來替代求信號(hào)和的平方。將最終求得的掃描點(diǎn)能量值E1~EM都保存在FIFO_energy中,當(dāng)所有掃描點(diǎn)的能量值全部計(jì)算完成后,控制FIFO_energy的讀使能,將數(shù)據(jù)通過DMA的方式傳輸?shù)紻DR3中,最后通過PCIE的方式上傳至計(jì)算機(jī)中進(jìn)行最大能量值搜索。
三、實(shí)驗(yàn)分析
一次并行處理的測(cè)試點(diǎn)越多,測(cè)向?qū)崟r(shí)性越好,但是還要考慮硬件資源的問題,在設(shè)計(jì)與調(diào)試過程中,根據(jù)經(jīng)驗(yàn),不應(yīng)占用全部資源,否則會(huì)使測(cè)向結(jié)果不穩(wěn)定。
本設(shè)計(jì)中的算法由Verilog編程語言設(shè)計(jì)并將其封裝成Custom IP核,如圖3(a)所示,將Custom IP核與DMA控制器、MicroBlaze核和DDR3控制器相連。然后我們利用Vivado軟件的Synthesis and Development以及Generate Bitstream完成系統(tǒng)設(shè)計(jì)。綜合將高級(jí)抽象電路描述轉(zhuǎn)換為低級(jí)描述,實(shí)現(xiàn)用于系統(tǒng)布局和布線。在上述兩個(gè)進(jìn)程中未報(bào)告任何錯(cuò)誤時(shí),通過Generate Bitstream函數(shù)生成Bitstream文件。最后將生成的比特流文件通過平臺(tái)電纜USB下載到FPGA板上,利用MicroBlaze核,通過SDK平臺(tái)植入C代碼指令控制整個(gè)測(cè)向系統(tǒng),測(cè)試結(jié)果在上位機(jī)顯示。假設(shè)天線陣列是一個(gè)16陣元均勻分布的圓陣,系統(tǒng)時(shí)鐘為200MHz,信號(hào)類型為BPSK調(diào)制信號(hào)。本設(shè)計(jì)并行處理一次的測(cè)試點(diǎn)為10個(gè),則經(jīng)過布局布線生成比特流后,能夠得到FPGA信號(hào)處理板資源利用率如圖3(b)所示,該占用比例不影響測(cè)向結(jié)果[6]。
以對(duì)稱的去中心陣元十字叉天線陣列為例,根據(jù)該設(shè)計(jì)給出16陣元的去中心十字叉天線陣列,需要改變一次測(cè)向循環(huán)的次數(shù),且預(yù)存的數(shù)據(jù)也按照十字叉天線陣列設(shè)計(jì)。利用vivado軟件自帶的仿真功能將測(cè)試結(jié)果進(jìn)行了記錄,并通過軟件給出了誤差曲線。假設(shè)測(cè)試點(diǎn)選取的是 ,則測(cè)向結(jié)果如圖4所示。
四、結(jié)語
本文設(shè)計(jì)一種并行結(jié)構(gòu)實(shí)現(xiàn)算法的硬件實(shí)現(xiàn)方案,通過Vivado軟件利用Verilog編程語言將該設(shè)計(jì)封裝成一個(gè)IP核,通過SDK平臺(tái)與C語言指令來控制數(shù)據(jù)搬移等功能。最終采用Xilinx公司的FPGA信號(hào)處理板完成該設(shè)計(jì)的驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,該算法在保證較高的測(cè)向精度的同時(shí)能夠完成系統(tǒng)的實(shí)時(shí)測(cè)向。通過實(shí)踐周的方式在兩個(gè)班級(jí)中進(jìn)行授課,通過課堂表現(xiàn)以及作業(yè)和考核的成績(jī)顯示,本次改革從根本上解決了學(xué)生對(duì)FPGA技術(shù)入門難的問題,也提高了教師的教學(xué)和科研能力。
參考文獻(xiàn)
[1]楊一峰.硬件輔助驗(yàn)證產(chǎn)品解讀之FPGA開發(fā)板vs原型驗(yàn)證系統(tǒng)[J].中國(guó)集成電路,2022,31(7):27-30+47.
[2]劉博,范玉進(jìn),張建軍.基于FPGA的多通道可編程DDC算法研究與實(shí)現(xiàn)[J].消費(fèi)電子,2021(8):21-22.
[3]趙英瀟,蘇陽.基于FPGA的多通道雷達(dá)數(shù)據(jù)回放系統(tǒng)設(shè)計(jì)[J].電子科技,2023,36(2):1-6+21.
[4]翁天恒,袁永春,周榕,等.基于FPGA的DDR4多通道控制器設(shè)計(jì)[J].電子測(cè)量技術(shù),2022,45(12):148-155.
[5]Jing LY,Zhang NM,He CB,et al.OTFS underwater acoustic communications based on passive time reversal[J].Applied Acoustics,2022,185:108386.
[6]劉海涵,呂衛(wèi)祥.基于時(shí)間反轉(zhuǎn)變換的動(dòng)目標(biāo)相參積累算法[J].現(xiàn)代防御技術(shù),2022,50(2):67-75.
基金項(xiàng)目:1.貴州省教育廳高等學(xué)??茖W(xué)研究項(xiàng)目“基于虛擬時(shí)反法的5G精確定位關(guān)鍵技術(shù)研究”(黔教技〔2022〕263號(hào));2.貴州省教育廳自然科學(xué)研究項(xiàng)目(黔教技〔2022〕029號(hào)、黔教合KY字[2021]022)