1 近场聚焦多波束形成
成像声纳[16]往往工作在近场。在近场范围内,声波近似为球面波,指向性是距离的函数,所以必须作近场聚焦进行校正[711]。本文采用所有波束都聚焦的方法,提前计算好聚焦在不同距离的补偿相位并存储在存储器中,以供波束形成时调用。近场聚集多波束形成示意图如图1所示。

图1 近场聚集多波束形成示意图
根据参考文献[11],近场条件为:

其中,λ为波长,R为圆阵的半径。
以聚焦在R0距离(R0为聚焦面到圆心的距离)、波束预成方向为θi为例,均匀半圆阵由180个相同的阵元构成。波束输出可表示成:

其中,xk(t)是第k个水听器在时刻t时的信号。ω0是输入信号的角频率,为了获得较高的分辨率,参考国外同类产品的指标,采用了较高的信号发射频率450 kHz。N是形成一个波束所采用的阵元数,本文中取为91。Ak是第k个水听器的幅度加权系数,采用余弦平方加权来抑制旁瓣:

τk是第k个水听器相对于接收阵圆心的延时,φk是为了在θi方向形成波束,第k个水听器需要补偿的相位。
根据余弦定理有:

其中rk为聚焦点到第k个阵元的距离。
将上式对R在0点进行泰勒级数展开,可以将rk简化为:

则第k个阵元相对于圆心的延时为:

其中c为水中声速,R为圆阵的半径,为了避免出现方位角模糊现象[12],取0.12 m。
在允许主瓣方向有0.001°误差、旁瓣电平小于-14 dB和主瓣宽度不大于1°的情况下需要7个聚焦面就能完成近场(r<18 m)范围的波束形成,聚焦距离1~18 m(1 m以内为盲区,不考虑),焦面之间的距离不是均匀的,而是随着声源距离的增加而增加。

图2 聚集波束形成的1#波束方向图
以基阵所处位置为圆心,目标所处位置用(距离,方位)来表示。假设声源位于(1 m,45°),选取不同聚焦面对波束形成的影响如图2所示,其中理想情况下,采用与实际所处位置相同的聚焦距离(1.1 m)进行聚焦时的1#波束方向图,其波束指向为45°,主瓣宽度为0.901 0°,旁瓣电平为-14.47 dB。声纳系统实际工作情况下,按照上述8个聚焦面对实际距离进行近似选取,采用1.05 m聚焦时的1#波束方向图。两种情况下的波束方向图吻合得很好,因此虽然只取了7个聚焦面做近场波束形成,但对波束形成的效果影响不大,却可以大大提高系统资源的利用效率。
2 多波束形成的FPGA 实现
数字多波束形成(DBF)主要完成复数乘法和复数加法运算,每路输入信号为经过下变频后输出的基带I/Q分量。采用91个阵元的单波束DBF要完成实数的364个乘法和363个加法运算,而在FPGA里影响计算速度和资源消耗的主要是乘法器。若仅采用并行处理方法,产生540个波束需要540×91×4=196 560个乘法器,需要消耗大量的乘法器资源,在一片FPGA上实现不了。另一方面,单通道数据输入波束形成器的速度为30 kHz,而FPGA的芯片处理速度通常可达几百兆,因此可以利用FPGA的高速性能,充分利用乘法器资源,通过时分复用乘法器(TDM)实现多通道数据多系数乘法运算。采用90个波束91个系数共用一个乘法器,实现8 190倍复用,产生540个波束所需乘法器的数量减少到24。
数字多波束形成分为6个模块,每个模块采用同一组加权系数产生90个波束,如图3所示。

图3 DBF整体功能框图
beam1~beam6模块功能相同,唯一的区别是输入加权矢量数据不同,因此以beam1模块为例说明其FPGA实现过程。基于FPGA的多波束形成器由存储模块、控制模块、乘法累加模块等几部分实现,系统的组成结构框图如图4所示。

图4 波束形成FPGA实现功能模块
2.1 存储模块
前端处理后的数据采用乒乓操作实现数据不间断的写入和输出,实部数据和虚部数据使用独立的双端口RAM存储,如图4中实部RAM1和虚部RAM2。因为需要缓冲的数据为180通道上的16位数据,所以乒乓RAM的容量应为所需要缓冲数据的2倍,即16×180×2×2 =11.25 Kb。
乒乓RAM的写地址以180为周期计数,即信号X [1,1],X [2,1],…,X[179,1],X[180,1]写入乒乓RAM的地址0~179;信号X[1,2],X[2,2],…,X[179,2],X[180,2]写入乒乓RAM的地址180~359(原来地址基础上+180);再接下来信号X[1,3],X[2,3],…,X[179,3],X[180,3]写入乒乓RAM的地址0~179,覆盖之前的数据,以此类推。其中X[m,t] ( 1≤m≤180,t≥1)表示第m个阵元的时间轴上第t个复信号。
乒乓RAM的读顺序比较特殊:为了加速和节约乘法器资源,用4个实数乘法器来实现90个波束91个系数的复用,所以读时钟是写时钟的90×91/180=45.5倍。读顺序如下:读取0~99地址单元的信号数据用于产生1#波束,然后读取1~100地址单元的信号数据用于产生7#波束……读取88~187地址单元的信号数据用于产生529#波束,最后读取89~188地址单元的信号数据用于产生535#波束。读完这些数据之后正好下一时刻的信号数据已写入180~359地址单元,此时在上述读地址的基础上加180后,读取数据用于产生下一时刻的540个波束数据,循环往复。
片内ROM存储波束加权系数矢量,6个波束形成模块使用各自的系数ROM。其读时钟与乒乓RAM相同,读地址相对比较简单,重复地址0~90,根据数据点位置确定该调用哪个聚焦面的加权系数矢量。
2.2 控制模块
控制模块产生读写地址信号和控制信号,对乒乓RAM和系数ROM的读写地址的控制按照上文所述内容设计;控制信号部分主要是产生控制运算部分和存储部分的运行使能控制信号。
2.3 运算模块
信号数据与对应的加权数据读取出之后以270M的速率串行进入乘法累加模块。其中复数相乘是其中最重要的运算操作。假设第i接收通道的信号表示为:

其对应加权系数矢量中第i个系数表示为:

则相乘之后得到:

首先,1~91通道的数据串行进入乘法累加器,进行91次复乘和90次复加之后,得到一个包含实部和虚部的波束数据;之后,2~92通道的数据进入乘法累加器,得到第二个波束数据。如此,形成90个波束,只需要一个复数乘法器,即4个实数乘法器。

图5 乘法累加器IP核
乘法累加采用Xilinx的IP核实现,如图5所示,其中各个参数的含义如表1所列。
表1 乘法累加IP核各参数含义

通过控制BYPASS信号来控制乘法累加过程:当滤波后数据和加权系数有效时,使BYPASS维持一个周期的高电平后变为低电平,计数100周期后再次变为高电平,开始下一个波束数据的计算,因此BYPASS的周期为1.35 MHz。
波束数据输出速率为2.7 MHz,对应着单个波束输出速率为30 kHz,计算结果与MATLAB仿真结果一致。各个波束实部和虚部输出后,通过乘法运算得到波束的模平方。
3 验证结果
信号从基阵90°方向射向基元,1#基元至180#基元接收到信号,通过基元与波束点的延迟,得到各基元处的信号。180个基元的信号同时采集,一个周期采集4个点,采集到的数据作为标准信号源。系统设计时,将标准信号源数据存在信号处理单元。系统运行过程中,如果信号处理单元接收到使用标准信号源的命令,就读出标准信号源数据进行滤波抽取和多波束形成运算。将系统的波束输出结果与MATLAB仿真结果对比,可检测系统是否工作正常。
图6所示为Chipcsope采集到的采用标准信号源测试时某个时刻的540个波束的波束值,具有良好的指向性。

图6 Chipscope验证标准信号源测试
图7所示为实际系统采用标准信号源测试,将波束数据通过千兆网上传至PC机得到的显示图像,为90°方向上的一条亮条纹。

图7 标准信号源测试图像
本文提出的改进算法只需要6组加权系数矢量即可产生540个波束,有效降低了对存储资源的要求。通过乒乓操作实现了不间断的数据输入/输出,以及流水并行处理,能够实现实时处理。通过多通道多系数复用技术,将乘法器资源使用量降低到24个,大大节省了FPGA的硬件资源。数字多波束形成所使用的FPGA资源仅仅使用了整个芯片资源的一小部分,为成像声纳系统其余模块的实现提供了很大的空间。
结语
本文提出一种利用FPGA实现高速多通道的多波束形成方法。通过乒乓操作、流水并行处理提高速度;通过多通道多系数复用乘法器和模块复用技术,仅采用24个乘法器完成180通道数据的540个波束实时产生,有效降低了FPGA资源利用量,适用于工程上实现多波束形成系统。