一种迭代算法的处理方法及装置转让专利

申请号 : CN200810219376.6

文献号 : CN101436173B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱江

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种迭代算法的处理方法及装置,所述方法包括:将迭代算法的各个运算单元以串联方式级联成运算链;根据预置的迭代算法流程控制命令字,从所述运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;基于所确定的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。采用本发明实施例,基于预存命令字的模式进行迭代算法流程控制,使迭代逻辑架构具有通用性。

权利要求 :

1.一种迭代算法的处理方法,其特征在于,包括:

将迭代算法的各个运算单元以串联方式级联成运算链;

根据预置的迭代算法流程控制命令字,从所述运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;

基于所确定的运算单元及数据流向,对需要进行迭代运算的数据作运算处理;

其中,所述迭代算法流程控制命令字是基于迭代算法执行运算的顺序以及迭代次数配置的多组命令字,每一组命令字控制执行迭代算法流程中的一部分的运算处理;

所述确定运算过程中的数据流向,包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出。

2.如权利要求1所述的迭代算法的处理方法,其特征在于,所述根据预置的迭代算法流程控制命令字,从所述运算链中选择执行运算的运算单元,包括:将运算链上的需要执行运算操作的运算单元置为运算状态;

将运算链上的不需要执行运算操作的运算单元置为旁路状态。

3.如权利要求1所述的迭代算法的处理方法,其特征在于,根据所述多组命令字依次地执行迭代算法流程控制,完成一组命令字的控制任务后,在更新脉冲的控制下切换到下一组命令字。

4.一种迭代算法的处理装置,其特征在于,包括控制模块及迭代环模块;

所述控制模块,用于根据预置的迭代算法流程控制命令字,从所述迭代环模块的运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;所述迭代环模块的运算链由迭代算法的各个运算单元以串联方式级联而成;

所述迭代算法流程控制命令字是基于迭代算法执行运算的顺序以及迭代次数配置的多组命令字,每一组命令字控制执行迭代算法流程中的一部分的运算处理;

所述确定运算过程中的数据流向,包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出;

所述迭代环模块,用于根据所述控制模块所确定的运算链中执行运算的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。

5.如权利要求4所述的迭代算法的处理装置,其特征在于,所述迭代环模块包括:运算模块,包括由迭代算法的各个运算单元以串联方式级联而成的运算链;用于根据所述控制模块的命令字,将运算链上的需要执行运算操作的运算单元置为运算状态;将不需要执行运算操作的运算单元置为旁路状态;并基于所确定的执行运算的运算单元,对数据进行运算处理;

数据流切换模块,用于根据所述控制模块的命令字,对数据流进行切换,包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出。

6.如权利要求4或5所述的迭代算法的处理装置,其特征在于,所述控制模块具体包括:命令字存储单元,用于保存迭代算法流程控制命令字;

控制执行单元,用于根据所述命令字存储单元的多组命令字,依次地执行迭代算法流程控制,完成一组命令字的控制任务后,在更新脉冲的控制下切换到下一组命令字。

说明书 :

一种迭代算法的处理方法及装置

技术领域

[0001] 本发明涉及数字通信领域,尤其涉及一种迭代算法的处理方法及装置。

背景技术

[0002] 在数字信号处理中,常常需要对同一个或者几个级联在一起的运算模块进行多次相同的运算,并将本次迭代的输出作为下次迭代的输入(如基于多次迭代的削波算法),传统的数字信号处理器(Digital Signal Processor,DSP)可以实现这类迭代算法。
[0003] 然而,随着算法对于处理速度和带宽要求的急剧增加,特别是需要进行高速、大规模的快速傅里叶变换(Fast Fourier Transform,FFT)及其逆变换(Inverse Fast Fourier Transform,IFFT)运算的算法,对系统性能要求很高,通用DSP处理器难以实现这一要求,需要使用诸如现场可编程门阵列(Field Programmable Gate Array,FPGA)或者专用集成电路(Application-Specific Integrated Circuit,ASIC)这种全硬件并行处理的方式来进行。
[0004] 在现有技术中,FPGA或ASIC器件主要是依靠有限状态机来对迭代算法进行控制,由主状态机控制迭代循环的次数,子状态机控制一次迭代中不同算法模块之间的切换顺序和连接关系。当增加或减少算法模块时,需要修改子状态机中状态的个数,并且修改状态之间的转换关系;而当增加或减少迭代次数时,则需要修改主状态机来达到要求。
[0005] 发明人在实施本发明的过程中,发现现有的实现迭代算法的方法具有如下缺点:
[0006] 基于有限状态机的控制模式,迭代逻辑架构严重依赖于迭代算法的具体模块结构及迭代的次数,缺乏通用性;并且,迭代算法模块或迭代次数的增减,容易出现状态机的状态增减所带来的潜在控制错误。

发明内容

[0007] 本发明实施例提供一种迭代算法的处理方法及装置,基于预存命令字的模式进行迭代算法流程控制,使迭代逻辑架构具有通用性。
[0008] 本发明实施例提供了一种迭代算法的处理方法,包括:
[0009] 将迭代算法的各个运算单元以串联方式级联成运算链;
[0010] 根据预置的迭代算法流程控制命令字,从所述运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;
[0011] 基于所确定的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。
[0012] 其中,所述迭代算法流程控制命令字是基于迭代算法执行运算的顺序以及迭代次数配置的多组命令字,每一组命令字控制执行迭代算法流程中的一部分的运算处理;
[0013] 所述确定运算过程中的数据流向,包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出。
[0014] 相应地,本发明实施例还提供了一种迭代算法的处理装置,包括控制模块及迭代环模块;
[0015] 所述控制模块,用于根据预置的迭代算法流程控制命令字,从所述迭代环模块的运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;所述迭代环模块的运算链由迭代算法的各个运算单元以串联方式级联而成;
[0016] 所述迭代算法流程控制命令字是基于迭代算法执行运算的顺序以及迭代次数配置的多组命令字,每一组命令字控制执行迭代算法流程中的一部分的运算处理;
[0017] 所述确定运算过程中的数据流向,包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出;
[0018] 所述迭代环模块,用于根据所述控制模块所确定的运算链中执行运算的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。
[0019] 实施本发明实施例,具有如下有益效果:
[0020] 本发明实施例提供的迭代算法的处理方法及装置,根据迭代算法的运算次序以及迭代次数配置命令字,由预存的命令字确定迭代运算过程中的执行运算的运算单元以及数据流向;基于预存命令字的迭代算法流程控制模式,使得迭代逻辑架构与迭代算法模块及迭代次数无关,具有通用性;在简化设计的同时也降低了模块之间的耦合度,使得模块的独立开发和验证更加容易。

附图说明

[0021] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0022] 图1是本发明实施例提供的迭代算法的处理装置的结构示意图;
[0023] 图2是本发明实施例提供的数据流切换模块的结构示意图;
[0024] 图3是本发明实施例提供的运算单元的结构示意图;
[0025] 图4是本发明实施例提供的运算单元的信号时序图;
[0026] 图5是本发明实施例提供的运算模块的等效电路示意图;
[0027] 图6是本发明实施例提供的基于多次迭代的削波算法的处理装置的结构示意图;
[0028] 图7是本发明实施例提供的迭代算法的处理方法的流程示意图。

具体实施方式

[0029] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030] 本发明实施例提供的迭代算法的处理装置,基于预存命令字的模式进行迭代算法流程控制,使得迭代逻辑架构与迭代算法模块及迭代次数无关,提供了一个通用的逻辑架构以解决大部分类似迭代算法在FPGA或ASIC器件中的实现。所述迭代算法的处理装置包括控制模块及迭代环模块,其中:
[0031] 控制模块用于根据预置的迭代算法流程控制命令,从所述迭代环模块的运算链中选择执行运算的运算单元,并确定运算过程中的数据流向;所述迭代环模块的运算链由迭代算法的各个运算单元以串联方式级联而成;
[0032] 迭代环模块基于所述控制模块所确定的运算链中执行运算的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。进一步的,所述迭代环模块具体包括数据流切换模块及运算模块。
[0033] 参见图1,是迭代算法的处理装置的一个实施例的结构示意图,包括控制模块1、数据流切换模块2及运算模块3。
[0034] 具体的,控制模块1用于根据预置的迭代算法流程控制命令字,确定所述运算模块3中的运算链的工作模式以及所述数据流切换模块2的数据流向;所述控制模块1进一步包括命令字存储单元及控制执行单元,其中:
[0035] 所述命令字存储单元用于保存迭代算法流程控制命令字,包括基于迭代算法执行运算的顺序以及迭代次数配置的多组命令字,每一组命令字控制执行迭代算法流程中的一部分的运算处理。在本发明实施中,若对数据流切换模块2进行数据流向控制选择需要m个控制位,运算模块具n个运算单元,且每个运算单元存在k个控制位,则本发明实施例的命令字的位宽为(m+nk)个比特位;而完成整个迭代算法流程控制,所需要的命令字的数目由具体的迭代算法模块及迭代次数决定。
[0036] 所述控制执行单元用于在迭代运算过程中,通过读取所述命令字存储单元中的命令字来执行迭代算法流程控制;完成一组命令字的控制任务后,由更新脉冲控制切换到下一组命令字,所述的多组命令字依次地执行控制,以完成整个迭代算法处理流程。
[0037] 数据流切换模块2用于根据所述控制模块1所确定的数据流向,对数据流进行切换,包括:将需要进行迭代运算的数据传送至所述运算模块3中进行运算处理;或者,将所述运算模块3输出的数据再次传送至所述运算模块3中进行运算处理;或者,将所述运算模块3输出的数据作为最终的迭代运算结果输出。
[0038] 具体的,如图2所示,是本发明实施例提供的数据流切换模块2的结构示意图。如图2所示的各数据通道标志解释如下:
[0039] 数据输入通道EX_DIN:用于接收需要进行迭代运算的数据;
[0040] 循环数据输入通道LOOP_DIN:用于接收运算模块输出的数据;
[0041] 循环数据输出通道LOOP_DOUT:用于将数据传送至运算模块中进行循环运算处理;
[0042] 数据输出通道EX_DOUT:用于输出最终的迭代运算结果;
[0043] 命令字输入通道Comd:用于接收控制模块下发的数据流控制命令字。
[0044] 数据流切换模块2根据Comd通道所接收到数据流切换命令字进行数据流切换,例如:
[0045] 当数据流切换命令字为“01”时,选择器选择EX_DIN通道的数据传送至LOOP_DOUT通道,将需要进行迭代运算的数据传送至运算模块进行运算处理;
[0046] 当数据流切换命令字为“10”时,选择器选择LOOP_DIN通道的数据传送至LOOP_DOUT通道,将本次运算模块的输出数据作为下次迭代的输入,再次传送至所述运算模块进行运算处理;
[0047] 当数据流切换命令字为“11”时,将LOOP_DIN通道的数据传送至EX_DOUT通道,通过EX_DOUT通道输出最终的迭代运算结果。
[0048] 其中,对于数据流切换命令为“00”的情况,由于“00”不执行任何的控制任务,因此,本实施例在配置命令字时,“00”不作为数据流切换命令字出现。
[0049] 进一步的,如图1所示的运算模块3包括至少一个运算单元,每个运算单元执行迭代算法中的一部分的运算处理。各个运算单元以串联方式级联成运算链,在控制模块1下发的命令字的控制下,运算链上的各个运算单元被置为运算状态或者旁路状态。具体的,如图3所示,是本发明实施例提供的运算单元的结构示意图,图3中所示的信号标志解释如下:
[0050] L_IN_SYNC:输入数据开始标志;
[0051] L_OUT_SYNC:输出数据开始标志;
[0052] L_IN_VALID:输入数据有效标志;
[0053] L_OUT_VALID:输出数据有效标志;
[0054] L_DIN:输入数据;
[0055] L_DOUT:输出数据;
[0056] Comd:控制命令字信号。
[0057] 具体的,如图4所示,是本发明实施例提供的运算单元的信号时序图。运算单元在接收到L_IN_SYNC及L_IN_VALID有效信号后,开始接收输入数据;在数据运算处理完毕后产生L_OUT_SYNC及L_OUT_VALID有效信号,并输出运算结果。
[0058] 进一步的,所述运算单元的状态由控制模块1下发的控制命令字Comd确定,当命令字Comd有效时(假设Comd=‘1’),运算执行单元对输入数据进行运算处理,选择器选择运算执行单元的运算结果进行数据输出;当命令字Comd无效时(假设Comd=‘0’),则运算执行单元被旁路,不对输入数据进行运算处理,选择器选择输入数据直接输出。
[0059] 下面仅以运算模块中的运算链由三个运算单元串联组成为例,对运算模块的等效电路进行说明。如图5所示,运算模块的运算链由运算单元IP1、IP2、IP3以串联方式级联而成,运算链上的各个运算单元在命令字的控制下,处于运算状态或旁路状态。本实施例假设命令字Comd为‘1’时有效,运算单元处于运算状态;假设命令字Comd为‘0’时无效,运算单元处于旁路状态。如图5所示:
[0060] 当Comd={001}时,运算链上的运算单元IP3及IP2处于旁路状态,运算单元IP1处于运算状态,则运算模块等效于运算单元IP1执行运算处理的电路;
[0061] 当Comd={110},运算链上的运算单元IP3及IP2处于运算状态,运算单元IP1处于旁路状态,则运算模块等效于运算单元IP2及IP3模块串联起来执行运算处理的电路。
[0062] 本发明实施例提供的迭代算法的处理装置,根据迭代算法的运算次序以及迭代次数配置命令字,由预存的命令字确定迭代运算过程中的执行运算的运算单元以及数据流向;基于预存命令字的迭代算法流程控制模式,使得迭代逻辑架构与迭代算法模块及迭代次数无关,具有通用性;在简化设计的同时也降低了模块之间的耦合度,使得模块的独立开发和验证更加容易。
[0063] 下面以基于多次迭代的削波算法为例,对本发明实施例提供的迭代算法的处理装置进行说明。
[0064] TR削波是具有典型迭代结构的算法,其算法原理如下:频域信号先经过相位旋转单元(如复数乘法器)进行相位旋转,然后通过快速傅里叶逆变换(Inverse Fast Fourier Transform,IFFT)运算获得时域信号,时域信号进入噪声提取单元,将时域波形与门限值进行比较后得到削波噪声信号,将削波噪声信号进行快速傅里叶变换(Fast Fourier Transform,FFT)后获得其频谱分布,进行幅度调整产生对消信号,再将原始的频域数据和对消信号进行对消运算。需要进行削波算法处理的数据依次经过相位旋转单元、快速傅里叶逆变换IFFT、噪声提取单元、快速傅里叶变换FFT单元和噪声对消单元运算处理后,所得到的运算结果再次反馈到上述削波运算链进行运算处理,上述运算经过N次迭代后构成完整的削波运算(通常N=6或者8)。
[0065] 参见图6,是本发明实施例提供的基于多次迭代的削波算法的处理装置的示意图,包括控制模块50、数据流切换模块51以及运算模块52,其中:
[0066] 数据流切换模块51在控制模块50的命令字的控制下,从EX_DIN通道接收需要进行削波运算的数据,通过LOOP_DOUT和LOOP_DIN在削波迭代环中进行循环运算,并将最终的削波运算结果通过EX_DOUT通道输出;
[0067] 运算模块52包括四个运算单元,每个运算单元进行削波算法中的一类运算处理,各个运算单元以串联方式级联形成运算链,在控制模块50的命令字的控制下,运算链上的各个运算单元被置为运算状态或旁路状态。所述的运算单元如下:
[0068] 相位旋转单元IP0,用于进行相位旋转;在本发明实施例中,相位旋转单元可以采用复数乘法器,经过相位旋转后可改变原始输入数据的相位信息;
[0069] 噪声提取单元IP1,用于将时域波形与门限值进行比较得到削波噪声信号;
[0070] 噪声对消单元IP2,用于进行对消运算处理;
[0071] FFT/IFFT单元IP3,用于进行快速傅里叶变换FFT或快速傅里叶逆变换IFFT运算;其中,FFT与IFFT的互变性原理,如下:
[0072] 若定义FFT和IFFT变换对为如下关系:
[0073]
[0074]
[0075] 则IFFT可以使用下面的结构进行计算:
[0076]
[0077] 证明如下:
[0078]
[0079]
[0080]
[0081]
[0082] 计算交换实部和虚部后x′(n)的FFT:
[0083]
[0084]
[0085]
[0086]
[0087] 再次交换上述的FFT实现结构中输出的实部和虚部,并将变量n替换为k,得到:
[0088]
[0089]
[0090] 综上所述,有FFT′=IFFT。
[0091] 在本实施例中,将FFT运算及IFFT运算合并在同一个运算单元中实现,当输入数据的I/Q对应FFT本身的real/imag输入端口,并且FFT的real/imag输出端口对应输出数据的I/Q,那么就是正向FFT运算。当输入数据的Q/I对应FFT本身的real/imag输入端口,并且FFT的real/imag输出端口对应输出数据的Q/I,那么就是逆向FFT运算。因此,通过进行输入输出数据的I/Q交换,即可实现FFT或者IFFT操作。
[0092] 进一步的,控制模块50用于对所述数据流切换模块51及运算模块52进行控制,具体包括命令字存储单元501和地址计数器502。其中,命令字存储单元501存储有多组命令字Comd,在所述数据流切换模块51所产生的命令堆栈的更新脉冲的控制下,所述的多组命令字Comd依次地执行削波算法流程控制;地址计数器502每接收到所述数据流切换模块51发出的更新脉冲后,地址计数器加一,切换到下一组命令字。其中,数据流切换模块51通过LOOP_DOUT通道输出数据时,同时产生命令堆栈的更新脉冲,触发控制模块50切换至下一组命令字。
[0093] 具体的,削波算法流程控制命令字Comd的一个实施例的格式如下:
[0094]
[0095] 命令字Comd的低5位(b4~b0)为运算单元状态控制字段,用于控制运算模块52中的各个运算单元的状态,如下:
[0096] b4为FFT/IFFT控制位,用于控制FFT/IFFT单元输入输出数据的I/Q交换,实现FFT或者IFFT操作。其中,当b4为‘1’时,FFT/IFFT单元IP3实现FFT操作;当b4为‘0’时,FFT/IFFT单元IP3实现IFFT操作;
[0097] b3为FFT/IFFT单元IP3状态位;
[0098] b2为噪声对消单元IP2状态位;
[0099] b1为噪声提取单元IP1状态位;
[0100] b0为相位旋转单元IP0状态位。
[0101] 其中,若Comd的b3~b0中的某一位为‘1’,则指示该位所对应的运算单元处于运算状态;若为‘0’,则指示该位所对应的运算单元处于旁路状态;
[0102] 命令字Comd的b6、b5为数据流向控制字段,用于控制数据流切换模块51进行数据流切换,如下:
[0103] 当b6、b5为“01”时,接收EX_DIN通道输入的需要进行削波运算的数据,通过LOOP_DIN通道传送至运算模块52中作运算处理;
[0104] 当b6、b5为“10”时,将LOOP_DIN通道的数据传送至LOOP_DOUT通道,即将本次迭代的输出作为下次迭代的输入,进行循环运算;
[0105] 当b6、b5为“11”时,将LOOP_DIN通道的数据传送至EX_DOUT通道,即将最终的迭代运算结果通过EX_DOUT通道输出。
[0106] 其中,对于命令字Comd的b6、b5为“00”的情况,由于“00”不执行任何的控制任务,因此,在本实施例中,b6、b5为“00”的情况不会在命令字中出现。
[0107] 为方便说明,下面仅以削波算法为两次迭代运算为例(削波算法通常情况下需要进行6或8次迭代),基于如图6所示的削波算法逻辑架构,对削波算法的流程进行说明。根据削波算法中的各个运算单元执行运算的顺序及迭代次数,配置并保存削波算法流程控制所需的命令字,所述的命令字Comd(b6~b0)依次为:{0101001}、{1011010}、{1010100}、{1001001}、{1011010}、{1010100}、{1110000}。需要说明的是,若FFT/IFFT单元IP3状态位b3为‘0’(即FFT/IFFT单元处于旁路状态),则FFT/IFFT控制位b4可以置为‘1’或者‘0’,两者等效。上述所配置的命令字,仅以b3为‘0’时,b4置为‘1’为例进行说明。
[0108] 控制模块50依次执行预存的多组命令字的控制任务,削波算法流程如下:
[0109] {0101001}:数据流切换模块51从EX_DIN接收需要进行削波运算的数据,通过LOOP_DOUT传送至运算模块52,依次通过相位旋转单元IP0、FFT/IFFT单元(作IFFT运算)IP3进行运算处理;
[0110] {1011010}:数据流切换模块51从LOOP_DIN接收运算模块52的运算结果,通过LOOP_DOUT再次传送至运算模块52,依次通过噪声提取单元IP1、FFT/IFFT单元(作FFT运算)IP3进行运算处理;
[0111] {1010100}:数据流切换模块51从LOOP_DIN接收运算模块52的运算结果,通过LOOP_DOUT再次传送至运算模块52,由噪声对消单元IP2进行运算处理后,完成削波算法的一次迭代。
[0112] {1001001}:数据流切换模块51从LOOP_DIN接收削波算法的一次迭代的运算结果作为下一次迭代的输入,通过LOOP_DOUT再次传送至运算模块52中,依次通过相位旋转单元IP0、FFT/IFFT单元(作IFFT运算)IP3进行运算处理;
[0113] {1011010}:数据流切换模块51从LOOP_DIN接收运算模块52的运算结果,通过LOOP_DOUT再次传送至运算模块52,依次通过噪声提取单元IP1、FFT/IFFT单元(作FFT运算)进行运算处理;
[0114] {1010100}:数据流切换模块51从LOOP_DIN接收运算模块52的运算结果,通过LOOP_DOUT再次传送至运算模块52,由噪声对消单元IP2进行运算处理后,完成削波算法的二次迭代。
[0115] {1110000}:完成削波算法的二次迭代运算后,数据流切换模块51从LOOP_DIN接收运算模块52输出的二次迭代运算结果,通过EX_DOUT输出,完成整个削波算法的处理流程。
[0116] 本发明实施例提供的基于多次迭代的削波算法的处理装置,基于预存命令字的迭代算法流程控制模式,使得迭代架构的工作模式完全由命令字存储单元的内容决定,而该存储单元的内容可以通过高软(如MMU或者PC上运行的应用软件),或者其它运行于FPGA中的逻辑,进行直接地、实时地修改,这就意味着可以直接地对一个实时运行的迭代逻辑的功能进行修改,使得迭代逻辑架构与迭代算法模块及迭代次数无关,具有通用性;各个迭代运算单元以“链”的方式串联连接,在预置的命令字的控制下,任意的运算单元组合均可以一个接一个地执行运算,不会产生多余的时钟损耗,从而提高吞吐率;并且,将FFT及IFFT合并在同一个运算单元中实现,由命令字控制执行FFT操作或IFFT操作,可提高资源利用率。
[0117] 上述仅以基于多次迭代的削波算法为例进行说明,本发明实施例提供的迭代算法的处理装置同样可以应用于其它的具有迭代(类似迭代)或者时分复用系统。
[0118] 参见图7,是本发明实施例提供的迭代算法的处理方法的流程示意图。
[0119] S100,将迭代算法的各个运算单元以串联方式级联成运算链;其中,每个运算单元在命令字的控制下,可处于执行运算状态或旁路状态;
[0120] S101,根据预置的迭代算法流程控制命令,从所述运算链中选择执行运算的运算单元;
[0121] 所述预置的迭代算法流程控制命令是基于迭代算法的运算次序以及迭代次数配置的多组命令字,每一组命令字包括数据流向控制字段及运算单元状态控制字段;根据所述的多组命令字,依次地执行迭代算法流程控制,在完成一组命令字的控制任务后,由更新脉冲控制切换到下一组命令字。
[0122] 进一步的,在迭代运算过程中,根据预置的迭代算法流程控制命令,确定迭代运算模块中的以串联方式连接的各个运算单元的状态,包括:将运算链上的需要执行运算操作的运算单元置为运算状态;将运算链上的不需要执行运算操作的运算单元置为旁路状态。
[0123] S102,根据预置的迭代算法流程控制命令,确定运算过程中的数据流向;具体包括:将需要进行迭代运算的数据传送至运算链中进行运算处理;或者,将运算链输出的数据再次传送至所述运算链中进行运算处理;或者,将运算链输出的数据作为迭代运算结果输出。
[0124] S103,基于所确定的执行运算的运算单元及数据流向,对需要进行迭代运算的数据作运算处理。
[0125] 本发明实施例提供的迭代算法的处理方法及装置,根据迭代算法的运算次序以及迭代次数配置命令字,由预存的命令字确定迭代运算过程中的执行运算的运算单元以及数据流向;基于预存命令字的迭代算法流程控制方式,使得迭代逻辑架构与迭代算法模块及迭代次数无关,具有通用性;在简化设计的同时也降低了模块之间的耦合度,使得模块的独立开发和验证更加容易;并且,各个迭代运算单元以“链”的方式串联连接,在预置的命令字的控制下,任意的运算单元组合均可以一个接一个地执行运算,不会产生多余的时钟损耗,从而提高吞吐率。
[0126] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0127] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。