快速傅里叶变换的方法和电路的制作方法

文档序号:10624745阅读:301来源:国知局
快速傅里叶变换的方法和电路的制作方法
【专利摘要】本发明公开一种快速傅里叶变换的方法和电路,该方法包括基于在一组数据中的数据位宽分布,识别是否需要对数据进行分组,一组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据。当需要对数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标志的数据表达方式,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数;以及输出指示所述指数的信号;对于多个短序列FFT/IFFT计算中的每一个,将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特部分;分别为第一多比特部分和第二多比特部分计算FFT/IFFT计算结果;将第一多比特部分和第二多比特部分的FFT/IFFT计算结果相加;扫描一级中的多个短序列FFT/IFFT计算的叠加结果。
【专利说明】
快速傅里叶变换的方法和电路
技术领域
[0001] 本发明设及数据变换,尤其设及快速傅里叶变换的方法和装置。
【背景技术】
[0002] FFT/IFFT的运算满足帕斯瓦尔定理,即输出数据的能量是输入数据能量的N倍。 运说明如果要无损失的运算需要很大的存储空间,运算器也需要很大的位宽。为节省资源 一般都采用在每级迭代完成后扫描整体数据的最大值,并根据最大值来确定整体数据乘或 除W-个2的次幕的常数,保存位宽较少的有效数据,在最终迭代结果上补偿相同的因子。 运种常用的方法称为自动增益。然而,上述算法在精度方面存在问题,尤其是当数据分布不 均匀时,运算精度会大幅度下降。运是由于,当数据之间的动态范围大于数据位宽时,为保 证最大值能够被表示,所有数据按比例缩放取整后可能导致较小的数据完全损失。因此,希 望有一种方法和装置能够解决上述问题。

【发明内容】

[0003] 本发明的一个实施例公开了一种快速傅里叶变换/快速傅里叶逆变换(FFT/ IFFT)计算的方法,包括:基于在一组数据中的数据位宽分布,识别是否需要对所述数据进 行分组,其中,所述一组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数 据;当需要对所述数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标 志的表达方式,其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数; W及输出指示所述指数的信号;对于多个短序列FFT/IFFT计算中的每一个-将当前短序列 FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特部分,其中所述第一 多比特部分高于所述第二多比特部分;分别为所述第一多比特部分和所述第二多比特部分 计算FFT/IFFT计算结果;将所述第一多比特部分和所述第二多比特部分的FFT/IFFT计算 结果相加;扫描一级中的多个所述短序列FFT/IFFT计算的叠加结果,其中,所述多个短序 列FFT/IFFT计算包括一级中的FFT/IFFT计算。
[0004] 本发明的另一个实施例公开了一种快速傅里叶变换/快速傅里叶逆变换(FFT/ IFFT)计算的电路,包括:控制器,被配置为基于在一组数据中的数据位宽分布,识别是否 需要对所述数据进行分组,其中,所述一组数据包括在一级快速傅里叶变换/快速傅里叶 逆变换计算中的数据;当需要对所述数据进行分组时,为分在不同组中的数据分配不同的 包括有效位和组标志的数据表达方式,其中,在一个组中的数据具有相同指数,在不同组中 的数据具有不同指数;W及输出单元,被配置为输出指示所述指数的信号;对于多个短序 列FFT/IFFT计算中的每一个,还包括-分解单元,被配置为将当前短序列FFT/IFFT计算中 使用的数据分解为至少第一多比特部分和第二多比特部分,其中所述第一多比特部分高于 所述第二多比特部分;FFT/IFFT计算单元,被配置为分别为所述第一多比特部分和所述第 二多比特部分计算FFT/IFFT计算结果;加法器,被配置为将所述第一多比特部分和所述第 二多比特部分的FFT/IFFT计算结果相加;扫描器,被配置为扫描一级中的多个所述短序列 FFT/IFFT计算的叠加结果,其中,所述多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计 算。 阳0化]本发明的另一个实施例公开了一种信号发生器,包括上述的电路。
[0006] 本发明的另一个实施例公开了一种接收机,包括如上述的电路。
【附图说明】
[0007] 本发明通过所附的附图用示例形式展示。附图应当被理解为作为示例而非限制 的,本发明的范围是由权利要求所限定的。在附图中,相同的附图标志代表相同的组件。
[0008] 图1示出了本发明的实施例的方法流程图。
[0009] 图2示出了本发明的另一个实施例的方法流程图。
[0010] 图3示出了本发明的另一个实施例的方法流程图。
[0011] 图4示出了本发明的一个实施例的装置框图。
[0012] 图5示出了本发明的另一个实施例的装置框图。 具体实施例
[0013] 本发明的多个方面及例子将在此被描述。接下来的说明为运些例子的全面理解及 可行的说明提供了具体的细节。但是本领域技术人员将理解本发明可在缺少许多运些细节 的情形下被实施。此外,一些众所周知的结构和功能将不会被具体地显示或描述,W避免不 必要地模糊相关说明。
[0014] 图1示出了本发明的实施例的方法100的流程图。首先,方法100包括,在块110 中,基于在一组数据中的数据位宽分布,识别是否需要对数据进行分组。其中,一组数据包 括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据。
[0015] 具体地,控制器基于扫描的结果,获取一级FFT/IFFT计算中设及的整个数据的分 布情况。W最大允许分2组为例。控制器根据数据的分布情况,依次累加位宽(也即比特 宽度,bitwi化h)由大到小的数据个数。当累加的个数超过阔值则表示需要分组。超过阔 值时的位宽就是第一组的最小位宽。例如在一个实施例中,预定阔值可W设定为m。
[0016] 表一
[0017]
[0018] 表1中化表示运算单元的输入位宽,Ns+xbit(x = 1,2,)表示上一级扫描后整体 数据的位宽分布,Mx表示对应位宽的数据个数。表1中列举了当DFT完成一级运算后得到 的数据分布,数据分布的表格根据DFT的长度、数据可能的幅度范围、实现的细节要求来选 取表的行数。传统的方案(对照组,W AGC增益1表示)中AGC会判断最大值处于哪个位宽 下,并调整AGC的增益,使得最大值的位宽调整为化bit (化为运算单元的输入位宽)。如 表1中AGC1的结果,AGC增益为2~-x,当位宽化+X比特的数据个数不为0,即M(Ns+x)〉0, 且大于化+X比特位宽的数据都为0,即Σ Μ(化+P) = 0, p〉x。
[0019] 本发明的实施例的方法并不会依据整体数据最大值而是组中最大值来进行AGC。 AGC选定的增益并不一定是最大值,而是大于运个比特的数据数量小于一个阔值,而下一 个增益档又使得大于增益bit的数据数量大于阔值。运样增益取决于每组数据的最大 值。如表1中的AGC2, AGC增益为2~-x,当位宽大于或等于化+X比特的数据个数大于 threshold 1,即Σ Μ(化+P)〉= threshold l,p> = X,且位宽大于化+X+1比特的数据个数 小于 threshold 1,即 Σ Μ (化+p)<t虹eshold, p〉x。
[0020] 要施例一:
[0021] 例如,FFT/IFFT计算器的位宽化为12比特。一级计算结果使用的数据大小(也 即位宽)有15比特(Ns+3比特),位宽为15比特的数据的个数为2,也即M3 = 2、14比特 (化巧比特),对应M2 = 3,13比特(Ns+1比特),对应Ml = 23, W及小于等于(《)化比 特,包括10比特、8比特、6比特、3比特,对应的M0 = 100。设阔值为10。根据数据分布, 位宽超过13比特的数据的个数为5,而位宽大于或等于13比特的数据的个数为28,阔值为 10,因此,位宽大于13比特的数据个数小于阔值10,而位宽大于或等于13比特的数据的个 数大于阔值10。则根据表一所示,X = 1,对应的增益为2 1。 阳0。] 连施例二:
[0023] 阔值仍为10。在另一个实施例中,例如,FFT/IFFT计算器的位宽化仍为12比特。 一级计算中使用的数据大小(也即位宽)有15比特(Ns+3比特),位宽为15比特的数据 的个数为18,也即M3 = 18、14比特(Ns+2比特),对应M2 = 3,13比特(Ns+1比特),对应 Ml = 23, W及《化比特,包括10比特、8比特、6比特、3比特,对应的M0 = 84。因为任何 比特位宽的数据的个数均大于阔值10,也即,数据的分布是均匀的,因此,不需要对数据进 行分组。所W增益与传统方法求得的一致,为2 3。
[0024] 综上,可W注意到,当数据均匀时,处于最大值位宽的数据会相当多,一般多于设 定的口限,则对照组的AGC增益1和本发明实施例的AGC增益2会有相同的AGC增益,运算 的过程完全相同,结果也完全相同,都有很高的信噪比。当数据变化较大,也即数据不充分 均匀时,AGC不会因为一小组数据产生负增益,造成整体性能的损失。所W t虹esholdl可 W调节精度,通常参考为整个FFT序列长度的2%左右就有良好的性能增益。
[00巧]上述的实施例一的方案实际是将数据分为两组。可W理解,根据本发明的方案可 W设置多个组,并为每个组都增加一个AGC,每个组都有自己的AGC参数,不仅是大于运算 单元输入位宽的数据分组,也可W将低于运算单元输入位宽的分组,同时给予正的AGC增 益,运样的补充方案可W进一步提高精度,简化运算。
[00%] 分组后需要分配相应的存储空间来表示分组情况,在存储器尺寸固定的情形下, 可W不增加存储器的宽度又不影响数据精度的情况下来实现对组标志的表示。例如,原先 数据W 16位宽来表示,当需要加入组标志的时候,较低分组的数据利用其高位的冗余比特 来表示组标志。而其他分组的数据舍弃最低位来满足存储条件。可W理解,当其他分组的数 据舍弃了最低位,自然高位就多出了冗余位,与其他组的形式一致。当然组的表示方式在先 控制器已知的,例如,用几位表示组标志,如果存在组标志,组标志占用最高位还是最低位。 当使用组标志时,不同的表示方式所采用的组标志的表示规则是一致的。
[0027] 当分配了空间表示分组情况后,原先用于表示数据的位宽就减小了,即表示精度 下降了。但是可W证明此时损失很微弱。此外,可选地,也可W额外为组标志分配空间,运 样就多使用了 memcxry。
[0028] 然后,在块120中,当需要对数据进行分组时,为分在不同组中的数据分配不同的 包括有效位和组标志的数据表达方式,其中,在一个组中的数据具有相同指数,在不同组中 的数据具有不同指数。
[0029] 参考实施例一,该实施例分了 2组。第一组的指数为第二组的指数为21,也即 2。
[0030] 在块130中,输出指示指数的信号。可选地,当需要对数据进行分组时,输出至少 一个比特W表示组标志,其中组标志位表示组使用的指数。一般地,组标志位与组所使用的 指数是一一对应的。可选地,基于组数,确定需要表示组标志的比特的个数。仍W实施例一 为例,当最多分2组时,需要1比特表示分在哪一组。例如0表示第一组,1表示第二组。当 分4组时,需要2比特表示分在哪一组。例如0表示第一组,1表示第二组,2表示第Ξ组,3 表示第四组。W此类推。
[0031] 组标志位,也即指数的标志位(group index)是动态变化的,标志位的最大位数取 决于允许分组的最大组数。实际运行中,如果允许分4组,那么可能某级会分配出两个比特 的存储空间来存放组标志,但也可能不满足分组条件,只需分配一个比特或是不分配。至 于如何分配位置,可W是任意的,例如,存储器根据分组的情况分配出相应的空间存放组标 志,其他空间用来存储数据。
[0032] 该方法100进一步包括,对于多个短序列FFT/IFFT计算中的每一个,在块140中, 将当前FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特部分,其中 第一多比特部分高于第二多比特部分。例如,第一多比特部分为高比特部分,第二多比特部 分为低比特部分。
[0033] 可选地,将当前FFT/IFFT计算中使用的数据,W蝶形计算为例,短序列FFT/IFFT 计算也即为本次蝶形计算所使用的数据,分解为第一多比特部分和第二多比特部分是根据 公式D = AX 2k+B实现的,其中A表示第一多比特部分,B表示第二多比特部分,W及k表示 第一多比特部分的指数幕。本领域普通技术人员可W理解,分解的两部分的大小可W是不 一样的,运取决于具体的设计,一种简便的方法是两部分的大小固定且等长。可选地,每级 是变长度的,例如本级比前一级的长度长。
[0034] 在上述实施例中,W将当前计算所使用的数据被线性分解为两部分为例进行说 明。可选地,本领域技术人员可W理解,也可W将当前计算所使用的数据分为3部分、4部分 等。各个部分分别进行计算,例如蝶形计算,再将计算的结果相加。注意到,分解的部分的 个数是没有限制的。
[0035] 在上述实施例中,在分解之前不需要判断,直接进入分解操作。运样操作每次蝶形 运算消耗的时间就多了一倍。
[0036] 可选地,在进行块140的操作之前,还包括通过确定在当前FFT/IFFT计算中使用 的数据是否使用相同的指数,确定当前FFT/IFFT计算中使用的数据是否需要分解。通过判 断,大部分的数据都是不需要分解的,那么运算时间与传统算法一样,少量的分解只是增加 一小部分的运算时间。
[0037] 在块150中,分别为第一多比特部分和第二多比特部分计算FFT/IFFT计算结果。
[0038] 可选地,通过重用相同的FFT/IFFT计算单元,分别地计算第一多比特部分和第二 多比特部分计算FFT/IFFT计算结果。例如,可W先使用FFT/IFFT计算单元计算第一多比 特部分的结果,然后,使用同一 FFT/IFFT计算单元计算第二多比特部分的结果。可选地,也 可W先使用FFT/IFFT计算单元计算第二多比特部分的结果,然后,使用同一 FFT/IFFT计算 单元计算第一多比特部分的结果。只增加一个时钟周期,而不需要对FFT/IFFT计算单元硬 件进行修改。
[0039] 在块160中,将第一多比特部分和第二多比特部分的FFT/IFFT计算结果相加。可 选地,通过使用公式D' = A'巧~k+B',将第一多比特部分和第二多比特部分的FFT/IFFT计 算结果相加,其中A'表示第一多比特部分的FFT/IFFT计算结果,B'表示第二多比特部分 的FFT/IFFT计算结果,W及k表示第一多比特部分的指数幕。
[0040] 重复上述块140、150和160的操作,直至一级中的所有数据都进行了蝶形计算 (包括进行了分解和相加操作)。通常地,由于运算器只有一个,一级中的多个蝶形计算是 顺序进行的。
[0041] 在块170中,扫描一级中的所有短序列FFT/IFFT计算的叠加结果,也即,所有多个 短序列FFT/IFFT计算包括一级中所有的FFT/IFFT计算。
[0042] 在一个实施例中,各级迭代地进行W下各项,直到所有级的FFT/IFFT计算结果完 成:块110,基于在一组数据中的数据位宽分布,识别是否需要对数据进行分组,其中,一组 数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据;块120,当需要对数据 进行分组时,为分在不同组中的数据分配不同的包括有效位和组标志的数据表达方式,其 中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数;块130输出指示指 数的信号。
[0043] 对于多个短序列FFT/IFFT计算中的每一个,块140将当前FFT/IFFT计算中使用 的数据分解为至少第一多比特部分和第二多比特部分,其中第一多比特部分高于第二多比 特部分;块150分别为第一多比特部分和第二多比特部分计算FFT/IFFT计算结果;块160 将第一多比特部分和第二多比特部分的FFT/IFFT计算结果相加;块170扫描多个短序列 FFT/IFFT计算的叠加结果,其中,多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计算。
[0044] 根据本发明的一个实施例,数据表示方法上使用至少两个共同的指数来表示数 据。具体地,将数据分成若干个组,每组共有一个指数。分组的个数大于1小于N(N为FFT 长度)。实现方法上利用线性系统的基本性质,将运算单元的输入数据线性拆分为不同的 两个部分,分别进行FFT/IFFT计算后再相加。此结构既具有使得每个数据都有自己的指数 位,所W数据的各组之间可表示的动态范围是不相关的优点,又只有较低的复杂性。 W45] 图2示出了本发明的另一个实施例的方法流程图。方法200包括,首先,在块210 中,将数据存储在存储器中。然后,在块215中,控制器进行自动增益控制,具体地,在块220 中,判断一级中参与运算的数据是否使用相同的指数。如果是,则进入块255,进行r DFT, 也即Wr为基(radix)的DFT计算。如果块220的判断结果是否,则进入块225,对数据进 行分解。W分解为两部分为例进行说明,分别为块230,数据A为第一多比特部分,和数据 B为第二多比特部分。在块240和块245中分别对运两部分进行r DFT计算。然后在块 250中,将两部分的DFT计算结果合并,也即将数据A的计算结果和数据B的计算结果连接 (concatenate)。然后在块260中,对于一级中所有计算结果,包括经过分解W及合并的从 块250获取的和未经过分解的从块255获取的,或者全部未经过分解的从块255获取的结 果进行扫描,确定一级中所有数据计算后的分布情况。然后在块265对扫描结果进行分类, 例如,确定新的增益的值,W及是否需要分组,W及如果需要分组,如何界定不同的组的界 限。然后,在块270,更新当前的指数。然后,在块275更新标记,例如,标记数据属于哪个组 中。
[0046] 具体地,2rDFT运算单元输入端口为η bit,输出端口为η甘bit。图2为每一级的 算法流程。在块210,数据从存储器中取出,经过自动增益控制(AGC)的缩放操作。注意到 AGC不会把所有的数据都缩放为η bit,允许有数据大于η bit。
[0047] 在块255中,数据在进入运算单元之前需要经过判断,如果参与运算的数据拥有 相同的指数,可进入运算单元直接进行运算,其输出结果为n+r bit。如果参与运算的数据 指数不同,那么展开成定点数后可W发现有些数据的位宽为q bit,且q〉n。在块225,分解 单元的功能是将位宽为qbit的数据拆分为位宽都为η bit的两个数据A和B。假设数据C 的位宽为q〉n,将C分解为都为η bit的A、B,C = ΑΧ2"+Β。 W48] 然后,将分解后的数据分别进行DFT的运算,分别在块240和245中示出,此外,具 体的细节将在图3中讨论。
[0049] 由于DFT是线性运算,满足可加性和齐次性,所W上述的变换严格成立。实现的时 候,运算单元可W复用。也即虽然在图2中分别使用块240、块245和块255来表示DFT计 算单元的计算操作,实际应用中,上述不同块240、245和255均可W复用相同的DFT计算单 _7Π 〇
[0050] 在块260,对DFT运算的输出数据进行扫描。块260主要是记录一级迭代后数据的 变化情况,本发明的实施例利用计数器分别计算不同位宽的数据,即用η bit可W表达其符 号位不多于1位的数据个数。 阳化1] 撒据的表示方式及公共指撒
[0052] 本发明的实施例中分为几组,就需要几个公共指数。如何表示哪些数据对应哪个 指数是重要的一个部分。用于指示指数的标志位取决于分组的数量。本方案采用减少定点 数的长度来存储指示位的方式。如果分两组则定点数部分长度为k-化it,化it用来存储对 应哪个公共指数。减少化it并不会对精度产生太大影响,因为在均匀数据下自然不会分 组,运算精度仍旧是k bit。既然分组就说明数据不均匀,那么较小的数据本身就无法利用 每个bit,由大量的空bit可W使用,有影响的是较大的数据,那么一个最低有效位(least significant bit, Isb)的影响对一个能量很大的数据来说是微乎其微的。运样的方法不会 降低性能。
[0053] 图3示出了本发明的另一个实施例的方法流程图。图3是表示DFT计算的具体 过程。序列x[0]、x[l]、x凹……和x[r-l]是需要进行DFT运算的短序列。Υ[0]、Υ[1]、 Υ[2]……和Y[r-1]是DFT计算的结果。如图3中所示,序列Χ[2]和X[r-1]需要分组,而 序列X[0]和X[l]不需要分组。0表示冗余比特。图3示出了本发明的实施例的算法流程。 图3中,m与D = AX化+B中的k,化及D' =A' X2~k+B'中的k表示相同的变量。
[0054] 图4示出了本发明的一个实施例的装置框图。 阳05引 电路400可W用于快速傅里叶变换/快速傅里叶逆变换肿T/IFFT)计算,包括控 制器410、输出单元420、分解单元430、FFT/IFFT计算单元440、加法器450和扫描器460。
[0056] 控制器410基于在一组数据中的数据位宽分布,识别是否需要对数据进行分组, 其中,一组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据。当需要对 数据进行分组时,控制器410为分在不同组中的数据分配不同的包括有效位和组标志的数 据表达方式,其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数。输 出单元输出指示指数的信号。
[0057] 对于多个短序列FFT/IFFT计算中的每一个,还包括分解单元430将当前FFT/IFFT 计算中使用的数据分解为至少第一多比特部分和第二多比特部分,其中第一多比特部分高 于第二多比特部分。FFT/IFFT计算单元440分别为第一多比特部分和第二多比特部分计算 FFT/IFFT计算结果。加法器450将第一多比特部分和第二多比特部分的FFT/IFFT计算结 果相加。扫描器460扫描一级中的多个短序列FFT/IFFT计算的叠加结果,其中,多个短序 列FFT/IFFT计算包括一级中的FFT/IFFT计算。
[0058] 可选地,当需要对数据进行分组时,输出单元420还输出至少一个比特W表示组 标志,其中组标志表示组使用的指数。在一些实施例中,输出单元420是可W省略的。输出 单元420所实现的功能可W由控制器410来实现。
[0059] 可选地,控制器410还基于组数,确定需要表示组标志的比特的个数。
[0060] 可选地,控制器410还将额外的符号位、移位产生的额外的符号位或预存的存储 空间,例如冗余位等,用于存储组标志。
[0061] 可选地,当不需要对数据进行分组时,控制器410还使用相同的数据表达方式来 表示数据,也即,使用固定长度的有效位来表示数据,且数据不使用组标志位。
[0062] 可选地,控制器410还通过确定在当前FFT/IFFT计算中使用的数据是否使用相同 的指数,确定在当前FFT/IFFT计算中使用的数据是否需要分解;W及如果当前FFT/IFFT计 算中使用的数据需要分解,分解单元430将在当前FFT/IFFT计算中使用的数据线性分解为 第一多比特部分和第二多比特部分。而不需要分解时,分解单元430无需进行操作。
[0063] 可选地,如果当前FFT/IFFT计算中使用的数据不需要分解,FFT/IFFT计算单元 440还直接进行当前FFT/IFFT计算。
[0064] 可选地,在控制器410识别需要对数据进行分组后,控制器410还基于扫描的结 果、位宽超过第一预定阔值的数据的个数,W及组的个数是否超过第二预定阔值,确定分组 的个数。
[00化]可选地,如果需要对数据进行分组,控制器410还基于不同组的各自的指数,调整 不同组的数据的增益。
[0066] 可选地,扫描器460还被配置为扫描一级中的多个短序列FFT/IFFT计算的叠加 结果,W确定叠加的短序列FFT/IFFT计算结果的数据位宽,W及进一步获取叠加的短序列 FFT/IFFT计算结果的数据分布。
[0067] 可选地,分解单元430将当前FFT/IFFT计算中使用的数据分解为至少第一多比特 部分和第二多比特部分是根据公式D = A巧·'k+B实现的,其中A表示第一多比特部分,B表 示第二多比特部分,w及k表示第一多比特部分的指数次幕。 W側可选地,FFT/IFFT计算单元440分别为第一多比特部分和第二多比特部分计算 FFT/IFFT计算结果。
[0069] 可选地,加法器450通过使用公式D' = A'巧~k+B',将第一多比特部分和第二多 比特部分的FFT/IFFT计算结果相加,其中A'表示第一多比特部分的FFT/IFFT计算结果, B'表示第二多比特部分的FFT/IFFT计算结果,W及k表示第一多比特部分的指数幕。
[0070] 可选地,扫描器460扫描多个FFT/IFFT计算的叠加结果,W获取当前级的多个 FFT/IFFT计算结果的分布;控制器410、输出单元420、分解单元430、FFT/IFFT计算单元 440、加法器450和扫描器460迭代地进行各自的操作,直到所有级的FFT/IFFT计算结果完 成。
[0071] 图5示出了本发明的另一个实施例的装置框图。图中的电路500包括控制器510、 存储器520、扫描器530、缩放单元540、分解单元550、延迟单元570狂1)、W 8为基的DFT计 算单元560、延迟单元575狂1)。
[0072] 首先,控制器510读取存储器520中的数据,判断是否需要对进行一次DFT蝶形计 算的数据进行分解,如果需要分解,则将数据送入分解单元550,如果不需要分解,则将数据 直接送入R8-DFT计算单元560。如果输入被送入分解单元550后,分解单元550将数据分 为A和B两部分。A =化ta/2n,B =化ta-AX化。数据B直接进入R8-DFT计算单元560 进行DFT计算,得到计算结果DFT度)。数据A经过延迟单元570的延迟后,再进入R8-DFT 计算单元560进行DFT计算,得到计算结果DFT(A)。当然,上述顺序仅为示例,也可W先对 数据A进行DFT计算,再对数据B进行DFT计算。然后,用乘法器580对DFT(A)的计算结 果乘W 2",用延迟单元575对计算结果DFT度)进行延迟。然后,加法器590将经过延迟的 DFT度)计算结果和DFT(A)乘W2"的结果相加。然后,扫描器530对计算的结果,包括经过 分解单元550至加法器590操作的结果,W及直接经过DFT计算单元560计算的结果进行 扫描。然后缩放单元540根据扫描器530的扫描结果对数据进行缩放,W指数加上定点数 (尾数,mantissa)的方式表达多个数据。根据本发明的实施例,指数的个数小于数据的个 数,从而减小了计算的复杂度,此外,指数的个数小于数据的个数,意味着至少一些数据共 享指数,从而节省了存储指数的空间。
[0073] 虽然图中未示出,本发明的实施例还具有包括图4中的电路400或图5中的电路 500的信号发生器或者接收机。
[0074] 本发明的实施例弥补了对不均匀或者迭代过程中存在不均匀数据有明显误差的 缺陷。且不同于完全的浮点的运算需要大量的资源。本发明的实施例特点主要包括:
[0075] 运算精度大幅度提高。在计算单频或者窄带信号频谱时精度与计算随机均匀 数据计算时精度相比,下降很缓慢。通过仿真有大的窄带干扰的正交频分多路复用技术 (Orthogonal Rrequen巧 Division Multiplexing,(FDM)数据,FFT输出的精度与随机均匀 数据计算时的精度相比,仅有15地的下降。 W76] 使FFT稳定工作的范围大大增加,主要是对存在共信道干扰(Co-化annel Interference, CCI)的OFDM数据解调、多载波时域信道估计、模数转换(Analog-Digital Conversion,ADC)量化噪声估计有良好性能提升。提升的运算精度约等效于在现有的自动 增益方式增加2~3bit的数据位宽时的精度。
[0077] 在数据均匀时本方案退化为与自动增益方式设计完全一样的精度。运样保证无论 何种情况下本方明的运算精度都不低于原设计。
[0078] 本发明的实施例的资源消耗利用了线性系统的齐次性和可加性,即复用原先的运 算单元不增加主要的逻辑资源消耗,架构简单模块化清晰,且不存在浮点运算时加减运算 复杂的解码和编码过程,不需要额外的存储单元,主要代价为一组加法器和少量的额外的 运算时间。
[0079] 本发明的实施例提高了数据之间的动态范围,并能W简单的运算单元来使得迭代 运算可W进行下去。本发明的第一个要点是数据分组,W及多个共有指数系统。实现中可 W指定2~5组,实验分析得到2组就完全可W满足要求,当然分组越多则效果越明显但边 际效应显著降低。
[0080] 虽然本发明与引用的特定示例实施例一起被描述,但是本发明并不仅限于于此描 述的实施例,而是可W用在后附的权利要求的精神和范围内W修改或者变更的形式被实 施。相应的,说明书和附图应被视为说明的意思而非限制的意思。
[0081] 由上所述,应当注意到本发明特定的实施例在运里W示例为目的被描述,但是在 不背离本发明范围的情况下可W做不同的修改。相应地,本发明除了后附的权利要求,并不 被限制。
[0082] 本领域技术人员在实施本发明时可W通过对于附图、公开的内容和权利要求的研 究,了解并进行对于公开的实施例的其他改变。在权利要求中,词语"包括"并不排除其他 组件或步骤,并且不定冠词"一个"并不排除多个。即使特定的特征记载在不同的从属权利 要求中,本发明也设及具有所有运些特征的实施例。任何在权利要求中的附图标志不应当 被解释为限制范围。
[0083] 不同实施例的特征和方面可W被整合到另外的实施例中,并且本文件所示的实施 例可W被实施为不具有示例或者描述的所有特征或者方面。本领域技术人员应理解,虽然 本系统和方法的特定的示例和实施例为了示例目的而被描述,在不背离本发明的精神和范 围的情况下可W做出不同的修改。此外,一个实施例的特征可W被包含到另一个实施例中, 即使运些特征并未在本文件中的一个单一的实施例中被一起描述。相应地,本发明被所附 的权利要求所描述。
【主权项】
1. 一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)计算的方法,包括: 基于在一组数据中的数据位宽分布,识别是否需要对所述数据进行分组,其中,所述一 组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据; 当需要对所述数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标 志的表达方式,其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数; 以及 输出指示所述指数的信号; 对于多个短序列FFT/IFFT计算中的每一个- 将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特 部分,其中所述第一多比特部分高于所述第二多比特部分; 分别为所述第一多比特部分和所述第二多比特部分计算FFT/IFFT计算结果; 将所述第一多比特部分和所述第二多比特部分的FFT/IFFT计算结果相加; 扫描一级中的多个所述短序列FFT/IFFT计算的叠加结果,其中,所述多个短序列FFT/ IFFT计算包括一级中的FFT/IFFT计算。2. 如权利要求1所述的方法,其中输出所述指示所述指数的信号包括 当需要对所述数据进行分组时,输出至少一个比特以表示所述组标志,其中所述组标 志表示所述组使用的指数。3. 如权利要求2所述的方法,还包括 基于组数,确定需要表示所述组标志的比特的个数。4. 如权利要求2所述的方法,还包括 将额外的符号位、移位产生的额外的符号位或预存的存储空间用于存储所述组标志。5. 如权利要求1所述的方法,还包括 当不需要对所述数据进行分组时,使用固定长度的有效位来表示所述数据,其中,所述 数据不使用所述组标志位。6. 如权利要求1所述的方法,还包括: 通过确定在所述当前短序列FFT/IFFT计算中使用的数据是否使用相同的指数,确定 在所述当前短序列FFT/IFFT计算中使用的数据是否需要分解; 所述方法还包括- 如果所述当前短序列FFT/IFFT计算中使用的数据需要分解,将在所述当前短序列 FFT/IFFT计算中使用的数据线性分解为所述第一多比特部分和所述第二多比特部分。7. 如权利要求6所述的方法,还包括 如果所述当前短序列FFT/IFFT计算中使用的数据不需要分解,直接进行所述当前短 序列FFT/IFFT计算。8. 如权利要求1所述的方法,其中识别需要对所述数据进行分组还包括: 基于所述扫描的结果,通过判断各个位宽数据的个数的累加是否超过第一预定阈值, 以及所述组的个数是否超过第二预定阈值,确定分组的个数。9. 如权利要求1所述的方法,还包括 如果需要对所述数据进行分组,基于不同组的各自的指数,调整不同组的数据的增益。10. 如权利要求1所述的方法,其中扫描所述多个所述FFT/IFFT计算的叠加结果还确 定所述叠加的FFT/IFFT计算结果的数据位宽,以及进一步获取所述叠加的FFT/IFFT计算 结果的数据分布。11. 如权利要求1所述的方法,其中将所述当前短序列FFT/IFFT计算中使用的数据分 解为至少所述第一多比特部分和所述第二多比特部分是根据公式D = A*2~k+B实现的,其 中A表示所述第一多比特部分,B表示所述第二多比特部分,以及k表示所述第一多比特部 分的指数次幂。12. 如权利要求11所述的方法,其中 分别为所述第一多比特部分和所述第二多比特部分计算FFT/IFFT计算结果包括 通过重用相同的FFT/IFFT计算单元,分别计算所述第一多比特部分和所述第二多比 特部分计算FFT/IFFT计算结果。13. 如权利要求12所述的方法,还包括: 通过使用公式D' = A'*2~k+B',将所述第一多比特部分和所述第二多比特部分的FFT/ IFFT计算结果相加,其中A'表示所述第一多比特部分的FFT/IFFT计算结果,B'表示所述 第二多比特部分的FFT/IFFT计算结果。14. 如权利要求1所述的方法,其中 扫描所述一级中的所述多个所述短序列FFT/IFFT计算的叠加结果包括获取当前级的 多个所述FFT/IFFT计算结果的分布; 所述方法还包括: 迭代地进行以下各项,直到所有级的FFT/IFFT计算结果完成: 基于在一组数据中的数据位宽分布,识别是否需要对所述数据进行分组,其中,所述一 组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据; 当需要对所述数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标 志的数据表达方式,其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指 数;以及 输出指示所述指数的信号; 对于多个短序列FFT/IFFT计算中的每一个- 将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特 部分,其中所述第一多比特部分高于所述第二多比特部分; 分别为所述第一多比特部分和所述第二多比特部分计算FFT/IFFT计算结果; 将所述第一多比特部分和所述第二多比特部分的FFT/IFFT计算结果相加; 扫描多个所述短序列FFT/IFFT计算的叠加结果,其中,所述多个短序列FFT/IFFT计算 包括一级中的FFT/IFFT计算。15. -种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)计算的电路,包括: 控制器,被配置为基于在一组数据中的数据位宽分布,识别是否需要对所述数据进行 分组,其中,所述一组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据; 当需要对所述数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标 志的数据表达方式,其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指 数;以及 输出单元,被配置为输出指示所述指数的信号; 对于多个短序列FFT/IFFT计算中的每一个,还包括- 分解单元,被配置为将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比 特部分和第二多比特部分,其中所述第一多比特部分高于所述第二多比特部分; FFT/IFFT计算单元,被配置为分别为所述第一多比特部分和所述第二多比特部分计算 FFT/IFFT计算结果; 加法器,被配置为将所述第一多比特部分和所述第二多比特部分的FFT/IFFT计算结 果相加; 扫描器,被配置为扫描一级中的多个所述短序列FFT/IFFT计算的叠加结果,其中,所 述多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计算。16. 如权利要求1所述的电路,其中所述输出单元还被配置为: 当需要对所述数据进行分组时,输出至少一个比特以表示所述组标志,其中所述组标 志表示所述组使用的指数。17. 如权利要求16所述的电路,所述控制器还被配置为 基于组数,确定需要表示所述组标志的比特的个数。18. 如权利要求16所述的电路,所述控制器还被配置为 将额外的符号位、移位产生的额外的符号位或预存的存储空间用于存储所述组标志。19. 如权利要求15所述的电路,所述控制器还被配置为 当不需要对所述数据进行分组时,使用固定长度的有效位来表示所述数据,其中,所述 数据不使用所述组标志位。20. 如权利要求15所述的电路,所述控制器还被配置为: 通过确定在所述当前短序列FFT/IFFT计算中使用的数据是否使用相同的指数,确定 在所述当前短序列FFT/IFFT计算中使用的数据是否需要分解; 所述分解单元还被配置为 如果所述当前短序列FFT/IFFT计算中使用的数据需要分解,将在所述当前短序列 FFT/IFFT计算中使用的数据线性分解为所述第一多比特部分和所述第二多比特部分。21. 如权利要求20所述的电路,其中所述FFT/IFFT计算单元还被配置为: 如果所述当前短序列FFT/IFFT计算中使用的数据不需要分解,直接进行所述当前短 序列FFT/IFFT计算。22. 如权利要求15所述的电路,其中在所述控制器识别需要对所述数据进行分组后, 所述控制器还被配置为: 基于所述扫描的结果,通过判断各个位宽数据的个数的累加是否超过第一预定阈值, 以及所述组的个数是否超过第二预定阈值,确定分组的个数。23. 如权利要求15所述的电路,所述控制器还被配置为 如果需要对所述数据进行分组,基于不同组的各自的指数,调整不同组的数据的增益。24. 如权利要求15所述的电路,其中所述扫描器还被配置为扫描所述多个所述FFT/ IFFT计算的叠加结果,以确定所述叠加的FFT/IFFT计算结果的数据位宽,以及进一步获取 所述叠加的FFT/IFFT计算结果的数据分布。25. 如权利要求15所述的电路,其中所述分解单元将所述当前短序列FFT/IFFT计 算中使用的数据分解为至少所述第一多比特部分和所述第二多比特部分是根据公式D = A*2~k+B实现的,其中A表示所述第一多比特部分,B表示所述第二多比特部分,以及k表示 所述第一多比特部分的指数次幂。26. 如权利要求25所述的电路,其中所述FFT/IFFT计算单元分别计算所述第一多比特 部分和所述第二多比特部分计算FFT/IFFT计算结果。27. 如权利要求26所述的电路,其中所述加法器还被配置为: 通过使用公式D' = A'*2~k+B',将所述第一多比特部分和所述第二多比特部分的FFT/ IFFT计算结果相加,其中A'表示所述第一多比特部分的FFT/IFFT计算结果,B'表示所述 第二多比特部分的FFT/IFFT计算结果。28. 如权利要求15所述的电路,其中 所述扫描器被配置为扫描所述一级中的所述多个所述短序列FFT/IFFT计算的叠加结 果,以获取当前级的多个所述FFT/IFFT计算结果的分布; 所述控制器、所述输出单元、所述分解单元、所述FFT/IFFT计算单元、所述加法器和所 述扫描器迭代地进行各自的操作,直到所有级的FFT/IFFT计算结果完成。29. -种信号发生器,包括如权利要求15至28中任一项所述的电路。30. -种接收机,包括如权利要求15至28中任一项所述的电路。
【文档编号】G06F17/14GK105988972SQ201510056889
【公开日】2016年10月5日
【申请日】2015年2月3日
【发明人】宋鹤鸣
【申请人】澜起科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1