根据公式4的推导可知在第一阶段DFT的处理中不需要乘以旋转因子,所以旋转因子为0,在第一阶段和第二阶段中需要先乘以旋转因子,旋转因子按照公式推导处理列出在表中。在第一阶段先处理0、1、2、3四点的WFTA,然后按原位顺序填入4个RAM,接着处理4、5、6、7四点的WFTA,本来应该也按原位填入RAM中,但是注意到在第二阶段需要处理0、4、8三点的WFTA,如果还按照原位填入,则0、4、8三个数据在同一个RAM中,要读取这3个数需要3个clk,显然不适应pipeline的处理。所以在做完4、5、6、7四点的WFTA之后将数据旋转再写入4个RAM中,同样将8、9、10、11四点的结果也旋转,如图4所示。这样的读写RAM操作可以保证pipeline的处理。
2.2.2 旋转因子的存取
根据式(4)的推导,每一级之间需要先乘以旋转因子,对于旋转因子的地址计算依据式(4)的推导。由于要实现35种可配置模式的DFT设计,所以在实现时要尽可能地考虑旋转因子的共享存储,从而尽可能地减少存储这些旋转因子的ROM大小。
一般做法是将N点的旋转因子全部存储,然后根据算出来的nk乘积来查找对应的旋转因子,这样35中模式需要很多的ROM地址来存储。这里将具有2的幂次方关系的旋转因子共用,如12、24、48…768点DFT的旋转因子共用,12点的旋转因子是24点的一部分,24点的是48点的一部分等,这样就只需要存储具有两的幂次方关系的DFT点数的最大那个点768点,又由于旋转因子自身的对称性,只存储最大点数的1/8就可以了,其他部分通过对称性来查找。具体实现步骤如下:
(1)根据2的幂次方关系特性,将35种模式的DFT旋转因子分成10组,并存储这10组中最大的点的八分之一构成一个ROM。对于N点(对应组中最大的点),只存储[N/8]个地址数据;
(2)对于计算出的旋转因子地址K,根据它所处的DFT模式,选择它所属的组,10组分别用{R0,R1,R2,…,R9}表示;
(3)如果K在R5,则R0+R1+R2+R3+R4为它的偏移地址offset;
(4)12点的DFT需要用此组中最大的768点ROM表来找数,则地址K有可能是[0,…,11]×768/12中的一个作为有效地址eff_dft_addr;
(5)对于算出的eff_dft_addr,根据对[N×1/8],…,[N×7/8]的比较找出它处于768点中的哪个位置(此处N为768),即哪个1/8象限;
(6)找出所处的象限后,再找出其在第一个1/8对称的位置值dft_8_addr,计算出dft_addr=offset+dft_8_addr,然后在ROM表中找出对应的值,再根据对称性还原其原来的所属象限的值。如图5所示,展示一个点的查找方式。通过查找A″的值来得到A的值。
2.2.3 WFTA的运算单元
WFTA算法对2、3、4、5、7、8、9、16等小N点有较快速处理能力,它将小N点DFT转换为循环卷积,利用多项式理论使卷积计算尽可能减少乘法。
2.2.4 块浮点的数据处理
定点运算的特点是速度快但动态范围小。浮点运算的特点则是动态范围大但占用资源大。块浮点具有两种运算的优点,是两种运算的折中,让一组数具有共同的阶码,这个阶码是同组数中最大的那个数的阶码,简化系统资源提高运算的精度[6]。
如表1所示,因为每次WFTA运算后都有数据位宽的扩展,本结构具有3 bit的扩展。为保持输入wfta_top的模块数据始终为18 bit,这里用块浮点动态截取的方法对每一级的WFTA结果进行处理,动态截取的位宽决定下一级的数据宽度,同时循环累加每个阶段的阶码,在数据输出时进行还原操作。
3 仿真综合
图7所示为12点DFT的仿真图形,dft模式是第一种,首先data_in_vld为高时开始数据输入,然后用12个clk将数据读入4个RAM,之后计算第一级RAM读取地址将数据读出,处理3次4点的DFT,处理后将数据写入RAM,需要3个clk;再后读出数据做4次3点的DFT,处理后将数据写入RAM,需4个clk;最后将数据读出做压缩还原处理,data_out_vld为高后pipeline出数,需要12个clk。理论上需要31个clk,但是在处理中需要处理与其他模式的共享,还要有打拍延时等操作,实际用掉98个clk。120点的DFT实际用502个clk,理论上是120×2+30+30+24+40=364个clk,说明处理的点数越多冗余clk比例越小。
使用Stratix III EP3SL340F1517I3芯片,运用QUARTus II综合后的结果为:7 824个组合ALUT,0个内存ALUT,8 699个逻辑寄存器,可达到时钟124.64 MHz,满足LTE系统时钟122.88 MHz的要求。
文章在介绍LTE上行SC_FDMA的基础上,对35种模式的DFT预编码进行算法分析,提出并用FPGA实现了一种高速可配置的方案。文中对数据存储、WFTA运算单元和块浮点处理进行简单表述,根据旋转因子特性,详细介绍了旋转因子的优化,大大降低了35种模式旋转因子的存储大小。最后给出的仿真综合结果表明该方案具有较好的性能。
参考文献
[1] DAHLMAN E.3G evolution:HSPA and LTE for mobile broadband.Published by Elsevier Ltd.2007:75-81.
[2] 3GPP TS 36.211.Evolved universal terrestrial radio aCCess (E-UTRA).PhysICal channels and modulation.
[3] Xilinx.LogiCORE IP discrete fourier transform v3.1.DS615. 2009.
[4] 何小敏.LTE系统中DFT快速算法研究[DB/OL].(2009-12-24).中国科技论文在线.http://www.paper.edu.cn/
paper.php?serial_number=2009/2-937.
[5] 胡广书.数字信号处理——理论、算法与实现[M].北京:清华大学出版社,2003.
[6] 陈丽安,张培铭.定点DSP块浮点算法及其实现技术[J].福州大学学报,2004,32(6):689-693.