基于FPGA的大型射电干涉阵列相关器的实现方法及装置
技术领域
本发明属于信号处理技术领域,具体涉及了一种基于FPGA的大型射电干涉阵列相关器的实现方法及装置。
背景技术
在射电干涉阵列望远镜中,相关器作为核心数字装置实现干涉显示度的计算,通过对干涉显示度的计算和分析,可完成观测宇宙射电源的亮度分布、结构、精密定位和天体成像等研究工作。
为了获得更广视场、更高精度的观测,研究人员已经开始筹划或正在建立越来越大的天线阵列。相关器需要对众多路天线的信号进行全相关处理。全相关处理包括多路通道相同时间所有相同频点数据的自相关运算以及两两互相关运算,其计算量正比于N2,其中N为天线个数。随着N的增大,运算量急剧增加,例如欧洲即将建成的低频射电干涉阵(LOFAR)由20000个天线构成,运算量极其庞大。传统的相关器一般使用CPU或GPU实现,由于其性能功耗比比较低,延时较高,因此使用它实现大型天线阵列的全相关实时计算具有一定困难。与CPU、GPU相比,FPGA具有较好的能源效率,其延时低、并行度高易扩展、乘法器资源多,功耗低,适用于完成可高度并行并对实时性要求较高的算法实现。
总的来说,现有的基于CPU/GPU的相关器在大型天线阵列的全相关实时计算中效率较低、能源消耗大,因此,本领域急需一种基于FPGA的数字相关器来实现大型天线阵列的全相关实时计算。
发明内容
为了解决现有技术中的上述问题,即现有基于CPU/GPU的相关器进行大型天线阵列的全相关实时计算效率低、能源消耗大的问题,本发明提供了一种基于FPGA的大型射电干涉阵列相关器的实现方法,该方法包括:
步骤S10,基于获取的射电干涉阵列天线数目Ma、各天线极化数MP,获取射电干涉阵列天线数据通道数M;
步骤S20,基于预设的条件将获取的M路射电干涉阵列通道数据平均分为N组,每组包括K路数据,K=M/N;
步骤S30,通过时分复用的方法将所述N组数据进行重排,并分别依次通过相应的相关计算模块进行N组数据中每一组数据与自身的自相关计算以及N组数据中每一组数据与其他组数据的互相关计算,完成射电干涉阵列的全相关运算。
在一些优选的实施例中,所述预设的条件为:
Z2<Z
其中,
P为FFT的点数,P1为选取的频点数量,T1为采样时钟,T2为相关器的处理时钟,B1为自相关计算模块的数量,B2为互相关计算模块的数量,Z为FPGA芯片中乘法器的总数量。
在一些优选的实施例中,所述每一组数据与自身的自相关计算包括数据组中每一路通道数据与自身的自相关并在积分周期内累加的计算以及每一路通道数据与其他路通道数据的互相关并在积分周期内累加的计算。
在一些优选的实施例中,所述每一组数据与其他组数据的互相关计算包括数据组中每一路通道数据与其他路通道数据的互相关并在积分周期内累加的计算。
在一些优选的实施例中,步骤S30中“通过时分复用的方法将所述N组数据进行重排”,其方法为:
步骤S31,将所述N组数据中进行自相关计算的分成第一数据序列,进行互相关计算的分成第二数据序列;
步骤S32,将所述第一数据序列、第二数据序列分别按照自相关、互相关计算模块的数量平均分段,在每个分段内时分复用相应的相关计算模块,根据每个分段的运算完成所述N组数据的重排。
本发明的另一方面,提出了一种基于FPGA的大型射电干涉阵列相关器装置,该装置包括数据接收模块、写控制模块、缓存模块、读控制模块、数据重排模块、相关运算模块、打包输出模块;
所述数据接收模块用于获取包含天线频域数据的数据包,并解析所述数据包的包头信息;所述包头信息包括通道信息、频点信息;
所述写控制模块基于所述包头信息将所述天线频域数据写入所述缓存模块的对应缓存位置;
所述缓存模块用于缓存所述天线频域数据;
所述读控制模块用于判断所述缓存模块中的不同通道的频域数据是否对齐,若对齐则同步读出各路通道相同时间相同频点的数据;
所述数据重排模块通过权利要求1或权利要求2所述的基于FPGA的大型射电干涉阵列相关器的实现方法步骤S20-步骤30对应的方法进行数据分组以及重排,并将重排后的数据发送至相应的相关计算模块;
所述相关计算模块用于对接收的数据进行全相关计算后在积分周期内进行累加计算;
所述打包输出模块用于按照设定顺序将所述相关计算模块计算后的数据打包成数据包并输出。
在一些优选的实施例中,所述缓存模块通过BRAM实现。
在一些优选的实施例中,所述相关计算模块包括自相关计算模块、互相关计算模块;
所述自相关计算模块用于数据组与自身的自相关计算;
所述互相关计算模块用于数据组与其他数据组之间的互相关计算。
本发明的第三方面,提出了一种存储装置,其中存储有多条程序,所述程序适于由处理器加载并执行以实现上述的基于FPGA的大型射电干涉阵列相关器的实现方法。
本发明的第四方面,提出了一种处理装置,包括处理器、存储装置;所述处理器,适于执行各条程序;所述存储装置,适于存储多条程序;所述程序适于由处理器加载并执行以实现上述的基于FPGA的大型射电干涉阵列相关器的实现方法。
本发明的有益效果:
本发明基于FPGA的大型射电干涉阵列相关器的实现方法,通过分组划分时分复用的方法,有效利用了FPGA资源,从而简化FPGA运算过程,功耗低、效率高、易扩展,适用于高度并行以及对实时性要求较高的系统运算过程,为大型射电干涉阵列的海量数据实时运算提供了高效率的解决方案。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本发明基于FPGA的大型射电干涉阵列相关器的实现方法的流程示意图;
图2是本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的多路数据分组划分和时分复用计算结构示意图;
图3是本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的自相关运算模块计算结构示意图;
图4是本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的互相关运算模块计算结构示意图;
图5是本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的基于FPGA的相关运算模块结构示意图;
图6是本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的基于FPGA的大型射电干涉阵列相关器装置框架图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明的一种基于FPGA的大型射电干涉阵列相关器的实现方法,该方法包括:
步骤S10,基于获取的射电干涉阵列天线数目Ma、各天线极化数MP,获取射电干涉阵列天线数据通道数M;
步骤S20,基于预设的条件将获取的M路射电干涉阵列通道数据平均分为N组,每组包括K路数据,K=M/N;
步骤S30,通过时分复用的方法将所述N组数据进行重排,并分别依次通过相应的相关计算模块进行N组数据中每一组数据与自身的自相关计算以及N组数据中每一组数据与其他组数据的互相关计算,完成射电干涉阵列的全相关运算。
为了更清晰地对本发明基于FPGA的大型射电干涉阵列相关器的实现方法进行说明,下面结合图1对本发明方法实施例中各步骤展开详述。
本发明一种实施例的基于FPGA的大型射电干涉阵列相关器的实现方法,包括步骤S10-步骤S30,各步骤详细描述如下:
步骤S10,基于获取的射电干涉阵列天线数目Ma、各天线极化数MP,获取射电干涉阵列天线数据通道数M。
假设射电干涉阵列天线数目为Ma,每个天线的极化数为MP,则共有M路通道数据,其中M=Ma×MP。
步骤S20,基于预设的条件将获取的M路射电干涉阵列通道数据平均分为N组,每组包括K路数据,K=M/N。
预设的条件如式(1)、式(2)所示:
Z2<Z 式(2)
Z1与Z2的计算方法分别如式(3)、式(4)所示:
其中,P为FFT的点数,P1为选取的频点数量,T1为采样时钟,T2为相关器的处理时钟,B1为自相关计算模块的数量,B2为互相关计算模块的数量,Z为FPGA芯片中乘法器的总数量。
该方法将M路通道数据平均分成N组,第1路通道数据到第K路通道数据分为第1组,第K+1路通道数据到第2K路通道数据分为第2组,以此类推,第(N-1)K+1路通道数据到第M路通道数据分为第N组,其中K=M/N,这样,即可把M路通道数据的全相关计算转换为N组数据的全相关计算。
步骤S30,通过时分复用的方法将所述N组数据进行重排,并分别依次通过相应的相关计算模块进行N组数据中每一组数据与自身的自相关计算以及N组数据中每一组数据与其他组数据的互相关计算,完成射电干涉阵列的全相关运算。
“通过时分复用的方法将所述N组数据进行重排”,其方法为:
步骤S31,将所述N组数据中进行自相关计算的分成第一数据序列,进行互相关计算的分成第二数据序列。
步骤S32,将所述第一数据序列、第二数据序列分别按照自相关、互相关计算模块的数量平均分段,在每个分段内时分复用相应的相关计算模块,根据每个分段的运算完成所述N组数据的重排。
该方法为具有相同运算规则的相关计算可以时分复用FPGA中同一个相关运算模块,从而减少FPGA中乘法器资源的使用,有利于布局布线。
如图2所示,为本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的多路数据分组划分和时分复用计算结构示意图,其中的标号表示组号,如模块[k,n]表示第k组数据与第n组数据的全相关计算。当k=n时,相关计算包含自相关计算,存在对称性,可用自相关运算模块实现;当k≠n时,相关计算全部是互相关计算,不存在对称性,可用互相关运算模块实现。模块[k,n](k=n)的计算资源比模块[k,n](k≠n)的约少一半,因此系统中自相关计算模块数量约为互相关计算模块的一半。
图2中相同灰度的模块可复用同一个相关运算模块,即如何实现时分复用,模块[k,k]可以复用同一个自相关运算模块16A,模块[k1,n1]和模块[k2,n2]可复用同一个互相关运算模块16B,其中,k1+k2=N(N为分组数),n1>k1,n2>k2,这样可以使得相关器装置中的各个相关运算模块计算负载均衡。上述只代表一种复用方式,相关器16A的数据量和相关器16B的数量根据数据采集的频率和数据处理频率以及分组后每组天线的数量K来确定,然后按照时分复用的方法对N组数据进行重排。
自相关运算模块包括数据组中每一路通道数据与自身的自相关并在积分周期内累加计算以及每一路通道数据与其他路通道数据的互相关并在积分周期内累积计算。
如图3所示,为本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的自相关运算模块计算结构示意图,其中的标号表示通道编号,如模块[l,p]表示第l路通道数据与第p路通道数据的相关运算。
互相关运算模块包括数据组中每一路通道数据与其他路通道数据的互相关并在积分周期内累加的计算。
如图4所示,为本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的互相关运算模块计算结构示意图,其中的标号同样表示通道编号,如模块[l,p]表示第l路通道数据与第p路通道数据的相关运算。
图3和图4中的每个模块都完成相同的运算,即两路通道数据相同时间相同频点的全相关并在积分周期内累加,如图5所示,为本发明基于FPGA的大型射电干涉阵列相关器的实现方法一种实施例的基于FPGA的相关运算模块结构示意图。假设Ri路通道数据在一个积分周期内的tn(n=0,1,2,…,N)时刻k个(k为2的幂次方)不同频点的数据为{Rin0,Rin1,…,Rink},Rj路通道数据相同时刻对应相同频点的数据为{Rjn0,Rjn1…,Rjnk},则相关运算模块使用FPGA中DSP48E和加法器计算资源实现相同频点的复数共轭相乘,即实现
k个频点数据流水进入相关运算模块完成相关运算。累加运算使用加法器和BRAM实现在一定积分周期内的累加,即实现
BRAM深度为k,暂存k个频点每一次累加的结果。加法器实现BRAM实时读出的暂存数据和相关模块最新时刻计算的相关数据的累加,BRAM对最新结果再次进行暂存,直至一个积分周期结束,BRAM输出最终相关累加结果。
本发明第二实施例的基于FPGA的大型射电干涉阵列相关器装置10如图6所示,该装置包括数据接收模块11、写控制模块13、缓存模块12、读控制模块14、数据重排模块15、相关运算模块16、打包输出模块17;
数据接收模块11用于获取包含天线频域数据的数据包,并解析数据包的包头信息;所述包头信息包括通道信息、频点信息。
写控制模块13基于包头信息将天线频域数据写入缓存模块12的对应缓存位置。
缓存模块12用于缓存天线频域数据,缓存模块通过BRAM实现。
读控制模块14用于判断缓存模块12中的不同通道的频域数据是否对齐,若对齐则同步读出各路通道相同时间相同频点的数据。若每路天线的数据位宽为B,缓存模块12输出的数据的位宽可为K*B,有利于后续数据重排。
数据重排模块15通过上述的基于FPGA的大型射电干涉阵列相关器的实现方法步骤S20-步骤30对应的方法进行数据分组以及重排,并将重排后的数据发送至相应的相关计算模块。
相关计算模块16用于对接收的数据进行全相关计算后在积分周期内进行累加计算。
相关计算模块包括自相关计算模块16A、互相关计算模块16B:
自相关计算模块16A用于数据组与自身的自相关计算;
互相关计算模块16B用于数据组与其他数据组之间的互相关计算。
假如实现方法如图2所示,则数据重组模块0输出[1,2,3,…,N]和[1,2,3,…,N](N表示组数据)两路数据进入自相关运算模块16A进行相关计算,数据重组模块i输出[i,i,…,i,N-i,…,N-i]和[i+1,i+2,…,N,N-i+1,…,N](N表示组数据)两路数据进入互相关运算模块16B进行计算,其中,重组模块输出的[k1,k2,k3,…,kn]代表数据重组的方式,t0时刻重组模块输出k1组的数据,t1时刻重组模块输出k2组的数据,以此类推,tn时刻输出kn组的数据。
打包输出模块17用于按照设定顺序将相关计算模块16计算后的数据打包成数据包并输出。
全相关计算并打包成数据包的数据可以用千兆以太网或万兆以太网等发送至上位机和/或存储服务器做进一步的科学研究。
所属技术领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程及有关说明,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要说明的是,上述实施例提供的基于FPGA的大型射电干涉阵列相关器的实现方法及装置,仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块来完成,即将本发明实施例中的模块或者步骤再分解或者组合,例如,上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块,以完成以上描述的全部或者部分功能。对于本发明实施例中涉及的模块、步骤的名称,仅仅是为了区分各个模块或者步骤,不视为对本发明的不当限定。
本发明第三实施例的一种存储装置,其中存储有多条程序,所述程序适于由处理器加载并执行以实现上述的基于FPGA的大型射电干涉阵列相关器的实现方法。
本发明第四实施例的一种处理装置,包括处理器、存储装置;处理器,适于执行各条程序;存储装置,适于存储多条程序;所述程序适于由处理器加载并执行以实现上述的基于FPGA的大型射电干涉阵列相关器的实现方法。
所属技术领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的存储装置、处理装置的具体工作过程及有关说明,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的模块、方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,软件模块、方法步骤对应的程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
术语“第一”、“第二”等是用于区别类似的对象,而不是用于描述或表示特定的顺序或先后次序。
术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备/装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些过程、方法、物品或者设备/装置所固有的要素。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。