雷达和无线电系统从模拟信号处理逐渐发展到数字信号处理,促进了波束形成技术的发展,并由此带来了波束形成技术的革新。高精度的波束数字化处理能力,可以彻底改变未来的商用和军用雷达系统设计。
自适应波束形成算法采用浮点算法进行信号处理,通过同时发射多个点波束各自进行实时目标跟踪,可以提高雷达性能。
改进的格拉姆-施密特(MGS)矩阵分解(QRD)和权值回代算法(WBS)是雷达DSP芯片的重要算法,可以使雷达在抑制旁瓣、噪声和干扰的同时自适应波束形成。这些算法需要非常高的每秒浮点运算次数(FLOPS)。
Xilinx公司的FPGA芯片的浮点运算能力,比商用GPU、DSP和多核CPU芯片要高几个数量级。
HLS是Xilinx公司的Vivado®设计套件的一个标准工具,支持本地C语言编码设计。自适应波束形成的核心是一种浮点矩阵求逆算法,这种算法目前可通过本地C/C++语言或Xilinx公司的Vivado HLS SystemC语言编码设计。
本文关注的是一个复浮点函数,可变大小的改进的格拉姆-施密特(MGS)矩阵分解(QRD)和权值回代算法(WBS),复浮点函数大小为128×64。
一、引言
目前,大多数雷达都采用了某种类型的自适应数字波束形成技术。接收波束形成概念如图1所示。
图1 自适应数字波束形成
雷达设计占用的带宽越来越高,要求接收系统更加可靠地抑制以下几方面:一是噪声源干扰,二是目标以外的天线旁瓣,三是敌方干扰信号的干扰,四是新型雷达技术的宽带宽特性引起的“杂波”。
在定向控制每个天线阵列期间必须完成上述处理:分别处理、同时处理或者实时处理。在给定的时间范围内,通过单元级处理可以成功完成这些任务,即分别或同时对每个天线单元的接收信号进行数字化处理。
自适应数字波束形成是单元级处理的重要部分。本文重点介绍了自适应波束形成技术,以及如何采用Xilinx公司的FPGA芯片构建一种比传统雷达系统成本更低、结构更复杂、功耗更大、上市时间更短的波束捷变雷达系统。
利用本文叙述的技术和Xilinx公司的组件,通过计算复浮点函数的自适应权值,可以实现波束捷变雷达。这些权值基于前一个脉冲重复间隔(PRI)缓存的复杂接收信号样本子集。计算这些权值的挑战在于,需要进行复矩阵求逆,在接收下一个脉冲重复间隔数据之前解公式1。
需要一个确定的、低延迟的矩阵大小,该矩阵大小是雷达系统需求的函数。传统上,这种算法是由许多并行CPU芯片执行的,确保在下一个脉冲重复间隔之前完成浮点运算。
考虑到许多雷达/电子战系统的尺寸、重量和功率(SWaP)限制,CPU/GPU芯片不是完成这些运算的最佳选择。Xilinx公司的FPGA芯片采用的硬件较少,可以更有效地执行高并行的浮点算法。
Xilinx公司的FPGA芯片具有兼容性,雷达设计者可以通过兼容的I/O标准(例如JESD204B、SRIO、PCIe®等)处理大量的数据,然后实时计算FPGA芯片的自适应权值。需要求解的线性方程在如图1所示的QRD+WBS算法功能框图中,公式1的数学表达式为:
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。
图2 基于RTL和基于C语言的迭代研发时间
采用标准的数学函数,Vivado HLS加载了C/C++语言编程的线性代数函数库,通过HLS可以合成这些函数库,并优化结果。研发这些功能是为了让用户充分利用Vivado HLS的设计检索(包括loop unrolling和pipeline register insertion),使用户能够非常灵活地生成满足设计需求的硬件体系结构。
用户可以修改这些函数的源代码,这些功能作为设计工作的起点,在最终启用时有更大的灵活性。函数库包括以下功能和支持的数据类型(详见表1):
表1 Vivado HLS中的函数/数据类型
三、QRD和WBS算法
QRD将复矩阵A转换为:
Q:是一个大小(m,n)的正交矩阵
R:是大小(m,n)的上三角矩阵,或右三角矩阵。它称为三角形,下方的三角形值都为0。这样使求解x的运算速度很快。
为简单起见,MGS算法采用Octave或MATLAB®代码,如图3所示。
图3 MGS QRD算法
通过回代,解出x。
四、基于CPU和FPGA芯片的波束形成体系结构
当功能不适合单个设备时,后果可能非常严重,导致内存、接口、有效面积、集成时间、成本和功率的增加。
(一)多CPU芯片体系结构
当采用多个CPU芯片的老方法实现自适应波束形成时,可能会出现上述情况。通过QRD+WBS算法对16个通道进行波束形成大约需要3.5ms。基于CPU芯片的设计不仅不适合单个设备,它需要更深入的系统设计、认证和集成,且功耗很大。
论证的结果是,每个CPU芯片核需要250ms执行128×64浮点数的复杂QRD+WBS算法(这是保守估计,因为没有考虑内存存取和调度时间)。用250ms除以3.5ms,需要72个CPU芯片核执行QRD算法。CPU芯片设计时对系统设计者进行了限制,只预留了非常有限的一组内存和外部接口。
图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瓦。
图5 采用单个Virtex-7 FPGA芯片的自适应波束形成
在解决相同问题时,与VPX底板安装18个CPU芯片相比(如在多CPU芯片体系结构中叙述的那样),显然CPU芯片的功耗与FPGA芯片的功耗不匹配。
五、采用Vivado执行MGS QRD+WBS算法
Vivado HLS使任何算法都可以通过C/C++语言或SystemC语言编程,它为Xilinx公司的所有FPGA芯片的Vivado工具流,创建了一个灵活、可移植、可升级的核。设计流程如图6所示。
图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所示:
图7 算法的第一次结果
需要注意时钟周期和最差延迟。对于特定的运算,MGS QRD+WBS算法大约需要10ms得出结果。它采用DSP48芯片和RAM模块。对某些雷达系统而言,这种延迟是可以接受的。
(二)采用指令传递的结果
采用的指令证明了Vivado HLS的功能。只需简单将C语言代码中的一些FOR循环展开16倍,对RAM模块进行分区,设计者通过PIPELINE指令可以得出令人震惊的结果,如图8所示。采用C/C++语言修改矩阵大小很简单,但如果采用HDL作为设计语言,情况就并非如此。
图8 算法采用指令后的结果
Xilinx公司的FPGA芯片的纯DSP密度是该解决方案的重要指标。MGS QRD + WBS算法只采用了392个DSP48芯片。这为自适应波束形成和雷达DSP信号处理预留了很大空间,例如脉冲压缩、多普勒滤波和恒虚警率(CFAR)。
如图9所示,这是一部分C语言代码示例,重点是编码风格和指令。如果这段代码用C++语言编程,设计者可以调用内置的复杂数学函数库。当不需要进行浮点运算时,Vivado HLS也支持定点运算。
图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浮点函数。
表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芯片。
原文始发于微信公众号(雷达通信电子战)