首页> 中国专利> 基于单片FPGA的大规模圆阵实时波束形成器及波束形成计算方法

基于单片FPGA的大规模圆阵实时波束形成器及波束形成计算方法

摘要

本发明公开一种基于单片FPGA的大规模圆阵实时波束形成器及波束形成计算方法,由频域数据整理模块、驾驶向量计算模块、并行乘法模块三部分组成。充分利用圆阵的对称性,只需要计算一半阵元的驾驶向量,驾驶向量采用流水线CORDIC算法。驾驶向量和频域数据分别输入一个深度为N/2和N的移位寄存器,当深度为N的移位寄存器数据进入N个频域数据后,前后对称位置相加与驾驶向量相乘,节省了N/2个复数乘法器资源。由于采用N/2个复数乘法器并行进行复数乘法运算,一个时钟输出1个频点1个波束的数据,频域数据输入完毕时,同时完成第Nb个波束数据的输出,大大提高了波束形成的效率。

著录项

  • 公开/公告号CN108008665A

    专利类型发明专利

  • 公开/公告日2018-05-08

    原文格式PDF

  • 申请/专利号CN201710941825.7

  • 发明设计人 王军;

    申请日2017-10-11

  • 分类号G05B19/042(20060101);G01S15/88(20060101);

  • 代理机构33101 杭州九洲专利事务所有限公司;

  • 代理人陈继亮

  • 地址 311499 浙江省杭州市富阳区富春街道桂花西路82号

  • 入库时间 2023-06-19 05:16:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-10

    授权

    授权

  • 2018-06-01

    实质审查的生效 IPC(主分类):G05B19/042 申请日:20171011

    实质审查的生效

  • 2018-05-08

    公开

    公开

说明书

技术领域

本发明涉及高频声呐实时信号处理领域,主要是一种基于单片FPGA的大规模圆阵实时波束形成器及波束形成计算方法。

背景技术

波束形成技术是声呐信号处理的一项重要内容,在主动声呐和被动声呐中得到广泛应用,是衡量声呐性能优劣的一个重要指标,波束形成算法中庞大计算量是实时声呐系统必须克服的困难之一。

传统波束形成是采用通用数字信号处理器(Digital Signal Processing,DSP)实现,DSP是一种具有特殊结构的微处理器,通常用来快速实现各种算法中结构复杂的部分,同时具有软件更新速度快、通用性和灵活性强等优点。但受串行结构的限制,在实时信号处理系统中,对于数据率高、通道数量多、计算量大、但逻辑结构比较固定的算法则不能体现出其优势。

现场可编程门阵列(FPGA,Field Programmable Gate Array)是在复杂的可编程逻辑器件(CPLD,Complex Proogrammable Logic Device)的基础上发展起来的新型高性能可编程逻辑器件。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能。除此之外,FPGA还有大量面向密集计算应用的DSP单元、块状RAM和高速通信的收发器单元,可以完成较为复杂的信号处理运算,FPGA尤其适合于乘法和累加(MAC)等重复性的DSP任务和实时控制,因此在复数乘法、数字滤波器设计和FFT等数字信号处理和实时控制应用中具有很大的优越性。

目前采用单片FPGA实现大规模阵列波束形成领域还处于起步阶段,对不同阵型的大规模阵列的波束形成计算还没有实际使用的方案。

发明内容

本发明的目的在于克服现有技术存在的不足,而提供一种基于单片FPGA的大规模圆阵实时波束形成器及波束形成计算方法。

本发明的目的是通过如下技术方案来完成的。这种基于单片FPGA的大规模圆阵实时波束形成器,它可以实现基带采样率60k,M(360)路阵元,Nb(360)个波束,Nf(2730)个频点的基带频域波束形成,在计算效率较传统的DSP波束形成器的性能有明显的提升,并且成本只有DSP波束形成器的1/10。该基于单片FPGA的大规模圆阵实时波束形成器由频域数据整理模块、驾驶向量计算模块、并行乘法模块三部分组成,形成一个频点、一个波束需要N个基元数据,利用圆阵的对称性,只需要N/2个复数乘法器,省了FPGA芯片中一半的乘法器资源,N为偶数。

本发明所述的这种基于单片FPGA的大规模圆阵实时波束形成器的波束形成计算方法,该方法包括如下步骤:

(1)频域数据整理

输入波束形成器的数据为M*Nf的矩阵,其中M为阵元数,Nf为频点数,将M*Nf的矩阵转置为Nf*M的矩阵;

(2)计算驾驶向量

驾驶向量计算采用流水线结构CORDIC算法,流水线结构实现CORDIC算法,只需要一个时钟周期就能输出一个数据;

(2)并行乘加运算

FPGA中内嵌有大量的乘法器,多个乘法器并行计算驾驶向量与频域数据的乘积,一个时钟输出一个频点1个波束的输出。

更进一步的,计算驾驶向量采用流水线CORDIC算法,一个时钟输出一个驾驶向量值,提高了驾驶向量计算的运算效率,利用正余弦的对称性,CORDIC算法计算驾驶向量需要的输入值按照表1旋转模式进行预处理。

更进一步的,利用圆阵的对称性,计算N/2个阵元位置的驾驶向量,然后输入1个深度为N/2的移位寄存器;并行乘加计算之前需要1个深度为N的移位寄存器对整理后的频域数据进行先进先出,当进入N个数据后,前后对称相加,输出N/2个频域数据;深度为N的移位寄存器进入N个频域数据后,以后每输入一个数据,移位寄存器进行移位操作,完成一个数据更新,同时开始与深度为N/2的移位寄存器寄存的N/2个驾驶向量相乘,M+N-1个数据输入完成时,完成一个频点Nb个波束的输出。充分利用FPGA的并行特性,波束形成的乘法运算采用N/2个复数乘法器并行实现,复数乘法器和复数加法器采用FPGA自带的IP核,控制复数乘法器和复数加法器的时延以满足FPGA芯片高速处理的时序要求。

本发明的有益效果为:采用FPGA方案具有信号处理设备小型化,编程灵活,成本低的优点。由于采用N/2个复数乘法器并行进行复数乘法运算,一个时钟输出1个频点1个波束的数据,频域数据输入完毕时,同时完成第Nb个波束数据的输出,大大提高了波束形成的的效率。

附图说明

图1为声呐圆阵阵元布置示意图;

图2为数据扩展示意图;

图3为图2CORDIC流水线算法结构示意图;

图4为并行乘加示意图。

具体实施方式

下面将结合附图对本发明做详细的介绍:

图1为声呐圆阵阵元布置示意图,用N(128)个基元形成波束,共产生Nb(360)个均匀分布的宽带波束。在阵艏对准正北方向时,第k根谱线的第l#波束为:

(3)式中基阵半径为R,声速C=1500m/s,Δf为频率分辨率。

输入波束形成器的数据为M*Nf的矩阵,存放在外存DDR中,基于单片FPGA的大规模圆阵实时波束形成器是在频域进行的,如式(1)所示,波束形成需要利用数据为每个频点阵元的数据,由于DDR读写需要定时刷新,连续地址读写数据的效率较高,跳点读写数据效率很低,所以需要对输入矩阵转置,把输入矩阵转置为维数为Nf*M的矩阵,这样就可以连续读取一个频点M路数据。

为了避免在DDR中跳点读写数据,矩阵转置采取先在FPGA的内存中完成小部分矩阵的转置,然后按照一定的地址计算算法写入DDR中,转置算法采用乒乓缓存读写的方式,顺序读出转置后的矩阵。

完成矩阵转置后,读取一个频点M个阵元数据,由于完成一个波束需要利用N个阵元数据,形成Nb个波束需要(M+N/2+N/2-1)路,如图2所示,对一个频点M路数据前后拼接成(M+N/2+N/2-1)路。

数据扩展在FPGA中的RAM中完成,1~N/2-1点数据写入RAM中的地址M+1~M+N/2+N/2-1,1~M点数据写入RAM中的地址M+N,M-N/2~M点数据写入RAM中的地址1~N/2,然后顺序读取(M+N/2+N/2-1)点扩展后数据,数据扩展算法通过状态机乒乓读写的方式完成。

如图3所示,驾驶向量采用流水线CORDIC算法。

频域波束形成需要实时计算驾驶向量,驾驶向量计算主要通过CORDIC算法来实现,CORDIC算法通过一系列简单的移位和加/减运算的迭代实现了矢量坐标的旋转,矢量v1=(x1,y1)旋转角度得到矢量v2=(x2,y2)则有

进一步整理可得:

若每次旋转的角度的正切值是2的整数次幂,即假若以δk代表矢量旋转方向,+1代表逆时针旋转,-1代表顺时针旋转,则第k步旋转可以由下式表示

式中为模校正因子,当字长一定时,该因子是一个常数。引入性能变量zi,使算法的迭代更具有实用性,以zi代表第i旋转后剩余的角度值,并将校正放在最后进行,这样每一次的迭代运算可以简化为:

其中

每次迭代运算可分解为一系列的加减和移位操作,不需要乘法器和除法器之类的复杂电路,而tan-1(2-i)可以预存在查找表中,这也是CORDIC算法的优势所在。

经过n(n→∞)次旋转得到最终结果为:

令x0=1/An,y0=0,可得到目标角度的正、余弦数值

式中,要求初始化角度z0为θ,由于其中θi=tan-1(2-i),则有

这表明目标角度的取值范围为[-99.9°,99.9°],而在计算驾驶向量中需要覆盖[-180°,180°],考虑到正余弦的对称性,通常采用下表所示的预处理

表1旋转模式预处理

目标角度预旋转角度预旋转结果后目标角度[0,π/2]0(x0,y0)θ[π/2,π]π/2(-y0,x0)θ-π/2[-π/2,0]0(x0,y0)θ[-π,-π/2]-π/2(y0,-x0)θ+π/2

计算驾驶向量时需要把驾驶向量的输入值对2π求余运算把输入值转化到[0,2π]区间,然后按照旋转模式预处理方式进行预处理,最后通过CORDIC算法实时计算出驾驶向量。

CORDIC算法通常有两种,一种是循环结构,另一种是流水线结构。循环结构是CORDIC算法中一种最直接的实现方法,只需要一级CORDIC运算迭代单元,然后在系统时钟的驱动下,将本级的输出反馈回去作为本级的输入,通过同一级完成迭代运算。这种方法虽然很直观,但是为了将计算结果提供给下一次迭代运算而导致带来许多额外的资源消耗,而且最大的缺点是运算速度较慢(需要n-1个时钟周期才能输出一个数据),不利于高速实时处理。

在高速实时计算中,通常采用k级CORDIC运算单元组成的流水线结构。流水线结构实现CORDIC算法,只需要一个时钟周期就能输出一个数据,为数据的高速实时处理提供前提。每一级实现的功能是根据式(5)进行一次迭代,移位的位数等于当前的迭代级数,加减法选择由该级中z的最高位(符号位)决定,得到下一级x,y和z的值。经过k级流水线运算后,z的值变为0,x和y的值则为初始值z0的正弦和余弦值。每一级的电路包括2个移位器和3个加(减)法器,级与级之间直接相连,不需要额外的寄存器。可将该小数转换为二进制数后,存储于存储单元中,为每一级流水提供查找表。

如图4所示,频域数据整理和驾驶向量计算完成后,对应的频点数据和驾驶向量进行乘加运算,完成Nf个频点Nb个波束的波束形成。

形成一个频点一个波束需要N路数据,由于圆阵的驾驶向量是对称的,为了节省FPGA的逻辑资源以及乘法器,只需要计算N/2个阵元位置的驾驶向量,同时一个频点N路数据按照对称位置相加形成N/2路数据,这样N点的点乘运算就可以用N/2个复数乘法器实现,节省了N/2个复数乘法器。

流水线CORDIC算法计算出某个频点的驾驶后,把驾驶向量输入深度为N/2移位寄存器,同时对应频点数据扩展后为(M+N/2+N/2-1)点的数据也输入深度为N移位寄存器,然后按照对称位置相加形成N/2路数据。当深度为N/2的移位寄存器满时,寄存当前的驾驶向量的N/2个值(圆阵同一个频点不同波束的驾驶向量是相同的,CORDIC算法的延迟周期最大为32个时钟周期,当深度为N移位寄存器满时,N/2个驾驶向量值已计算完毕),频点数据的移位寄存器为N时,寄存当前时钟N/2个对称位置相加后的频点数据,与寄存的N/2个驾驶向量值相对应的点进行并行乘法运算,然后进行N/2个并行乘法的结果并行相加,输出一个频点一个波束形成结果,这样一个时钟完成N/2次乘加运算,(M+N/2+N/2-1)个频点数据前N个数据输入深度为N移位寄存器之后,以后每输入一个数据,移位寄存器进行移位操作,完成一个数据更新,同时完成与驾驶向量对应点的N/2次并行乘加运算,输出一个波束形成结果,第(M+N/2+N/2-1)个数据输入移位寄存器,也就完成了当前频点频点Nb个波束形成结果。

采用流水线CORDIC算法和并行乘法算法以及并行加法,一个时钟完成N/2个数据的乘加运算,一个(M+N/2+N/2-1)个数据输出完毕时,Nb个波束形成也同时完成,大大提高了波束形成的的效率。

可以理解的是,对本领域技术人员来说,对本发明的技术方案及发明构思加以等同替换或改变都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号