基于FPGA的LTE系统中转换预编码的设计
来源:电子工程世界 作者:—— 时间:2010-06-07 09:58
1 算法选择
Cooley-Tukey算法和Good-Thomas算法是当前流行的FFT算法,文献[2]中已对其原理进行过深入讨论,这里不再赘述。
(1)Cooley-Tukey算法具有良好的模块性,并且可以实现原位计算,对输入数据以及旋转因子的抽取具有规律性。文献[3]提出的一种基3 FFT算法是Cooley-Tukey算法应用在基3 FFT中的另一种表述。这一算法区别于其他FFT算法的一个重要事实就是因子可以任意选取,通用性强,且所有的运算单元均相同,易于实现。
(2)Good-Thomas算法只适合因子互质的情况,由于避免了中间级乘旋转因子的运算,因此比Cooley-Tukey算法的运算次数少得多。FFT点数越大,越能体现其在节省资源方面的优点。
文献[4]提出一种基于Cooley-Tukey算法的传输预编码解决方案。此方案的优点是操作简单、模块规则、利于编程实现;缺点是需要做的级间旋转因子乘法较多(最多达几百),乘法器和存储器等硬件资源开销较大,同时将大大增加系数初始化的工作量。对几种不同长度FFT运算量进行比较见表2。
表2中的混合算法指Good-Thomas算法与Cooley-Tukey算法相结合。可以看出,Good-Thomas算法与Cooley-Tukey算法相结合与文献[4]相比,减少了级间旋转因子乘法数,可以有效降低运算量,这些运算量的降低对整个系统的实现起着至关重要的作用,而其付出的代价只是复杂度的略微提升。
综上所述,在实现混合FFT时,选择Good-Thomas算法与Cooley-Tukey算法相结合,且优先选择Good-Thomas算法,其次为Cooley-Tukey算法,系统设计将从Good-Thomas算法出发。
2 总体结构设计
从表1中看出,LTE上行转换预编码要进行的FFT变换种类多,但每一种变换的架构是相似的,都是由基2及非基2点FFT的公共模块组成。基2有点数为4,8,16,32,64,128,256的模块,非基2的有点数为3,9,15,27,45,75,81,135,225和243的模块,只要抽出这些公共模块并精心设计,再合理地调用,就会顺利完成这个看似繁琐的工作。
图2所示总体结构框图中,模块A和C分别为数据输入和输出模块;模块B为数据处理模块,其主要思想是动态配置和公共模块的复用,内部FFT模块事先单独生成,MUX1,MUX2是选择器,在不同输入点数的情况下动态配置不同的内部FFT模块来组合成外层FFT,这样内部FFT模块就可以达到复用的目的,可以大大减少总体资源耗用,而处理速度也与单独执行各FFT相当。