实施例二:
阈值仍为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,分解单元的功能是将位宽为qbit的数据拆分为位宽都为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可以使用,有影响的是较大的数据,那么一个最低有效位(leastsignificant 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-ChannelInterference,CCI)的OFDM数据解调、多载波时域信道估计、模数转换(Analog-DigitalConversion,ADC)量化噪声估计有良好性能提升。提升的运算精度约等效于在现有的自动增益方式增加2~3bit的数据位宽时的精度。
在数据均匀时本方案退化为与自动增益方式设计完全一样的精度。这样保证无论何种情况下本方明的运算精度都不低于原设计。
本发明的实施例的资源消耗利用了线性系统的齐次性和可加性,即复用原先的运算单元不增加主要的逻辑资源消耗,架构简单模块化清晰,且不存在浮点运算时加减运算复杂的解码和编码过程,不需要额外的存储单元,主要代价为一组加法器和少量的额外的运算时间。
本发明的实施例提高了数据之间的动态范围,并能以简单的运算单元来使得迭代运算可以进行下去。本发明的第一个要点是数据分组,以及多个共有指数系统。实现中可以指定2~5组,实验分析得到2组就完全可以满足要求,当然分组越多则效果越明显但边际效应显著降低。
虽然本发明与引用的特定示例实施例一起被描述,但是本发明并不仅限于于此描述的实施例,而是可以用在后附的权利要求的精神和范围内以修改或者变更的形式被实施。相应的,说明书和附图应被视为说明的意思而非限制的意思。
由上所述,应当注意到本发明特定的实施例在这里以示例为目的被描述,但是在不背离本发明范围的情况下可以做不同的修改。相应地,本发明除了后附的权利要求,并不被限制。
本领域技术人员在实施本发明时可以通过对于附图、公开的内容和权利要求的研究,了解并进行对于公开的实施例的其他改变。在权利要求中,词语“包括”并不排除其他组件或步骤,并且不定冠词“一个”并不排除多个。即使特定的特征记载在不同的从属权利要求中,本发明也涉及具有所有这些特征的实施例。任何在权利要求中的附图标志不应当被解释为限制范围。
不同实施例的特征和方面可以被整合到另外的实施例中,并且本文件所示的实施例可以被实施为不具有示例或者描述的所有特征或者方面。本领域技术人员应理解,虽然本系统和方法的特定的示例和实施例为了示例目的而被描述,在不背离本发明的精神和范围的情况下可以做出不同的修改。此外,一个实施例的特征可以被包含到另一个实施例中,即使这些特征并未在本文件中的一个单一的实施例中被一起描述。相应地,本发明被所附的权利要求所描述。