天天看點

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

雷達和無線電系統從模拟信号處理逐漸發展到數字信号處理,促進了波束形成技術的發展,并由此帶來了波束形成技術的革新。高精度的波束數字化處理能力,可以徹底改變未來的商用和軍用雷達系統設計。

自适應波束形成算法采用浮點算法進行信号處理,通過同時發射多個點波束各自進行實時目标跟蹤,可以提高雷達性能。

改進的格拉姆-施密特(MGS)矩陣分解(QRD)和權值回代算法(WBS)是雷達DSP晶片的重要算法,可以使雷達在抑制旁瓣、噪聲和幹擾的同時自适應波束形成。這些算法需要非常高的每秒浮點運算次數(FLOPS)。

Xilinx公司的FPGA晶片的浮點運算能力,比商用GPU、DSP和多核CPU晶片要高幾個數量級。

HLS是Xilinx公司的Vivado®設計套件的一個标準工具,支援本地C語言編碼設計。自适應波束形成的核心是一種浮點矩陣求逆算法,這種算法目前可通過本地C/C++語言或Xilinx公司的Vivado HLS SystemC語言編碼設計。

本文關注的是一個複浮點函數,可變大小的改進的格拉姆-施密特(MGS)矩陣分解(QRD)和權值回代算法(WBS),複浮點函數大小為128x64。

一、引言

目前,大多數雷達都采用了某種類型的自适應數字波束形成技術。接收波束形成概念如圖1所示。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖1 自适應數字波束形成

雷達設計占用的帶寬越來越高,要求接收系統更加可靠地抑制以下幾方面:一是噪聲源幹擾,二是目标以外的天線旁瓣,三是敵方幹擾信号的幹擾,四是新型雷達技術的寬帶寬特性引起的“雜波”。

在定向控制每個天線陣列期間必須完成上述處理:分别處理、同時處理或者實時處理。在給定的時間範圍内,通過單元級處理可以成功完成這些任務,即分别或同時對每個天線單元的接收信号進行數字化處理。

自适應數字波束形成是單元級處理的重要部分。本文重點介紹了自适應波束形成技術,以及如何采用Xilinx公司的FPGA晶片建構一種比傳統雷達系統成本更低、結構更複雜、功耗更大、上市時間更短的波束捷變雷達系統。

利用本文叙述的技術和Xilinx公司的元件,通過計算複浮點函數的自适應權值,可以實作波束捷變雷達。這些權值基于前一個脈沖重複間隔(PRI)緩存的複雜接收信号樣本子集。計算這些權值的挑戰在于,需要進行複矩陣求逆,在接收下一個脈沖重複間隔資料之前解公式1。

需要一個确定的、低延遲的矩陣大小,該矩陣大小是雷達系統需求的函數。傳統上,這種算法是由許多并行CPU晶片執行的,確定在下一個脈沖重複間隔之前完成浮點運算。

考慮到許多雷達/電子戰系統的尺寸、重量和功率(SWaP)限制,CPU/GPU晶片不是完成這些運算的最佳選擇。Xilinx公司的FPGA晶片采用的硬體較少,可以更有效地執行高并行的浮點算法。

Xilinx公司的FPGA晶片具有相容性,雷達設計者可以通過相容的I/O标準(例如JESD204B、SRIO、PCIe®等)處理大量的資料,然後實時計算FPGA晶片的自适應權值。需要求解的線性方程在如圖1所示的QRD+WBS算法功能框圖中,公式1的數學表達式為:

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

A=複矩陣,大小(m,n)m ≥ n;都是接收樣本

x=求解的複向量,變成自适應權值,大小(n,1)

b=期望響應或導向矢量,大小(m,1)

為了求解x,不能直接用b除以A。改進的格拉姆-施密特(MGS)矩陣分解(QRD)算法需要計算矩陣求逆。改進的格拉姆-施密特(MGS)矩陣分解(QRD)算法必須采用浮點運算,以保持自适應權值的精度。

二、Vivado HLS概述

Vivado HLS工具采用C/C++語言作為硬體設計的源程式,将驗證時間減少幾個數量級,顯著加快了運算速度。針對硬體的目标算法,通常需要輸入大量的測試向量集,以確定正确的系統響應。

采用RTL和基于事件的RTL模拟器時,可能需要數小時甚至數天才能完成模拟。然而,采用C/C++語言時,模拟速度可以加快10000倍,能夠在幾秒或者幾分鐘内完成模拟。每天通過更多的互動設計,設計者能夠以更快的驗證時間加速研發。如圖2所示。

除了驗證時間更快之外,Vivado HLS還支援高階設計檢索,使用者可以在不修改源代碼的情況下,快速檢索多個硬體體系結構的不同區域并進行性能權衡。這可以通過合成指令實作,例如loop unrolling和pipeline insertion。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖2 基于RTL和基于C語言的疊代研發時間

采用标準的數學函數,Vivado HLS加載了C/C++語言程式設計的線性代數函數庫,通過HLS可以合成這些函數庫,并優化結果。研發這些功能是為了讓使用者充分利用Vivado HLS的設計檢索(包括loop unrolling和pipeline register insertion),使使用者能夠非常靈活地生成滿足設計需求的硬體體系結構。

使用者可以修改這些函數的源代碼,這些功能作為設計工作的起點,在最終啟用時有更大的靈活性。函數庫包括以下功能和支援的資料類型(詳見表1):

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

表1 Vivado HLS中的函數/資料類型

三、QRD和WBS算法

QRD将複矩陣A轉換為:

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

Q:是一個大小(m,n)的正交矩陣

R:是大小(m,n)的上三角矩陣,或右三角矩陣。它稱為三角形,下方的三角形值都為0。這樣使求解x的運算速度很快。

為簡單起見,MGS算法采用Octave或MATLAB®代碼,如圖3所示。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖3 MGS QRD算法

通過回代,解出x。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

四、基于CPU和FPGA晶片的波束形成體系結構

當功能不适合單個裝置時,後果可能非常嚴重,導緻記憶體、接口、有效面積、內建時間、成本和功率的增加。

(一)多CPU晶片體系結構

當采用多個CPU晶片的老方法實作自适應波束形成時,可能會出現上述情況。通過QRD+WBS算法對16個通道進行波束形成大約需要3.5ms。基于CPU晶片的設計不僅不适合單個裝置,它需要更深入的系統設計、認證和內建,且功耗很大。

論證的結果是,每個CPU晶片核需要250ms執行128×64浮點數的複雜QRD+WBS算法(這是保守估計,因為沒有考慮記憶體存取和排程時間)。用250ms除以3.5ms,需要72個CPU晶片核執行QRD算法。CPU晶片設計時對系統設計者進行了限制,隻預留了非常有限的一組記憶體和外部接口。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖4 采用18個CPU晶片(72核)的自适應波束形成

6個CPU晶片闆(每個晶片闆安裝3個CPU 晶片,每個CPU晶片有4核,合計72核),加上一個波束形成主機闆,總共7個闆,每個闆功耗約200瓦,總功耗約1400瓦。當然,可以采用更高的CPU晶片時鐘頻率(功耗更大),但是CPU晶片的功耗仍沒有FPGA晶片的功耗好。如圖4所示,這是一個CPU晶片的體系結構,需要18個CPU晶片。

(二)Xilinx公司的單個FPGA晶片體系結構

Xilinx公司的FPGA晶片很容易安裝在Virtex7 FPGA晶片組中。單個FPGA晶片安裝在電路闆上,該電路闆還安裝了外部記憶體和其他輔助功能裝置,單個電路闆的總功耗約75瓦。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖5 采用單個Virtex-7 FPGA晶片的自适應波束形成

在解決相同問題時,與VPX底闆安裝18個CPU晶片相比(如在多CPU晶片體系結構中叙述的那樣),顯然CPU晶片的功耗與FPGA晶片的功耗不比對。

五、采用Vivado執行MGS QRD+WBS算法

Vivado HLS使任何算法都可以通過C/C++語言或SystemC語言程式設計,它為Xilinx公司的所有FPGA晶片的Vivado工具流,建立了一個靈活、可移植、可更新的核。設計流程如圖6所示。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖6 自适應波束形成的設計流程

由于MATLAB可以編譯C/ C++語言,稱為MEX (MATLAB可執行程式),使用者可以調用C/ C++代碼,而不用調用等效的MATLAB函數。這意味着隻有一個主模型和代碼,大大減少了測試和內建的設計。設計時間通常為幾個月到幾天,與編寫VHDL/Verilog代碼相比,指令集減少了。

設計時間的減少源自以下兩個方面:

1. 通過可執行檔案運作的C/ C++語言模拟,隻需要幾秒鐘就可以驗證設計的反應時間和數值。門級RTL模拟是疊代的,速度慢10000倍。是以,一旦發現錯誤需要立即糾正,然後在RTL中重新模拟。

這種循環甚至會導緻最簡單的設計也會影響成本和進度。Vivado HLS的設計第一次是正确的。由于加快了系統內建時間,在設計階段更容易盡早發現設計錯誤。

2. 采用C/ C++語言或SystemC語言模型設計,這意味着設計總是可移植、靈活和可更新的。設計者不會拘泥于特定的FPGA晶片或晶片組。

使用者可以立即更換FPGA晶片空間,為這個設計挑選最适合的晶片(不需要猜測),因為HLS工具的輸出公布了PFGA晶片的時鐘、延遲和資源占用。

(一)最初的通道結果

VivadoHLS工具的輸出結果可以在幾秒鐘内顯示出來,如圖7所示:

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖7 算法的第一次結果

需要注意時鐘周期和最差延遲。對于特定的運算,MGS QRD+WBS算法大約需要10ms得出結果。它采用DSP48晶片和RAM子產品。對某些雷達系統而言,這種延遲是可以接受的。

(二)采用指令傳遞的結果

采用的指令證明了Vivado HLS的功能。隻需簡單将C語言代碼中的一些FOR循環展開16倍,對RAM子產品進行分區,設計者通過PIPELINE指令可以得出令人震驚的結果,如圖8所示。采用C/C++語言修改矩陣大小很簡單,但如果采用HDL作為設計語言,情況就并非如此。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖8 算法采用指令後的結果

Xilinx公司的FPGA晶片的純DSP密度是該解決方案的重要名額。MGS QRD + WBS算法隻采用了392個DSP48晶片。這為自适應波束形成和雷達DSP信号處理預留了很大空間,例如脈沖壓縮、多普勒濾波和恒虛警率(CFAR)。

如圖9所示,這是一部分C語言代碼示例,重點是編碼風格和指令。如果這段代碼用C++語言程式設計,設計者可以調用内置的複雜數學函數庫。當不需要進行浮點運算時,Vivado HLS也支援定點運算。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

圖9 顯示編碼風格和指令的C語言代碼示例

由于采用C/C++語言設計,是以更改矩陣的大小非常簡單。采用VHDL/Verilog人工編碼是不現實的。Vivado HLS還支援多種接口,例如FIFO、RAM子產品、AXI和各種信号交換接口。晶片核也有全核控制的時鐘,同步複位,開始,完成和空閑信号。

六、結果

Virtex-7 1140T FPGA晶片的Vivado HLS軟體的結果彙總在表2中。該設計是MGS QRD+WBS算法晶片核,支援最多128個變量行和最多64個變量列。

采用Virtex-7 FPGA晶片的系統成本比采用ARM-A9 CPU晶片的系統成本低大約12.5倍。如表2所示,采用Xilinx公司的Vivado HLS工具,可以在3.3 ms内處理128×64浮點函數。

BODY background=自适應大小_雷達自适應波束形成:基于FPGA的QRD+WBS算法一、引言二、Vivado HLS概述三、QRD和WBS算法四、基于CPU和FPGA晶片的波束形成體系結構六、結果

表2 MGS QRD+WBS算法比較

在667 MHz的ARM Cortex-A9晶片上執行同樣的代碼,會産生250ms的延遲。這種比較凸顯了一個事實,即Xilinx公司有一套滿足一系列設計需求的完備的可程式設計邏輯組合,從低延遲解決方案到采用ARM A9處理器的高度內建的Zynq-7000 APSoC解決方案。

使用者采用Vivado HLS,無需通過長時間的RTL模拟,就可以快速更換裝置、區域、延遲和時鐘頻率的空間。采用C/ C++語言,可以将代碼無縫連結和無限制地從Xilinx公司的可程式設計邏輯組合移植到Zynq-7000 AP SoC。

該設計采用了三個指令:unrolling、pipelining和RAM子產品分區。該設計大約4小時完成,需要對模拟資料進行多次算法模拟。該設計如果采用VHDL/Verilog人工編碼,并進行RTL驗證,可能需要幾周甚至幾個月的時間,取決于設計者的技能。

七、結論

本文論述了Xilinx公司的FPGA晶片可以采用Vivado HLS在C/C++語言中程式設計,解決了所有雷達或無線系統面臨的一項最複雜的挑戰:采用MGS QRD+WBS算法進行複矩陣求逆。并行浮點運算和本地C語言開發的好處顯而易見。

本地C語言設計的HLS優勢,使Xilinx公司的FPGA晶片的性能和低功耗,優于所有FPGA晶片競争對手和CPU/DSP/GPU晶片。Xilinx公司的7系列FPGA晶片(及以上産品),采用了先進的Vivado和HLS設計流程,各個方面都優于GPU、DSP和CPU晶片。

繼續閱讀