一种基于DAB正交频分复用系统的变长度高速FFT处理器的硬件设计
2007-11-14
作者:宋连国, 余宁梅, 王 定
摘 要:从分析对比现有FFT实现技术的角度出发,选择采用基2/4/8的单步延迟FFT结构、16位的定点Q15数据表示格式,完成了一种FFT处理器的设计。通过三个选择器实现了变长度设计,同时还进行了乘法单元的优化,用Altera公司的StratixⅡ系列FPGA综合验证了其功能。最终基于Charter标准单元库的0.35?滋m CMOS工艺进行了实现,采用Synopsis Design Compiler进行了综合,结果表明后仿真功能正确,在50MHz的工作频率" title="工作频率">工作频率下,完成2 048、1 024、512点FFT分别仅需40.94?滋s、20.46?滋s和10.22?滋s,达到了高速设计的目的。
关键词:OFDM FFT 并行结构" title="并行结构">并行结构 基2/4/8
数字音频广播(DAB)是近几年发展起来的继调频调幅之后的新一代广播体制。DAB可以提供更优质的语音质量、更新的数据业务以及更高的频谱效率,它提供的语音质量可以与CD音质相媲美。DAB应用了包括信源编码、信道编码等关键技术,其中特别应用了正交频分复用调制(OFDM)技术。
DAB系统的OFDM调制部分主要完成对DAB传输帧信号的符号映射、差分调制和OFDM调制等功能,参考文献[1]介绍了在硬件设计中OFDM调制、解调可以通过IFFT、FFT来实现的原理。在实际设计中,两者可以复用一个FFT模块,因此OFDM设计的核心为FFT模块。高速度、低功耗是硬件设计的追求目标。作为DAB通信系统中的主干模块,高速是首要条件,并且IEEE802.11a明确规定在OFDM系统中完成一个64点的FFT需时3.2?滋s。
本文在分析对比国内外现有FFT的实现技术优劣的基础上,对比采用并行结构、定点Q15数据格式和CORDIC算法,并基于Charter标准单元库的0.35?滋m CMOS工艺完成了一种高速FFT处理器设计。该设计控制简单、运算速度快。当前应用较多的尤里卡147标准的DAB系统有三种点数[2],分别对应不同的参数,本文设计的是变长度的、通过选择器可以实现三种点数的FFT处理器。
1 FFT结构的选择
FFT的实现结构主要有两种:蝶形单元式和多个处理单元式。目前国内采用较多的是前者,即不管多少点数的FFT,都是通过复用一个蝶形单元来完成。这种设计考虑的是FFT蝶形单元是相对独立的并且具有原址运算的特点,而且多采用流水线结构。碟形单元式FFT结构如图1所示。它的优点是控制和设计都简单。但这种结构的设计随着科技的发展其实用价值小于研究的价值,因为该结构一个无法克服的劣势是数据串行地共用一个碟形单元,这样会因为FFT的多级运算导致运算时间比较长,大基数会导致运算周期增大一个或几个数量级。以1 024点为例,一个蝶形单元在采用合理流水线结构后,能在一个时钟内完成。如果在不考虑流水线延迟的情况下,采用基2结构,共10级,从输入到第一个结果开始输出,理论上是1 024×10+1 024个时钟,基4结构是5级,也就是1 024×5+1024个时钟。而如果采用图2所示的并行结构,理论情况下,完成一次1 024点FFT仅需1 024+10个时钟。
碟形单元式复用一个碟形单元的格式必然需要多个触发器,这不便于减小面积。许多专家根据算法特点提出了结构上的优化方案,例如通过改进蝶形单元结构来减少运算单元[3]和面积,但运算时间不会减少。有的通过并行蝶形单元[4]、数据并行输入蝶形单元[5]来减小时间,前者可以减少一半时间,后者尽管时间减少更多,但每级之间要留有足够的延迟时间,况且这两种方法本质上来说都是采用并行算法。因此不如采用并行结构,即多个处理单元式。
并行结构的FFT处理器,采用并行结构来完成FFT,这也是大势所趋,是发展的最终方向。这种结构针对不同基数分别有单步延迟、多步延迟两种。图2[6~7]分别是16点基2多步延迟处理器(R2MDC)和16点基2单步延迟处理器(R2SDF)、256点基4单步延迟处理器(R4SDF)的结构示意图。
从R2MDC、R2SDF对比来看,单步延迟比多步延迟更能有效利用存储单元,同样一个16点的FFT,多步时延结构耗用存储器的深度为22,而单步延迟结构耗用存储器的深度只需15。基2的控制简单,而基4结构使用的乘法单元较少。同理,基8结构使用的乘法单元更少,但它的控制就很复杂。
参考文献[8]提到了一种基2/4/8的结构,该结构将运算进行一些必要的变化,将一个8的幂的点数的FFT结构转换为多个处理单元的结构,如图3所示(具体推理过程见参考文献[8])。该结构利用的规律是重复利用3个PE单元(PE1、PE2、PE3),每3个PE之间不必与旋转因子进行相乘,只在每3个完成后进行一次相乘,如图4所示。五种结构的硬件实现情况对比表如表1所示。从表1可以看出基2/4/8结构既减少了乘法器" title="乘法器">乘法器数量和存储器长度,又有相对简单的控制器。本设计即采用这种结构。
2 数据格式的选择
目前FFT中数据的表示格式有两种:浮点数和定点数。浮点数表示格式的优点是精度相对比较高,32位浮点数理论上的精度是2-150次方,但如果采用浮点表示完成一次加法和乘法,即使采用流水线结构,至少也得一个时钟,并且浮点数占用资源明显大于定点数的资源。在APEX20KE系列FPGA上,分别设计了两种加法器进行对比,采用32位浮点流水线结构设计的加法器占用912个逻辑资源,而一个16位的定点加法器仅需91个逻辑资源,相差一个数量级。所以本设计选择16位定点数格式,即实、虚部分别采用16位来表示。根据标准, 调制映射方式采用QPSK,这样数据的范围就可以判断在-1~+1之间,因此本设计采用Q15表示法。Q15的数值范围为-1~0.9999695,精度为1/32768= 0.00003051,符合要求。软件模拟FFT进程时,由于在运算过程中存在溢出,本设计采用了传统的控制简单、速度快的1/2截尾法,在每一级插入衰减1/2,溢出总共减少至1/211倍,最后结果再乘上衰减的因子得到正确结果。这些过程全部通过移位完成。
3 基2/4/8 FFT的工作流程及设计
DAB标准含三种点数的FFT,分别是512、1 024、2 048,依次递增。为实现变长度设计,在512点结构的前端加入两个基2的PE单元(结构与基2/4/8的PE3相同),通过两个选择器实现变长度,结构如图5所示。
图中左边RAM深度为1 024,右边的为512,两个PE单元分别为模块11和模块10。本设计中两个选择器共用一个两位地址选择信号,即模式选择信号,如果模式选择信号为01,数据流直接输入模块11,即2 048点;如果为10,则跳过模块11输入模块10;如果为11,则跳过模块10,分别得到1 024点和512点。本设计地址信号设为01,即以2 048点为例叙述工作流程。
按照DAB标准,数据流在经过QPSK调制映射、频率交织、差分调制后成为复数数据流。 32位(16位输入会增加数据的读入读出时间)的2 048个数据开始输入时,模块11开始工作;第1 025个数据输入时,模块11开始输出,模块10开始工作。当模块10读入模块的数据到第513个时,模块10开始输出,模块9开始工作,……依次类推。数据在模块11、10;10、9;6、7和3、4之间分别经过一个乘法器,完成当时输入和数据与从ROM(ROM存储的是旋转因子表)中读出数据的乘积(见图4)。
3.1 PE单元
三种PE采用组合逻辑设计来提高运算速度,其结构如图6所示。考虑到模块直接相连路径延时较长,所以在每个模块的输出都加入寄存器,并采用流水线形式,来减小路径延时,提高工作频率。实验证明,尽管增加了资源,但仅这单方面的优化措施所提高的工作频率就接近一倍(由47MHz提高到90MHz)。
3.2 控制器
本设计中的控制器采用全局计数器来实现控制,加入了一个模式选择信号。如果实现变长度,通常要引入多个多路选择器产生各个模块的控制信号,这样会使面积增加,计数信号扇出过高。为克服这一缺点,本设计在输入开始由模式选择信号控制计数器,如果是2 048点,则从0开始计数;如果是1 024点,则从1 025开始计数;如果是512点,则从1 038开始计数。这样其他控制信号就不用改变,只需一个计数器就可以完成。
3.3 乘法单元
基2/4/8结构中有两种乘法单元的设计:
(1)存在下面两个运算的设计:
(2)两个复数的相乘的设计。处理有两种情况:假定两个复数分别为a+bj、A+Bj,在FPGA功能验证" title="功能验证">功能验证阶段,相乘运算可作如下相应的变化,这样本来需要四次乘法,经过如下公式优化后只需三次。
(a+bj)×(A+Bj)=aA-bB+j(aB+bA)
=a(A+B)-B(a+b)+j(a(A+B)-A(a-b))
其中的乘法直接利用FPGA中自带的乘法器资源,在做ASIC前端设计时,本设计根据FFT中的复数乘法规律,采用CORDIC(坐标旋转数字计算机)算法将复杂的乘法转化成简单的加减、移位运算。根据CORDIC的迭代原理本设计采用了20级流水线来提高运算速度,直接算出结果。相比booth乘法器,实现更简单。
3.4 RAM和ROM的处理
本设计总共用了11块RAM、4块ROM。在做FPGA功能验证时,ROM中存储的是角度的正弦、余弦值,在做ASIC前端设计时,存储的是角度值。在ROM1、ROM2中的数据,本设计借用MATLAB工具进行了验证,得到的ROM1、ROM2数据均与基2结构的旋转因子表的生成规律一致。
FPGA功能验证阶段所采用的RAM、ROM均为FPGA自带的。在做DC综合时,RAM、ROM全部作为黑盒子,然后应用厂商提供的Rapidcompiler工具进行单独综合,得到的模型再与DC综合网表一起进行综合后仿真。
4 电路功能验证
整个系统使用Verilog HDL完成了设计,在Modisim 6.0平台上进行了仿真,利用测试平台法验证其功能的正确性,仿真结果如图8所示。
测试平台采用的时钟周期" title="时钟周期">时钟周期为20ns,图8中时钟线上30ns、20 930ns(1 024个时钟周期+20个CORDIC流水线时钟周期+1个截尾时钟周期)、4 1010ns(1 984个时钟周期+60个CORDIC流水线时钟周期+5个截尾时钟周期)、42 590ns(2 040个时钟周期+80个CORDIC流水线时钟周期+8个截尾时钟周期),分别是PE11、PE10、PE6、PE3开始输入时间。本设计选用Altera公司的StratixⅡ系列FPGA来综合进行功能验证,最终采用基于Charter标准单元库的0.35微米 CMOS工艺来设计实现。在SUN工作站上利用Synopsis Design Compiler进行综合,得到工作频率为53MHz,规模大约12万门,对综合网表、Rapidcompiler生成的RAM、ROM进行后仿真,功能均正确。
本系统中FFT处理器2 048点从数据开始输入,不考虑流水线延迟到开始输出结果共需1 024+512+256+128+64+32+16+8+4+2+1=2 047个时钟, 计算可得在50MHz的工作频率下只需40.94微秒即可完成。同理,1 024、512点分别需要20.46微秒和10.22微秒。五种FFT设计的完成时间对比如表2所示。由表可以看出,达到了高速设计的目的。
本文应用Verilog语言对一种DAB正交频分系统中的变长度FFT处理器进行了ASIC的前端设计。 通过对比FFT实现的两种结构,以高速为首要原则设计了一种高速实现的结构。通过分析验证,采用了合适的数据表示格式,并就结构中的乘法单元进行了优化,最终完成了一种性能较高的设计。
参考文献
[1] 佟学俭,罗涛.OFDM移动通信技术原理与应用[M].北京:人民邮电出版社,2003.
[2] ETSI EN 300 401(V1.3.3)[S];Radio broadcasting systems;digital audio broadcasting(DAB)to mobile,portable and fixed receivers[s].Europeanm Telecommunication Standard Institute,2001.
[3] 赵忠武, 陈禾,韩月秋.基于FPGA的32位浮点FFT处理器的设计[J].电讯技术,2003;(6):73-77.
[4] 韩颖, 王 旭,吴嗣亮.FPGA实现高速FPGA处理器的设计[J]. 电讯技术, 2003,(2):74-78.
[5] 万红星, 陈禾, 韩月秋.一种高速并行的FFT处理器的VLSI结构设计[J]. 电子技术应用, 2005,(5):45-48.
[6] HE S, TORKELSON M. A new approach to pipeline FFT processor. IEEE Proc. Of IPPS,1996.
[7] HE S, ORKELSON M. Designing pipeline FFT processor for OFDM(de)modulation.ISSSE,1998.
[8] JIA L, GAO Y, ISOAHO J, et al. A new VLSI-oriented FFT algorithm and implementation.Proc.IEEE ASIC Conf,
1998.