缓存单元中读出的数据经块浮点处理后的结果;
[0174] N=204別寸,块浮点处理单元第一至第四输出端分别输出第一至第四组处理结果, 也即,分别输出的是读控制单元从第一至第四兵鸟缓存单元中读出的数据发送到块浮点处 理单元进行处理后的结果。
[0175] 块浮点处理单元可与输入控制单元共享配置数据。
[0176] 块浮点处理的具体方式如下:
[0177] Wr组变换结果对应的r个块浮点因子中的任一块浮点因子(例如绝对值最大或最 小的块浮点因子)为基准,将其他块浮点因子b 1 k_expi,b 1 k_ew2. . . b 1 k_ewr所对应的变换 结果(尾数)Sl,S2. . .Sr进行相应的左移或右移,从而使得各组变换结果(尾数)Ri,R2. . .Rr有 相同的块浮点因子b 1 k_exp 1。
[0178] 举例来讲,作为基准的块浮点因子为10,A组变换结果对应的块浮点因子为9,则将 A组变换结果中的512点数据向右移一位,另有B组变换结果对应的块浮点因子为12,则将B 组变换结果中的512点数据向左移2位。
[0179] 同时,为了保证基r运算过程中数据不溢出,块浮点处理单元需要根据变换点数的 不同对上述化,R2. . .Rr进行缩放并同时对块浮点因子Wk_ewl进行调整得到调整后的块浮 点因子blk_exp2。
[0180] 同时,为了保证基r运算过程中数据不溢出,块浮点处理单元需要根据变换点数的 不同对上述化,R2. . .Rr进行缩放并同时对块浮点因子Wk_ewl进行调整得到调整后的块浮 点因子b 1 k_exp2。(新的基准块浮点因子)。
[0181] 具体的,缩放可通过右移来实现,例如,N= 2048时,对4组变换结果Ri,R2,R3,R冲 的每一数据右移X位(X可W等于4、3或其他正数),同时,令blk_expl与X求和,得到调整后的 基准块浮点因子blk_ew2。再例如,N= 1536时,对3组变换结果中的每一数据右移Y位(Y可 W等于3、2或其他正数),同时,令blk_expl与Y求和,得到调整后的基准块浮点因子blk_ exp2。W此类推,变换点数越大,右移的位数就越大。
[0182] 在进行1024、1536和2048点IFFT变换(原理一)时,为防止直接乘W1/1024、1/1536 和1/2048对计算精度产生影响,可有两种处理方式:
[0183] 处理方式一:
[0184] 对于1/1024,令块浮点因子blk_exp2与10做差,得到最终块浮点因子blk_exp3。
[01化]举例来讲,假定块浮点因子blk_ew2是11,对于1/1024,令11-10 = 1。则最终的块 浮点因子b 1 k_e邱3为1。
[0186] 对于1/1536,令块浮点因子blk_ew2与9做差,得到最终块浮点因子Wk_ew3。后 续还需要令尾数乘W1/3,运是因为(1/1536) = (1/3)*2^9,为了实现乘W1/1536,后续还需 要乘W1/3。后续将介绍,在第二多路选择器MUX2处,会实现乘W1/3。
[0187] 对1/2048,令块浮点因子blk_exp2与11做差,得到最终块浮点因子blk_exp3。
[018引处理方式二:
[0189] 对于1/1024,令块浮点因子blk_ew2与9做差,得到最终块浮点因子blk_ew3。后 续还需要令变换结果乘W1/2。
[0190] 对于1/1536,令块浮点因子blk_ew2与9做差,得到最终块浮点因子blk_ew3。后 续还需要令变换结果乘W1/3。
[0191] 对1/2048,令块浮点因子blk_ew2与9做差,得到最终块浮点因子blk_ew3。后续 还需要令变换结果乘W1/4。
[0192] 同理,在进行1024、1536和2048点FFT变换(原理二)时,对于乘W512,可令块浮点 因子blk_exp2与9求和,得到最终块浮点因子blk_ew3。需要说明的是,旋转因子相乘单元、 第一至第Ξ复数相乘单元、第一至第Ξ复数相加单元都是W块浮点方式进行运算。输出端5 的输出结果也是最终块浮点因子(例如blk_exp3)和尾数,因此,实际的变换结果为输出端5 的输出结果乘W2bik-exp3。
[0193] 第一复数相乘单元:用于将旋转因子相乘单元输出的第一计算结果G分别与块浮 点处理单元的第二输出端和第四输出端输出的处理结果进行复数相乘,得到第一复数相乘 结果E = G地和第二复数相乘结果F = G蝴,并将第一复数相乘结果E = G地发送到第一复数相 加单元,将第二复数相乘结果F=G*D发送到第二复数相加单元。
[0194] 第一复数相加单元:用于将块浮点处理单元的第一输出端输出的处理结果与第一 复数相乘单元输出的第一复数相乘结果进行复数相加,得到第一复数相加结果,并将第一 复数相加结果发送到第Ξ复数相加单元。
[01M]第二复数相加单元:用于将块浮点处理单元的第Ξ输出端输出的处理结果与第一 复数相乘单元输出的第二复数相乘结果F进行复数相加,得到第二复数相加结果,并将第二 复数相加结果发送到第二复数相乘单元。
[0196] 第二复数相乘单元:用于将第二复数相加单元输出的第二复数相加结果与旋转因 子相乘单元输出的第二计算结果Η进行复数相乘,得到第Ξ复数相乘结果,并将第Ξ复数相 乘结果发送到第Ξ复数相加单元。
[0197] 第Ξ复数相加单元:用于对第一复数相加单元输出的第一复数相加结果和第二复 数相乘单元的第Ξ复数相乘结果进行复数相加,得到第Ξ复数相加结果,并将第Ξ复数相 加结果发送到第Ξ复数相乘单元。
[019引图3中的第二多路选择器MUX2用于,在Ν=1536,并且变换标志为第二取值时,将1/ 3发送到第Ξ复数相乘单元;在Ν=1024,并且变换标志为第二取值时,将1/2发送到第Ξ复 数相乘单元;在Ν = 2048并且变换标志为第二取值时,将1/4发送到第Ξ复数相乘单元;在Ν =1024、1536或2048并且变换标志为第一取值时,将1发送到上述第Ξ复数相乘单元;
[0199]图4中的第二多路选择器MUX2用于,在Ν=1536,并且变换标志为第二取值时,将1/ 3发送到第Ξ复数相乘单元;在Ν= 1024、2048,并且变换标志为第二取值时,将1发送到第Ξ 复数相乘单元;在N= 1024、1536或2048并且变换标志为第一取值时,将1发送到上述第Ξ复 数相乘单元。或者,
[0200]在Ν= 1536,并且变换标志为第二取值时,将发送到第Ξ复数相乘单元;在Ν = 1024,并且变换标志为第二取值时,将1/2发送到第Ξ复数相乘单元;在Ν=2048并且变换标 志为第二取值时,将1/4发送到第Ξ复数相乘单元;在Ν= 1024、1536或2048并且变换标志为 第一取值时,将1发送到上述第Ξ复数相乘单元。
[020。 可通过沈L信号,控制MUX2的输出。
[0202] 第Ξ复数相乘单元:用于将上述第二多路选择器的输出数据和上述第Ξ复数相加 单元输出的第Ξ复数相加结果进行复数相乘,得到第四复数相乘结果,将上述第四复数相 乘结果发送到上述第Ξ多路选择器MUX3。
[0203] 图3中的第Ξ多路选择器MUX3:用于对输出的结果进行选择,当Ν=128、256或512 时,将512点FFT/IFFT处理单元的输出结果进行输出;当Ν=1024、1536或204別寸,将第立复 数相乘单元的第四复数相乘结果进行输出。
[0204] 图4中的MUX3用于:当Ν=128、256或512时,将512点FFT/IFFT处理单元的输出结果 进行输出;当Ν= 1024、1536或204別寸,将第二共辆处理单元的输出结果进行输出。
[0205] 可见,在本发明上述所有实施例中,LTE系统定义的六种变换点数被分成两类:
[0206] 较小的变换点数α28、256、512,也即N不大于512)全部为2的整数次幕,直接进行 相应的FFT/IFFT变换。因为2的整数次幕的DFT/IDFT实现技术已非常成熟,可W直接调用 FPGA厂家提供的IP或者套用成熟的实现架构进行实现;
[0207] 较大的变换点数α024、1536、2048,也即N大于512)全部基于512点FFT或IFFT进行 实现,结构简单,需要的乘法器和加法器资源少。
[020引此外,1024点和1536点变换时各自只需存储并使用512个第一旋转因子,2048点变 换时共需要使用1024个第一旋转因子,其中有512个第一旋转因子可W和1024点的第一旋 转因子共用,只需要再存储另外512个第一旋转因子,执行运Ξ种变换点数总共只需要存储 1536个旋转因子,节省了存储资源的使用。
[0209] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他 实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0210] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,W上实施例的说 明只是用于帮助理解本发明的技术方案及其核屯、思想;同时,对于本领域的一般技术人员, 依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处。综上所述,本说明书内 容不应理解为对本发明的限制。
【主权项】
1. 一种基于LTE的FFT/IFFT变换装置,其特征在于,包括输入乒乓缓存单元、512点FFT/ IFFT处理单元、输入控制单元、基r运算单元和输出端; 其中,所述输入控制单元用于: 接收配置数据和第一序列?(11〇,111 = 0,1,2..』-14表示变换点数或序列的长度;所述 配置数据至少包括N和变换标志;其中,所述变换标志的第一取值用于表征需要对所述第一 序列进行正变换,所述变换标志的第二取值用于表征需要对所述第一序列进行反变换; 在所述N不大于512时,直接将所述第一序列p(m)输入至所述512点FFT/IFFT处理单元; 在所述N大于512时,将所述第一序列p(m)输入至所述输入乒乓缓存单元; 在所述N大于512时,分r次从所述输入乒乓缓存单元中读出p(m)发送至所述512点FFT/ IFFT处理单元;r = N/512;其中,第i次从所述输入兵兵缓存单元中读出的数据为:所述p(m) 位于:r的正整数倍减r-i位置上的512点数据,1 < i < r; 所述512点FFT/IFFT处理单元用于执行变换长度为2的η次幂的FFT/IFFT变换,1 < η < 9,其中: 在所述Ν不大于512时,对输入的数据进行相应的FFT/IFFT变换,并将变换结果输出至 所述输出端;或者, 在所述N大于512并且所述变换标志为第一取值时,对所述输入控制单元分r次输入的 数据进行r次FFT变换,得到r组变换结果;或者, 在所述N大于512并且所述变换标志为第二取值时,对所述输入控制单元分r次输入的 数据进行r次IFFT变换,得到r组变换结果; 其中,第i组变换结果中的512点数据为,所述p(m)位于r的正整数倍减r-i位置上的512 点数据经FFT或IFFT变换后的变换结果; 所述基r运算单元用于: 在所述N大于512并且所述变换标志为第一取值时,对所述r组变换结果进行基r运算得 到第二序列Y(m),并将所述第二序列Y(m)输出至所述输出端,所述第二序列Y(m)为对所述 第一序列P(m)进行正变换后的序列;或者, 在所述N大于512并且所述变换标志为第二取值时,对所述r组变换结果进行基r运算得 到第三序列yy(m),并将yy(m)乘以Ι/r得到第四序列y(m),将所述y(m)输出至所述输出端, 所述第四序列y(m)为对所述第一序列p(m)进行反变换后的序列; 所述512点FFT/IFF