一种fft芯片的优化方法

文档序号:857505 发布日期:2021-04-02 浏览:18次 >En<

阅读说明:本技术 一种fft芯片的优化方法 (Optimization method of FFT chip ) 是由 刘亚鹏 乐立鹏 安印龙 谷艳 方新嘉 楚晓梅 于 2020-12-16 设计创作,主要内容包括:本发明涉及一种FFT芯片的优化方法,属于FFT芯片设计领域;步骤一、将2048点的FFT芯片分解成6级运算;每级运算都用到旋转因子步骤二、将旋转因子用三角函数表示为步骤三、将旋转因子三角函数中的角度元素用x表示,即步骤四、计算出x范围为0°-45°时,cosx和-sinx的全部值,通过计算旋转因子的全部值,将其存储在FFT芯片中的ROM中,即完成FFT芯片的优化;本发明通过改变FFT计算中的一个常量系数,即旋转因子的产生与存储,从而减少ROM中存储的数据,来提高器件的效率和减少占用的资源。(The invention relates to an optimization method of an FFT chip, belonging to the field of FFT chip design; step one, decomposing a 2048-point FFT chip into 6-level operation; the twiddle factors are used for each stage of operation Step two, converting the twiddle factor Expressed as a trigonometric function Step three, converting the twiddle factor Angle element in trigonometric function Is represented by x, i.e. Step four, calculating all values of cosx and-sinx when the range of x is 0-45 DEG, and passing Calculating twiddle factors All the values of (a) are stored in a ROM in the FFT chip, namely the optimization of the FFT chip is completed; the invention reduces the data stored in the ROM by changing a constant coefficient in the FFT calculation, namely the generation and the storage of the twiddle factor, thereby improving the efficiency of the device and reducing the occupied resources.)

一种FFT芯片的优化方法

技术领域

本发明属于FFT芯片设计领域,涉及一种FFT芯片的优化方法。

背景技术

傅里叶变换是一种现行的积分变换,即时域到频域的变化和相互转化。因其基本思想是由法国学者傅里叶系统的提出,所以以其名字来命名。而傅里叶变换又有4种变体,分别是连续傅里叶变换,傅里叶级数,离散时间傅里叶变换,离散傅里叶变换。随着数字电子技术和集成电路设计制造技术的飞速发展,数字信号处理已广泛应用于雷达、通信、图像处理和多媒体等领域中。离散傅立叶变换(DFT)作为数字信号处理中的基本运算,发挥着重要作用。

由于直接计算DFT的计算量太大,直接用DFT算法进行频谱分析和信号的实时处理是不切实际的。直到1965年,出现了DFT的一种快速算法以后,情况才发生了根本的变化,这种算法称为快速傅立叶变换,也就是FFT,随着FFT算法的提出使离散傅立叶变换的运算量减小了几个数量级,使得数字信号处理的实现和应用变得更加容易。

而目前FFT芯片中ROM存储了大量数据,使得器件被占用了大量资源,且运行效率低下。

发明内容

本发明解决的技术问题是:克服现有技术的不足,提出一种FFT芯片的优化方法,通过改变FFT计算中的一个常量系数,即旋转因子的产生与存储,从而减少ROM中存储的数据,来提高器件的效率和减少占用的资源。

本发明解决技术的方案是:

一种FFT芯片的优化方法,包括如下步骤:

步骤一、将2048点的FFT芯片分解成6级运算;其中,1-5级运算采用基-4的FFT运算;第6级运算采用基-2的FFT运算;FFT芯片的每级运算都用到旋转因子

步骤二、将旋转因子用三角函数表示为式中,N为运算点数,当为1-5级运算的旋转因子时,N为1024;当为第6级运算的旋转因子时,N为2048;n为自变量,n=2,4,6……254;

步骤三、将旋转因子三角函数中的角度元素用x表示,即x的取值范围为0°-360°;

步骤四、计算出x范围为0°-45°时,cos x和-sin x的全部值,通过步骤三中的即获得x范围为0°-45°时,旋转因子的全部值,将其存储在FFT芯片中的ROM中,即完成FFT芯片的存储优化。

在上述的一种FFT芯片的优化方法,当需要计算0°-45°范围以外角度对应的旋转因子时,仅需从ROM中调取x范围为0°-45°旋转因子的对应值,经三角函数转换,获得对应0°-45°范围以外角度对应的旋转因子值。

在上述的一种FFT芯片的优化方法,计算0°-45°范围以外角度y对应的旋转因子的具体方法为:

S1、计算cosy

当45°<y≤90°时,其中,x从45°到0°取值;

当90°<y≤135°时,cosy=-sinx,其中,x从0°到45°取值;

当135°<y≤180°时,cosy=cos(π-x),x从45°到0°取值;

当180°<y≤225°时,cosy=-cosx,x从0°到45°取值;

当225°<y≤270°时,x从45°到0°取值;

当270°<y≤315°时,cosy=sinx;x从0°到45°取值;

当315°<y≤360°时,cosy=cos(2π-x);x从45°到0°取值;

S2、计算-siny

当45°<y≤90°时,其中,x从45°到0°取值;

当90°<y≤135°时,-siny=-cosx,其中,x从0°到45°取值;

当135°<y≤180°时,-siny=-sin(π-x),x从45°到0°取值;

当180°<y≤225°时,-siny=sinx,x从0°到45°取值;

当225°<y≤270°时,x从45°到0°取值;

当270°<y≤315°时,-siny=cosx;x从0°到45°取值;

当315°<y≤360°时,-siny=-sin(2π-x);x从45°到0°取值;

S3、根据cosy和-siny,按照即可反算出对应0°-45°范围以外角度对应的旋转因子值。

本发明与现有技术相比的有益效果是:

(1)本发明对2048点混合基FFT芯片进行优化,有效地减少规模与功耗,提高效率;

(2)本发明仅对x范围为0°-45°时,cosx和-sinx的全部值,即获得x范围为0°-45°时,旋转因子的全部值进行存储,而对于范围在45°-360°旋转因子的数值仅需调用转换即可得到,减小了几个数量级的存储量,使得数字信号处理的实现和应用变得更加容易。

附图说明

图1为本发明FFT芯片的优化流程。

具体实施方式

下面结合实施例对本发明作进一步阐述。

本发明提供一种FFT芯片的优化方法,通过改变FFT计算中的一个常量系数,即旋转因子的产生与存储,从而减少ROM中存储的数据,来提高器件的效率和减少占用的资源。

FFT芯片的优化方法,如图1所示,具体包括如下步骤:

步骤一、将2048点的FFT芯片分解成6级运算;其中,1-5级运算采用基-4的FFT运算;第6级运算采用基-2的FFT运算;FFT芯片的每级运算都用到旋转因子

步骤二、将旋转因子用三角函数表示为式中,N为运算点数,当为1-5级运算的旋转因子时,N为1024;当为第6级运算的旋转因子时,N为2048;n为自变量,n=2,4,6……254;

步骤三、将旋转因子三角函数中的角度元素用x表示,即x的取值范围为0°-360°;

步骤四、计算出x范围为0°-45°时,cos x和-sin x的全部值,通过步骤三中的即获得x范围为0°-45°时,旋转因子的全部值,将其存储在FFT芯片中的ROM中,即完成FFT芯片的存储优化。

当需要计算0°-45°范围以外角度对应的旋转因子时,仅需从ROM中调取x范围为0°-45°旋转因子的对应值,经三角函数转换,获得对应0°-45°范围以外角度对应的旋转因子值。

计算0°-45°范围以外角度y对应的旋转因子的具体方法为:

S1、计算cosy

当45°<y≤90°时,其中,x从45°到0°取值;

当90°<y≤135°时,cosy=-sinx,其中,x从0°到45°取值;

当135°<y≤180°时,cosy=cos(π-x),x从45°到0°取值;

当180°<y≤225°时,cosy=-cosx,x从0°到45°取值;

当225°<y≤270°时,x从45°到0°取值;

当270°<y≤315°时,cosy=sinx;x从0°到45°取值;

当315°<y≤360°时,cosy=cos(2π-x);x从45°到0°取值;

S2、计算-siny

当45°<y≤90°时,其中,x从45°到0°取值;

当90°<y≤135°时,-siny=-cosx,其中,x从0°到45°取值;

当135°<y≤180°时,-siny=-sin(π-x),x从45°到0°取值;

当180°<y≤225°时,-siny=sinx,x从0°到45°取值;

当225°<y≤270°时,x从45°到0°取值;

当270°<y≤315°时,-siny=cosx;x从0°到45°取值;

当315°<y≤360°时,-siny=-sin(2π-x);x从45°到0°取值;

S3、根据cosy和-siny,按照即可反算出对应0°-45°范围以外角度对应的旋转因子值。

连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式。

这是将频域的函数F(ω)表示为时域的函数f(t)的积分形式。

离散傅立叶变换:

离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上的离散形式,将时域信号的采样变换为在频域的采样。

设x(n)是一个长度为M的有限长序列,则定义x(n)的N点离散傅里叶变换为

由此,序列x(n)的逆变换:

其中X(k)表示DFT变换后的数据,x(n)为采样的模拟信号,公式中的x(n)可以是复信号,实际当中x(n)都是实信号。k=0,1,2,3...N-1为N点旋转因子。

通常x(n),均是复数,这样每计算一个X(k)需要作N次复数乘法,N-1次复数加法。当要计算N个X(k)值时,那么就需要N2次复数乘法,需要N(N-1)次复数加法。因为计算量太大,在快速傅里叶变换出现之前,直接使用DFT算法进行频谱分析和信号实时处理是不划算的。当快速傅里叶变换算法(Fast Fourier Transform,FFT)出现时,情况发生了根本性的改变。

通过研究DFT运算中的系数我们发现:具有的对称性和周期性可以改善DFT的运算规律。的对称性可以使DFT运算中的一些项合并从而使DFT运算过程中的乘法次数减少大约一半。同时,利用的周期性可使长序列的DFT分解为更小点数的DFT。目前成熟的FFT算法有基-2,基-4,分裂基等。

基-2的FFT运算:

基-2的FFT运算根据输入数据的顺序可以分为按时间抽取法和按频域抽取法。本文讨论按时间抽取(DIT)基-2FFT算法。该算法是将复数序列x(n)按照n的奇偶分为两组:

其中

X1(k),X2(k)为两个N/2点序列的DFT,X1(k)为原序列x中的偶数点序列DFT,X2(k)为原序列x(n)中的奇数点序列DFT,周期均为N/2。由于又根据其周期性得到:

由此可见,一个N点的复数序列x(n)的DFT可以通过两个N/2点的复数序列的DFT变换得到。上面两个公式的图形结构像只蝴蝶,所以又称为蝶形运算结构。

按照上述方法继续对两个长度为N/2点的序列做进一步的分解,即对X1(k),X2(k)分别进行按照奇偶分解,从而得到了4个长度是N/4点的复数序列,将结果进行综合后得到两个N/2点的序列的DFT变换结果。以此类推,把4个长度是N/4点的复数序列各自按照奇偶继续分解,当序列最终分解为N/2个2点复数序列后,再对这N/2个2点序列分别按照奇偶分解,可以得到N/2对单点序列,其中每对单点序列可通过一个蝶形运算合成得到一个两点序列的DFT变换结果。然后把每两个对应的两点复数序列DFT结果合成一个四点的复数序列的DFT结果,以此类推,直到把两点序列的DFT变换结果逐级合成N点的复数序列DFT结果。显而易见,我们求取N点复数序列的DFT是通过之前序列按照奇偶分解过程的逆过程得到的。

基-4的FFT运算:

该算法是将复数序列x(n)在时域上按照4r,4r+1,4r+2,4r+3来抽取,对于一个长度是N=4N点的复数序列作DFT运算,可以每4点进行一次蝶形运算,分M级完成。

其中x(n)为列长为N=(n=0,1,2...,N-1)的输入序列。把他按照4r,4r+1,4r+2,4r+3分成以下四个子序列:

x(4r)=x1(r)

x(4r+1)=x2(r)

x(4r+2)=x3(r)

x(4r+3)=x4(r)

其中r=0,1,2,3...,N/4-1。然后利用系数的周期性和对称性,可推导出:

令:

又令:

A′=X(k)

B′=X(k+N/4)

C′=X(k+2N/4)

D′=X(k+3N/4)

则有:

X(k)=A+WpB+W2pC+W3pD

X(k+N/4)=A-jWpB-W2pC+jW3pD

X(k+2N/4)=A-WpB+W2pC-W3pD

X(k+3N/4)=A+jWpB-W2pC-jW3pD

一次基-4蝶形运算需要复数乘法3次和复数加法8次。

依照上述方法,将第一次变换分解得到的四个N/4点子序列继续分解,四个N/4点子序列可以进一步分解分别得到四个N/16点子序列。同理,通过四个N/16点子序列的DFT结果可以获得N/4点序列的DFT结果。以此类推,N=4s点序列经过s-1次蝶形分解后,可以得到N/4个4点子序列,且每个4点子序列即为一个蝶形运算单元,然后将每个4点子序列DFT变换结果进行逐级合并,即得到一个N点序列的DFT变换结果。

当序列长度为N的序列进行基-4FFT运算时,每级会有N/4个蝶形单元运算,还要乘以一组旋转因子,分别是因此只需要确定k值就可以得到一组旋转因子。在第一级所有蝶形运算只需要进行复加运算,第二级k有4个值,第三级k有16个值,以此类推,第m级旋转因子个数为4m-1,直到最后一级有N/4个旋转因子。

现有的2048点FFT的ASIC实现,采用的是基-2FFT和基-4FFT算法的混合算法,即一级基2,5级基4的混合基(211=21×45)来实现。用基-4算法实现1024点序列的数据变换,然后利用基-2算法完成两个1024点到2048点的FFT频谱变换。

以按频域抽取为例,基2算法可以用在序列长度N=2048,2048=2x1024的情况下,算法推导公式如下:

当k为偶数

当k为奇数

基4算法可以用在序列长度N=1024,1024=4x256的情况下,算法推导公式如下:

根据旋转因子的定义有以下表达式:

将以上三个表达式代入基4FFT算法,可以得到

将上式N点DFT序列分成4个N/4点子序列,也就是X(4k),X(4k+1),X(4k+2)和X(4k+3),从而将基4按频率抽取FFT公式化简为:

其中利用到了

每一个N/4点DFT输入是4个信号样本与相位因子的线性组合。该过程重复v次,其中v=log4N。例如1024点DFT,需要重复5次,也就是有5级运算。

其中在1024点FFT实现中,大部分的电路主要用三块ROM初始化FFT运算的旋转因子,三块ROM分别存储255个旋转因子。1024点基-4FFT运算共需要做5级蝶形运算,每级共有256个蝶形单元。因此需要ROM存储大量数据,占用资源降低了效率,本文优化了旋转因子的存储。

因为旋转因子本质是由周期函数cos和sin组成的常数。

只要知道三角函数的1/8的值即可通过翻转和相位移动计算出此函数的其他数值,因此ROM中只需要存储1/8的数值即可。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种新型快速高效的滤波器小样本建模及优化方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类