基于FPGA的实时并行时延相移波束形成方法
技术领域
本发明属于波束形成处理领域,特别涉及基于FPGA的高速波束形成处理,具体来说是一种基于FPGA的对高采样率基阵接收数据的实时并行时延相移波束形成方法。
背景技术
波束形成是信号处理领域中一种常用的信号处理方式,在雷达、声纳、无线通信等领域都有广泛的应用。如多波束声纳在探测海底地形时,需要对基阵接收回波信号进行波束形成处理,以分离来自不同角度的海底回波,从而一次获得多处海底的深度信息。
实际系统中,基阵接收信号一般都先经过解调、滤波和采样,转换成离散的复数形式的数字基带信号。假定接收信号是窄带信号,波束形成可以表示成如下公式:
其中,M为基阵阵元数,k为期望波束的序列号,n为采样时刻,xm(n)为第m个阵元接收信号n时刻采样值的复数基带表示,ck=[ck1 ck2 … ckM]T为第k个期望波束角度的波束形成系数,也用复数表示,通过改变系数ck就可以控制波束的指向。
考虑到实际中回波信号都是有一定脉宽的,当信号脉宽比较小(脉宽声速乘积小于接收基阵最大孔径)时,单纯用相移来补偿时延会导致波束形成效果下降。此时可以采用时延相移波束形成方法,对于需要的时延补偿,其中采样时间间隔的整数倍部分,用对应不同采样时刻的采样数据补偿,剩余部分用相移系数进行补偿,如下式:
其中,整数dkm表示第k个期望波束第m个阵元采样信号延迟的采样时间间隔数。
远场情况下,可以将波的传播近似为平面波,采用常规平面波波束形成,波束形成系数ck与距离无关;近场情况下,平面波近似不成立,采用聚焦波束形成,波束形成系数ck与距离有关,在不同距离上要采用不同的波束形成系数。
在波束形成技术的工程化过程中,存在着一些困难,主要包括:波束形成器的复乘运算需要的运算量很大,尤其在阵元数和期望角度数较多,接收基阵信号采样频率较高的情况下,波束形成的实时实现异常困难;此外,为了改善波束形成的效果,还要再引入时延相移波束形成以及常规波束形成和聚焦波束形成相结合的方法,这进一步增加了系统的复杂度和实现的难度。
近年来FPGA技术飞速发展,特别是一些内置高性能数字信号处理器(DSP)内核的高密度FPGA的出现,使FPGA摆脱了最初只能应对纯逻辑应用的限制,而能面向复杂的计算密集型应用。同时,FPGA本身所固有的并行处理优势使得其得到了越来越广泛的应用。目前基于FPGA的波束形成处理的研究还处于起步阶段,仍存在很多亟待解决的问题。
发明内容
本发明的目的是提供一种基于FPGA的实时并行时延相移波束形成方法。
为实现上述目的,本发明所采取的技术方案包括以下步骤:
(1)利用形状对称的基阵相反角度上的波束形成系数间的对称关系,FPGA通过数据通讯口接收一半期望角度上的波束形成系数数据,再将所接收的波束形成系数数据存入与该FPGA相连的静态存储器芯片中;
(2)FPGA通过数据通讯口接收基阵各阵元接收信号的采样数据,提取当前所接收的第n时刻基阵各阵元接收信号的采样数据,其中,n=1,2,……;若n为奇数,则将所提取的采样数据存入FPGA的编号为(1,1)的第一块存储器中,同时将编号为(2,i)的第一块存储器中的数据存入编号为(1,i+1)的第一块存储器中;若n为偶数,则将所提取的采样数据存入FPGA的编号为(2,1)的第一块存储器中,同时将编号为(1,i)的第一块存储器中的数据存入编号为(2,i+1)的第一块存储器中,其中,i=1,2,……P-1,P为延时量可取值的个数且P≥2;同时,从所述静态存储器中读取一组与所述第n时刻的基阵各阵元接收信号的采样数据对应的各期望角度上的波束形成系数数据,若n为奇数,则将所读取的波束形成系数数据逐一存入FPGA的第一组Q个第二块存储器,且FPGA的第一组的各个第二块存储器所存储的波束形成系数数据的数量相同;若n为偶数,则将所读取的波束形成系数数据逐一存入FPGA的第二组Q个第二块存储器,且FPGA的第二组的各个第二块存储器所存储的波束形成系数数据的数量相同,其中Q为整数且Q≥2;
(3)同时读取步骤(2)中相应的Q个第二块存储器中所存入的Q个期望角度上的波束形成系数数据,并根据所读取的各个波束形成系数数据中包含的时延量数据选择一个第一块存储器中的采样数据,用FPGA中的Q个相乘累加器对所述从相应的Q个第二块存储器中读取的波束形成系数数据与所选择的所述第一块存储器中的采样数据进行相乘累加得到Q个期望角度上的波束形成结果,并将所述波束形成结果存入Q个锁存器中,再通过FPGA的数据通讯口将所存储的Q个期望角度上的波束形成结果分时顺序送出,直到将全部期望角度上的波束形成结果送出;
(4)在基阵各阵元接收信号的下一采样时刻的采样数据到来时返回执行步骤(2)直至对所接收的全部基阵各阵元接收信号的采样数据波束形成处理完毕。
与现有技术相比,本发明具有如下技术效果:
(1)利用形状对称的基阵相反角度上的波束形成系数间的对称关系,只需存储约一半期望角度上的波束形成系数数据,节省了一半存储空间。
(2)对先接收到的近场回波信号采用近场波束形成系数作聚焦波束形成,并对不同时刻的采样数据采用对应于不同距离点上的近场波束形成系数,对于后接收到的满足远场条件的回波信号采用远场波束形成系数作常规平面波波束形成。根据距离的远近采用不同的波束形成系数和方式,可得到更准确的波束形成结果。
(3)为了实现基阵采样数据和波束形成系数的更新,在FPGA内部分别采用两组存储器交替读写的方式,使得新到来的数据不会覆盖波束形成处理正在使用的数据,这样,没有浪费任一可利用的数据,又达到了实时性的要求;
(4)采用多路并行计算处理单元同时进行波束形成处理极大地提高了系统的处理速度,充分利用了芯片内部的资源,满足了实时处理的要求。与现有技术相比,在硬件处理能力相同的情况下,可以处理阵元数更多、采样率更高的数据,形成更多波束的结果;
(5)用多个存储器存储当前接收和这之前几个采样时刻基阵采样数据,根据所读取的波束形成系数数据高位的时延量信息,从这些存储器中选取各阵元相应采样时刻的数据与所读取的波束形成系数数据低位的复加权系数进行波束形成计算,这样既同步了基阵采样数据和波束形成系数的读取,又实现了时延相移波束形成,消除了单纯采用相移波束形成时输出结果的前段和后段效果较差的现象;
(6)采用本发明后,与现有技术相比较,降低了所需的系统时钟频率,使得系统更稳定,对硬件布线制作的要求降低;降低对硬件存储容量和处理能力要求,减小了成本,更有利于工程应用。
附图说明
图1是本发明波束形成方法的流程示意框图;
图2是本发明的一个实施例中FPGA内部基阵各阵元接收信号的采样数据存储过程示意框图;
图3是本发明中FPGA内部实现波束形成的并行处理架构示意框图;
图4是本发明中FPGA内部时延相移波束形成的处理结构示意框图。
具体实施方式
本发明的基本构思为:利用并行处理架构,极大提高系统的处理速度,以实现实时处理。利用时延量和相移系数结合的方法对基阵接收数据作时延相移波束形成。本发明的流程如图1所示。
下面结合附图以及具体实施方式对本发明做进一步的详细描述:
如图1所示,本发明提供的基于FPGA的实时并行时延相移波束形成方法,包括以下步骤:
(1)当波束形成系数数据从数据通讯口传至FPGA时,FPGA接收所有波束形成系数数据,并存入与该FPGA相连的静态存储器(SRAM)芯片中。现有技术中,如欲形成M阵元接收基阵W个期望角度上的波束结果,则需有M阵元接收基阵W个期望角度上的近场和远场波束形成系数,由于实际中接收基阵形状往往是对称的,W个期望角度往往也是对称分布的,从而满足这些对称关系的相反角度上的波束形成系数就一定是对称的。对此,本发明利用形状对称的基阵相反角度上的波束形成系数间的对称关系,只需M阵元接收基阵约W/2个期望角度上的近场和远场波束形成系数,另外约W/2个相反角度上的波束形成系数可通过对前述约W/2个期望角度上的波束形成系数的逆序读取得到。例如,要形成-85°~85°上290个期望角度的波束结果,可以只使用-85°~3°上150个期望角度上的波束形成系数,剩下的140组系数可通过对-85°~-3°上140组系数的逆序读取得到。SRAM前段即低地址存储单元保存近场波束形成系数,剩下的高地址部分保存远场波束形成系数,如近场要形成50个距离点上290个期望角度上的波束形成结果,阵元数为128,则要在SRAM低地址的50×150×128个存储单元中存入50组近场波束形成系数,在高地址的150×128个存储单元中存入一组远场波束形成系数。
(2)当基阵各阵元接收信号的采样数据从数据通讯口传至FPGA时,FPGA接收基阵各阵元接收信号的采样数据,提取当前所接收的第n时刻基阵各阵元接收信号的采样数据,其中,n=1,2,……。对于snapshot(在一个采样时刻基阵各阵元的采样数据称为snapshot)数据的存储,有在读取当前存储器中的snapshot数据作波束形成的同时又必须要写入新的snapshot数据替换掉当前存储器中数据的矛盾,又由于作时延相移波束形成要存储当前接收的snapshot数据和之前P-1个采样时刻的snapshot数据,其中,P为延时量可取值的个数且P≥2。所以,在FPGA内部用IP CORE生成两组块存储器(Block RAM),每组各有P个块存储器。把第一组的Block RAM编号为(1,i),第二组的Block RAM编号为(2,i),其中,i=1,2,……P。若n为奇数,则将所提取的一组采样数据存入FPGA的编号为(1,1)的第一Block RAM中,同时将编号为(2,i)的第一Block RAM中的数据存入编号为(1,i+1)的第一Block RAM中,即读取第二组的第一Block RAM中第n时刻之前5个采样时刻的snapshot数据存入第一组第一Block RAM中;若n为偶数,则将所提取的一组采样数据存入FPGA的编号为(2,1)的第一Block RAM中,同时将编号为(1,i)的第一Block RAM中的数据存入编号为(2,i+1)的第一Block RAM中,即读取第一组第一BlockRAM中第n时刻之前5个采样时刻的snapshot数据存入第二组第一Block RAM中,其中,i=1,2,……P-1。这两组Block RAM读写交替进行,其中一组在读数据的同时向另一组写数据,通过这种方式,在对当前数据作波束形成的过程中新到来的数据也不会丢失。在存储新到来数据的同时,也将之前5个采样时刻的snapshot由一组Block RAM转移到另一组Block RAM,保证在每次作波束形成时每组Block RAM中总能保存当前snapshot数据和之前5个采样时刻的snapshot数据。以下举例说明,图2中,设延时量可取0,1,……5,则P=6,在FPGA内部用IP CORE生成两组每组各6个第一Block RAM。在n为奇数情况下,存储过程如图2所示,则将所提取的n时刻一组采样数据存入FPGA的编号为(1,1)的第一Block RAM中,同时将编号为(2,1)、(2,2)、(2,3)、(2,4)、(2,5)的第一Block RAM中所存储的n-1、n-2、n-3,n-4、n-5时刻的snapshot数据存入编号为(1,2)、(1,3)、(1,4)、(1,5)、(1,6)的第一Block RAM中。
同时,从所述SRAM中读取一组与所述第n时刻的基阵各阵元接收信号的采样数据对应的近场一个距离点上或远场各期望角度上的波束形成系数数据,若n为奇数,则将所读取的波束形成系数数据逐一存入FPGA的第一组Q个第二BlockRAM,且第一组的各个第二Block RAM所存储的波束形成系数数据的数量相同;若n为偶数,则将所读取的波束形成系数数据逐一存入FPGA的第二组Q个第二Block RAM,且第二组的各个第二Block RAM所存储的波束形成系数数据的数量相同;其中Q为整数且Q≥2。如图3所示,为实现波束形成的并行处理,在FPGA内部对波束形成系数所做的操作过程如下:
为方便说明,以计算128阵元接收基阵的290个期望角度上的波束形成结果为例。可以在FPGA内部用IP CORE生成10个Block RAM,即Q=10,每个波束形成系数用32位二进制数表示,则每个Block RAM大小为15×128×32bit,用于存储波束形成系数。当需要读或换波束形成系数时,从SRAM读出一组系数存入FPGA,大小为150×128×32bit,这里利用了形状对称的基阵波束形成系数的对称性,只需约一半系数。将从SRAM读取的对应的一个距离点上的一组近场波束形成系数或远场波束形成系数等分为10组,逐一存入上述10个Block RAM中。对于近场波束形成,需要在不同距离点上采用不同的波束形成系数,实际工程实现中,则要根据接收到的snapshot个数,替换不同的波束形成系数。例如,基阵接收数据采样频率为5kHz情况下,每2个snapshot换下一距离上的一组近场波束形成系数直至远场波束形成系数,20kHz情况下,每8个snapshot换一组系数。为了确保实时性,在换系数的过程中,既要用当前Block RAM中的系数作波束形成,同时又必须要存入一组新的系数到Block RAM替换掉当前Block RAM中的系数,为解决这一矛盾,再生成10个Block RAM,在换系数时,读取一组10个Block RAM中的系数作波束形成,同时将下一组系数存入另外一组10个Block RAM以备下次使用。这样,10个Block RAM构成一组,两组读写交替进行,使得波束形成处理和换系数可以同时进行,从而在换系数的过程中也能确保实时性。
需要说明的是,为了更方便地阐述FPGA内部并行处理架构和对波束形成系数的操作过程,图3中简化了基阵接收数据的存储结构和时延相移波束形成的处理结构。
(3)同时读取步骤(2)中相应Q个第二块存储器中所存入的Q个期望角度上的波束形成系数数据,并根据所读取的波束形成系数数据中包含的时延量数据选择一个第一块存储器中的采样数据,用FPGA中的Q个相乘累加器(CMACC)对所述从相应Q个第二块存储器中读取的波束形成系数数据与所选择的所述第一块存储器中的采样数据进行相乘累加得到Q个期望角度上的波束形成结果,并将所述Q个波束形成结果存入Q个锁存器中,再通过FPGA的数据通讯口将所存储的Q个期望角度上的波束形成结果分时顺序送出,直到第二Block RAM中的波束形成系数数据全部读完,就可以计算出各期望角度上的波束形成结果;
如图4所示,以Q路并行处理单元中的1路为例,在FPGA内部实现时延相移波束形成的过程如下:
设延时量可取0,1,……5,则P=6,基阵阵元数为128,在FPGA内部用IP CORE生成两组每组各6个第一Block RAM,每个阵元采样数据用32位二进制数表示,则每个Block RAM大小为128×32bit。用6个第一Block RAM存储当前所接收的第n时刻snapshot数据和这之前5个采样时刻的snapshot数据,作时延相移波束形成时,选用6个第一Block RAM中哪一个的数据作波束形成则由时延量确定,根据时延量的不同选择不同采样时刻即不同Block RAM中的基阵采样数据,如时延量为0选择编号为(x,1)的第一Block RAM中的数据,时延量为1选择编号为(x,2)的第一Block RAM中的数据,以此类推,其中,x=1或2。由于时延量和波束形成系数一样,由期望波束角度和阵元位置决定,同时又需要在读取波束形成系数时决定选择哪个采样时刻的snapshot数据,因此可将此时延量置于同一时刻读取的32位波束形成系数数据的高4位。
如图3所示,以计算128阵元接收基阵的290个期望角度上波束形成结果为例,在FPGA内部实现波束形成并行处理的过程如下:
在FPGA内构造10个CMACC,每个CMACC由4个DSP48A处理模块组成,分别用于计算系数和数据对应实部虚部的相乘累加结果,每个时钟周期计算两个复数的相乘累加,在128周期内得到每个波束的128个复数对的相乘累加和的实部、虚部结果。把从10个Block RAM读取的波束形成系数和选取的基阵接收采样数据在10个CMACC作相乘累加。对于10路并行处理单元,一次处理的10个期望角度上的波束形成结果是同时得到的,为了不丢失任一结果,将这10个波束形成结果存入10个锁存器中,再通过FPGA的数据通讯口将所存储的10个波束形成结果按一定顺序分时逐一送出,由于数据传送速率很高,可能需要用多个数据通讯口进行传送。直到第二Block RAM中的波束形成系数数据全部读完,就可以在每路处理单元得到29个期望角度上的波束形成结果,10路处理单元就可以计算出290个期望角度上的波束形成结果。据此方案设计的系统可以对采样率为20kHz的128阵元基阵接收采样数据进行实时时延相移波束形成处理,得到290个期望角度上的波束形成结果,近场每隔0.4ms(对应距离0.4×1500/2000=0.3m)换一组波束形成系数,而所需的板上时钟频率仅为50MHz。
(4)基阵各阵元接收信号的下一采样时刻的采样数据到来时返回执行步骤(2)直至FPGA对所接收的全部基阵各阵元的采样数据波束形成处理完毕。