具体实施方式
本发明实施例中为了减小存储器的存储空间,提高进行DFT运算的速率,提供了一种旋转因子的生成方法,该方法包括:生成装置接收生成启动命令,其中该生成启动命令中包含进行DFT运算的点数信息,以及当前该点数进行基几蝶形运算的信息,根据接收到的点数信息,以及当前进行基几蝶形运算的 信息,生成该点数DFT运算所需每个旋转因子的存储地址信息,读取对应地址存储的旋转因子信息,并根据读取的旋转因子及旋转因子并行产生电路,生成对应当前该点数进行基几蝶形运算的每个旋转因子。由于本发明实施例中只将部分点数的部分基本旋转因子存储在存储器中,其他旋转因子根据发明实施例提供的具体过程并行生成,因此该实现方式大大的节省了存储器的空间,同时由于进行每级蝶形运算的旋转因子可以并行的输出,从而提高了进行DFT运算的速率。
下面结合说明书附图对本发明实施例进行详细说明。
为了解决在多种点数的DFT运算中,旋转因子占用大量ROM资源的问题,在本发明实施例中通过只在ROM中存储少部分点数的少部分旋转因子来实现,通过并行计算,同时生成每个点数DFT每次蝶形运算所需要的每个旋转因子,实现每个点数基2、基3、基4和基5的混合基DFT运算。
在发明实施例中由于每个点数的旋转因子为复数,基本旋转因子具体可以通过公式 确定,其中,N为点数,n为0到N-1的整数,WN n为该点数N对应的基本旋转因子。从上述表述方式以及三角函数的知识可知,当点数之间存在偶数倍关系时,小点数对应的基本旋转因子都可以在大点数中找到对应相等的基本旋转因子。同时在进行DFT运算时,当进行基3和基4的蝶形运算时,需要多个旋转因子,而旋转因子之间是具有联系的,下面是根据每个点数的基本旋转因子WN n计算该点数的其他旋转因子WN 2n和WN 3n的过程:
sin(2x)=2sin(x)cos(x)
cos(2x)=2cos2(x)-1
cos(3x)=cos(2x)cos(x)-sin(2x)sin(x)
sin(3x)=sin(2x)cos(x)+cos(2x)sin(x)
其中sin(x)和cos(x)分别为基本旋转因子WN n的虚部和实部,sin(2x)和cos(2x)分 别为旋转因子WN 2n的虚部和实部,sin(3x)和cos(3x)分别为旋转因子WN 3n的虚部和实部。
其中对于每个点数在进行DFT运算时,由其基本旋转因子WN n生成旋转因子WN 2n的过程可以通过图1A和图1B所示的电路实现。其中通过图1A输入基本旋转因子WN n的虚部sin(x)和实部cos(x),将其实部和虚部取积运算,并乘2可以生成旋转因子WN 2n的虚部sin(2x)。通过图1B可以确定旋转因子WN 2n的实部,在两个输入端都输入基本旋转因子WN n的实部cos(x),将输入的两个实部cos(x)进行乘积运算,并将结果乘以2减去1得到旋转因子WN 2n的实部cos(2x)。
由每个点数的基本旋转因子WN n生成旋转因子WN 3n虚部的过程可以通过图2A所示的电路实现,取基本旋转因子WN n的实部cos(x)以及旋转因子WN 2n的实部的cos(2x)第一积,并取基本旋转因子WN n的虚部sin(x)以及旋转因子WN 2n的虚部sin(2x)的第二积,计算第一积与第二积的差得到旋转因子WN 3n的实部cos(3x)。生成旋转因子WN 3n虚部的过程可以通过图2B实现,取基本旋转因子WN n的实部cos(x)以及旋转因子WN 2n的虚部sin(2x)的第一积,并取基本旋转因子WN n的虚部sin(x)以及旋转因子WN 2n的实部cos(2x)的第二积,计算第一积与第二积的和得到旋转因子WN 3n的虚部sin(3x)。
根据上述电路连接图可知,在本发明实施例中当确定了每个点数进行DFT运算对应的基本旋转因子后,可以通过图3所示的电路,实现每个点数进行DFT运算的对应每个旋转因子的生成,在该图3中,可以实现基本旋转因子WN n、旋转因子WN 2n以及旋转因子WN 3n的实部和虚部的生成,将基本旋转因子WN n的虚部sin(x)和实部cos(x)作为输入端,根据越界标志位ovf是否置位,确定是否将基本旋转因子的实部cos(x)进行取负操作,将操作后的结果进行运算得到旋转 因子WN 2n的虚部sin(2x)和实部cos(2x),结合图2A和图2B的电路可知根据基本旋转因子WN n和旋转因子WN 2n可以得到旋转因子WN 3n的虚部sin(3x)和实部cos(3x),根据具体的操作结果输出每个旋转因子的虚部imag(WN i)和实部real(WN i),其中i为n、2n和3n,n为整数。
由于在本发明实施例所述的LTE系统中UE的有效子载波数对应的34个点数之间,大部分存在偶数倍关系,例如点数648为点数324的偶数倍,点数720为点数180和点数360的偶数倍、点数768为点数12、24、48、96、192和384的偶数倍、点数864为点数108、216和432的偶数倍、点数960为点数60、120、240和480的偶数倍、点数1080为点数540的偶数倍、点数1152为点数36、72、144、288和576的偶数倍,点数1200为点数300和600的偶数倍。
根据上述基本旋转因子WN n公式可知,对于存在偶数倍关系的点数之间,小点数对应的基本旋转因子都可以在大点数中找到对应相等的基本旋转因子。例如,对于大于648的点数960,当整数n为2时,点数960对应的基本旋转因子,与整数n为1时点数480对应的基本旋转因子相同,整数n为4时,点数960对应的基本旋转因子,与整数n为1时点数240对应的基本旋转因子相同等等。
因此,在本发明实施例中为了减小存储器的存储空间,将大于等于648的点数N的1+N/4个基本旋转因子WN n存储在存储器中,具体可以将每个点数N对应的基本旋转因子WN n的n为0到N/4个基本旋转因子存储在存储器内。因此,在本发明实施例中可以针对每个大于等于648的点数,在存储器中预留包含1+N/4个存储地址的存储空间,在该存储空间的每个存储地址内存储对应的基本旋转因子。
由于对于基本旋转因子WN n其相位具有对称性,因此在根据每个点数存储的基本旋转因子,确定该点数的其他基本旋转因子,以及确定与该点数存在偶 数分倍的点数的基本旋转因子时,可以通过计算的方式,根据待计算的基本旋转因子与存储的基本旋转因子的相位关系,确定待计算的基本旋转因子。
上述保存大于等于648的每个点数N进行DFT运算对应的1+N/4个基本旋转因子,可以节省存储器的存储空间,并且由于同一点数的不同旋转因子其相位具有关联关系,同时,小于648的点数与大于等于648的点数之间存在偶数倍的关系时,小于648的点数进行DFT运算的基本旋转因子与点数大于等于648的进行DFT运算的基本旋转因子也具有关联关系,因此可以根据存储的所述点数进行DFT运算对应的基本旋转因子,计算确定该点数进行DFT运算的其他基本旋转因子,以及根据存储的该点数进行DFT运算对应的基本旋转因子,计算确定与该点数存在偶数分倍关系的点数进行DFT运算对应的每个基本旋转因子。
由于上述每个点数进行DFT运算时,基5蝶形运算总是在该DFT运算的最后一级进行,并且每个点数进行DFT运算的基5蝶形运算的旋转因子之间具有关联性,基本是可以复用的,因此可以在第二存储器中存储基5蝶形运算的旋转因子,并且记录存放基5蝶形运算的旋转因子的存储地址。在本发明实施例中可以将第一存储器和第二存储器置于一个存储器内,也可以设置为两个单独的存储器。
在本发明实施例中通过旋转因子生成装置生成每个点数进行DFT运算对应的每个旋转因子,并且将每个旋转因子并行、流水的输出从而实现DFT运算。图4为本发明实施例提供的旋转因子的生成过程,该过程包括以下步骤:
S401:生成装置接收生成启动命令,其中该生成启动命令中包含进行DFT运算的点数信息,以及当前该点数进行基几蝶形运算的信息。
在本发明实施例中将进行DFT运算的点数信息以及当前进行基几蝶形运算的信息携带在生成启动命令中,以便生成装置根据该点数信息以及当前进行的基几蝶形运算信息进行后续的对应旋转因子的生成处理。
S402:生成装置根据接收到的点数信息,以及当前进行基几蝶形运算的信 息,生成该点数DFT运算所需每个旋转因子的存储地址信息。
在本发明实施例中生成该点数DFT运算所需每个旋转因子的存储地址信息包括:判断当前该点数进行的DFT运算是否为基5蝶形运算,当当前该点数进行的DFT运算为基5蝶形运算时,生成保存该点数进行DFT运算中基5蝶形运算所需每个旋转因子的地址信息。
当当前该点数进行的DFT运算非基5蝶形运算时,根据该点数信息,确定存储该点数进行DFT运算的每个基本旋转因子的基地址信息,并根据所述点数,及当前进行的基几蝶形运算信息,生成对应所述点数的变地址信息,根据所述基地址信息和变地址信息,生成该点数进行DFT运算所需每个基本旋转因子的存储地址信息。
S403:根据生成的每个旋转因子的存储地址信息,读取对应地址存储的旋转因子信息,并根据读取的每个旋转因子及旋转因子并行生成电路,生成对应当前该点数进行基几蝶形运算的每个旋转因子。
生成对应当前该点数进行基几蝶形运算的每个旋转因子包括:当当前该点数进行的DFT运算为基5蝶形运算时,将读取的每个旋转因子确定为该点数进行基5蝶形运算的旋转因子信息并输出;当当前该点数进行的DFT运算非基5蝶形运算时,根据读取的对应地址存储的每个基本旋转因子,采用旋转因子并行生成电路,生成对应每个基本旋转因子的每个旋转因子,并根据当前进行的基几蝶形运算信息,输出对应所述基几蝶形运算的每个旋转因子。
由于在进行DFT运算时,根据每级进行的为基几的蝶形运算其所需的旋转因子也不同,当进行基2蝶形运算时,其需要两个旋转因子,分别是1和基本旋转因子WN n,当其进行基3蝶形运算时,其需要三个旋转因子,分别是1、基本旋转因子WN n和旋转因子WN 2n,当其进行基4蝶形运算时,其需要四个旋转因子,分别是1、基本旋转因子WN n、旋转因子WN 2n和旋转因子WN 3n。因此当获取了基本旋转因子WN n的信息后,根据图3所示的电路图可以生成每个旋转因 子,在具体输出时,可以根据当前进行基几蝶形运算的信息,输出其所需的每个旋转因子。
在本发明实施例步骤S402中当当前该点数进行的DFT运算非基5蝶形运算,生成该点数DFT运算所需每个基本旋转因子的存储地址信息时,确定存储该点数进行DFT运算的每个基本旋转因子的基地址信息的过程包括:根据该点数信息,及保存的每个点数与基地址的对应关系,生成该点数进行DFT运算的每个基本旋转因子对应的基地址信息,其中该基地址为存储该点数进行DFT运算的每个基本旋转因子的初始地址,即在本发明实施例中将每个点数进行DFT运算的每个基本旋转因子存储在连续的1+N/4个存储地址内,并且每个点数进行DFT运算所需的每个基本旋转因子对应的基地址信息相同。保存的每个点数与基地址的对应关系,即保存每个点数进行DFT运算与存储其每个基本旋转因子的初始地址的对应关系。
在本发明实施例中根据点数,当前进行的基几蝶形运算信息,生成对应该点数的变地址信息包括:根据当前进行基几蝶形运算的上一级是基几蝶形运算信息以及保存的该上一级基几蝶形运算的地址累加值信息,生成对应当前该点数进行DFT运算的基几蝶形运算的地址累加值,根据该点数信息以及生成的对应该点数的地址累加值,生成对应该点数的变地址信息。
在本发明实施例生成对应当前该点数进行DFT运算的基几蝶形运算的地址累加值的过程包括:根据该点数信息,以及保存的对应该点数进行DFT运算的基几蝶形运算的顺序信息,确定当前进行的基几蝶形运算的上一级进行的为基几蝶形运算,根据确定的该上一级进行的为基几蝶形运算的信息,以及该点数上一级进行DFT运算中基几蝶形运算确定的地址累加值,确定当前该点数进行DFT运算的基几蝶形运算对应的地址累加值,其中可以将每个点数运算之初的即开始进行第一级蝶形运算时,其地址累加值赋值为1。
由于每个点数在进行DFT运算时,每一级蝶形运算所需基本旋转因子的个数与点数的大小以及进行的为基几的蝶形运算有关,例如点数为24其进行 DFT运算中的基4蝶形运算时,需要6个基本旋转因子。而在本发明实施例中存储了每个点数的前1+N/4个基本旋转因子,其中每个基本旋转因子的基地址信息以及地址累加值都相同,但是根据变地址信息,生成该点数进行DFT运算所需每个基本旋转因子的存储地址信息时,其具体过程包括:当确定该级蝶形运算的每一个基本旋转因子的存储地址时,根据保存的当前进行基几蝶形运算中确定的上一个基本旋转因子的存储地址信息,以及生成的对应该点数的变地址信息,生成当前该点数进行基几蝶形运算所需基本旋转因子的存储地址信息,其中,每个点数进行基几蝶形运算中第一个基本旋转因子的存储地址的初始值为该蝶形运算确定的基地址,即每级蝶形运算中第一个基本旋转因子的存储地址由基地址与生成的对应该点数的变地址信息确定。
在本发明实施例中生成当前所述点数进行基几蝶形运算所需基本旋转因子的存储地址信息的过程还包括:判断基几蝶形运算中生成的该基本旋转因子的存储地址是否越界,即判断基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址的和是否越界,根据判断的结果生成当前对应该点数进行基几蝶形运算所需该基本旋转因子的存储地址信息,当判断基几蝶形运算中生成的该基本旋转因子的存储地址没有越界时,即判断基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址的和没有越界时,确定当前该点数进行的基几蝶形运算中所需该基本旋转因子的存储地址信息为该基几蝶形运算中生成的上一个基本旋转因子的存储地址与变地址的和,当判断基几蝶形运算中生成的该基本旋转因子的存储地址越界时,即判断基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址的和越界时,确定当前该点数进行的基几蝶形运算中所需该基本旋转因子的存储地址信息为该基几蝶形运算中上一个基本旋转因子的存储地址与变地址的差。
在本发明实施例中判断基几蝶形运算中生成的该基本旋转因子的存储地址是否越界,即判断基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址的和是否越界的过程包括:根据基几蝶形运算中生成的上一个基本旋转 因子的存储地址及变地址的和,以及设置的第一阈值区间,确定基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址信息的和是否超过预定的界限,其中该第一阈值区间即为存储该点数进行DFT运算所需每个基本旋转因子的存储地址区间,由于存储该点数进行DFT运算所需每个基本旋转因子的初始地址为基地址,而每个点数对应存储1+N/4个基本旋转因子,因此可以设置该第一阈值区间为:大于等于基地址小于等于基地址加N/4。
图5为根据上述描述,对本发明实施中生成旋转因子的详细过程,该过程包括以下步骤:
S501:生成装置检测是否接收到生成启动命令,其中,该生成启动命令中包含进行DFT运算的点数信息,以及当前该点数进行基几蝶形运算的信息,当检测接收到生成启动命令时,进行S502,否则,进行S501。
S502:生成装置判断当前该点数进行的DFT运算是否为基5蝶形运算,当判断结果为是时,进行S507,否则,进行S503。
S503:生成装置根据接收的点数信息,以及保存的每个点数与基地址的对应关系,确定该点数进行DFT运算的每个基本旋转因子对应的基地址信息。
具体包括:当点数N为324和648时,保存基地址base_addr为0;当点数N为180、360和720时,保存基地址base_addr为163;当点数N为12、24、48、96、192、384和768时,保存基地址base_addr为344;当点数N为108、216、432和864时,保存基地址base_addr为537;当点数N为900时,保存基地址base_addr为754;当点数N为60、120、240、480和960时,保存基地址base_addr为980;当点数N为972时,保存基地址base_addr为1221;当点数N为540和1080时,保存基地址base_addr为1465;当点数N为36、72、144、288、576和1152时,保存基地址base_addr为1736;当点数N为300、600和1200时,保存基地址base_addr为2025。
S504:生成装置根据接收到的点数当前进行基几蝶形运算的上一级蝶形运算信息以及保存的该上一级蝶形运算的地址累加值信息,生成对应当前该点数 进行DFT运算的基几蝶形运算的地址累加值。
由于每个点数进行DFT运算中包含几级蝶形运算,以及每级蝶形运算对应的为基几蝶形运算都为已知的,因此其具体过程包括:每个点数在进行第一级蝶形运算时,将地址累加值赋值为1。当当前该点数进行的DFT运算为非第一级蝶形运算时,根据当前该点数进行的DFT运算为基几蝶形运算,查找该基几蝶形运算的前一级蝶形运算,根据该前一级蝶形运算确定的地址累加值与前一级进行的为基几蝶形运算的积,确定当前蝶形运算对应的地址累加值。例如,点数为12进行DFT运算时,当前进行的为基4蝶形运算,由于进行基4蝶形运算为该点数进行DFT运算的第一级蝶形运算,因此其地址累加值为1,该点数在后续还要进行基3蝶形的运算,在确定基3蝶形运算的地址累加值时,确定该基3蝶形运算的前一级运算为基4蝶形运算,确定的地址累加值为1,因此当前进行基3蝶形运算的地址累加值为基4蝶形运算确定地址累加值的4倍,因此可知基3蝶形运算的地址累加值为4。其他点数进行DFT运算确定地址累加值的过程以此类推,这里就不一一赘述。
S505:生成装置根据接收的点数信息,以及生成的当前进行基几蝶形运算的地址累加值信息,生成对应该点数的变地址信息。
由于进行DFT运算的点数之间存在偶数倍关系,因此在本发明实施例中可以根据点数之间的倍数关系,进行变地址信息具体确定,具体过程包括:当点数N为648、720、768、864、900、960、972、1080、1152和1200时,变地址index_addr等于地址累加值addr_acc;当点数N为324、360、384、432、480、540、576和600时,变地址index_addr等于地址累加值addr_acc乘2;当点数N为180、192、216、240、288和300时,变地址index_addr等于地址累加值addr_acc乘4;当点数N为96、108、120和144时,变地址index_addr等于地址累加值addr_acc乘8;当点数N为48、60和72时,变地址index_addr等于地址累加值addr_acc乘16;当点数N为24和36时,变地址index_addr等于地址累加值addr_acc乘32;当点数N为12时,变地址index_addr等于地 址累加值addr_acc乘64。
S506:生成装置根据保存的当前进行基几蝶形运算中确定的上一个基本旋转因子的存储地址信息以及变地址信息,判断当前进行的基几蝶形运算生成的上一个基本旋转因子的存储地址及变地址的和是否超过预定的界限,根据判断的结果生成当前该点数进行基几蝶形运算所需该基本旋转因子的存储地址信息,之后进行S508。
其具体过程可以包括:N点DFT运算其地址存储的第一阈值区间为:基地址base_addr到基地址base_addr+N/4。根据该基几蝶形运算生成的上一个基本旋转因子的存储地址加上变地址index_addr的和是否越界,即根据和是否大于等于基地址base_addr小于等于基地址base_addr+N/4,确定是否越界,当判断该基几蝶形运算生成的上一个基本旋转因子的存储地址加上变地址index_addr的和未越界时,则当前该点数进行的基几蝶形运算的所需的该基本旋转因子的存储地址信息为该基几蝶形运算生成的上一个基本旋转因子的存储地址与变地址index_addr的和;否则确定地址越界,并置位越界标志ovf,在越界边界点上读取地址目标值为2*(base_addr+N/4)-rom_addr-index_addr,并且当前该点数进行的基几蝶形运算所需的该基本旋转因子的存储地址为基几蝶形运算生成的上一个基本旋转因子的存储地址与变地址index_addr的差。
S507:生成装置根据当前该点数进行的DFT运算为基5蝶形运算的信息,生成存储基5蝶形运算所需旋转因子的存储地址信息。
S508:生成装置根据生成的存储地址信息,提取对应地址存储的旋转因子信息。
S509:生成装置判断当前点数进行的DFT运算是否为基5蝶形运算,当判断结果为是时,进行S511,否则,进行S510。
S510:生成装置根据提取的每个基本旋转因子信息,采用旋转因子并行生成电路,生成对应每个基本旋转因子的每个旋转因子信息,并根据当前进行的 为基几蝶形运算的信息,输出对应该基几蝶形运算的每个旋转因子。
S511:生成装置将提取的旋转因子信息输出。
图6为本发明实施例中旋转因子的生成装置结构示意图,该生成装置具体包括:
主控模块61,用于接收生成启动命令,将该生成启动命令发送到地址生成模块,其中该生成启动命令中包含进行离散傅立叶变换DFT运算的点数信息,以及当前所述点数进行基几蝶形运算的信息;
地址生成模块62,用于根据生成启动命令中包含的点数信息,以及当前进行基几蝶形运算的信息,生成该点数DFT运算所需每个旋转因子的存储地址信息,并将生成的每个存储地址信息发送到存储提取模块;
存储提取模块63,用于根据接收的每个存储地址信息,读取对应地址存储的旋转因子信息,并将读取的旋转因子信息发送到旋转因子生成模块;
旋转因子生成模块64,用于根据接收的旋转因子信息及旋转因子并行生成电路,生成对应当前该点数进行基几蝶形运算的每个旋转因子。
在本发明实施例该生成装置中地址生成模块62包括:
第一判断单元621,用于判断当前该点数进行的DFT运算是否为基5蝶形运算,根据判断结果将该点数及当前进行的基几蝶形运算的信息发送到对应的生成单元;
第一生成单元622,用于确定当前该点数进行的DFT运算为基5蝶形运算时,生成保存该点数进行DFT运算中基5蝶形运算所需每个旋转因子的地址信息;
第二生成单元623,用于确定当前所述点数进行的DFT运算为非基5蝶形运算时,根据该点数信息,确定存储该点数进行DFT运算的每个基本旋转因子的基地址信息,以及根据所述点数,及当前进行的基几蝶形运算信息,生成对应该点数的变地址信息,根据所述变地址信息,生成该点数进行DFT运算所需每个基本旋转因子的存储地址信息。
其中,该第二生成单元623包括:
基地址生成子单元6231,用于根据该点数信息,及保存的每个点数与基地址的对应关系,生成该点数进行DFT运算的每个基本旋转因子对应的基地址信息;
变地址生成子单元6232,用于根据当前进行基几蝶形运算的上一级蝶形运算信息以及保存的该上一级蝶形运算的地址累加值信息,生成对应当前该点数进行DFT运算的基几蝶形运算的地址累加值,根据该点数信息以及生成的对应该点数的地址累加值,生成对应该点数的变地址信息;
存储地址生成子单元6233,用于根据保存的当前进行基几蝶形运算中确定的上一个基本旋转因子的存储地址信息,以及生成的对应所述点数的变地址信息,生成当前所述点数进行基几蝶形运算所需该基本旋转因子的存储地址信息。
其中该变地址生成子单元6232包括:
累加值生成子模块62321,用于根据该点数信息,以及保存的对应该点数进行DFT运算的基几蝶形运算的顺序信息,确定当前进行的基几蝶形运算的上一级进行的为基几蝶形运算,根据确定的该上一级进行的为基几蝶形运算的信息,以及该点数上一级进行DFT运算中基几蝶形运算确定的地址累加值,确定当前该点数进行DFT运算的基几蝶形运算对应的地址累加值,其中可以将每个点数进行DFT运算之初的即开始进行第一级蝶形运算时,其地址累加值赋值为1;
变地址生成子模块62322,用于根据该点数信息以及生成的地址累加值信息,生成对应该点数的变地址信息。
其中,该第二生成单元623还包括:
越界判断子单元6233,用于判断基几蝶形运算中生成的上一个基本旋转因子的存储地址及变地址的和是否越界,根据判断的结果生成对应当前该点数进行DFT运算的基几蝶形运算所需基本旋转因子的存储地址信息。
旋转因子生成模块64包括:
第二判断单元641,用于判断当前该点数进行的DFT运算是否为基5蝶形运算,根据判断结果将接收的旋转因子发送到对应的旋转因子生成单元;
第一旋转因子生成单元642,用于当确定当前该点数进行的DFT运算为基5蝶形运算时,将接收的旋转因子确定为该点数进行基5蝶形运算的旋转因子并输出。
第二旋转因子生成单元643,用于当确定当前该点数进行的DFT运算为非基5蝶形运算时,根据接收的每个基本旋转因子,采用旋转因子并行生成电路,生成对应每个基本旋转因子的每个旋转因子,并根据当前进行的基几蝶形运算信息,输出对应所述基几蝶形运算的每个旋转因子。
下面结合上述各个单元和模块,对本发明实施例中生成旋转因子的具体过程进行描述,如图7所示,该过程包括以下步骤:
S701:主控模块检测是否接收到生成启动命令,其中该生成启动命令中包含进行DFT运算的点数信息,以及当前该点数进行基几蝶形运算的信息,当检测没有接收到生成启动命令时,进行S701,否则,进行S702。
S702:主控模块将该生成启动命令发送到地址生成模块。
S703:地址生成模块的第一判断单元判断当前该点数进行的DFT运算是否为基5蝶形运算,根据判断的结果第一判断单元将该点数信息及当前进行的基几蝶形运算的信息发送到对应的生成单元,当判断进行的DFT运算为基5蝶形运算时,进行S708,否则,进行S704。
S704:第二生成单元中的基地址生成子单元根据点数信息,以及保存的每个点数与基地址的对应关系,生成该点数进行DFT运算的每个基本旋转因子对应的基地址信息。
S705:变地址生成子单元中的累加值生成子模块根据该点数信息,以及保存的对应该点数进行DFT运算的基几蝶形运算的顺序信息,确定当前进行的基几蝶形运算的上一级进行的为基几蝶形运算,根据确定的该上一级进行为基 几蝶形运算的信息,以及该点数上一级进行DFT运算中基几蝶形运算确定的地址累加值,确定当前该点数进行DFT运算的基几蝶形运算对应的地址累加值,其中可以将每个点数DFT运算之初的即开始进行第一级蝶形运算时,其地址累加值赋值为1。
S706:变地址生成子单元中的变地址生成子模块根据该点数信息以及生成的地址累加值信息,生成对应该点数的变地址信息。
S707:第二生成单元中的越界判断子单元判断基几蝶形运算中生成的上一个基本旋转因子的存储地址信息及变地址的和是否越界,根据判断的结果生成对应当前该点数进行DFT运算的基几蝶形运算所需基本旋转因子的存储地址信息,之后进行S709。
S708:地址生成模块中的第一生成单元确定当前该点数进行的DFT运算为基5蝶形运算时,生成保存该点数进行DFT运算中基5蝶形运算所需每个旋转因子的地址信息。
S709:存储提取模块根据地址生成模块生成的每个存储地址信息,读取对应地址存储的旋转因子信息,并将读取的旋转因子信息发送到旋转因子生成模块。
S710:旋转因子生成模块中的第二判断单元判断当前该点数进行的DFT运算是否为基5蝶形运算,根据判断的结果第二判断单元将该点数信息及当前进行的基几蝶形运算的信息发送到对应的生成单元,当判断结果为是时,进行S712,否则,进行S711。
S711:旋转因子生成模块中的第二旋转因子生成单元,根据接收的每个基本旋转因子,采用旋转因子并行生成电路,生成对应每个基本旋转因子的每个旋转因子,并根据当前进行的基几蝶形运算信息,输出对应的旋转因子。
S712:旋转因子生成模块中的第一旋转因子生成单元,将接收的每个旋转因子确定为该点数进行基5蝶形运算的旋转因子,并输出。
在本发明实施例中根据图3所示,可知当进行非基5运算时,并提取了当 前该点数进行DFT运算的基几蝶形运算的基本旋转因子后,可以根据旋转因子并行生成电路生成并输出任意其他旋转因子。在本发明实施例中,根据在生成存储地址信息时,判断基几蝶形运算上一个基本旋转因子的存储地址信息及变地址信息的和是否越界,确定越界标志位是否置位,当上一个基本旋转因子的存储地址信息与变址地信息的和越界时,越界标志位置位,则将提取的基本旋转因子WN n的实部cos(x)进行取负操作,根据基本旋转因子的虚部sin(x)以及取负后的实部cos(x),生成旋转因子WN 2n和WN 3n的虚部和实部。当上一个基本旋转因子的存储地址信息信息及变地址信息的和未越界时,则不置位越界标志位,直接根据基本旋转因子WN n的实部cos(x)和虚部sin(x),生成旋转因子WN 2n和WN 3n的虚部和实部。由于并行的生成了每个旋转因子,而在具体的进行每级基几蝶形运算时,可能一些旋转因子是不需要的,例如在进行基3蝶形运算时,只需要旋转因子1、WN n和WN 2n,因此生成装置在最后输出时,可以根据当前进行基几蝶形运算的信息并行输出对应的旋转因子,以便后续DFT运算的需要。
由于在本发明实施例中可以根据基本旋转因子输出每级蝶形运算所需的每个旋转因子,并根据当前进行基几蝶形运算输出对应的每个旋转因子,因此实现了在DFT运算中并行输出每个旋转因子,从而提高了DFT运算的速率。同时由于在本发明实施例中只将部分点数的部分旋转因子存储在存储器内,因此节省了存储器的存储空间,并且减小了存储器的面积,当本发明实施例中的生成装置集成在DFT芯片上时,也节省了整个芯片的面积,从而提高了芯片运算的速率。
本发明实施例中为了减小存储器的存储空间,提高进行DFT运算的速率,提供了一种旋转因子的生成方法,该方法包括:生成装置接收生成启动命令,其中该生成启动命令中包含进行DFT运算的点数信息,以及该点数DFT当前进行基几运算的信息,根据接收到的点数信息,以及当前进行基几运算的信息,确定该点数DFT运算所需每个旋转因子的存储地址信息,读取对应地址存储 的每个旋转因子信息,并根据读取的旋转因子生成对应当前该点数进行基几运算的每个旋转因子。由于本发明实施例中只将部分点数的部分基本旋转因子的几位存储在存储器中,其他旋转因子根据发明实施例提供的具体过程并行生成,因此该实现方式大大的节省了存储器的空间,由于旋转因子的并行生成,进而提高了DFT运算的速率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。