本申请涉及信号处理领域,更具体的,涉及一种fft处理器及其处理数据的方法。
背景技术:
合成孔径雷达(syntheticapertureradar,sar)是fft算法的一个典型应用场景。这是一种具有全天时、全天候工作能力的二维成像雷达,已广泛应用于战场预警侦察、武器精准制导、各类目标识别、矿物资源勘探、重大灾情监测等众多国防和国民经济的重要领域。在雷达成像过程中,需要获得良好的分辨率以及较高的信噪比。常见的sar成像算法,采用了关键的脉冲压缩技术以同时获取较高的分辨率和信噪比,在这一技术中,fft多次被使用,是算法流程中重要的组成部分,如信号频谱获得、匹配滤波器使用以及信号还原等。fft处理器的性能关系到sar系统的实时性与成像质量,因此,高效稳定的fft处理器是sar系统的重要组成部分。
随着对sar图像分辨率要求的不断提高,fft处理器需要单次处理的点数也随之变大,目前由xilinx公司提供的fft运算ip核最高可配置为64k点,难以满足高分辨sar系统对fft点数的需求。
技术实现要素:
为了解决以上问题,本申请提出一种fft处理器及其处理数据的方法。本申请提出的fft处理器采用流水线结构。流水线结构的fft处理器可以同时实现数据连续输入输出、大数据吞吐能力与高实时性,使用最为广泛,本申请提供的fft处理器使用流水线结构。而流水线结构中占用资源最少、性能最好的电路结构为单路延时反馈结构(single-pathdelayfeedback,sdf)。
第一方面,本发明提供一种fft处理器。所述fft处理器包括:
串转并模块,用于接收第一时域数据并将接收的所述第一时域数据由串行转为2n路第二时域数据并行,将所述2n路第二时域数据一一对应的输入2n个处理通道;其中,2n不大于所述第一时域数据的长度,n为大于0的整数;
2n个所述处理通道中的任意一个当前处理通道包括依次排列的m个操作级模块以及依次排列的m-1个乘法器模块,第i个所述操作级模块与第i+1个所述操作级模块之间通过第i个所述乘法器模块连接,其中,m为大于0的整数,i为大于0的整数且不大于m;其中,输入所述当前处理通道的第二时域数据,经过m个所述操作级模块以及m-1个所述乘法器模块进行运算后得到一组第一频域数据,第一频域数据被输出到旋转因子乘法器模块;
旋转因子乘法器模块,用于将来自2n个所述处理通道的第一频域数据分别与旋转因子相乘,获得2n组第二频域数据后输出;
基-2n蝶形单元,用于对2n组第二频域数据进行基-2n运算,得到第三频域数据并输出到并转串模块;
并转串模块,用于将2n组第三频域数据合并为串行的第四频域数据。
可选地,fft处理器还包括依次排列的m-1个旋转因子产生器,第i个旋转因子产生器用于为每个所述处理通道中的第i个所述乘法器模块提供旋转因子。
可选地,所述操作级模块包括第一处理单元、第二处理单元以及第三处理单元;其中,
所述第一处理单元包括第一sdf结构和第一复数转换单元;所述第一sdf结构用于对其接收的当前数据进行基-2蝶形运算;所述第一复数转换单元用于对第一sdf结构运算得到的复数实现实部与虚部的互换,得到并输出第一转换结果;当i为1时,所述当前数据为第二时域数据;当i大于1且不大于m时,所述当前数据为第i-1操作级模块的输出;
所述第二处理单元包括第二sdf结构和第二复数转换单元以及常数因子转换单元;所述第二sdf结构用于对其接收的第一转换结果进行基-2蝶形运算;所述第二复数转换单元用于对第二sdf结构运算得到的复数实现复数实部与虚部的互换,得到并输出第二转换结果;所述常数因子转换单元用于对第二转换结果进行特定的旋转后输出;所述第三处理单元包括第三sdf结构;所述第三sdf结构用于对其接收的当前数据进行基-2蝶形运算;所述当前数据为第二处理单元的输出。
可选地,所述时域数据的数据类型为定点数。
可选地,m个所述操作级模块中的第i个操作级模块对其接收的当前数据进行处理,得到并输出目标数据,目标数据的位宽与当前数据的位宽之间的差值为4位;当i为1时,所述接收的当前数据为第二时域数据;当i大于1且不大于m时,所述接收的当前数据为第i-1个操作级模块的输出。
第二方面,本发明提供一种fft处理器处理数据的方法,包括:
通过串转并模块接收第一时域数据并将接收的所述第一时域数据由串行转为2n路第二时域数据并行,将所述2n路第二时域数据一一对应的输入2n个处理通道;其中,2n不大于所述第一时域数据的长度,n为大于0的整数;2n个所述处理通道中的任意一个当前处理通道包括依次排列的m个操作级模块以及依次排列的m-1个乘法器模块,第i个所述操作级模块与第i+1个所述操作级模块之间通过第i个所述乘法器模块连接,其中,m为大于0的整数,i为大于0的整数且不大于m;对于2n个所述处理通道中的每个当前处理通道,通过所述当前处理通道包括的m个所述操作级模块以及m-1个所述乘法器模块进行运算后得到一组第一频域数据,并将该组第一频域数据输出到旋转因子乘法器模块;
通过旋转因子乘法器模块将来自2n个所述处理通道的第一频域数据分别与旋转因子相乘,获得2n组第二频域数据后输出;
通过基-2n蝶形单元对2n组第二频域数据进行基-2n运算,得到第三频域数据并输出到并转串模块;
通过并转串模块将2n组第三频域数据合并为串行的第四频域数据。
可选地,处理数据的方法还包括:通过依次排列的m-1个旋转因子产生器中的第i个旋转因子产生器,为每个所述处理通道中的第i个所述乘法器模块提供旋转因子。
可选地,处理数据的方法中所述时域数据的数据类型为定点数。
通过本说明书实施例中提供的方法及装置,可以实现满足类似于sar成像系统等大点数fft应用场景,逻辑资源占用减少,可以有效提高硬件资源的利用率。
附图书说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中提供的技术方案的应用场景图;
图2为本申请实施例中提供的fft处理器的整体结构示意图;
图3为本申请实施例中提供的fft处理器中操作级模块的结构示意图;
图4为本申请实施例中提供的操作级模块中sdf的结构示意图;
图5为本申请实施例中提供的数据位宽规划方案的示意图;
图6为本申请实施例中提供的一种fft处理器处理方法的过程示意图;
图7为本申请实施例中提供的算法中的三个(-1)项的结构实现示意图;
图8为本申请实施例中提供的一种算法实现结构;
图9为本申请实施例中提供的另一种算法实现结构。
具体实施方式
下面结合附图和实施例,对本发明所提供的技术方案做进一步的详细描述。
图1是本申请实施例中提供的技术方案的应用场景图。如图1所示,接收数据输入,将时域数据输入fft处理器,经过fft处理器处理后得到频域数据,将得到的频域数据进行输出处理。
图2是本申请实施例中提供的fft处理器的整体结构示意图。
如图2所示,本申请提供的fft处理器包括串转并模块,2n个处理通道,旋转因子乘法器模块,基-2n蝶形单元及并转串模块。
所述串转并模块,用于接收第一时域数据并将接收的第一时域数据由串行转为2n路第二时域数据并行,将2n路第二时域数据一一对应的输入2n个处理通道。其中,2n不大于所述第一时域数据的长度,n为大于0的整数。
举例来说,串转并模块接收的第一时域数据点数为128k,n取值为2,经过串转并模块,将串行的128k点第一时域数据转为4路32k点的时域数据,即将串行的第一时域数据转为4路并行的第二时域数据。
对于每一个处理通道而言,即2n个处理通道中的任意一个当前处理通道,包括依次排列的m个操作级模块以及依次排列的m-1个乘法器模块,第i个所述操作级模块与第i+1个所述操作级模块之间通过第i个所述乘法器模块连接,其中,m为大于0的整数,i为大于0的整数且不大于m。其中,输入当前处理通道的第二时域数据,经过m个操作级模块以及m-1个乘法器模块进行运算后,得到一组第一频域数据,第一频域数据被输出到旋转因子乘法器模块。
具体而言,请参考图2,以m值取5为例,单个处理通道包括5个依次排列的操作级模块stage1、stage2、stage3、stage4、stage5以及4个依次排列的乘法器模块。32k点数据(第二时域数据)依次经过5个操作级模块和4个乘法器模块的运算,得到一组第一频域数据,最后一个操作级模块(stage5)会将其得到的该组第一频域数据输出到旋转因子乘法器模块。
旋转因子乘法器模块,用于将来自2n个所述处理通道的第一频域数据分别与旋转因子相乘,获得2n组第二频域数据后输出。
基-2n蝶形单元,用于对2n组第二频域数据进行基-2n运算,得到第三频域数据并输出到并转串模块。
并转串模块,用于将2n组第三频域数据合并为串行的第四频域数据。
具体而言,经过旋转因子乘法器模块,第一频域数据完成与旋转因子
在一些可能的示例中,fft处理器还包括依次排列的m-1个旋转因子产生器,第i个旋转因子产生器用于为每个所述处理通道中的第i个所述乘法器模块提供旋转因子。
举例来说,每个操作级模块后的乘法器模块中的旋转因子并不是提前设置好的,而是由旋转因子产生器tw_gen实时生成后所提供的。而为了节省资源,2n处理通道中各通道的第i个乘法器模块共用一个旋转因子产生器,也就是说,2n处理通道中各通道的第i个乘法器模块共用相同的旋转因子。换而言之,2n个处理通道中的每一通道,其包含的第i个乘法器模块的功能或运算过程,是相同的。
在一些可能的示例中,操作级模块可以包括3个处理单元,为第一处理单元,第二处理单元以及第三处理单元。所述处理单元用于对数据进行特定方向的旋转。
图3为本申请实施例中提供的fft处理器中操作级模块的结构示意图。图4为本申请实施例中提供的操作级模块中sdf的结构示意图。
在一些较为具体的示例中,请参考图3和图4,所述第一处理单元包括第一sdf结构和第一复数转换单元;
所述第一处理单元包括第一sdf结构和第一复数转换单元;所述第一sdf结构用于对其接收的当前数据进行基-2蝶形运算;所述第一复数转换单元用于对第一sdf结构运算得到的复数实现实部与虚部的互换,得到并输出第一转换结果;当i为1时,所述当前数据为第二时域数据;当i大于1且不大于m时,所述当前数据为第i-1操作级模块的输出;
所述第二处理单元包括第二sdf结构和第二复数转换单元以及常数因子转换单元;所述第二sdf结构用于对其接收的第一转换结果进行基-2蝶形运算;所述第二复数转换单元用于对第二sdf结构运算得到的复数实现复数实部与虚部的互换,得到并输出第二转换结果;所述常数因子转换单元用于对第二转换结果进行特定的旋转后输出;
所述第三处理单元包括第三sdf结构;所述第三sdf结构用于对其接收的当前数据进行基-2蝶形运算;所述当前数据为第二处理单元的输出。
具体的,输入某个操作级模块的当前数据经过第一处理单元处理后进入第二处理单元,经过第二处理单元处理后进入第三处理单元,经过第三处理单元处理后输出到下一操作级模块或旋转因子乘法器模块。当i为1时,当前数据为第二时域数据,当i大于1且不大于m时,当前数据为第i-1操作级模块的输出。
如前所述,sdf结构,对其接收的当前数据进行基-2蝶形运算,所述当前数据为其所属的处理单元的前一处理单元的输出或其所属的操作级模块的前一操作级模块的输出。如图4所示,一个sdf结构中包括一个内存单元和一个基-2蝶形运算单元。内存单元用于缓存基-2蝶形单元下通路产生的结果。
复数转换单元用于实现复数实部与虚部的互换。常数因子转换单元用于实现对经过第二复数转换单元处理过的数据进行特定的旋转,特定的旋转为将复数数据在复平面进行顺时针旋转45°。
例如,每一条通道中包含5个操作级模块,操作级模块之间通过乘法器模块连接,旋转因子产生器为乘法器模块提供了旋转因子。每个操作级模块中包含3个处理单元(第一处理单元,第二处理单元,第三处理单元),第一处理单元中包含一个sdf结构和一个复数转换单元-j,第二处理单元中包含一个sdf结构和一个复数转换单元-j以及一个常数因子转换单元
具体的,当32k点时域数据流入当前通道的第一操作级模块(stage1)的第一处理单元中,前16k点数据缓存到第一级的内存单元中,在后16k点数据流入的过程中,每接收一位,直接与缓存区中对应的数据进行蝶形运算,并将上通路产生的结果送往下一级,而下通路产生的结果反馈到缓存区中,覆盖使用过的数据。当后16k点数据全部被接收后,第一级缓存区中全部是第一级蝶形下通路的运算结果,此时sdf结构需要人为生成0序列作为输入以驱动蝶形单元,由于下通路的输入为0,故缓存区的数据将不被改变,逐个送入下一级,以此代替置换器的作用。在之后的各级中,以相同方法操作,只需输入0作为驱动。
在一些可能的示例中,时域数据的数据类型为定点数。
具体的,定点数的小数点位置固定,数据精度高于浮点数,电路实现简单。采用定点数,表示范围是-1到0.9999999995,表示精度为2^(-31)。
在一些可能的示例中,m个所述操作级模块中的第i个操作级模块对其接收的当前数据进行处理,得到并输出目标数据,目标数据的位宽与当前数据的位宽之间的差值为4位;当i为1时,所述接收的当前数据为第二时域数据;当i大于1且不大于m时,所述接收的当前数据为第i-1个操作级模块的输出。
图5是本申请实施例中提供的数据位宽规划方案的示意图。示例性的,请参考图5,数据流入蝶形单元之前其位宽为初始位宽,此位宽同时表示数据实部和虚部的位宽。数据经过第一级基-2蝶形单元时,所进行的操作是一次加法或者一次减法,需要将数据位宽扩展1位,以保证所有结果不溢出。
当数据与-j因子相乘,实际是数据的实部和虚部交换位置,不需要扩展数据位宽。
数据经过第二级基-2蝶形单元时,同理数据位宽再扩展1位。
数据进入第3级基-2蝶形单元前,可分解为先与-j进行相乘,此操作不改变位宽,再与
数据经过第3级基-2蝶形单元时,数据位宽再扩展1位。
综上,数据位宽经过一个操作级模块共需扩展4位即可。
具体的,每个独立的乘法器模块,数据位宽扩展1位。根据上述定点化fft溢出规划方案,每个操作级模块扩展位宽为4位,每个操作级模块外的乘法器模块扩展位宽为1位,那么5个操作级模块和4个乘法器模块共需要扩展位宽24位。
采用本申请实施例提供的fft处理器,可以更加节省乘法器模块资源,实现大点数fft处理器的效果。
图6为本申请实施例提供的一种fft处理器处理方法。如图6所示,处理方法包括:
s601:通过串转并模块接收第一时域数据并将接收的所述第一时域数据由串行转为2n路第二时域数据并行,将所述2n路第二时域数据一一对应的输入2n个处理通道;其中,2n不大于所述第一时域数据的长度,n为大于0的整数。2n个所述处理通道中的任意一个当前处理通道包括依次排列的m个操作级模块以及依次排列的m-1个乘法器模块,第i个所述操作级模块与第i+1个所述操作级模块之间通过第i个所述乘法器模块连接,其中,m为大于0的整数,i为大于0的整数且不大于m。
在一些可能的示例中,处理方法中所述时域数据数据类型为定点数。
s602:对于2n个所述处理通道中的每个当前处理通道,通过所述当前处理通道包括的m个所述操作级模块以及m-1个所述乘法器模块进行运算后得到一组第一频域数据,并将该组第一频域数据被输出到旋转因子乘法器模块。
其中,每个操作级模块中采用的算法实现原理如下:
n点dft公式为:
当n为8的整数倍时,n和k可依据以下方式进行分解:
将此分解方式代入dft公式中可得:
dft可看作是一个叠加的运算,每一个k值对应的值都需要所有的x(n)参与叠加,但每一个x(n)具有不用的权值,即旋转因子,拆分的目的就是将旋转因子转化为多级实现。图7为本申请实施例中提供的算法中的三个(-1)项的结构实现示意图。请参考图7,结合x(n)叠加的理念,三个(-1)项可以由以下图7结构实现。图7中n4项的范围省略未写。图中每个方框都代表一个数据组,每个数据组中n4的范围为:
基于图7的基本框架,可将(-j)项,
在一些可能的示例中,处理方法中所述操作级模块包括3个处理单元,为第一处理单元、第二处理单元以及第三处理单元。其中,
所述第一处理单元包括第一sdf结构和第一复数转换单元;通过所述第一sdf结构对其接收的当前数据进行基-2蝶形运算;通过所述第一复数转换单元对第一sdf结构得到的复数实现实部与虚部的互换后输出;
所述第二处理单元包括第二sdf结构和第二复数转换单元以及常数因子转换单元;通过所述第二sdf结构对其接收的当前数据进行基-2蝶形运算;通过所述第二复数转换单元对第二sdf结构得到的复数实现复数实部与虚部的互换后输出;通过所述常数因子转换单元对经过第二复数转换单元处理过的数据进行特定的旋转后输出;所述当前数据为第一处理单元的输出;
所述第三处理单元包括第三sdf结构;通过所述第三sdf结构对其接收的当前数据进行基-2蝶形运算;所述当前数据为第二处理单元的输出。
在一些可能的示例中,处理方法还包括通过依次排列的m-1个旋转因子产生器中的第i个旋转因子产生器,为每个所述处理通道中的第i个所述乘法器模块提供旋转因子。
s603:通过旋转因子乘法器模块将来自2n个所述处理通道的第一频域数据分别与旋转因子相乘,获得2n组第二频域数据后输出。
s604:通过基-2n蝶形单元对2n组第二频域数据进行基-2n运算,并输出第三频域数据到并转串模块。
s605:通过并转串模块将2n组第三频域数据合并为串行的第四频域数据。
表1
表1为分别采用基-2算法、基-4算法以及本方法,对资源的占用情况比较。通过表1可以得知,采用本方法,可以节约大量的乘法器模块资源。
在此处所提供的说明书中,说明了大量的具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下完成实现。在一些示例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。