一种可变点数流水线fft处理器的制作方法

文档序号:6484087阅读:281来源:国知局
专利名称:一种可变点数流水线fft处理器的制作方法
技术领域
本发明属于信号处理技术领域,涉及一种信号处理器,特别是涉及 一种超长可变点数流水线FFT处理器,可应用于通信或电子战等各种输 入序列长度实时可变且芯片面积约束较高的系统。
背景技术
在电子侦察中,雷达信号覆盖了较宽的频率范围,为了能够识别不同 的雷达信号,电子战接收机必须在较宽的带宽上具有较高的频率分辨率。 离散傅立叶变换(DFT)理论指出,利用DFT进行谱分析时,频率分辨率 等于X/W,其中乂为采样频率,N为数据总点数。因此,为使电子战接收
机达到较高的频率分辨率,要求FFT处理器能够处理超长的输入序列,如 1M点数的FFT。
在取得雷达信号的基本参数后,进行FFT变换的序列长度应该和雷达 信号的脉沖宽度相匹S己。因为如果采集的数据长度比输入脉冲宽度大得多, 那么额外的数据就只包括噪声。所以为了能够处理具有不同参数的雷达信 号,要求FFT处理器能够处理不同长度的序列,即FFT的点数是可变的。
另外,对以电子侦察为背景的应用中,对于运算速度有严格要求,要 求FFT处理器能够实时地对输入数据进行处理。
综上所述,在电子战领域需要FFT处理器能够实时地处理超长可变点 数序列,同样在现代通信领域也有此要求。
超长可变点FFT的实现一直是人们致力解决的问题。数字信号处理 (DSP)芯片具有乘加单元,特別适合于完成FFT运算,并且使用软件编 程,具有较大的灵活性。但是也有其不足之处单个DSP芯片的计算能力 有限,不适合于实现超长点数的FFT;可以采用多个DSP芯片并行计算, 但这种方案增加了设计的复杂性,功耗大;数据倒序处理也花费处理器的 大量时间;由于DSP芯片具有有限的带宽,数据的输入输出可能成为其高 速运行的瓶颈。与DSP芯片不同,专用集成电路(ASIC)或现场可编程门阵列(FPGA)实现FFT算法可以针对具体的应用环境选择使用与特定的 问题相适应的结构,以利于资源优化。
然而,在ASIC或FPGA上实现输入序列长度超长或可变的实时FFT 还面临着芯片资源有限、计算精度等问题。
对于大点数的FFT处理器, 一般使用递归或级联等传统结构。在文献 "A modular pipelined implementation of large fast Fourier transforms"
(El-Khashab, A.M.; Swartzlander, E.E., Jr.; Signals, Systems and Computers, 2002. Conference Record of the Thirty-Sixth Asilomar Conference on,2002,vol.2:995-999)提出了一种改进的流水线型结构,通过存储器和加 权(乘以旋转因子)单元连接两个小点数的FFT单元,在计算大点数FFT 时可以减小系统对延时存储单元和旋转因子存储器的需求,但其可计算的 FFT的长度是固定的。在文献"A pipeline processor for mixed-size FFTs"
(Sayegh, S丄;Signal Processing, IEEE Trans on, 1992, Vol.40(8): 1892-1900.) 提出一种流水线型结构,可以同时计算不同点数的FFT,其缺点是点数较 大时,电路规模过于庞大。在文献"可变2"点流水线FFT处理器的设计与 实现,,(高振斌,陈禾.北京理工大学学报,2005年03期)提及了一种可以 连续计算2"点复数序列FFT的流水线结构处理器,但其因采用传统级耳关方 法实现流水线FFT处理,占用存储资源高,难以于单芯片中实现。在文献 "A pipelined memory-efficient architecture for ultra-long variable-size FFT processors" ( Chen He;Wu Qiang;2008 International Conference on Computer Science and Information Technology, 2008,p357-61 )提及了 一种可以连续计 算4"点复数序列FFT的流水线结构处理器,但其不能进行任意2"点复数 序列FFT的流水线处理。

发明内容
本发明的目的是为了克服已有技术的缺陷,解决如下问题可实时处 理最大1M点的FFT、在保证处理数据精度的前提下达到系统要求的处理 速度、可在单芯片ASIC或FPGA上实现,提出一种可变点数FFT运算处 理器。
本发明所基于的工作原理如下基-2快速傅里叶变换
设^ = 2〃 (/ >1),将输入序列、分为下标为偶数和奇数序列X2 , x2"+i,于是N点DFT就成为<formula>formula see original document page 6</formula>(公式1 )
这种方法称为时间抽取法,按照上述方法可以继续将序列分割成小序 列,直到每个序列只有两个成员。
在应用中,基-2快速傅里叶变换递推算法可以更为直观地体现出数据 寻址和旋转因子寻址的规律,设被处理的数据长度为2、递推算法为 <w」二 x~J +心<formula>formula see original document page 6</formula>
(公式2 )
其中
s为蝶型运算所处的级数,^0,1,2,3,……
6, =o,i,……,2' -l; 62 =o,i,……,2"-] - i;
对于旋转因子『,,其含义为e—^',再做如下变换:
<formula>formula see original document page 6</formula>
(公式3)
一般的数据地址变换器以及旋转因子地址变换全部是由这个递推公式 演变出来的。
二维快速傅里叶变换
对于超长可变点实时FFT处理,如果直接采用级联方式,用"乒乓" 存储器构成流水线结构,则每级均需要大量存储器,系统规模过于庞大。 可以把一维傅里叶变换转换为二维变换进行,既提高了系统并行程度,又 减少了系统对存储器容量的需求。假设7V是一复合数,7V=M>^,则可将w和yt分别用下面的公式表示: 则有

根据此式,可以得到将一维大点数FFT转换为二维小点数子FFT处理 的方法对于iV=MxL点FFT,将数据排为i行M列,先对序列进行M次 列变换点FFT),结果乘以旋转因子^^。后,再进行Z次行变换 点FFT)即可。
基于上述工作原理,本发明所采用的技术方案是
一种可变点数流水线FFT处理器,由下述模块组成第一 1024点可 变FFT处理模块、旋转因子处理模块、第二 1024点可变FFT处理模块、 选择与控制模块。
(1 )第一、第二 1024点可变FFT处理模块
用于实现大点数FFT的二维小点数处理,可实时地进行1024可变点 的FFT处理。
两个模块的结构组成相同,每一个1024点可变FFT处理模块均包3舌 第一 32点可变FFT处理子模块、第二 32点可变FFT处理子模块、旋转因 子处理子模块、中间数据存储子模块、选择与控制子模块。
其中,32点可变FFT处理子才莫块中每级基-2运算单元加入输出选4李电 路,通过控制可实现可变点FFT计算,且32点FFT处理采用块浮点定标 方式,获得较高处理精度。
第一、第二32点可变FFT处理子模块均用于进行2点、4点、8点、 16点或32点可变实时FFT处理。
旋转因子处理子模块用于完成二维FFT处理的中间旋转因子的产生, 并将中间旋转因子同第一 32点可变FFT处理子模块的处理结果相乘。
中间数椐存储子模块用于存储第一 32点可变FFT处理子模块的处理
其中<formula>formula see original document page 7</formula>
(公式4 )结果,并将其作为第二 32点可变FFT处理子模块的输入。可通过两个1024 点数据存储器进行"乒乓"存储来实现。
选择与控制子模块用于产生第一和第二 32点可变FFT处理子模块、 旋转因子处理子模块、中间数据存储子模块的选择与控制信号。
连接关系为第一32点可变FFT处理子模块、旋转因子处理子模块、 中间数据存储子模块、第二 32点可变FFT处理子模块依次相连,选择与 控制子模块与上述各个模块分别相连。
(2) 旋转因子处理模块
完成二维FFT处理的中间旋转因子的产生,并将中间旋转因子同第一 1024点可变FFT处理子模块的处理结果相乘,以便进行二维运算。
(3) 选择与控制模块
用于产生各种控制信号,对各个模块进行控制与协调,保证整个芯片 能够正常工作。
上述组成模块间的连接关系如下
第一 1024点可变FFT处理模块中的第二 32点可变FFT处理子才莫块和 旋转因子处理模块相连,旋转因子处理模块另一端与FFT处理器外部的中 间数椐存储模块相连,处理器外部的中间数据存储模块的另 一端与第二 1024点可变FFT处理模块中的第一 32点可变FFT处理子模块相连,选择 与控制模块分别与第一 1024点可变FFT处理模块中的选择与控制子模块、 旋转因子处理模块、FFT处理器外部的中间数据存储模块、第二 1024点可 变FFT处理模块中的选择与控制子模块相连。
上述模块之间的信号转换关系为
W点输入序列进入处理器的第一 1024点可变FFT处理^^莫块进^"小点 数FFT运算。
其中,在第一 1024点可变FFT处理模块内部,先在第一 32点可变FFT 处理孚模块内进行2"("S5)点FFT运算,处理结果送入旋转因子处理子模 块中与旋转因子相乘,以便进行二维运算处理。相乘后的结果送到中间数 据存储子模块进行存储。当所有的点数据全部处理完毕之后,送入第二32 点可变FFT处理子模块中再次进行2"0 S 5)点FFT运算。
若N小于等于1024时,处理过程到此结束,第一 1024点可变FFT处理模块的处理结果直接输出。若N大于1024时,则将第一 1024点可变FFT 处理模块的处理结果送入旋转因子处理模块中,与此处的旋转因子相乘。 相乘结果送到处理器外部的中间数据存储模块中进行存储。当W点数据的 相乘结果全部到达后,将全部数据送入第二 1024点可变FFT处理模块, 数据在第二 1024点可变FFT处理模块中进行2,'0 S 5)点FFT运算。运算 方法与第一 32点可变FFT处理子模块内的方法相同。运算结束之后,将 第二 1024点可变FFT处理模块结果输出。 有益效果
本发明提出的一种可变点数流水线FFT处理器,对比已有技术
(1) 可实时流水处理输入序列数据,并实时更新输出数据;
(2) 处理器存储资源大大降低,芯片面积减少,可在单片FPGA或 ASIC中实现。由于存储资源的减少,对存储器的操作减少,因此本发明的 运算时间加快;
(3) 可实时实现W点(W=2P , Kp^20 )可变FFT处理;
(4) 采用块浮点定标方式,使得FFT处理器运算结果的精度较高。


图1 可变点FFT处理器结构框图2 1024点可变FFT处理器结构框图3 32点可变基-2流水线结构;
图4 CORDIC算法实现旋转因子处理。
具体实施例方式
下面结合附图对本发明的优选实施方式做详细说明。 一种可变点数流水线FFT处理器,包括以下部分第一和第二 1024 点可变FFT处理模块、旋转因子处理模块、选择与控制模块,如图1所 示。处理器可在单芯片ASIC或FPGA内完成处理器外的中间数据存^f诸 模块为两个1M点数据存储器,数据存储器的工作模式为"乒乓"存储, 有利于数据的实时处理。(1)第一、第二 1024点可变FFT处理模块
为了降低存储资源,第一、第二 1024点可变fft处理;漢块均采用二维 处理方式。每个1024点可变fft处理模块均由5个子模块组成第一 32 点可变fft处理子模块、第二32点可变fft处理子模块、旋转因子处理 子模块、中间数据存储子模块、选择与控制子模块,如图2所示。
其中,第一32点可变fft处理子模块、旋转因子处理子模块、中间数 据存储子模块、第二32点可变fft处理子模块依次相连。第一、第二32 点可变fft处理子模块分别采用级联流水线结构,如图3所示。其它子模 块均采用"乒乓,,存储结构,以利于数据的实时4喿作。
第一、第二32点可变fft处理子模块均用于进行2点、4点、8点、 16点或32点的实时fft处理。当进行点数可变fft运算时,选择与控制 子模块首先根据该模块所分配的点数来激活相应的处理单元。当进行2点、 4点、8点、16点或32点fft运算时,只需激活第一 32点可变fft处理 子模块。如果点数超过32,则再激活其他子模块。
为采用基-2fft算法,32点fft的处理过程分为五级运算单元,每级 基-2运算单元均增加输出选择控制电路,根据电路输入点数的不同,由选 择与控制子模块来控制数据由五级中的哪一级输出,从而达到点数可变的 目的。在数据输出之前,对输出数据进行块浮点定标处理,防止数据溢出, 具体方法是在每级运算中,将输入数据扩充3位符号位,然后进行蝶形 运算。-之后,对运算结果有效最高位的前4位进行检查,判断其是否存在 溢出。根据溢出情况,确定下一级蝶形运算输入所需的右移位数,以保证 在下一级蝶形运算中不发生溢出。所需右移的位数被累计下来,以确定最 后结果的比例因子或幂指数。该比例因子或幂指数将用于数据的恢复。
例如
对于1024点的fft运算,1024点数输入数据首先按照 AT = a/xjl = 32x32进行分解。然后使用第一 32点可变fft处理子才莫块进 行32次的32点fft运算。运算出的1024个结果在旋转因子处理子才莫块 中分别与1024个中间旋转因子相乘,并将这1024个结果存储在中间^:据 存储子模块中。使用第二 32点可变fft处埋子模块对存储数据再进行32 次的32点fft运算,最后将运算结果输出。(2)旋转因子处理模块
结构如图4所示,包括二进制计数器、循环移位寄存器和CORDIC 处理器。
二进制计数器用于输入数据行序号和列序号的产生与计数。
循环移位寄存器用于确定旋转因子的旋转角度。二进制计数器和循 环移位寄存器联合用于旋转因子的生成。
CORDIC处理器用于完成基于CORDIC算法的数据加、減法和移位, 由此完成旋转因子与第一 1024点可变FFT处理模块的处理结果相乘。
连接关系为二进制计数器、循环移位寄存器和CORDIC处理器依 次连接。
旋转因子处理模块传统的实现方法是包括一 个存放旋转因子的存 储器和一个复数乘法器,在进行不同点数FFT运算时,旋转因子存储器 需要存储最大点数时的值,其它值可以根据不同的情况进行抽取。传统 的中间旋转因子处理实现方法占用较多芯片资源,不适合ASIC实现。 在本发明中,采用CORDIC算法进行中间旋转因子的处理,CORDIC 运用于计算三角函数、双曲函数及其它一些基本函数的运算,采用迭代 的思想,不需乘法运算和额外的存储空间,同时该算法可以达到较高的 精度。
CORDIC算法的基本原理是初始向量旋转角度6后得到所求向量。 运算统一迭代公式为
广 _,■
A+1 =(x, -a', 7,2 )
^ 乂+1 =(7, + Vx,'2一') 、z,+1=z,-v《 (公式5 )
式(5)中,、为平面直角坐标系中某点的横坐标值;乂为平面直角坐 标系中某点的纵坐标值;^为旋转模式;、为向量的旋转方向;《为旋 转角度。i=0,l, ...,n-l, n是总旋转的级数,^决定旋转的方向
^4一1 z/ 2,<°这样,运算就只有加法、减法和移位。"次迭代后,得到如下结杲
\ = x0. cos z0 — yu. sin 20 <凡=jVC0S2G+XQ'sinA (/>式7)
公式7中,^代表"次迭代后横坐标值;X()代表迭代前横坐标初始值; >^代表w次迭代后纵坐标值;J^o代表迭代前纵坐标初始值;4代表 初始旋转角度。
CORDIC算法的思想就是把旋转一个任意角度6 ,分成若干步骤, 每步旋转一个《.,同时把6>减掉一个《,然后判断^的符号,根据6"的正 负来决定下一步旋转角《的正负。依次循环,直到e趋于零,即该向量 已》走转了 ^角。
在本处理器中,需要进行FFT处理模块的处理结果与旋转因子^相 乘的操作,其中W二 = exP(力'27^ Z = c。s(2W, — sin(2;n. / iV)。这个乘法才乘 作可以看成是把一个向量(复数数据)旋转了 9 = -^"〃W度。因此 CORDIC算法的思想和FFT中序列与旋转因子^相乘的要求相符合,根 据公式(5)和公式(6),即可完成中间旋转因子的产生与相乘。
通常的CORDIC算法需要存储器来存储公式(5)中的A,在循环 一位相加的操作中需要一些相应的控制逻辑,对于FFT的乘以旋转因子 运算,可以避免使用存储器。因为如果旋转因子的指数/已知,CORDIC 处理器的旋转角度就确定了 。在两级运算之间的旋转因子的指数等于行 的序号乘以列的序号。旋转因子生成器可以很容易的使用二进制计数器 和循环移位寄存器来实现,如图5所示。此种方法不仅减小了存储器容 量,而且像地址译码器等相应的一些硬件比常规方法也有所减少。 (3)选择与控制模块
本模块根据系统要求,产生各种控制、选择、地址等信号,控制处理
器中各个模块协调工作。
第一 1024点可变FFT处理4莫块中一的第二 32点可变FFT处理子冲莫块和 旋转因子处理模块中CORDIC处理器的相连,CORDIC处理器的另一端 与FFT处理器外部的中间数据存储模块相连,处理器外部的中间数据存储 模块的另 一端与第二 1024点可变FFT处理模块中的第一 32点可变FFT处
12理子模块相连,选择与控制模块分别与第一 1024点可变FFT处理模块中 的选择与控制子模块、旋转因子处理模块中的循环移位寄存器、FFT处理 器外部的中间数据存储模块、第二 1024点可变FFT处理模块中的选择与 控制子模块相连。
上述模块间的信号转换关系如下
iV点输入序列进入处理器的第一 1024点可变FFT处理模块进行小点 数FFT运算。
其中,在第一 1024点可变FFT处理模块内部,先在第一 32点可变FFT 处理子模块内进行2"(" S 5)点FFT运算,处理结果送入旋转因子处理子模 块中与旋转因子相乘,以便进行二维运算处理。相乘后的结果送到中间数 据存储子模块进行存储。当所有的点数据全部处理完毕之后,送入第二32 点可变FFT处理子模块中再次进行2"(" S 5)点FFT运算。
若N小于等于1024时,处理过程到此结束,第一 1024点可变FFT处 理模块的处理结果直接输出。若N大于1024时,则将第一 1024点可变FFT 处理模块的处理结果送入旋转因子处理模块的CORDIC处理器中,与循 环移位寄存器传送过来的旋转因子相乘。相乘结果送到处理器外部的中间 数据存储模块中进行存储。当W点数据的相乘结果全部到达后,将全部数 据送入第二 1024点可变FFT处理模块,数据在第二 1024点可变FFT处理 模块中进行2"(" S 5)点FFT运算。运算方法与第一 32点可变FFT处理子 模块内的方法相同。运算结束之后,将第二 1024点可变FFT处理模块结 果输出。
实施例
当实现超长点数的FFT时,根据选择与控制模块将激活相应的模块来 实现,例如实现512K点的FFT时,根据iV = M x丄=1024 x 512进行分解, 在第一 1024点可变FFT处理模块中完成512次1024点FFT处理,经过旋 转因子处理模块完成旋转因子产生与复乘,之后数据送入处理器外部中间 数据存储模块进行緩存,之后在第二 1024点可变FFT处理模块中完成1024 次512点FFT处理,形成输出序列。以在第二 1024点可变FFT处理模块 中完成512点FFT处理为例,首先根据iV二A/x丄二32xl6进行分解,数 据首先在第一 32点可变FFT处理子;f莫块中完成16次32点FFT处理,结果经过旋转因子处理子模块完成旋转因子产生与复乘,之后数据送入中间
数据存储子模块进行緩存,之后在第二 32点可变FFT处理子模块中完成 32次16点FFT处理,结果输出。
各功能模块采用硬件描述语言编写、仿真、调试后下载到FPGA器件 内,即可实现FFT芯片。代码也可转至ASIC i殳计流程,用单片ASIC实 现本FFT处理。
权利要求
1、一种可变点数流水线FFT处理器,其特征在于,包括第一1024点可变FFT处理模块、旋转因子处理模块、第二1024点可变FFT处理模块、选择与控制模块;(1)第一、第二1024点可变FFT处理模块用于实现大点数FFT的二维小点数处理,可实时地进行1024可变点的FFT处理;两个模块的结构组成相同,每一个1024点可变FFT处理模块均包括第一32点可变FFT处理子模块、第二32点可变FFT处理子模块、旋转因子处理子模块、中间数据存储子模块、选择与控制子模块;其中,32点可变FFT处理子模块中每级基-2运算单元加入输出选择电路,通过控制可实现可变点FFT计算,且32点FFT处理采用块浮点定标方式,获得较高处理精度;旋转因子处理子模块用于完成二维FFT处理的中间旋转因子的产生,并将中间旋转因子同第一32点可变FFT处理子模块的处理结果相乘;中间数据存储子模块用于存储第一32点可变FFT处理子模块的处理结果,并将其作为第二32点可变FFT处理子模块的输入;选择与控制子模块用于产生第一和第二32点可变FFT处理子模块、旋转因子处理子模块、中间数据存储子模块的选择与控制信号;连接关系为第一32点可变FFT处理子模块、旋转因子处理子模块、中间数据存储子模块、第二32点可变FFT处理子模块依次相连,选择与控制子模块与上述各个模块分别相连;(2)旋转因子处理模块完成二维FFT处理的中间旋转因子的产生,并将中间旋转因子同第一1024点可变FFT处理子模块的处理结果相乘,以便进行二维运算;(3)选择与控制模块用于产生各种控制信号,对各个模块进行控制与协调,保证整个芯片能够正常工作;上述组成模块间的连接关系如下第一1024点可变FFT处理模块中的第二32点可变FFT处理子模块和旋转因子处理模块相连,旋转因子处理模块另一端与FFT处理器外部的中间数据存储模块相连,处理器外部的中间数据存储模块的另一端与第二1024点可变FFT处理模块中的第一32点可变FFT处理子模块相连,选择与控制模块分别与第一1024点可变FFT处理模块中的选择与控制子模块、旋转因子处理模块、FFT处理器外部的中间数据存储模块、第二1024点可变FFT处理模块中的选择与控制子模块相连;上述模块之间的信号转换关系为N点输入序列进入处理器的第一1024点可变FFT处理模块进行小点数FFT运算;其中,在第一1024点可变FFT处理模块内部,先在第一32点可变FFT处理子模块内进行2n点FFT运算,n≤5,处理结果送入旋转因子处理子模块中与旋转因子相乘,以便进行二维运算处理;相乘后的结果送到中间数据存储子模块进行存储;当所有的点数据全部处理完毕之后,送入第二32点可变FFT处理子模块中再次进行2n点FFT运算;若N小于等于1024时,处理过程到此结束,第一1024点可变FFT处理模块的处理结果直接输出;若N大于1024时,则将第一1024点可变FFT处理模块的处理结果送入旋转因子处理模块中,与此处的旋转因子相乘;相乘结果送到处理器外部的中间数据存储模块中进行存储;当N点数据的相乘结果全部到达后,将全部数据送入第二1024点可变FFT处理模块,数据在第二1024点可变FFT处理模块中进行2n点FFT运算,运算方法与第一32点可变FFT处理子模块内的方法相同;运算结束之后,将第二1024点可变FFT处理模块结果输出。
2 所述的一种可变点数流水线FFT处理器,其特征在于中间数据存储子模块通过两个1024点数据存储器进行"乒乓"存储来 实现。
3、根据权利要求1所述的一种可变点数流水线FFT处理器,其特征 在于,旋转因子处理模块采用CORDIC算法,完成二维FFT处理的中间旋 转因子产生与相乘。
全文摘要
本发明一种可变点数流水线FFT处理器,包括第一1024点可变FFT处理模块、旋转因子处理模块、第二1024点可变FFT处理模块、选择与控制模块。上述四个模块与处理器外部的中间数据存储模块共同完成大点数FFT的二维处理。两个1024点可变FFT处理模块均包括第一、第二32点可变FFT处理子模块、旋转因子处理子块、中间数据存储子模块、选择与控制子模块。通过32点可变FFT处理子模块实现可变点FFT运算;旋转因子处理模块产生中间旋转因子,并与FFT运算结果相乘;选择与控制模块实现对整个芯片的控制。本发明适于在单片FPGA或ASIC中实现,同时可获得高速、低功耗、高精度等特性。
文档编号G06F17/14GK101504638SQ20091008047
公开日2009年8月12日 申请日期2009年3月19日 优先权日2009年3月19日
发明者伟 刘, 峰 刘, 曾大治, 禾 陈, 腾 龙 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1