一种点数可变实时fft处理芯片的制作方法

文档序号:6484086阅读:395来源:国知局
专利名称:一种点数可变实时fft处理芯片的制作方法
技术领域
本发明属于信号处理领域,涉及一种信号处理器芯片,特别是涉及 一种实时2"点("^10 )可变的快速傅立叶变换处理器芯片。
背景A术
离散傅立叶变换(D F T)作为将信号从时域转换到频域的基本工具, 在各种数字信号处理中起着核心作用。其快速算法FFT在无线通信、语 音识別、图像处理、数字滤波和频谱分析领域有着广泛的应用。在实际 应用中,常常对FFT处理器提出了实时、高精度地计算不同点数序列的 要求。由于Cooley-Tukey算法具有原址运算的特点,易于硬件实现,因 此基于此算法实现的流水线结构FFT处理器在实时专用处理器中得到 了广泛的应用。
F.FT的实现一直是人们致力解决的问题。过去,执行FFT的系统可 采用通用处理器或单独的数字信号处理器(DSP)来进行FFT运算。近 年来,由于现场可编程门阵列(FPGA)的快速发展,越来越多的FFT 处理采用FPGA实现。但是用FPGA实现FFT处理还有一些不足之处 一是由于FPGA固有的可编程结构,使得FPGA实现FFT的速度难以进 一步提高;二是FPGA实现FFT所消耗的功耗较大;三是FPGA的保密 性不如专用集成电3各(ASIC);四是用FPGA实现FFT不适合量产; 五是FPGA芯片为通用芯片,管脚多,外围电路多,信号处理系统复杂 度高。现在人们一方面寻求结构筒单、运算速度快、存储量小的FFT计 算方法,另一方面采用先进的VLSI技术实现FFT的硬件结构,将算法 硬件化,研制成ASIC芯片,大大提高了 FFT的处理性能,筒化信号处 理系统的设计工作,适合定型的武器系统。
然而,在ASIC上实现输入序列长度可变的实时FFT面临以下几个 问题
(1 ) ASIC芯片内的管芯面积有限,所以,在ASIC上实现的功能需要在面积、速度和功^^方面都进行优化,以提高ASIC总体设计的功能。 在保证进行FFT变换速度的同时,专用于FFT的资源量应该最小化,因此 需要优化在ASIC集成电路中实现FFT的结构;
(2) 在ASIC芯片上实现FFT进行应用时,具有可实时重新配置FFT 点数的功能,以便适应不同应用需求;
(3) 由于在FFT运算中存在有限字长效应,运算的中间数据有溢出瓶 颈问题,影响到结果的准确性,因此必须采用定标算法防止溢出,同时提 高信号处理精度。
目前有不少可变点FFT实现方法,文献"实时可重配置FFT处理 器的ASIC设计"(北京理工大学学报,2006年(M期)提及了一种能够 进行4点、16点、64点、256点或1024点FFT运算的可变点流水线FFT 处理器,但其不能进行2"可变点FFT处理,且中间旋转因子没有压缩, 占用芯片面积。文献"可变2"点流水线FFT处理器的设计与实现"(北 京理工大学学报,2005年03期)提及了一种可以连续计算2"点复数序 列FFT的流水线结构处理器,但其因采用传统级联方法实现流水线FFT 处理,占用芯片面积大,不适合ASIC实现。

发明内容
本发明的目的是为了克服已有技术的缺陷,解决如何用最小芯片面 积实时处理2"点("^10 )可变FFT运算的问题,提出一种点数可变实 时FFT处理芯片。
本发明所基于的技术原理如下
Cooley-Tukey (库利-图基)快速FFT算法具有原址运算的特点,在 硬件设计时模块便于重复利用,易于实现并行处理,因此得到了广泛的 应用。经常采用的有基-2或基-4库利-图基算法,而在基-2和基-4算法 硬件实现的比较中,基-4运算可使存储器和运算部件间的必要通讯减少 一半,并行性比基-2高,并且可以显著地改善数值精度,故可优先采用 基—4库利-图基算法。但是,尽管基-4的运算量较基-2的运算量有所减 小,它有自身的不足基-4的FFT运算只能处理4"点数,而基-2的算法可以处理任意2"点数。
如果采用基-4和基-2混合时间抽取快速算法,这样不仅可以实现较 高的运算效率、处理点数的可配置,而且能够节省资源,便于ASC实 现。
N个样本点的FFT表达式为
釋)(A:二0,1,…,W-1)
假设N=^ x尸2
w = Wj r2 + WQ
将k表示为 At = A, r , + A"
(公式i)
可将n表示为
("
二0,l,…,s —1; 。 二0,1,…,2 -l) (、二0,1,-.,,^ -l; &0 二0,1,…;^ 一l)
X(/ ) = X(/^2 + "。 ) 二 X(/7, , M。) 令婦)二婦,1+^) = 1駄)
则公式1可以表示为
踏OH
"。=0
5一1
『。
' ' (公式2)
公式2表明,计算组合数N=~ x r2点FFT等价于先求出,2组r,点的 FFT,-其结果乘以旋转因子后,再计算r,组^点的FFI,。因此公式1中 一个较大N点FFT便转化为用较小的r,点FFT和^点FFT来实现。r,点 FFT和r2点FFT的数据及旋转因子存储量要远远小于一个N点FFT。同 时公式2也表示出了单独计算^点FFT和r2点FFT的方法。在进行点 FFT运算时,只需要将[]外的运算屏蔽即可。同理,在进行^点FFT运 算时,只需要将U内的运算屏蔽即可。
N最大为1024点,进行二维处理时取^=64点,r2=16点。而为了 达到点数可变的目的,令二维FFT处理中的第一维为16点或64点可变, 而第二维为2点、4点、8点或16点可变,二维组合实现2"可变点FFT。
根据以上原理,本发明所采用的技术方案是
一种点数可变实时FFT处理芯片,由下述模块组成输入緩冲模块、64点基-4 FFT处理模块、旋转因子处理模块、中间序列存储模块、16 点基-2FFT处理模块、单元选择控制模块、输出緩冲模块。
输入緩冲模块用于完成最大1024点的输入数据緩存及数据的寻址。
64点基-4 FFT处理模块用于16点或64点可变FFT运算。该模 块采用基-4 FFT级联流水线结构,通过对第二级基-4运算单元增加输出 选择电路实现可变点l喿作,且64点FFT处理采用块浮点定标方式,能 够获得较高处理精度。
旋转因子处理模块用于完成二维FFT处理的中间旋转因子产生与 相乘,中间旋转因子产生与相乘均基于CORDIC算法。该模块包括二 进制计数器、循环移位寄存器和CORDIC处理器。
宁间序列存储模块用于存储64点基-4 FFT处理模块处理结杲, 并将其作为16点基-2FFT处理模块的输入。该模块由两个1024点数据 存储器构成"乒乓"存储结构。
16点基-2 FFT处理才莫块用于2点、4点、8点或16点可变FFT 运算。该模块采用基-2FFT级联流水线结构,通过对每一级基-2运算单 元增加输出选择电路实现点数可变操作,且16点FFT处理采用块浮点 定标方式,能够获得较高处理精度。
输出缓沖模块用于完成最大1024点的输出结果数据存储及输出。
选择与控制模块用于产生模块选择与各种控制信号,对整个芯片
进行寧制。
上述组成模块间的连接关系如下
输入緩冲模块、64点基-4FFT处理模块、旋转因子处理模块、中间 序列存储模块、16点基-2FFT处理模块、输出緩沖模块依次相连,单元 选择控制模块与各个模块相连。
上迷模块间的信号转换关系为
首先,输入数据(最大不超过1024点)在输入緩沖模块进行緩存 及数据的寻址。然后,将输入数据传入64点基-4 FFT处理模块进4亍16 点或64点可变FFT处理,得到第一维FFT处理结果。将第一维理处结 果送^旋转因子处理模块中,完成序列与旋转因子的相乘,得到乘积数据。之后,将乘积数据送入中间序列存储模块进行緩存,待緩存完所有
乘积数据后,根据16点基-2 FFT处理模块的要求将乘积数据送给16点 基-2 FFT处理冲莫块进行16点可变的FFT处理,得到第二维FFT处理结 果。最后,将第二维FFT处理结果送入输出緩冲模块中进行整理,形成 最终输出结果。 有益效果
本发明提出的一种点数可变实时FFT处理芯片,对比已有技术
(1) 可实时流水处理输入序列数据,并实时更新输出数据;
(2) 芯片面积小,成本低;
(3) 由于存储资源的减少,对存储器的操作减少,因此本发明的 运算时间加快;
(4) 可实现2"点可变FFT处理;
(5) 本发明采用了块浮点定标方式,FFT运算结果的精度较高。


图1 可变点FFT处理器结构框图2 16点或64点可变基-4FFT流水线结构;
图3 用于FFT旋转因子产生的CORDIC算法结构;
图4 16点可变基-2FFT流水线结构;
图5 FFT芯片物理版图及封装管脚配置;
图6 FFT芯片实物。
具体实施例方式
下面结合附图对本发明的优选实施方式做详细说明。 一种点数可变实时FFT处理芯片,包括以下部分输入緩冲^t块、 64点基-4 FFT处理模块、旋转因子处理模块、中间数据存储模块、16 点基-2FFT处理模块、单元选择控制模块、输出緩冲模块,如图1所示。 输入緩冲模块
本模块用于完成最大1024点的输入数据緩存以及数据的寻址。数据输入单元根据数据准备情况,生成取数地址。把输入数据从芯片外部
的存储器中读入,并根据需要进行FFT计算的数据序列的长度,生成相 应存储器地址,并完成数据倒序处理。之后,4巴输入数据送入64点基-4 FFT处理模块中。
64点基-4 FFT处理才莫块
本才莫块的结构图如图2所示,用于16点或64点可变FFT处理。该 模块采用基-4FFT算法实现,采用级联流水线结构。对于基-4FFT, 64 点FFT处理需要三级,每级输入输出数据存储采用"乒乓"存储以达到 数据流水处理。其中,对第二级基-4基本单元增加输出选择电路,如杲 是完成16点FFT时,通过单元选择与控制模块控制,数据由第二级基 4基本单元输出,完成16点FFT运算。64点基-4FFT处理模块的处理 结果送入旋转因子处理模块的CORDIC处理器中。
本模块在每级运算中采用块浮点定标方式,通过仿真对比,采用块 浮点算法的系统比采用浮点的系统性能稍差,但远远优于采用定点运算 的系统。块浮点运算要求在每级蝶形运算中扩充3位符号位,在蝶形运 算之^进行有效最高位前4位的检查,确定下一级蝶形运算输入所需的 右移位数,以保证在下一级蝶形运算中不发生溢出。所需右移的位数被 累计下来,以确定最后结果的比例因子或幂指数。
旋转因子处理模块
根据公式2, 64点基-4FFT处理模块的处理结果需要乘以旋转因子 W",再进行緩存。
旋转因子处理模块的结构如图3所示,包括二进制计数器、循环 移位寄存器和CORDIC处理器。
二进制计数器用于输入数据行序号和列序号的产生与计数,循环移 位寄i器用于确定旋转因子的旋转角度。二进制计数器和循环移位寄存 器联合用于旋转因子的生成,并将旋转因子送入CORDIC处理器中。
C0RD1C处理器用于完成基于CORDIC算法的数据加、减法和移位, 由此完成旋转因子与64点基-4FFT处理模块的处理结果相乘。CORDIC 处理器将乘积数据送入中间序列存储模块。
连接关系为二进制计数器、循环移位寄存器和CORDIC处理器依次连接。
旋转因子处理模块传统的实现方法是包括一个存放旋转因子的存
储器和一个复数乘法器,在进行不同点数FFT运算时,旋转因子存储器
需要存储最大点数时的值,其它值可以根据不同的情况进行抽取。传统
的中间旋转因子处理实现方法占用较多芯片资源,不适合ASIC实现。 在本发明中,结合了 CORDIC算法进行中间旋转因子的处理。CORDIC 运用于计算三角函数、双曲函数及其它一些基本函数的运算,采用迭代 的思想,不需乘法运算和额外的存储空间,同时该算法可以达到较高的精度。
CORDIC算法的基本原理是初始向量旋转角度6后得到所求向量。 运算统一迭代公式为
广
= -《''》','2 )
z,+i 二 w《
(公式3 )
式(3)中,卜O,l, ..."-l, n是总旋转的级数,"夬定旋转的方向
(公式4)
这样,运算就只有加法、减法和移位了。实现CORDIC算法的石更件 系统可以采用流水线结构,根据需要可以有多级流水单元。 n次迭代后,得到如下结果
xn = x0. cos 2q — y0 ■ sm z0 _y"=少0 cos z0 + x0. sin z0 、—0
(公式5 )
CORDIC算法的思想就是把旋转一个任意角度^ ,分成若干步骤, 每步旋转一个《,同时把^减掉一个《 ,然后判断^的符号,根据^的 正负来决定下一步旋转角《的正负。依次循环,直到夕趋于零,即该向 量已旋转了P角。
10在本发明采用库利-图基算法的FFT处理器中,需要进行序列与旋 转因子W相乘的操作,其中『)=exp(力2;n' / vV) = cos(2;r/ / AQ — sin(2;n' / 7V)。
这个乘法操作可以看成是把一个向量(复数数据)旋转了.6> = -2;n7W 度。因此CORDIC算法的思想和FFT中序列与旋转因子^相乘的要求 相符合,根据公式(3)和公式(4),即可完成中间旋转因子的产生与
通常的CORDIC算法需要存储器来存储公式(3 )中的& ,在循环 一位相加的操作中需要一些相应的控制逻辑,对于FFT的乘以旋转因子 运算,可以避免使用存储器。因为如果旋转因子的指数,已知,CORDIC 处理器的旋转角度就确定了 。在两级运算之间的旋转因子的指数等于行 的序号乘以列的序号。
中间序列存储模块
本模块用于緩存旋转因子与64点基-4FFT处理模块的处理结果相 乘后的乘积数据,待乘积数据全部到达中间序列存储模块后,将其送入 16点基-2FFT处理模块。中间序列存储模块分为两个1024点数据存储 器,组成"乒乓"存储结构。
16点基-2 FFT处理模块
本模块用于完成2"可变点FFT运算,其中"^4。其结构图如图4 所示,16点基-2FFT处理模块用基-2 FFT算法实现,采用级联流水线结 构,对于基-2FFT, 16点FFT处理需要四级,每级输入输出数据存储采 用"乒乓,,存储以达到数据流水处理。对每一级基-2基本运算单元增加 输出选择电路,通过单元选择与控制模块控制,数据可分别由第一级、 第二级、第三级、第四级输出,分别完成2点、4点、8点、16点FFT 运算。处理完成后,将处理结果送入输出緩冲模块中。本模块在每级运 算中釆用块浮点定标方式。
输出緩沖模块
本模块用于完成最大1024点的结果数据緩存以及输出。第二维16 点基二2运算模块的计算结果存入输出緩冲模块中,将第二维FFT处理结 果送入输出緩冲模块中进行倒序处理,形成最终输出结果。
单元选择控制模块用于根据处理点数的不同,对各单元的存储与运算进行控制,产生 相应孕制与选择信号。 实施例
在进行FFT运算时,单元选择控制模块首先根据需要进行变换的长 度^来激活相应的处理才莫块。在进行2点、4点、8点或16点FFT运算 时,需要激活输入緩冲模块、16点基-2FFT处理模块和输出緩沖模块。 在进行64点FFT运算时,激活输入緩冲模块、64点FFT模块和数据输 出缓存模块。在进行其它点数FFT运算时,激活所有模块。
2、 4、 8、 16或64点运算只需要调用单独16点基-2FFT处理模块 或64点基-4 FFT处理4莫块便可。在进行32点、128点、256点、512 点或!024点运算时,需要激活全部的处理模块。例如
对于1024点的FFT运算,根据公式2,输入緩冲模块首先将接收 到的1024点数据通过数据寻址的方式,按照W二,,^2^64"6进行分解。 然后使用64点基-4 FFT处理模块进行16次64点FFT运算。运算出的 1024个结杲在旋转因子处理模块中分别与1024个旋转因子相乘,然后 将乘积数据存入中间序列存储模块中进行緩存。待1024个乘积数据全 部到中间序列存储模块后,使用16点基-2FFT处理模块对1024个乘积 数据进行64次16点FFI'运算,并将运算结果送入输出緩沖模块。输出 緩沖模块对结果进行倒序处理并输出。
对于256点的FFT运算,根据公式2,输入緩冲模块首先将接收到 的256点数据通过数据寻址的方式,按照W = r,x,'2 ^64x4进行分解。然 后使用64点基-4FFT处理才莫块进行4次64点FFT运算。运算出的256 个结果在旋转因子处理模块中分别与256个旋转因子相乘,然后将乘积 数据存入中间序列存储模块中进行緩存。待256个乘积数据全部到中间 序列存储模块后,使用16点基-2 FFT处理模块对256个乘积数据进行 64次4点FFT运算,并将运算结果送入输出緩沖模块。输出緩冲模块 对结果进行倒序处理并输出。
对于512点的FFT运算,根据公式2,输入緩冲模块首先将接收到 的512点数据通过数据寻址的方式,按照W二。x&二64x8进行分角年。然 后使用64点基-4FFT处理模块进行8次64点FFT运算。运算出的512
12个结果在旋转因子处理模块中分別与512个旋转因子相乘,然后将乘积
数据存入中间序列存储模块中进行緩存。待512个乘积数据全部到中间 序列存储模块后,使用16点基-2 FFT处理模块对512个乘积数据进行 64次-8点FFT运算,并将运算结果送入输出緩冲模块。输出緩沖模块 对结果进行倒序处理并输出。
本发明一种点数可变实时FFT处理芯片使用了 VIIDL硬件编程语 言在RTL级进行了描述。基于SM/C0.18/zm标准单元工艺库使用 SYNOPSYS DesignCompiler综合工具进行了逻辑综合;采用时序驱动 的设计方法,用Astro布局布线工具进行了布局布线;使用了仿真工具 VCS进行了动态逻辑仿真;使用了参数提取工具Star-RCXT工具提取了 寄生参数并使用了静态时续分析工具PrimeTime对整个设计进行静态时 续分析。本发明尤其考虑了栅氧完整性问题,即天线效应,具体做法是 手动增加反向二极管。在违反规则的金属线上和地线之间添加一个反向 二极管。金属线上的电压差较大时它会首先击穿这个反向二极管。这样 保全了栅氧的完整性,保证了芯片的功能。
处理器的ASIC版图如图5所示,本图还示出了本发明芯片封装时 的坐标。存储器按照如图1所示数据流的方向排放以便于逻辑单元的布 局布线。同时在存储器周围添加了较宽的电源环以减少因电压降带来的 系统性能的降低。
芯片的芯核面积4578/zmx 4578,,最终采用QFP208进行封装, 成品见图6所示。
权利要求
1、一种点数可变实时FFT处理芯片,其特征在于包括输入缓冲模块、64点基-4FFT处理模块、旋转因子处理模块、中间序列存储模块、16点基-2FFT处理模块、单元选择控制模块和输出缓冲模块;输入缓冲模块用于完成最大1024点的输入数据缓存及数据的寻址;64点基-4FFT处理模块用于16点或64点可变FFT运算;该模块采用基-4FFT级联流水线结构,通过对第二级基-4运算单元增加输出选择电路实现可变点操作,且64点FFT处理采用块浮点定标方式;旋转因子处理模块用于完成二维FFT处理的中间旋转因子产生与相乘,中间旋转因子产生与相乘均基于CORDIC算法;中间序列存储模块用于存储64点基-4FFT处理模块处理结果,并将其作为16点基-2FFT处理模块的输入,该模块由两个1024点数据存储器构成“乒乓”存储结构;16点基-2FFT处理模块用于2点、4点、8点或16点可变FFT运算;该模块采用基-2FFT级联流水线结构,通过对每一级基-2运算单元增加输出选择电路实现点数可变操作,且16点FFT处理采用块浮点定标方式;输出缓冲模块用于完成最大1024点的输出结果数据存储及输出;选择与控制模块用于产生模块选择与各种控制信号,对整个芯片进行控制;上述组成模块间的连接关系如下输入缓冲模块、64点基-4FFT处理模块、旋转因子处理模块、中间序列存储模块、16点基-2FFT处理模块、输出缓冲模块依次相连,单元选择控制模块与各个模块相连;上述模块间的信号转换关系为首先,输入数据在输入缓冲模块进行缓存及数据的寻址,输入数据最大不超过1024点;然后,将输入数据传入64点基-4FFT处理模块进行16点或64点可变FFT处理,得到第一维FFT处理结果;将第一维理处结果送入旋转因子处理模块中,完成序列与旋转因子的相乘,得到乘积数据;之后,将乘积数据送入中间序列存储模块进行缓存,待缓存完所有乘积数据后,根据16点基-2FFT处理模块的要求将乘积数据送给16点基-2FFT处理模块进行16点可变FFT处理,得到第二维FFT处理结果;最后,将第二维FFT处理结果送入输出缓冲模块中进行整理,形成最终输出结果。
2、 根据权利要求1所述的一种点数可变实时FFT处理芯片,其特征 在于,旋转因子处理模块包括二进制计数器、循环移位寄存器和C()RDIC 处理器;二进制计数器用于输入数据行序号和列序号的产生与计数,循环移位 寄存器用于确定旋转因子的旋转角度;二进制计数器和循环移位寄存器联合用于旋转因子的生成,并将旋转 因子送入CORDIC处理器中;CORDIC处理器用于完成基于CORDIC算法的数据加、減法和移位, 由此完成旋转因子与64点基-4FFT处理模块的处理结杲相乘;CORDIC处理器将乘积数据送入中间序列存储模块;连接关系为二进制计数器、循环移位寄存器和CORDIC处理器依次 连接。
3、 根据权利要求1所述的一种点数可变实时FFT处理芯片,其特征 在于,旋转因子处理模块基于CORDIC算法实现,完成二维FFT处理的中 间旋转因子产生与相乘。
全文摘要
本发明提出了一种点数可变实时FFT处理芯片,包括输入缓冲模块、64点FFT流水处理模块、旋转因子处理模块、中间序列存储模块、16点FFT流水处理模块、单元选择控制模块、输出缓冲模块。七个模块共同完成FFT的二维处理;其中64点FFT流水处理模块实现16点或64点可变FFT运算;16点FFT流水处理模块实现2点、4点、8点或16点可变FFT运算;旋转因子处理模块基于CORDIC算法实现;选择与控制模块实现对整个芯片的控制。本发明可实现2<sup>n</sup>点可变FFT处理,而且所占芯片管芯面积小,同时具备实时高速处理、低功耗、高精度等特性,适合ASIC实现。
文档编号G06F17/14GK101504637SQ20091008047
公开日2009年8月12日 申请日期2009年3月19日 优先权日2009年3月19日
发明者伟 刘, 峰 刘, 曾大治, 禾 陈, 腾 龙 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1