书签 分享 收藏 举报 版权申诉 / 19

快速傅里叶变换的方法和电路.pdf

  • 上传人:a***
  • 文档编号:6199316
  • 上传时间:2019-05-20
  • 格式:PDF
  • 页数:19
  • 大小:1.36MB
  • 摘要
    申请专利号:

    CN201510056889.X

    申请日:

    2015.02.03

    公开号:

    CN105988972A

    公开日:

    2016.10.05

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||专利申请权的转移IPC(主分类):G06F 17/14登记生效日:20171031变更事项:申请人变更前权利人:澜起科技(上海)有限公司变更后权利人:上海澜至半导体有限公司变更事项:地址变更前权利人:200233 上海市徐汇区宜山路900号A1601室变更后权利人:200233 上海市徐汇区宜山路900号1幢A18部位变更事项:申请人变更后权利人:澜至电子科技(成都)有限公司|||实质审查的生效IPC(主分类):G06F 17/14申请日:20150203|||公开

    IPC分类号:

    G06F17/14

    主分类号:

    G06F17/14

    申请人:

    澜起科技(上海)有限公司

    发明人:

    宋鹤鸣

    地址:

    200233 上海市徐汇区宜山路900号A1601室

    优先权:

    专利代理机构:

    上海一平知识产权代理有限公司 31266

    代理人:

    邱忠贶

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开一种快速傅里叶变换的方法和电路,该方法包括基于在一组数据中的数据位宽分布,识别是否需要对数据进行分组,一组数据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据。当需要对数据进行分组时,为分在不同组中的数据分配不同的包括有效位和组标志的数据表达方式,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数;以及输出指示所述指数的信号;对于多个短序列FFT/IFFT计算中的每一个,将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比特部分;分别为第一多比特部分和第二多比特部分计算FFT/IFFT计算结果;将第一多比特部分和第二多比特部分的FFT/IFFT计算结果相加;扫描一级中的多个短序列FFT/IFFT计算的叠加结果。

    权利要求书

    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中任一项所述的电路。

    说明书

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

    技术领域

    本发明涉及数据变换,尤其涉及快速傅里叶变换的方法和装置。

    背景技术

    FFT/IFFT的运算满足帕斯瓦尔定理,即输出数据的能量是输入数据
    能量的N倍。这说明如果要无损失的运算需要很大的存储空间,运算器也
    需要很大的位宽。为节省资源一般都采用在每级迭代完成后扫描整体数据
    的最大值,并根据最大值来确定整体数据乘或除以一个2的次幂的常数,
    保存位宽较少的有效数据,在最终迭代结果上补偿相同的因子。这种常用
    的方法称为自动增益。然而,上述算法在精度方面存在问题,尤其是当数
    据分布不均匀时,运算精度会大幅度下降。这是由于,当数据之间的动态
    范围大于数据位宽时,为保证最大值能够被表示,所有数据按比例缩放取
    整后可能导致较小的数据完全损失。因此,希望有一种方法和装置能够解
    决上述问题。

    发明内容

    本发明的一个实施例公开了一种快速傅里叶变换/快速傅里叶逆变换
    (FFT/IFFT)计算的方法,包括:基于在一组数据中的数据位宽分布,识
    别是否需要对所述数据进行分组,其中,所述一组数据包括在一级快速傅
    里叶变换/快速傅里叶逆变换计算中的数据;当需要对所述数据进行分组
    时,为分在不同组中的数据分配不同的包括有效位和组标志的表达方式,
    其中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指
    数;以及输出指示所述指数的信号;对于多个短序列FFT/IFFT计算中的
    每一个-将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特
    部分和第二多比特部分,其中所述第一多比特部分高于所述第二多比特部
    分;分别为所述第一多比特部分和所述第二多比特部分计算FFT/IFFT计
    算结果;将所述第一多比特部分和所述第二多比特部分的FFT/IFFT计算
    结果相加;扫描一级中的多个所述短序列FFT/IFFT计算的叠加结果,其
    中,所述多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计算。

    本发明的另一个实施例公开了一种快速傅里叶变换/快速傅里叶逆变
    换(FFT/IFFT)计算的电路,包括:控制器,被配置为基于在一组数据中
    的数据位宽分布,识别是否需要对所述数据进行分组,其中,所述一组数
    据包括在一级快速傅里叶变换/快速傅里叶逆变换计算中的数据;当需要
    对所述数据进行分组时,为分在不同组中的数据分配不同的包括有效位和
    组标志的数据表达方式,其中,在一个组中的数据具有相同指数,在不同
    组中的数据具有不同指数;以及输出单元,被配置为输出指示所述指数的
    信号;对于多个短序列FFT/IFFT计算中的每一个,还包括-分解单元,被
    配置为将当前短序列FFT/IFFT计算中使用的数据分解为至少第一多比特
    部分和第二多比特部分,其中所述第一多比特部分高于所述第二多比特部
    分;FFT/IFFT计算单元,被配置为分别为所述第一多比特部分和所述第
    二多比特部分计算FFT/IFFT计算结果;加法器,被配置为将所述第一多
    比特部分和所述第二多比特部分的FFT/IFFT计算结果相加;扫描器,被
    配置为扫描一级中的多个所述短序列FFT/IFFT计算的叠加结果,其中,
    所述多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计算。

    本发明的另一个实施例公开了一种信号发生器,包括上述的电路。

    本发明的另一个实施例公开了一种接收机,包括如上述的电路。

    附图说明

    本发明通过所附的附图用示例形式展示。附图应当被理解为作为示
    例而非限制的,本发明的范围是由权利要求所限定的。在附图中,相同的
    附图标志代表相同的组件。

    图1示出了本发明的实施例的方法流程图。

    图2示出了本发明的另一个实施例的方法流程图。

    图3示出了本发明的另一个实施例的方法流程图。

    图4示出了本发明的一个实施例的装置框图。

    图5示出了本发明的另一个实施例的装置框图。

    具体实施例

    本发明的多个方面及例子将在此被描述。接下来的说明为这些例子
    的全面理解及可行的说明提供了具体的细节。但是本领域技术人员将理解
    本发明可在缺少许多这些细节的情形下被实施。此外,一些众所周知的结
    构和功能将不会被具体地显示或描述,以避免不必要地模糊相关说明。

    图1示出了本发明的实施例的方法100的流程图。首先,方法100包
    括,在块110中,基于在一组数据中的数据位宽分布,识别是否需要对数
    据进行分组。其中,一组数据包括在一级快速傅里叶变换/快速傅里叶逆
    变换计算中的数据。

    具体地,控制器基于扫描的结果,获取一级FFT/IFFT计算中涉及的
    整个数据的分布情况。以最大允许分2组为例。控制器根据数据的分布情
    况,依次累加位宽(也即比特宽度,bitwidth)由大到小的数据个数。当
    累加的个数超过阈值则表示需要分组。超过阈值时的位宽就是第一组的最
    小位宽。例如在一个实施例中,预定阈值可以设定为m。

    表一


    表1中Ns表示运算单元的输入位宽,Ns+xbit(x=1,2,)表示上
    一级扫描后整体数据的位宽分布,Mx表示对应位宽的数据个数。表1中
    列举了当DFT完成一级运算后得到的数据分布,数据分布的表格根据
    DFT的长度、数据可能的幅度范围、实现的细节要求来选取表的行数。传
    统的方案(对照组,以AGC增益1表示)中AGC会判断最大值处于哪个
    位宽下,并调整AGC的增益,使得最大值的位宽调整为Ns bit(Ns为运算
    单元的输入位宽)。如表1中AGC1的结果,AGC增益为2^-x,当位宽
    Ns+x比特的数据个数不为0,即M(Ns+x)>0,且大于Ns+x比特位宽的数
    据都为0,即∑M(Ns+p)=0,p>x。

    本发明的实施例的方法并不会依据整体数据最大值而是组中最大值
    来进行AGC。AGC选定的增益并不一定是最大值,而是大于这个比特的
    数据数量小于一个阈值,而下一个增益档又使得大于增益bit的数据数量
    大于阈值。这样增益取决于每组数据的最大值。如表1中的AGC2,AGC
    增益为2^-x,当位宽大于或等于Ns+x比特的数据个数大于threshold 1,
    即∑M(Ns+p)>=threshold 1,p>=x,且位宽大于Ns+x+1比特的数据个数小
    于threshold 1,即∑M(Ns+p)<threshold,p>x。

    实施例一

    例如,FFT/IFFT计算器的位宽Ns为12比特。一级计算结果使用的
    数据大小(也即位宽)有15比特(Ns+3比特),位宽为15比特的数据
    的个数为2,也即M3=2、14比特(Ns+2比特),对应M2=3,13比特
    (Ns+1比特),对应M1=23,以及小于等于(≤)Ns比特,包括10比
    特、8比特、6比特、3比特,对应的M0=100。设阈值为10。根据数据分
    布,位宽超过13比特的数据的个数为5,而位宽大于或等于13比特的数
    据的个数为28,阈值为10,因此,位宽大于13比特的数据个数小于阈值
    10,而位宽大于或等于13比特的数据的个数大于阈值10。则根据表一所
    示,x=1,对应的增益为2-1。

    实施例二:

    阈值仍为10。在另一个实施例中,例如,FFT/IFFT计算器的位宽Ns
    仍为12比特。一级计算中使用的数据大小(也即位宽)有15比特(Ns+3
    比特),位宽为15比特的数据的个数为18,也即M3=18、14比特
    (Ns+2比特),对应M2=3,13比特(Ns+1比特),对应M1=23,以及
    ≤Ns比特,包括10比特、8比特、6比特、3比特,对应的M0=84。因为
    任何比特位宽的数据的个数均大于阈值10,也即,数据的分布是均匀
    的,因此,不需要对数据进行分组。所以增益与传统方法求得的一致,为
    2-3。

    综上,可以注意到,当数据均匀时,处于最大值位宽的数据会相当
    多,一般多于设定的门限,则对照组的AGC增益1和本发明实施例的
    AGC增益2会有相同的AGC增益,运算的过程完全相同,结果也完全相
    同,都有很高的信噪比。当数据变化较大,也即数据不充分均匀时,AGC
    不会因为一小组数据产生负增益,造成整体性能的损失。所以threshold1
    可以调节精度,通常参考为整个FFT序列长度的2%左右就有良好的性能
    增益。

    上述的实施例一的方案实际是将数据分为两组。可以理解,根据本
    发明的方案可以设置多个组,并为每个组都增加一个AGC,每个组都有
    自己的AGC参数,不仅是大于运算单元输入位宽的数据分组,也可以将
    低于运算单元输入位宽的分组,同时给予正的AGC增益,这样的补充方
    案可以进一步提高精度,简化运算。

    分组后需要分配相应的存储空间来表示分组情况,在存储器尺寸固
    定的情形下,可以不增加存储器的宽度又不影响数据精度的情况下来实现
    对组标志的表示。例如,原先数据以16位宽来表示,当需要加入组标志
    的时候,较低分组的数据利用其高位的冗余比特来表示组标志。而其他分
    组的数据舍弃最低位来满足存储条件。可以理解,当其他分组的数据舍弃
    了最低位,自然高位就多出了冗余位,与其他组的形式一致。当然组的表
    示方式在先控制器已知的,例如,用几位表示组标志,如果存在组标志,
    组标志占用最高位还是最低位。当使用组标志时,不同的表示方式所采用
    的组标志的表示规则是一致的。

    当分配了空间表示分组情况后,原先用于表示数据的位宽就减小
    了,即表示精度下降了。但是可以证明此时损失很微弱。此外,可选地,
    也可以额外为组标志分配空间,这样就多使用了memory。

    然后,在块120中,当需要对数据进行分组时,为分在不同组中的数
    据分配不同的包括有效位和组标志的数据表达方式,其中,在一个组中的
    数据具有相同指数,在不同组中的数据具有不同指数。

    参考实施例一,该实施例分了2组。第一组的指数为23,第二组的
    指数为21,也即2。

    在块130中,输出指示指数的信号。可选地,当需要对数据进行分组
    时,输出至少一个比特以表示组标志,其中组标志位表示组使用的指数。
    一般地,组标志位与组所使用的指数是一一对应的。可选地,基于组数,
    确定需要表示组标志的比特的个数。仍以实施例一为例,当最多分2组
    时,需要1比特表示分在哪一组。例如0表示第一组,1表示第二组。当
    分4组时,需要2比特表示分在哪一组。例如0表示第一组,1表示第二
    组,2表示第三组,3表示第四组。以此类推。

    组标志位,也即指数的标志位(group index)是动态变化的,标志位
    的最大位数取决于允许分组的最大组数。实际运行中,如果允许分4组,
    那么可能某级会分配出两个比特的存储空间来存放组标志,但也可能不满
    足分组条件,只需分配一个比特或是不分配。至于如何分配位置,可以是
    任意的,例如,存储器根据分组的情况分配出相应的空间存放组标志,
    其他空间用来存储数据。

    该方法100进一步包括,对于多个短序列FFT/IFFT计算中的每一
    个,在块140中,将当前FFT/IFFT计算中使用的数据分解为至少第一多
    比特部分和第二多比特部分,其中第一多比特部分高于第二多比特部分。
    例如,第一多比特部分为高比特部分,第二多比特部分为低比特部分。

    可选地,将当前FFT/IFFT计算中使用的数据,以蝶形计算为例,短
    序列FFT/IFFT计算也即为本次蝶形计算所使用的数据,分解为第一多比
    特部分和第二多比特部分是根据公式D=A×2k+B实现的,其中A表示第
    一多比特部分,B表示第二多比特部分,以及k表示第一多比特部分的指
    数幂。本领域普通技术人员可以理解,分解的两部分的大小可以是不一样
    的,这取决于具体的设计,一种简便的方法是两部分的大小固定且等长。
    可选地,每级是变长度的,例如本级比前一级的长度长。

    在上述实施例中,以将当前计算所使用的数据被线性分解为两部分
    为例进行说明。可选地,本领域技术人员可以理解,也可以将当前计算所
    使用的数据分为3部分、4部分等。各个部分分别进行计算,例如蝶形计
    算,再将计算的结果相加。注意到,分解的部分的个数是没有限制的。

    在上述实施例中,在分解之前不需要判断,直接进入分解操作。这
    样操作每次蝶形运算消耗的时间就多了一倍。

    可选地,在进行块140的操作之前,还包括通过确定在当前
    FFT/IFFT计算中使用的数据是否使用相同的指数,确定当前FFT/IFFT计
    算中使用的数据是否需要分解。通过判断,大部分的数据都是不需要分解
    的,那么运算时间与传统算法一样,少量的分解只是增加一小部分的运算
    时间。

    在块150中,分别为第一多比特部分和第二多比特部分计算
    FFT/IFFT计算结果。

    可选地,通过重用相同的FFT/IFFT计算单元,分别地计算第一多比
    特部分和第二多比特部分计算FFT/IFFT计算结果。例如,可以先使用
    FFT/IFFT计算单元计算第一多比特部分的结果,然后,使用同一
    FFT/IFFT计算单元计算第二多比特部分的结果。可选地,也可以先使用
    FFT/IFFT计算单元计算第二多比特部分的结果,然后,使用同一
    FFT/IFFT计算单元计算第一多比特部分的结果。只增加一个时钟周期,
    而不需要对FFT/IFFT计算单元硬件进行修改。

    在块160中,将第一多比特部分和第二多比特部分的FFT/IFFT计算
    结果相加。可选地,通过使用公式D’=A’*2^k+B’,将第一多比特部分和
    第二多比特部分的FFT/IFFT计算结果相加,其中A’表示第一多比特部分
    的FFT/IFFT计算结果,B’表示第二多比特部分的FFT/IFFT计算结果,以
    及k表示第一多比特部分的指数幂。

    重复上述块140、150和160的操作,直至一级中的所有数据都进行
    了蝶形计算(包括进行了分解和相加操作)。通常地,由于运算器只有一
    个,一级中的多个蝶形计算是顺序进行的。

    在块170中,扫描一级中的所有短序列FFT/IFFT计算的叠加结果,
    也即,所有多个短序列FFT/IFFT计算包括一级中所有的FFT/IFFT计算。

    在一个实施例中,各级迭代地进行以下各项,直到所有级的
    FFT/IFFT计算结果完成:块110,基于在一组数据中的数据位宽分布,识
    别是否需要对数据进行分组,其中,一组数据包括在一级快速傅里叶变换
    /快速傅里叶逆变换计算中的数据;块120,当需要对数据进行分组时,为
    分在不同组中的数据分配不同的包括有效位和组标志的数据表达方式,其
    中,在一个组中的数据具有相同指数,在不同组中的数据具有不同指数;
    块130输出指示指数的信号。

    对于多个短序列FFT/IFFT计算中的每一个,块140将当前FFT/IFFT
    计算中使用的数据分解为至少第一多比特部分和第二多比特部分,其中第
    一多比特部分高于第二多比特部分;块150分别为第一多比特部分和第二
    多比特部分计算FFT/IFFT计算结果;块160将第一多比特部分和第二多
    比特部分的FFT/IFFT计算结果相加;块170扫描多个短序列FFT/IFFT计
    算的叠加结果,其中,多个短序列FFT/IFFT计算包括一级中的FFT/IFFT
    计算。

    根据本发明的一个实施例,数据表示方法上使用至少两个共同的指
    数来表示数据。具体地,将数据分成若干个组,每组共有一个指数。分组
    的个数大于1小于N(N为FFT长度)。实现方法上利用线性系统的基本性
    质,将运算单元的输入数据线性拆分为不同的两个部分,分别进行
    FFT/IFFT计算后再相加。此结构既具有使得每个数据都有自己的指数
    位,所以数据的各组之间可表示的动态范围是不相关的优点,又只有较低
    的复杂性。

    图2示出了本发明的另一个实施例的方法流程图。方法200包括,首
    先,在块210中,将数据存储在存储器中。然后,在块215中,控制器进
    行自动增益控制,具体地,在块220中,判断一级中参与运算的数据是否
    使用相同的指数。如果是,则进入块255,进行2r DFT,也即以r为基
    (radix)的DFT计算。如果块220的判断结果是否,则进入块225,对数
    据进行分解。以分解为两部分为例进行说明,分别为块230,数据A为第
    一多比特部分,和数据B为第二多比特部分。在块240和块245中分别对
    这两部分进行2r DFT计算。然后在块250中,将两部分的DFT计算结果
    合并,也即将数据A的计算结果和数据B的计算结果连接
    (concatenate)。然后在块260中,对于一级中所有计算结果,包括经过
    分解以及合并的从块250获取的和未经过分解的从块255获取的,或者全
    部未经过分解的从块255获取的结果进行扫描,确定一级中所有数据计算
    后的分布情况。然后在块265对扫描结果进行分类,例如,确定新的增益
    的值,以及是否需要分组,以及如果需要分组,如何界定不同的组的界
    限。然后,在块270,更新当前的指数。然后,在块275更新标记,例
    如,标记数据属于哪个组中。

    具体地,2rDFT运算单元输入端口为n bit,输出端口为n+r bit。图2
    为每一级的算法流程。在块210,数据从存储器中取出,经过自动增益控
    制(AGC)的缩放操作。注意到AGC不会把所有的数据都缩放为n bit,
    允许有数据大于n bit。

    在块255中,数据在进入运算单元之前需要经过判断,如果参与运算
    的数据拥有相同的指数,可进入运算单元直接进行运算,其输出结果为
    n+r bit。如果参与运算的数据指数不同,那么展开成定点数后可以发现有
    些数据的位宽为q bit,且q>n。在块225,分解单元的功能是将位宽为q
    bit的数据拆分为位宽都为n bit的两个数据A和B。假设数据C的位宽为
    q>n,将C分解为都为n bit的A、B,C=A×2m+B。

    然后,将分解后的数据分别进行DFT的运算,分别在块240和245
    中示出,此外,具体的细节将在图3中讨论。

    由于DFT是线性运算,满足可加性和齐次性,所以上述的变换严格
    成立。实现的时候,运算单元可以复用。也即虽然在图2中分别使用块
    240、块245和块255来表示DFT计算单元的计算操作,实际应用中,上
    述不同块240、245和255均可以复用相同的DFT计算单元。

    在块260,对DFT运算的输出数据进行扫描。块260主要是记录一
    级迭代后数据的变化情况,本发明的实施例利用计数器分别计算不同位宽
    的数据,即用n bit可以表达其符号位不多于1位的数据个数。

    数据的表示方式及公共指数

    本发明的实施例中分为几组,就需要几个公共指数。如何表示哪些
    数据对应哪个指数是重要的一个部分。用于指示指数的标志位取决于分组
    的数量。本方案采用减少定点数的长度来存储指示位的方式。如果分两组
    则定点数部分长度为k-1bit,1bit用来存储对应哪个公共指数。减少1bit
    并不会对精度产生太大影响,因为在均匀数据下自然不会分组,运算精度
    仍旧是k bit。既然分组就说明数据不均匀,那么较小的数据本身就无法利
    用每个bit,由大量的空bit可以使用,有影响的是较大的数据,那么一个
    最低有效位(least significant bit,lsb)的影响对一个能量很大的数据来说
    是微乎其微的。这样的方法不会降低性能。

    图3示出了本发明的另一个实施例的方法流程图。图3是表示DFT
    计算的具体过程。序列X[0]、X[1]、X[2]……和X[r-1]是需要进行DFT运
    算的短序列。Y[0]、Y[1]、Y[2]……和Y[r-1]是DFT计算的结果。如图3
    中所示,序列X[2]和X[r-1]需要分组,而序列X[0]和X[1]不需要分组。0
    表示冗余比特。图3示出了本发明的实施例的算法流程。图3中,m与
    D=A×2k+B中的k,以及D’=A’×2^k+B’中的k表示相同的变量。

    图4示出了本发明的一个实施例的装置框图。

    电路400可以用于快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)
    计算,包括控制器410、输出单元420、分解单元430、FFT/IFFT计算单
    元440、加法器450和扫描器460。

    控制器410基于在一组数据中的数据位宽分布,识别是否需要对数据
    进行分组,其中,一组数据包括在一级快速傅里叶变换/快速傅里叶逆变
    换计算中的数据。当需要对数据进行分组时,控制器410为分在不同组中
    的数据分配不同的包括有效位和组标志的数据表达方式,其中,在一个组
    中的数据具有相同指数,在不同组中的数据具有不同指数。输出单元输出
    指示指数的信号。

    对于多个短序列FFT/IFFT计算中的每一个,还包括分解单元430将
    当前FFT/IFFT计算中使用的数据分解为至少第一多比特部分和第二多比
    特部分,其中第一多比特部分高于第二多比特部分。FFT/IFFT计算单元
    440分别为第一多比特部分和第二多比特部分计算FFT/IFFT计算结果。加
    法器450将第一多比特部分和第二多比特部分的FFT/IFFT计算结果相
    加。扫描器460扫描一级中的多个短序列FFT/IFFT计算的叠加结果,其
    中,多个短序列FFT/IFFT计算包括一级中的FFT/IFFT计算。

    可选地,当需要对数据进行分组时,输出单元420还输出至少一个比
    特以表示组标志,其中组标志表示组使用的指数。在一些实施例中,输出
    单元420是可以省略的。输出单元420所实现的功能可以由控制器410来
    实现。

    可选地,控制器410还基于组数,确定需要表示组标志的比特的个
    数。

    可选地,控制器410还将额外的符号位、移位产生的额外的符号位或
    预存的存储空间,例如冗余位等,用于存储组标志。

    可选地,当不需要对数据进行分组时,控制器410还使用相同的数据
    表达方式来表示数据,也即,使用固定长度的有效位来表示数据,且数据
    不使用组标志位。

    可选地,控制器410还通过确定在当前FFT/IFFT计算中使用的数据
    是否使用相同的指数,确定在当前FFT/IFFT计算中使用的数据是否需要
    分解;以及如果当前FFT/IFFT计算中使用的数据需要分解,分解单元
    430将在当前FFT/IFFT计算中使用的数据线性分解为第一多比特部分和第
    二多比特部分。而不需要分解时,分解单元430无需进行操作。

    可选地,如果当前FFT/IFFT计算中使用的数据不需要分解,
    FFT/IFFT计算单元440还直接进行当前FFT/IFFT计算。

    可选地,在控制器410识别需要对数据进行分组后,控制器410还基
    于扫描的结果、位宽超过第一预定阈值的数据的个数,以及组的个数是否
    超过第二预定阈值,确定分组的个数。

    可选地,如果需要对数据进行分组,控制器410还基于不同组的各自
    的指数,调整不同组的数据的增益。

    可选地,扫描器460还被配置为扫描一级中的多个短序列FFT/IFFT
    计算的叠加结果,以确定叠加的短序列FFT/IFFT计算结果的数据位宽,
    以及进一步获取叠加的短序列FFT/IFFT计算结果的数据分布。

    可选地,分解单元430将当前FFT/IFFT计算中使用的数据分解为至
    少第一多比特部分和第二多比特部分是根据公式D=A*2^k+B实现的,其
    中A表示第一多比特部分,B表示第二多比特部分,以及k表示第一多比
    特部分的指数次幂。

    可选地,FFT/IFFT计算单元440分别为第一多比特部分和第二多比
    特部分计算FFT/IFFT计算结果。

    可选地,加法器450通过使用公式D’=A’*2^k+B’,将第一多比特部
    分和第二多比特部分的FFT/IFFT计算结果相加,其中A’表示第一多比特
    部分的FFT/IFFT计算结果,B’表示第二多比特部分的FFT/IFFT计算结
    果,以及k表示第一多比特部分的指数幂。

    可选地,扫描器460扫描多个FFT/IFFT计算的叠加结果,以获取当
    前级的多个FFT/IFFT计算结果的分布;控制器410、输出单元420、分解
    单元430、FFT/IFFT计算单元440、加法器450和扫描器460迭代地进行
    各自的操作,直到所有级的FFT/IFFT计算结果完成。

    图5示出了本发明的另一个实施例的装置框图。图中的电路500包括
    控制器510、存储器520、扫描器530、缩放单元540、分解单元550、延
    迟单元570(Z-1)、以8为基的DFT计算单元560、延迟单元575(Z-
    1)。

    首先,控制器510读取存储器520中的数据,判断是否需要对进行一
    次DFT蝶形计算的数据进行分解,如果需要分解,则将数据送入分解单
    元550,如果不需要分解,则将数据直接送入R8-DFT计算单元560。如
    果输入被送入分解单元550后,分解单元550将数据分为A和B两部分。
    A=Data/2n,B=Data-A×2n。数据B直接进入R8-DFT计算单元560进行
    DFT计算,得到计算结果DFT(B)。数据A经过延迟单元570的延迟后,
    再进入R8-DFT计算单元560进行DFT计算,得到计算结果DFT(A)。当
    然,上述顺序仅为示例,也可以先对数据A进行DFT计算,再对数据B
    进行DFT计算。然后,用乘法器580对DFT(A)的计算结果乘以2n,用
    延迟单元575对计算结果DFT(B)进行延迟。然后,加法器590将经过
    延迟的DFT(B)计算结果和DFT(A)乘以2n的结果相加。然后,扫描
    器530对计算的结果,包括经过分解单元550至加法器590操作的结果,
    以及直接经过DFT计算单元560计算的结果进行扫描。然后缩放单元540
    根据扫描器530的扫描结果对数据进行缩放,以指数加上定点数(尾数,
    mantissa)的方式表达多个数据。根据本发明的实施例,指数的个数小于
    数据的个数,从而减小了计算的复杂度,此外,指数的个数小于数据的个
    数,意味着至少一些数据共享指数,从而节省了存储指数的空间。

    虽然图中未示出,本发明的实施例还具有包括图4中的电路400或图
    5中的电路500的信号发生器或者接收机。

    本发明的实施例弥补了对不均匀或者迭代过程中存在不均匀数据有
    明显误差的缺陷。且不同于完全的浮点的运算需要大量的资源。本发明的
    实施例特点主要包括:

    运算精度大幅度提高。在计算单频或者窄带信号频谱时精度与计算
    随机均匀数据计算时精度相比,下降很缓慢。通过仿真有大的窄带干扰的
    正交频分多路复用技术(Orthogonal Frequency Division Multiplexing,
    OFDM)数据,FFT输出的精度与随机均匀数据计算时的精度相比,仅有
    15dB的下降。

    使FFT稳定工作的范围大大增加,主要是对存在共信道干扰(Co-
    Channel Interference,CCI)的OFDM数据解调、多载波时域信道估计、
    模数转换(Analog-Digital Conversion,ADC)量化噪声估计有良好性能提
    升。提升的运算精度约等效于在现有的自动增益方式增加2~3bit的数据位
    宽时的精度。

    在数据均匀时本方案退化为与自动增益方式设计完全一样的精度。
    这样保证无论何种情况下本方明的运算精度都不低于原设计。

    本发明的实施例的资源消耗利用了线性系统的齐次性和可加性,即
    复用原先的运算单元不增加主要的逻辑资源消耗,架构简单模块化清晰,
    且不存在浮点运算时加减运算复杂的解码和编码过程,不需要额外的存储
    单元,主要代价为一组加法器和少量的额外的运算时间。

    本发明的实施例提高了数据之间的动态范围,并能以简单的运算单
    元来使得迭代运算可以进行下去。本发明的第一个要点是数据分组,以及
    多个共有指数系统。实现中可以指定2~5组,实验分析得到2组就完全可
    以满足要求,当然分组越多则效果越明显但边际效应显著降低。

    虽然本发明与引用的特定示例实施例一起被描述,但是本发明并不
    仅限于于此描述的实施例,而是可以用在后附的权利要求的精神和范围内
    以修改或者变更的形式被实施。相应的,说明书和附图应被视为说明的意
    思而非限制的意思。

    由上所述,应当注意到本发明特定的实施例在这里以示例为目的被
    描述,但是在不背离本发明范围的情况下可以做不同的修改。相应地,本
    发明除了后附的权利要求,并不被限制。

    本领域技术人员在实施本发明时可以通过对于附图、公开的内容和
    权利要求的研究,了解并进行对于公开的实施例的其他改变。在权利要求
    中,词语“包括”并不排除其他组件或步骤,并且不定冠词“一个”并不排除
    多个。即使特定的特征记载在不同的从属权利要求中,本发明也涉及具有
    所有这些特征的实施例。任何在权利要求中的附图标志不应当被解释为限
    制范围。

    不同实施例的特征和方面可以被整合到另外的实施例中,并且本文
    件所示的实施例可以被实施为不具有示例或者描述的所有特征或者方面。
    本领域技术人员应理解,虽然本系统和方法的特定的示例和实施例为了示
    例目的而被描述,在不背离本发明的精神和范围的情况下可以做出不同的
    修改。此外,一个实施例的特征可以被包含到另一个实施例中,即使这些
    特征并未在本文件中的一个单一的实施例中被一起描述。相应地,本发明
    被所附的权利要求所描述。

    关 键  词:
    快速 傅里叶变换 方法 电路
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:快速傅里叶变换的方法和电路.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6199316.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1