雷達(dá)和無(wú)線電系統(tǒng)從模擬信號(hào)處理逐漸發(fā)展到數(shù)字信號(hào)處理,促進(jìn)了波束形成技術(shù)的發(fā)展,并由此帶來(lái)了波束形成技術(shù)的革新。高精度的波束數(shù)字化處理能力,可以徹底改變未來(lái)的商用和軍用雷達(dá)系統(tǒng)設(shè)計(jì)。
自適應(yīng)波束形成算法采用浮點(diǎn)算法進(jìn)行信號(hào)處理,通過(guò)同時(shí)發(fā)射多個(gè)點(diǎn)波束各自進(jìn)行實(shí)時(shí)目標(biāo)跟蹤,可以提高雷達(dá)性能。
改進(jìn)的格拉姆-施密特(MGS)矩陣分解(QRD)和權(quán)值回代算法(WBS)是雷達(dá)DSP芯片的重要算法,可以使雷達(dá)在抑制旁瓣、噪聲和干擾的同時(shí)自適應(yīng)波束形成。這些算法需要非常高的每秒浮點(diǎn)運(yùn)算次數(shù)(FLOPS)。
Xilinx公司的FPGA芯片的浮點(diǎn)運(yùn)算能力,比商用GPU、DSP和多核CPU芯片要高幾個(gè)數(shù)量級(jí)。
HLS是Xilinx公司的Vivado®設(shè)計(jì)套件的一個(gè)標(biāo)準(zhǔn)工具,支持本地C語(yǔ)言編碼設(shè)計(jì)。自適應(yīng)波束形成的核心是一種浮點(diǎn)矩陣求逆算法,這種算法目前可通過(guò)本地C/C++語(yǔ)言或Xilinx公司的Vivado HLS SystemC語(yǔ)言編碼設(shè)計(jì)。
本文關(guān)注的是一個(gè)復(fù)浮點(diǎn)函數(shù),可變大小的改進(jìn)的格拉姆-施密特(MGS)矩陣分解(QRD)和權(quán)值回代算法(WBS),復(fù)浮點(diǎn)函數(shù)大小為128x64。
一、引言
目前,大多數(shù)雷達(dá)都采用了某種類(lèi)型的自適應(yīng)數(shù)字波束形成技術(shù)。接收波束形成概念如圖1所示。
圖1、自適應(yīng)數(shù)字波束形成
雷達(dá)設(shè)計(jì)占用的帶寬越來(lái)越高,要求接收系統(tǒng)更加可靠地抑制以下幾方面:一是噪聲源干擾,二是目標(biāo)以外的天線旁瓣,三是敵方干擾信號(hào)的干擾,四是新型雷達(dá)技術(shù)的寬帶寬特性引起的“雜波”。
在定向控制每個(gè)天線陣列期間必須完成上述處理:分別處理、同時(shí)處理或者實(shí)時(shí)處理。在給定的時(shí)間范圍內(nèi),通過(guò)單元級(jí)處理可以成功完成這些任務(wù),即分別或同時(shí)對(duì)每個(gè)天線單元的接收信號(hào)進(jìn)行數(shù)字化處理。
自適應(yīng)數(shù)字波束形成是單元級(jí)處理的重要部分。本文重點(diǎn)介紹了自適應(yīng)波束形成技術(shù),以及如何采用Xilinx公司的FPGA芯片構(gòu)建一種比傳統(tǒng)雷達(dá)系統(tǒng)成本更低、結(jié)構(gòu)更復(fù)雜、功耗更大、上市時(shí)間更短的波束捷變雷達(dá)系統(tǒng)。
利用本文敘述的技術(shù)和Xilinx公司的組件,通過(guò)計(jì)算復(fù)浮點(diǎn)函數(shù)的自適應(yīng)權(quán)值,可以實(shí)現(xiàn)波束捷變雷達(dá)。這些權(quán)值基于前一個(gè)脈沖重復(fù)間隔(PRI)緩存的復(fù)雜接收信號(hào)樣本子集。計(jì)算這些權(quán)值的挑戰(zhàn)在于,需要進(jìn)行復(fù)矩陣求逆,在接收下一個(gè)脈沖重復(fù)間隔數(shù)據(jù)之前解公式1。
需要一個(gè)確定的、低延遲的矩陣大小,該矩陣大小是雷達(dá)系統(tǒng)需求的函數(shù)。傳統(tǒng)上,這種算法是由許多并行CPU芯片執(zhí)行的,確保在下一個(gè)脈沖重復(fù)間隔之前完成浮點(diǎn)運(yùn)算。
考慮到許多雷達(dá)/電子戰(zhàn)系統(tǒng)的尺寸、重量和功率(SWaP)限制,CPU/GPU芯片不是完成這些運(yùn)算的最佳選擇。Xilinx公司的FPGA芯片采用的硬件較少,可以更有效地執(zhí)行高并行的浮點(diǎn)算法。
Xilinx公司的FPGA芯片具有兼容性,雷達(dá)設(shè)計(jì)者可以通過(guò)兼容的I/O標(biāo)準(zhǔn)(例如JESD204B、SRIO、PCIe®等)處理大量的數(shù)據(jù),然后實(shí)時(shí)計(jì)算FPGA芯片的自適應(yīng)權(quán)值。需要求解的線性方程在如圖1所示的QRD+WBS算法功能框圖中,公式1的數(shù)學(xué)表達(dá)式為:
x=求解的復(fù)向量,變成自適應(yīng)權(quán)值,大小(n,1)
b=期望響應(yīng)或?qū)蚴噶浚笮?m,1)
為了求解x,不能直接用b除以A。改進(jìn)的格拉姆-施密特(MGS)矩陣分解(QRD)算法需要計(jì)算矩陣求逆。改進(jìn)的格拉姆-施密特(MGS)矩陣分解(QRD)算法必須采用浮點(diǎn)運(yùn)算,以保持自適應(yīng)權(quán)值的精度。
二、Vivado HLS概述
Vivado HLS工具采用C/C++語(yǔ)言作為硬件設(shè)計(jì)的源程序,將驗(yàn)證時(shí)間減少幾個(gè)數(shù)量級(jí),顯著加快了運(yùn)算速度。針對(duì)硬件的目標(biāo)算法,通常需要輸入大量的測(cè)試向量集,以確保正確的系統(tǒng)響應(yīng)。
采用RTL和基于事件的RTL模擬器時(shí),可能需要數(shù)小時(shí)甚至數(shù)天才能完成模擬。然而,采用C/C++語(yǔ)言時(shí),模擬速度可以加快10000倍,能夠在幾秒或者幾分鐘內(nèi)完成模擬。每天通過(guò)更多的交互設(shè)計(jì),設(shè)計(jì)者能夠以更快的驗(yàn)證時(shí)間加速研發(fā)。如圖2所示。
除了驗(yàn)證時(shí)間更快之外,Vivado HLS還支持高階設(shè)計(jì)檢索,用戶可以在不修改源代碼的情況下,快速檢索多個(gè)硬件體系結(jié)構(gòu)的不同區(qū)域并進(jìn)行性能權(quán)衡。這可以通過(guò)合成指令實(shí)現(xiàn),例如loop unrolling和pipeline insertion。
圖2、基于RTL和基于C語(yǔ)言的迭代研發(fā)時(shí)間
采用標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù),Vivado HLS加載了C/C++語(yǔ)言編程的線性代數(shù)函數(shù)庫(kù),通過(guò)HLS可以合成這些函數(shù)庫(kù),并優(yōu)化結(jié)果。研發(fā)這些功能是為了讓用戶充分利用Vivado HLS的設(shè)計(jì)檢索(包括loop unrolling和pipeline register insertion),使用戶能夠非常靈活地生成滿足設(shè)計(jì)需求的硬件體系結(jié)構(gòu)。
用戶可以修改這些函數(shù)的源代碼,這些功能作為設(shè)計(jì)工作的起點(diǎn),在最終啟用時(shí)有更大的靈活性。函數(shù)庫(kù)包括以下功能和支持的數(shù)據(jù)類(lèi)型(詳見(jiàn)表1):
表1、Vivado HLS中的函數(shù)/數(shù)據(jù)類(lèi)型
三、QRD和WBS算法
QRD將復(fù)矩陣A轉(zhuǎn)換為:Q:是一個(gè)大小(m,n)的正交矩陣
R:是大小(m,n)的上三角矩陣,或右三角矩陣。它稱為三角形,下方的三角形值都為0。這樣使求解x的運(yùn)算速度很快。
為簡(jiǎn)單起見(jiàn),MGS算法采用Octave或MATLAB®代碼,如圖3所示。
圖3、MGS QRD算法
通過(guò)回代,解出x。
四、基于CPU和FPGA芯片的波束形成體系結(jié)構(gòu)
當(dāng)功能不適合單個(gè)設(shè)備時(shí),后果可能非常嚴(yán)重,導(dǎo)致內(nèi)存、接口、有效面積、集成時(shí)間、成本和功率的增加。
(一)多CPU芯片體系結(jié)構(gòu)
當(dāng)采用多個(gè)CPU芯片的老方法實(shí)現(xiàn)自適應(yīng)波束形成時(shí),可能會(huì)出現(xiàn)上述情況。通過(guò)QRD+WBS算法對(duì)16個(gè)通道進(jìn)行波束形成大約需要3.5ms。基于CPU芯片的設(shè)計(jì)不僅不適合單個(gè)設(shè)備,它需要更深入的系統(tǒng)設(shè)計(jì)、認(rèn)證和集成,且功耗很大。
論證的結(jié)果是,每個(gè)CPU芯片核需要250ms執(zhí)行128×64浮點(diǎn)數(shù)的復(fù)雜QRD+WBS算法(這是保守估計(jì),因?yàn)闆](méi)有考慮內(nèi)存存取和調(diào)度時(shí)間)。用250ms除以3.5ms,需要72個(gè)CPU芯片核執(zhí)行QRD算法。CPU芯片設(shè)計(jì)時(shí)對(duì)系統(tǒng)設(shè)計(jì)者進(jìn)行了限制,只預(yù)留了非常有限的一組內(nèi)存和外部接口。
圖4、采用18個(gè)CPU芯片(72核)的自適應(yīng)波束形成
6個(gè)CPU芯片板(每個(gè)芯片板安裝3個(gè)CPU 芯片,每個(gè)CPU芯片有4核,合計(jì)72核),加上一個(gè)波束形成主板,總共7個(gè)板,每個(gè)板功耗約200瓦,總功耗約1400瓦。當(dāng)然,可以采用更高的CPU芯片時(shí)鐘頻率(功耗更大),但是CPU芯片的功耗仍沒(méi)有FPGA芯片的功耗好。如圖4所示,這是一個(gè)CPU芯片的體系結(jié)構(gòu),需要18個(gè)CPU芯片。
(二)Xilinx公司的單個(gè)FPGA芯片體系結(jié)構(gòu)
Xilinx公司的FPGA芯片很容易安裝在Virtex7 FPGA芯片組中。單個(gè)FPGA芯片安裝在電路板上,該電路板還安裝了外部?jī)?nèi)存和其他輔助功能裝置,單個(gè)電路板的總功耗約75瓦。
圖5、采用單個(gè)Virtex-7 FPGA芯片的自適應(yīng)波束形成
在解決相同問(wèn)題時(shí),與VPX底板安裝18個(gè)CPU芯片相比(如在多CPU芯片體系結(jié)構(gòu)中敘述的那樣),顯然CPU芯片的功耗與FPGA芯片的功耗不匹配。
五、采用Vivado執(zhí)行MGS QRD+WBS算法
Vivado HLS使任何算法都可以通過(guò)C/C++語(yǔ)言或SystemC語(yǔ)言編程,它為Xilinx公司的所有FPGA芯片的Vivado工具流,創(chuàng)建了一個(gè)靈活、可移植、可升級(jí)的核。設(shè)計(jì)流程如圖6所示。
圖6、自適應(yīng)波束形成的設(shè)計(jì)流程
由于MATLAB可以編譯C/ C++語(yǔ)言,稱為MEX (MATLAB可執(zhí)行程序),用戶可以調(diào)用C/ C++代碼,而不用調(diào)用等效的MATLAB函數(shù)。這意味著只有一個(gè)主模型和代碼,大大減少了測(cè)試和集成的設(shè)計(jì)。設(shè)計(jì)時(shí)間通常為幾個(gè)月到幾天,與編寫(xiě)VHDL/Verilog代碼相比,命令集減少了。
設(shè)計(jì)時(shí)間的減少源自以下兩個(gè)方面:
1. 通過(guò)可執(zhí)行文件運(yùn)行的C/ C++語(yǔ)言模擬,只需要幾秒鐘就可以驗(yàn)證設(shè)計(jì)的反應(yīng)時(shí)間和數(shù)值。門(mén)級(jí)RTL模擬是迭代的,速度慢10000倍。因此,一旦發(fā)現(xiàn)錯(cuò)誤需要立即糾正,然后在RTL中重新模擬。
這種循環(huán)甚至?xí)?dǎo)致最簡(jiǎn)單的設(shè)計(jì)也會(huì)影響成本和進(jìn)度。Vivado HLS的設(shè)計(jì)第一次是正確的。由于加快了系統(tǒng)集成時(shí)間,在設(shè)計(jì)階段更容易盡早發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤。
2. 采用C/ C++語(yǔ)言或SystemC語(yǔ)言模型設(shè)計(jì),這意味著設(shè)計(jì)總是可移植、靈活和可升級(jí)的。設(shè)計(jì)者不會(huì)拘泥于特定的FPGA芯片或芯片組。
用戶可以立即更換FPGA芯片空間,為這個(gè)設(shè)計(jì)挑選最適合的芯片(不需要猜測(cè)),因?yàn)镠LS工具的輸出公布了PFGA芯片的時(shí)鐘、延遲和資源占用。
(一)最初的通道結(jié)果
VivadoHLS工具的輸出結(jié)果可以在幾秒鐘內(nèi)顯示出來(lái),如圖7所示:
圖7、算法的第一次結(jié)果
需要注意時(shí)鐘周期和最差延遲。對(duì)于特定的運(yùn)算,MGS QRD+WBS算法大約需要10ms得出結(jié)果。它采用DSP48芯片和RAM模塊。對(duì)某些雷達(dá)系統(tǒng)而言,這種延遲是可以接受的。
(二)采用指令傳遞的結(jié)果
采用的指令證明了Vivado HLS的功能。只需簡(jiǎn)單將C語(yǔ)言代碼中的一些FOR循環(huán)展開(kāi)16倍,對(duì)RAM模塊進(jìn)行分區(qū),設(shè)計(jì)者通過(guò)PIPELINE指令可以得出令人震驚的結(jié)果,如圖8所示。采用C/C++語(yǔ)言修改矩陣大小很簡(jiǎn)單,但如果采用HDL作為設(shè)計(jì)語(yǔ)言,情況就并非如此。
圖8、算法采用指令后的結(jié)果
Xilinx公司的FPGA芯片的純DSP密度是該解決方案的重要指標(biāo)。MGS QRD + WBS算法只采用了392個(gè)DSP48芯片。這為自適應(yīng)波束形成和雷達(dá)DSP信號(hào)處理預(yù)留了很大空間,例如脈沖壓縮、多普勒濾波和恒虛警率(CFAR)。
如圖9所示,這是一部分C語(yǔ)言代碼示例,重點(diǎn)是編碼風(fēng)格和指令。如果這段代碼用C++語(yǔ)言編程,設(shè)計(jì)者可以調(diào)用內(nèi)置的復(fù)雜數(shù)學(xué)函數(shù)庫(kù)。當(dāng)不需要進(jìn)行浮點(diǎn)運(yùn)算時(shí),Vivado HLS也支持定點(diǎn)運(yùn)算。
圖9、顯示編碼風(fēng)格和指令的C語(yǔ)言代碼示例
由于采用C/C++語(yǔ)言設(shè)計(jì),因此更改矩陣的大小非常簡(jiǎn)單。采用VHDL/Verilog人工編碼是不現(xiàn)實(shí)的。Vivado HLS還支持多種接口,例如FIFO、RAM模塊、AXI和各種信號(hào)交換接口。芯片核也有全核控制的時(shí)鐘,同步復(fù)位,開(kāi)始,完成和空閑信號(hào)。
六、結(jié)果
Virtex-7 1140T FPGA芯片的Vivado HLS軟件的結(jié)果匯總在表2中。該設(shè)計(jì)是MGS QRD+WBS算法芯片核,支持最多128個(gè)變量行和最多64個(gè)變量列。
采用Virtex-7 FPGA芯片的系統(tǒng)成本比采用ARM-A9 CPU芯片的系統(tǒng)成本低大約12.5倍。如表2所示,采用Xilinx公司的Vivado HLS工具,可以在3.3 ms內(nèi)處理128×64浮點(diǎn)函數(shù)。
表2、MGS QRD+WBS算法比較
在667 MHz的ARM Cortex-A9芯片上執(zhí)行同樣的代碼,會(huì)產(chǎn)生250ms的延遲。這種比較凸顯了一個(gè)事實(shí),即Xilinx公司有一套滿足一系列設(shè)計(jì)需求的完備的可編程邏輯組合,從低延遲解決方案到采用ARM A9處理器的高度集成的Zynq-7000 APSoC解決方案。
用戶采用Vivado HLS,無(wú)需通過(guò)長(zhǎng)時(shí)間的RTL模擬,就可以快速更換設(shè)備、區(qū)域、延遲和時(shí)鐘頻率的空間。采用C/ C++語(yǔ)言,可以將代碼無(wú)縫鏈接和無(wú)限制地從Xilinx公司的可編程邏輯組合移植到Zynq-7000 AP SoC。
該設(shè)計(jì)采用了三個(gè)指令:unrolling、pipelining和RAM模塊分區(qū)。該設(shè)計(jì)大約4小時(shí)完成,需要對(duì)模擬數(shù)據(jù)進(jìn)行多次算法模擬。該設(shè)計(jì)如果采用VHDL/Verilog人工編碼,并進(jìn)行RTL驗(yàn)證,可能需要幾周甚至幾個(gè)月的時(shí)間,取決于設(shè)計(jì)者的技能。
七、結(jié)論
本文論述了Xilinx公司的FPGA芯片可以采用Vivado HLS在C/C++語(yǔ)言中編程,解決了所有雷達(dá)或無(wú)線系統(tǒng)面臨的一項(xiàng)最復(fù)雜的挑戰(zhàn):采用MGS QRD+WBS算法進(jìn)行復(fù)矩陣求逆。并行浮點(diǎn)運(yùn)算和本地C語(yǔ)言開(kāi)發(fā)的好處顯而易見(jiàn)。
本地C語(yǔ)言設(shè)計(jì)的HLS優(yōu)勢(shì),使Xilinx公司的FPGA芯片的性能和低功耗,優(yōu)于所有FPGA芯片競(jìng)爭(zhēng)對(duì)手和CPU/DSP/GPU芯片。Xilinx公司的7系列FPGA芯片(及以上產(chǎn)品),采用了先進(jìn)的Vivado和HLS設(shè)計(jì)流程,各個(gè)方面都優(yōu)于GPU、DSP和CPU芯片。
本文來(lái)源Xilinx手冊(cè),屬于用戶翻譯內(nèi)容,供大家參考。