高 嵩,胥剑涛
(成都理工大学 信息科学与技术学院(网络安全学院、牛津布鲁克斯学院),四川 成都 610059)
相控阵天线是相控阵雷达的重要组成部分,其天线阵面上排列着许多天线阵元[1]。每一个天线阵元后都配置有移相器来改变阵元通道间的相位关系。在波束控制(下称“波控”)系统的控制下,改变天线阵元通道之间的幅度和相位关系可以快速地改变天线波束的形状以及波束的指向[2],波控系统的优良与否是衡量相控阵性能的重要标准之一[3-4]。
对于要求安全快速布相的产品来说,能够快速并行运算的FPGA 芯片是设计波控系统最好的选择[5]。但FPGA 存在难以实现浮点运算的问题[6],对于波控算法中三角函数的计算很不方便,现FPGA 实现波控算法的方式通常有两种:一是通过调用IP core CORDIC 计算的方法;二是通过查表的方法。以上两种方法中,方法一在FPGA中实现比较困难,在调用CORDIC 运算前,需要先将输入角度转换为16 bit 量化的相位值,且相位值需满足θ∈[-π,π],并且输出值的小数也难以直接代入公式计算,这种方法不仅浪费资源而且耗时长。而单一的查表法虽然结构简单,工作稳定,波束形成快速,但如若阵元数目过多或指向角精度要求过高,需要存储的码值太多,数据量太大,也难以实现在大型阵列高指向精度的场合[7]。张延曹等人使用直接查表法实现了对16 通道相控阵天线系统的控制[8]。但单一的查表法只对这种阵元数目少,指向精度不高的场合适用[9]。随后郭立俊提出了一种查表法与实时计算相结合的方法,这种方法虽然规避了FPGA 难以实现浮点运算的缺陷,但在设计中生成了多个ROM 表,增加了FPGA 资源占用率的同时也增加了系统功耗。航空航天产品对设备功耗要求很严格,增加设备的功耗等于降低了设备有效作战时间[10]。
因此本文以8×8 矩形相控阵天线为控制对象,提出一种查表与FPGA 计算相结合的优化型算法。由于三角函数的计算对FPGA 来说比较困难,因此有针对性地在MATLAB中生成方向角和俯仰角的三角函数样本,并在FPGA 算法设计中利用三角函数的诱导公式,减少了ROM 表数量的同时也缩减了储存空间。系统工作时,FPGA 所需要做的仅仅是根据上位机信号查表取数据做有限的运算,这种优化型方法更节约资源,速度快而且误差也相对小。
根据阵列天线理论,相邻两个阵元之间接收的信号存在由于路程差引起的相位差[11]:
式中:d 为两个天线阵元之间的距离;λ 为信号的波长,θ 为波束方向与两个天线阵元垂直平面之间的夹角[12]。反之,只需要改变阵内相邻阵元之间的相位差φ,就可以改变波束的最大指向角θ,即实现天线的波束扫描[13]。
矩形相控阵天线阵面坐标如图1 所示,阵面位于xoy平面,以方向角和俯仰角来表示目标所在的方向,其中θ 为俯仰角,范围为0°~90°,φ 为方向角,范围为0°~360°。
图1 相控阵天线阵面坐标图
图2 为坐标的xoy 平面,矩形天线阵面由M×N 个天线阵元组成,dx和dy分别是x 方向和y 方向的天线阵元间距。
图2 天线xoy 平面图
阵列天线中,相邻两阵元间的x 轴方向和y 轴方向的相位差分别为β′和α′[8]。以(m′,n′)阵元为参考阵元时,(m,n)阵元相对于参考阵元的移相码可由式(2)计算[14]:
其中:m=1,2,…,M-1;n=1,2,…,N-1。
其中λ=c/f,c 为 光速,f 为频率。
图3 为8×8 矩形相控阵天线的xoy 平面图。
图3 8×8 矩形天线阵面图
以8×8 矩形相控阵天线为控制对象,简要分析波控算法的计算过程。以左下角点O 为坐标原点,以原点(0,0)作为式(2)的(m′,n′),其余通道阵元的移相码都相对于O 点进行运算,可知:原点天线阵元O(0,0)=0·β′+0·α′;则天线阵元A(2,0)=2·β′+0·α′;B(0,2)=0·β′+2·α′;C(2,2)=2·β′+2·α′;显然:C(2,2)=A(2,0)+B(0,2)。
在计算整个阵列时,带有三角函数的β′和α′可以通过查表和运算得到,FPGA 只需要简单地计算出x 轴和y 轴上面的阵元移相码,其余阵元均可通过对应点相加得到。
根据天线阵面要求,对样本生成和FPGA 算法进行了设计优化。在样本生成前,分析式(3)、式(4)中含有2π可知其计算结果为弧度值,而要求的移相码为角度值,因此需要进行单位转换;其次,移相角度范围是0°~360°,而本设计采用的控制芯片为CETC13 所的NC-15359C-1418SD 和NC-15359C-1418SDM,两支路,6 位数控移相,因此需要将360°量化为6 bit的移相码,则1LSB=360/26=5.625°。具体单位转化及量化过程如下:
单位转化:由弧度转角度公式“角度值1°=360/2π”可知,角度值公式如下[15]:
同理,
量化:由β′(量化值)=β′(角度)/1LSB,6 bit 量化值公式如下:
同理,
根据量化后的公式,MATLAB 样本文件生成部分代码如图4 所示。
图4 样本生成MATLAB 部分代码
以图4 简要介绍采用MATLAB 生成三角函数样本的流程,俯仰角θ 以步进step 0.001 变化,为了减少FPGA计算时间和资源,将公式中的定值c、26一并乘入在样本中,之后再将样本值扩大并四舍五入取整生成coe 文件,并存入FPGA的ROM1中。扩大样本值是由于FPGA实现小数乘法很困难,无论使用CORDIC 或者DSP48E计算均比较复杂,并且这两种IP core 输出的小数数据格式也难以直接带入波控公式[8]。
同理把系统将输入的方向角φ 也以步进step 0.001变化,最后也以整数的形式生成正弦值和余弦值样本存入ROM中。但此处存在一个问题,由于方向角φ的范围为0°~360°,若正弦值和余弦值样本都以步进0.001 变化,ROM 表数据会达到720 000 个,若指向角精度要求更高,需要存储的码值将会成倍增加。
针对此问题,本文提出的优化算法部分代码如图5、图6 所示。
图5 优化算法正弦部分代码
图6 优化算法余弦部分代码
通过三角函数的诱导公式可知,只需要生成第一象限的样本值,便可以得到整个周期的三角函数值。通过优化算法可以将正弦函数样本和余弦函数样本的数据量都缩减为1/4 并在查表时共用一个ROM 表,减少ROM 表数量的同时数据量也从优化前的720 000 个缩减到90 000 个,减少了FPGA 芯片的LUT 和BRAM 资源占用率,降低整个波控系统的功耗。
根据优化型算法对算法模块进行了逻辑设计,FPGA算法模块逻辑设计框图如图7 所示。
图7 FPGA 算法模块设计框图
算法模块包括mul 模块、div 模块、add 模块和spi 模块。算法模块的输入为从上位机接收到俯仰角、方向角以及频率等参数。mul 模块中调用了Block Memory Generator ROM IP core 存储三角函数值,mul 模块的作用在于根据角度值进行查表取值,以及做乘法运算得到β′、α′和x 轴、y 轴上的基底值。div 模块用于接收mul 模块处理好的基底值x_part 和y_part,为数据进行除法截位操作,还原在MATLAB中的扩大操作并进行四舍五入。add 模块的输入数据为x_div 和y_div,该模块的主要功能是将还原后的基底值相加得到各个阵元通道的移相码,在程序中例化add 模块4 次,每一个模块计算两行通道的移相码,并行计算4 个add 模块,加快移相码计算速度,在得到各通道移相码后,根据数字移相器位数截位截取低6 bit 送入spi 模块进行spi 分发。T/R 组件和波控系统之间采用spi 接口连接,波控系统为主设备,T/R 组件作为从设备,spi 模块在程序中例化8 次,产生8 路spi 时钟,每路spi 时钟同时驱动4 路移相器,加快移相码分发速度。
算法模块具体工作流程如下:波控系统从上位机通过UART 接收到下发的俯仰角、方向角以及频率值等参数,收到参数后系统通过查表的方式获得方向角和俯仰角的三角函数值,根据式(3)、式(4)做乘法运算得到β′、α′,再根据式(2)分别乘上坐标值0~7 计算出阵列中x轴和y 轴上的基底值,还原在MATLAB中进行的扩大操作并进行四舍五入后,其他坐标的值可通过x、y 轴上的基底值两两相加得到,当所有天线阵元通道都计算完成后,根据数字移相器位数截位得到各个通道最终的移相码,最后将移相码通过spi 按照控制芯片顺序分发给T/R组件即可实现整个天线阵面的移相控制。
FPGA 开发基于Vivado2016.4,利用Vivado 自带的仿真工具Xsim 进行仿真。设定俯仰角为45°,方向角为30°,频率值为15.5 GHz。
仿真得到分发的移相码结果和MATLAB 计算得到的理论移相码如图8、图9 所示。
图8 Xsim 仿真结果
图9 MATLAB 计算结果
6 bit 数据out_xy_data_end 为波控系统最终通过spi分发给各天线通道的移相码,为了方便分析比较,命名方式设置为可与MATLAB 矩阵坐标对应。例如:Xsim中移相码out_78_data_end 为分发给阵面坐标(6,7)的移相码,对应MATLAB 生成的矩阵第7 行第8 列,其结果为53。通过对比,Xsim 仿真结果与MATLAB 计算结果无误差。
图10 为算法模块顶层仿真图。
图10 算法模块仿真图
波控系统为移相器提供了32 个独立的移相器控制信号(spi_data),8 个时钟信号(spi_clk)以及8 个锁存信号(spi_ld),一路spi 时钟同时驱动控制四路移相器,节约了接口资源,加快了布相速度。如图10 所示,在0.205 μs 时,read_ov 为高,表示系统接收完毕下发的参数;在2.325 μs时移相码计算完成开始通过spi 分发移相码;在6.345 μs时,spi_ld 拉低,移相码分发完成,完成了对天线阵面各阵元的控制。将仿真结果与类似文献对比发现[10],本文所设计的算法模块具有更快的移相码计算速度以及分发速度。仿真结果证明,根据优化型算法所设计的算法模块在保证控制准确性的同时也具有高效的计算速度和布相速度。
波控系统是相控阵雷达重要系统之一,在规定时间内完成移相码计算和移相码分发,控制天线波束快速扫描是波控系统主要的功能[16]。本文运用能快速并行运算的FPGA芯片设计波控系统,加快了移相码计算速度和布相速度,采用查表与FPGA 计算相结合的优化型波控算法,降低系统功耗的同时又解决了FPGA 难以实现浮点计算的问题。最终仿真结果证明了该方案的正确性和高效性,目前该方案已成功应用于某KU 宽带数据链相控阵天线系统中。