一种FFT/DFT倒序方法和装置.pdf

上传人:00****42 文档编号:1002892 上传时间:2018-03-24 格式:PDF 页数:22 大小:908.72KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010244292.5

申请日:

2010.07.29

公开号:

CN102346728A

公开日:

2012.02.08

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||专利实施许可合同备案的生效IPC(主分类):G06F 17/14合同备案号:2015440020319让与人:中兴通讯股份有限公司受让人:深圳市中兴微电子技术有限公司发明名称:一种采用矢量处理器实现FFT/DFT倒序的方法和装置申请日:20100729申请公布日:20120208许可种类:普通许可备案日期:20151123|||实质审查的生效IPC(主分类):G06F 17/14申请日:20100729|||公开

IPC分类号:

G06F17/14

主分类号:

G06F17/14

申请人:

中兴通讯股份有限公司

发明人:

肖海勇

地址:

518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

优先权:

专利代理机构:

北京同达信恒知识产权代理有限公司 11291

代理人:

李娟

PDF下载: PDF下载
内容摘要

本发明涉及通信领域,公开了一种FFT/DFT倒序方法和装置,能够减少信号处理过程中的FFT/DFT倒序时间,提高了矢量处理器的利用效率。本发明的FFT/DFT倒序方法包括:在对信号进行FFT/DFT的过程中,通过对存储单元中的数据按数据地址最低位到最高位依次数据划分,得到数据子序列,并对数据子序列进行序列内倒序,得到最终的数据倒序结果。

权利要求书

1: 一种快速傅里叶变换 FFT/ 离散傅里叶变换 DFT 倒序方法, 其特征在于, 包括 : A、 在对信号进行 FFT/DFT 过程中, 将存储单元中数据地址最低位相同的数据分别组成 数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列之间, 各数 据按数据地址最低位从小到大排列 ; B、 对各数据序列分别执行 : 将未经过排序处理的最低地址位相同的数据分别组成数据 子序列, 并在各数据子序列内部, 各数据按数据地址从小到大排列, 各数据子序列之间, 各 数据按未经过排序处理的最低地址位从小到大排列, 其中, 所述未经过排序处理的最低地 址位指各数据的数据地址中不相同地址位的最低位 ; C、 对各数据子序列, 返回步骤 B 中将未经过排序处理的最低地址位相同的数据分别组 成数据子序列的步骤, 直到得到的各数据子序列中的数据小于设定值 ; D、 对步骤 C 中得到的各数据子序列分别进行序列内倒序。
2: 如权利要求 1 所述的方法, 其特征在于, 当采用基 2 算法的 FFT/DFT 时, 所述步骤 D 中的进行序列内倒序具体为 : 对数据子序列中的 N = 2m 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数 据地址为二进制位串 c1kc2k...cm-1, kmk, 地址进位方式为从右向左进位, 则倒序后的地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
3: 如权利要求 1 所述的方法, 其特征在于, 当采用混合基算法的 FFT/DFT 时, 所述步骤 D 中的进行序列内倒序具体为 : 对数据子序列中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第K个 数据的数据地址为混合进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序 后的地址 K’ 为混合进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
4: 如权利要求 1 所述的方法, 其特征在于, 当采用基 2 算法的 FFT/DFT 时, 所述将存储 单元中数据地址最低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数 据地址从小到大排列, 各数据序列之间, 各数据按数据地址最低位从小到大排列具体为 : 将存储单元中的数据按照数据地址从小到大依次提取数据地址最低位为 0 的数据组 成第一数据序列, 按照数据地址从小到大依次提取数据地址最低位为 1 的数据组成第二数 据序列 ; 将第一数据序列排列在前, 第二数据序列排列在后。
5: 如权利要求 1 所述的方法, 其特征在于, 当采用混合基 p1p2...pm 算法的 FFT/DFT 时, 所述将存储单元中数据地址最低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列之间, 各数据按数据地址最低位从小到大排 列具体为 : 将存储单元中的数据按照数据地址从小到大依次分别提取数据地址最低位为 0 到 pm-1-1 的数据组成 pm 个数据序列 ; 将各数据子序列按照数据地址最低位从小到大排列。
6: 如权利要求 1 所述的方法, 其特征在于, 当所述设定值小于等于 3 时, 则不必执行步 骤 D。
7: 一种快速傅里叶变换 FFT/ 离散傅里叶变换 DFT 倒序装置, 其特征在于, 包括 : 数据序列划分模块, 用于在对信号进行 FFT/DFT 过程中, 将存储单元中数据地址最低 2 位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列之间, 各数据按数据地址最低位从小到大排列 ; 数据子序列划分模块, 用于对各数据序列分别执行 : 将未经过排序处理的最低地址位 相同的数据分别组成数据子序列, 并在各数据子序列内部, 各数据按数据地址从小到大排 列, 各数据子序列之间, 各数据按未经过排序处理的最低地址位从小到大排列, 对得到的各 数据子序列, 返回继续执行将未经过排序处理的最低地址位相同的数据分别组成数据子序 列的步骤, 直到得到的各数据子序列中的数据小于设定值, 其中, 所述未经过排序处理的最 低地址位指各数据的数据地址中不相同地址位的最低位 ; 序列内倒序模块, 用于对数据子序列最终得到的各数据子序列分别进行序列内倒序。
8: 如权利要求 7 所述的装置, 其特征在于, 当采用基 2 算法的 FFT/DFT 时, 序列内倒序 m 模块, 具体用于对数据子序列中的 N = 2 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第K 个数据的数据地址为二进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序 后的地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
9: 如权利要求 7 所述的装置, 其特征在于, 当采用混合基算法的 FFT/DFT 时, 序列内倒 序模块, 具体用于对数据子序列中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为混合进制位串 c1kc2k...cm-1, 地址进位方式为从右向左进 kcmk, 位, 则倒序后的地址 K’ 为混合进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,

说明书


一种 FFT/DFT 倒序方法和装置

    【技术领域】
     本发明涉及通信领域, 尤其涉及一种 FFT/DFT 倒序方法和装置。背景技术 FFT( 快 速 傅 里 叶 变 换, Fast Fourier Transform) 和 DFT( 离 散 傅 里 叶 变 换, Discrete Fourier Transform) 广泛应用于进行信号处理的通信系统中, 尤其是涉及 OFDM 的 LTE、 CMMB、 DVB、 DAB 等通信系统中。传统的 FFT/DFT 算法, 无论是时间抽取 (DIT) 还是 频率抽取 (DIF) 算法, 在对抽取的信号进行 FFT/DFT 过程中, 都需要对存储单元中的输入数 据或者输出数据进行一次倒序操作。输入数据可以是正序输入存储到存储单元中, 蝶形运 算结束后再对存储单元中的数据进行一次倒序操作得到最终结果, 或者首先对输入数据进 行一次倒序操作存储到存储单元中, 而后蝶形运算得到最终结果。
     传统的倒序操作通常是缓存所有的数据, 而后逐个顺序的读出数据, 每个数据计 算相应的倒序后地址, 然后按倒序后地址写回缓存。 或者是按倒序的顺序逐个的读出数据, 再按顺序逐个写回缓存。例如 N = p1p2...pm 点的 DFT, 若按基 p1, 基 p2, ..., 基 pm 的顺序进
     行 m 级的 DFT 运算, 那么对于 N 点的数据 ( 地址编号 0 到 N-1), 每个数据可以得到其地址编 号唯一的 p1, p2, ..., pm 混合进制表示方式, 第 k 个数据有唯一的地址表示方式 :
     k = cmkcm-1, 0 ≤ cik ≤ pik-1 k...c2kc1k = cmkpm-1...p1+cm-1, kpm-2...p1+...+c2kp1+c1k
     上式的进位方式为从右向左进位, 第 k 个数据倒序后的地址为 :
     k′= c1kc2k...cm-1, kcmk = c1kpm-1...p1+c2kpm-2...p1+...+cm-1, kp1+cmk
     上式的进位方式同样为从右向左进位 ; 如果采用从左向右进位, 则倒序后地址 k′= cmkcm-1,k...c2kc1k, 该数据倒序后地址的比特序列和该数据倒序前地址的比特序列相 同, 但由于倒序后采用从左向右的进位方式, 因此, 倒序后的实际地址已变。 例如 : 若倒序前 后都采用从右向左的进位表示方式, 且 p1 = p2 = ... = pm = 2, c1kc2k...cmk 为数据倒序前 的二进制地址, 那么将该地址的二进制位串左右颠倒得到的二进制位串 cmkcm-1,k...c1k 即为 第 k 个数据倒序后的二进制地址。
     但现有的倒序方法由于通常采用串行顺序实现, 即需要对每个数据计算倒序后的 地址, 并依次进行倒序, 这样在 FFT/DFT 点数较多时进行倒序操作需要消耗的时间也比较 大。例如 : LTE 系统中的 2048 点 FFT 需要消耗 2048 个时钟周期的时间。在 FFT/DFT 采用 矢量处理器计算实现时, 倒序需要消耗的时间甚至会数倍于矢量处理器蝶形运算时间, 导 致矢量处理器的利用率大大降低。 发明内容
     本发明提供一种 FFT/DFT 倒序方法及装置, 减少了数据的 FFT/DFT 倒序时间, 提高 了矢量处理器的利用效率。
     一种 FFT/DFT 倒序方法, 包括 :
     A、 在对信号进行 FFT/DFT 过程中, 将存储单元中数据地址最低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列之间, 各数据按数据地址最低位从小到大排列 ;
     B、 对各数据序列分别执行 : 将未经过排序处理的最低地址位相同的数据分别组 成数据子序列, 并在各数据子序列内部, 各数据按数据地址从小到大排列, 各数据子序列之 间, 各数据按未经过排序处理的最低地址位从小到大排列, 其中, 所述未经过排序处理的最 低地址位指各数据的数据地址中不相同地址位的最低位 ;
     C、 对各数据子序列, 返回步骤 B 中将未经过排序处理的最低地址位相同的数据分 别组成数据子序列的步骤, 直到得到的各数据子序列中的数据小于设定值 ;
     D、 对步骤 C 中得到的各数据子序列分别进行序列内倒序。
     其中, 当采用基 2 算法的 FFT/DFT 时, 所述步骤 D 中的进行序列内倒序具体为 : m
     对数据子序列中的 N = 2 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数 据的数据地址为二进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的 地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     其中, 当采用混合基算法的 FFT/DFT 时, 所述步骤 D 中的进行序列内倒序具体为 :
     对数据子序列中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为混合进制位串 c1kc2k...cm-1, 地址进位方式为从右向左进位, 则倒 kcmk, 序后的地址 K’ 为混合进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     其中, 当采用基 2 算法的 FFT/DFT 时, 所述将存储单元中数据地址最低位相同的数 据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列 之间, 各数据按数据地址最低位从小到大排列具体为 :
     将存储单元中的数据按照数据地址从小到大依次提取数据地址最低位为 0 的数 据组成第一数据序列, 按照数据地址从小到大依次提取数据地址最低位为 1 的数据组成第 二数据序列 ;
     将第一数据序列排列在前, 第二数据序列排列在后。
     其中, 当采用混合基 p1p2...pm 算法的 FFT/DFT 时, 所述将存储单元中数据地址最 低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排 列, 各数据序列之间, 各数据按数据地址最低位从小到大排列具体为 :
     将存储单元中的数据按照数据地址从小到大依次分别提取数据地址最低位为 0 到 pm-1-1 的数据组成 pm 个数据序列 ;
     将各数据子序列按照数据地址最低位从小到大排列。
     其中, 当所述设定值小于等于 3 时, 则不必执行步骤 D。
     一种 FFT/DFT 倒序装置, 包括 :
     数据序列划分模块, 用于在对信号进行 FFT/DFT 过程中, 将存储单元中数据地址 最低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大 排列, 各数据序列之间, 各数据按数据地址最低位从小到大排列 ;
     数据子序列划分模块, 用于对各数据序列分别执行 : 将未经过排序处理的最低地 址位相同的数据分别组成数据子序列, 并在各数据子序列内部, 各数据按数据地址从小到 大排列, 各数据子序列之间, 各数据按未经过排序处理的最低地址位从小到大排列, 对得到 的各数据子序列, 返回继续执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列的步骤, 直到得到的各数据子序列中的数据小于设定值, 其中, 所述未经过排序处理 的最低地址位指各数据的数据地址中不相同地址位的最低位 ;
     序列内倒序模块, 用于对数据子序列最终得到的各数据子序列分别进行序列内倒 序。
     其中, 当采用基 2 算法的 FFT/DFT 时, 序列内倒序模块, 具体用于对数据子序列 m 中的 N = 2 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为二进制 位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     其中, 当采用混合基算法的 FFT/DFT 时, 序列内倒序模块, 具体用于对数据子序列 中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为 混合进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的地址 K’ 为混合 进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     本发明提供的 FFT/DFT 倒序方法, 通过对存储单元中的数据按数据地址最低位到 最高位依次数据划分, 得到数据子序列, 并对数据子序列进行序列内倒序, 得到最终的数据 倒序结果。采用本发明的方法, 相对传统的 FFT/DFT 倒序方法, 节省了倒序时间, 提高了矢 量处理器的利用效率。 附图说明 图 1 为本发明实施例提供的 FFT/DFT 的倒序方法流程图 ;
     图 2 为本发明实施例提供的 N = 24 = 16 点的 FFT 的倒序方法流程图 ;
     图 3 为本发明实施例提供的 16 点 FFT 倒序过程示意图 ;
     图 4 为本发明实施例提供的 N = 261 = 2048 点 FFT 的倒序方法流程图 ;
     图 5 为本发明实施例提供的 2048 点 FFT 倒序过程示意图 ;
     图 6 为 2 倍数据压缩装置示意图 ;
     图 7 为单步 32 点倒序装置的示意图 ;
     图 8 为本发明实施例提供的采用基 2、 基 3、 基 5 计算的 N = 30 点 FFT/DFT 的倒序 方法流程图 ;
     图 9 为本发明实施例提供的采用基 2、 基 3、 基 5 计算的 N = 30 点 FFT/DFT 的倒序 过程示意图 ;
     图 10 为本发明实施例提供的 N = 1200 点 FFT 的倒序方法流程图 ;
     图 11 为本发明实施例提供的 1200 点 FFT 倒序过程示意图 ;
     图 12 为本发明实施例提供的 p 倍数据压缩装置示意图 ;
     图 13 为本发明实施例提供的单步 12 点倒序装置的示意图 ;
     图 14 为本发明实施例提供的 FFT/DFT 倒序装置结构图。
     具体实施方式
     基于现有的 FFT/DFT 倒序方法, 在进行傅里叶变换时, 需要对存储单元中各数据 地址中的每一数据计算倒序后地址, 并将该数据存入倒序后地址中, 需要消耗大量的时间。
     本发明实施例提供一种 FFT/DFT 的倒序方法及装置, 通过对存储单元中数据按照数据地址最低位到最高位依次进行数据分组, 第一次分别将最低位相同的数据划分为一个 数据序列, 并顺序对各数据序列排序 ; 再分别对每一个划分的数据序列, 将次低位相同的数 据划分为一个数据子序列, 并按顺序对各数据子序列进行排序, 对各数据子序列, 再按照地 址第三低位进行划分, 并排序, 依次类推, 直到划分的数据子序列中的数据小于设定值, 对 各数据子序列的数据直接进行序列内排序, 得到最终的数据倒序排列。 采用本发明的方法, 不需要对存储单元中的每一个数据地址中的数据进行倒序后地址计算, 节省了 FFT/DFT 倒 序操作的时间。
     如图 1 所示, 为本发明实施例提供的 FFT/DFT 的倒序方法流程图, 具体包括 :
     S101、 在对信号进行 FFT/DFT 过程中, 将存储单元中数据地址最低位相同的数据 分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到大排列, 各数据序列之 间, 按数据地址最低位从小到大排列, 并称数据地址最低位已经过排序处理 ;
     例如 : 对 于 点 数 为 N = p1p2...pm 的 FFT/DFT, N = p1p2...pm 表 示 采 用 基 p1, 基 p2, ..., 基 pm 的顺序进行 FFT/DFT 运算, 则数据地址同样采用混合进制 p1p2...pm 表示, 则数 据地址最低位共有 pm 个值, 为 0 到 pm-1, 即对于数据个数为 N = p1p2...pm 的 FFT/DFT, 按照 存储单元中数据地址从小到大依次提取数据地址最低位分别为 0 到 pm-1 的数据, 组成 pm 个 数据序列, 并对各数据序列按数据地址最低位从小到大排列 ; S102、 分别对每一个数据序列, 将未经过排序处理的最低地址位相同的数据分别 组成数据子序列, 并在各数据子序列内部, 各数据按数据地址从小到大排列, 各数据子序列 之间, 各数据按数据地址相同位的前一地址位从小到大排列, 其中, 未经过排序处理的最低 地址位指各数据的数据地址中不相同地址位的最低位 ;
     并且经过该步处理后, 则该最低地址位就为经过排序处理 ;
     例如对步骤 S101 中得到的数据地址最低位为 0 的数据序列, 则数据地址中不相同 的地址位为次低位至最高位, 将未经过排序处理的最低地址位, 即次低位相同的数据分别 组成数据子序列, 地址次低位共有 pm-1 个值, 为 0 到 pm-1-1, 即按照数据地址从小到大对地址 最低位为 0 的数据序列分别提取次低位地址为 0 的数据, 组成第一数据子序列, 再按照数据 地址从小到大依次提取次低位地址为 1 的数据, 组成第二数据子序列, 依次类推, 直到按照 数据地址从小到大依次提取次低位地址为 pm-1-1 的数据, 组成第 pm-1 数据子序列, 则在每一 数据子序列内部, 各数据按数据地址从小到大排列, 对各数据子序列按照次低位从小到大 排列 ;
     依次对步骤 S101 中得到的数据地址最低位为 1 到 pm-1 的数据序列均进行上述处 理;
     S103、 对各数据子序列, 继续根据步骤 S102 中的方法进行数据子序列的划分, 直 到得到的各数据子序列中的数据小于设定值 ;
     对步骤 S102 中得到的数据各数据子序列, 继续按照上一步骤的将未经过排序处 理的最低地址位的值进行序列划分, 划分方法和步骤 S102 中数据序列的划分方法相同, 直 到最后划分的各数据子序列中的数据小于设定值 ;
     S104、 对步骤 S103 中最终得到的各数据子序列, 分别进行序列内倒序。
     其中, 当设定值为 3 时, 即在步骤 S103 中, 可以返回步骤 S102 中一直进行数据序 列的划分, 直到最后得到的数据子序列只有两个数据, 因为各数据子序列中的数据是按地
     址从小到大排列, 因此不用对该两个数据进行序列内的倒序, 即得到最终的倒序排列的数 据。这样可以不必执行步骤 S104。但这样最后得到的各数据子序列越来越短, 这样在进行 最后几次的分组操作时, 每次消耗较多的时间 ;
     因此, 设定值的选择一般大于 3, 当划分的数据子序列内的数据到达或小于设定值 时, 就可以不再对数据子序列进行划分, 而直接执行步骤 S104, 对各数据子序列内的数据进 行序列内倒序, 这样可以将最后的几次效率低下的序列划分操作合并为一步实现。
     当采用基 2 算法的 FFT/DFT 时, 步骤 S104 中的进行序列内倒序具体为 : m
     对数据子序列中的 N = 2 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数 据的数据地址为二进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的 地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     当采用混合基算法的 FFT/DFT 时, 步骤 S104 中的进行序列内倒序具体为 :
     对数据子序列中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为混合进制位串 c1kc2k...cm-1, 地址进位方式为从右向左进位, 则倒 kcmk, 序后的地址 K’ 为混合进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     具体的序列内倒序可以采用单步倒序装置实现, 单步倒序装置采用两个地址数相 同的寄存器组成, 第一寄存器的每一数据输出端连接对应的第二寄存器的数据输入端。例 如第 2 个数据, 如果倒序后的地址为第 8 位, 则将第一寄存器中的地址 1 的数据输出端连 接第二寄存器的地址 7 的数据输入端, 第一寄存器中的每一地址均与倒序后对应的地址连 接, 即可以实现单步倒序装置。 当 采 用 基 2 算 法 的 FFT/DFT 时, 第 一 寄 存 器 的 地 址 c1kc2k...cm-1,kcmk( 二 进 制位串, 进位方式为从右向左进位 ) 数据输出端连接第二寄存器的地址 c1kc2k...cm-1, 进位方式为从右向左进位 ) 的数据输入端。进行序列内 kcmk( 二进制位串, kcmkc1kc2k...cm-1, 倒序, 即将第一寄存器的数据按上述寄存器地址的连接关系输入第二寄存器, 即完成序列 内的倒序。
     当 采 用 混 合 基 算 法 的 FFT/DFT 时, 第 一 寄 存 器 的 地 址 c1kc2k...cm-1,kcmk( 混 合 进制位串, 进位方式为从右向左进位 ) 数据输出端连接第二寄存器的地址 c1kc2k...cm-1, 进位方式为从左向右进位 ) 的数据输入端。进行序列 kcmk( 混合进制位串, kcmkc1kc2k...cm-1, 内倒序, 即将第一寄存器的数据按上述寄存器地址的连接关系输入第二寄存器, 即完成序 列内的倒序。
     例如各数据子序列中只有 32 个数据时, 并且采用基 2 的 FFT/DFT 算法, 采用单 步倒序装置, 第一寄存器的每一数据输出端连接对应的第二寄存器的数据输入端, 将第一 寄存器中地址 0 的数据连接第二寄存器的地址 0, 第一寄存器中地址 1 的数据连接第二 寄存器的地址 16, 第一寄存器地址 2 的数据连接第二寄存器的地址 7, 第一寄存器地址 n(c5c4c3c2c1, 从右向左进位 ) 的数据连接第二寄存器的地址 m(c5c4c3c2c1, 从左向右进 位 )。
     假设采用混合基 N = p1p2...pm 的 FFT/DFT 算法, 采用单步倒序装置, 则第一寄存器 的第 n 个数据 ( 地址 p1p2...pm, 从右向左进位 ) 输入第二寄存器的第 m 位 ( 地址 p1p2...pm, 从左向右进位 )。
     实施例一
     下面以 16 点 FFT 为例, 详细说明本发明实施例提供的 FFT 倒序方法。
     如图 2 所示, 为本发明实施例提供的 N = 24 = 16 点的 FFT 的倒序方法流程图, 具 体包括 :
     N = 16, 即存储器中共存储 16 个数据, 需要 16 个数据地址, 16 个数据地址采用基 2 表示为 c4c3c2c1, FFT 倒序即是要对 16 个数据地址每一个确定倒序后的地址, 并将该数 据地址中的数据存储到倒序后的地址中。
     S201、 按数据地址从小到大的顺序依次从存储单元的 N 个数据中, 提取数据地址 最低位为 0 的数据组成第一数据序列, 再依次提取数据地址最低位为 1 的数据组成第二数 据序列, 并将第一数据序列排列在前, 第二数据序列排列在后 ;
     即按数据地址从小到大的顺序依次从 16 个数据中提取 c1 为 0 的数据组成第一数 据序列, 提取 c1 为 1 的数据组成第二数据序列 ;
     在具体的实现中, 可以采用数据压缩装置, 从 16 个数据中先提取 c1 为 0 的 8 个数 据, 只需要一个时钟周期, 再提取 c1 为 1 的 8 个数据, 又只需一个时钟周期 ; 因此, 该步需要 2 个时钟周期 ;
     S202、 对每一数据序列的 M 个数据继续执行 : 按数据地址从小到大的顺次, 依次提 取数据地址次低位为 0 的数据组成第一数据子序列, 并提取数据地址次低位为 1 的数据组 成第二数据子序列, 并将第一数据子序列排在 M 个数据的前半部分, 第二子序列排在 M 个数 据的后半部分 ;
     即对第一数据序列按数据地址从小到大的顺序, 依次从 8 个数据中提取 c2 为 0 的 数据组成第一数据子序列, 提取 c2 为 1 的数据组成第二数据子序列, 并将第一数据子序列 排在 8 个数据的前半部分, 第二数据子序列排在 8 个数据的后半部分 ;
     S203、 对步骤 S202 中得到的每一个数据子序列继续执行 : 按照数据地址从小到大 的顺次, 依次提取数据地址第三低位为 0 的数据组成第三数据子序列, 并提取数据地址第 三低位为 1 的数据组成第四数据子序列, 并将第三数据子序列排在该子序列的前半部分, 第四子序列排在该子序列的后半部分 ;
     对第一数据子序列, 按数据地址从小到大的顺序, 从 4 个数据中提取 c3 为 0 的数 据组成第三数据子序列, 提取 c3 为 1 的数据组成第四数据子序列, 并将第三数据子序列排 在该 4 个数据的前半部分, 第四数据子序列排在该 4 个数据的后半部分, 即完成对该 16 个 数据的倒序。
     如图 3 所示, 为本发明实施例提供的 16 点 FFT 倒序过程示意图 ;
     采用这种倒序方法, 即实现了 16 点数据的 FFT 倒序过程, 相对传统的倒序过程, 需 要对每一个数据计算倒序后的数据地址, 需要 16 个时钟周期, 采用本发明的方法, 在步骤 S201 中, 只需要 2 个时钟周期, 步骤 S202 中, 每一次提取需要 1 个时钟周期, 共提取 4 次, 需 要 4 个时钟周期, 步骤 S203 中, 共需要 8 个时钟周期, 因此, 采用本发明的方法, 需要 14 个 时钟周期, 相对于传统的倒序方法, 节省了时间。尤其对点数较多的 FFT 变换, 节省的时间 更多。
     实施例二
     如图 4 所示, 为本发明实施例提供的 N = 261 = 2048 点 FFT 的倒序方法流程图, 具 体包括 :S401 : 将 2048 个数据从存储器中按数据地址从小到大依次提取地址最低位为 0 的 数据组成第一数据序列, 再提取数据地址最低位为 1 的数据组成第二数据序列, 并且第一 数据子序列排列在前, 第二数据子序列排列在后 ;
     其中, 具体的提取方法可以采用数据压缩装置, 将 2048 个数据按数据地址从小到 大依次输入数据压缩装置中, 进行提取。
     其中, 数据压缩装置可以采用 2 倍数据压缩装置, 2 倍数据压缩装置具体示意图如 图 6 所示, 采用两个寄存器组成, 第一寄存器的地址 0 数据输出端连接第二寄存器的地址 0 数据输入端, 第一寄存器的地址 2 数据输出端连接第二寄存器的地址 1 数据输入端, 第一寄 存器的地址 4 数据输出端连接第二寄存器的地址 2 数据输入端, 依次类推, 第一寄存器的地 址 2n-2 数据输出端连接第二寄存器的地址 n-1 数据输入端。
     其中, 数据压缩装置的 n 可以任意设置, 如采用 n = 1024 的数据压缩装置, 则提取 地址最低位为 0 的数据组成第一数据序列, 只需要一个时钟周期, 再提取地址最低位为 1 的 数据组成第二数据序列, 又只需一个时钟周期。本步只需要两个时钟周期即可完成。
     若采用 n = 32 的数据压缩装置, 则需要按数据地址从小到大每次输入 64 个连续 数据到数据压缩装置中进行地址最低位为 0、 以及地址最低位为 1 的数据提取, 64 个周期后 即可获得两个长度为 1024 的数据序列, 且第一数据序列的地址最低位为 0, 第二数据地址 最低位为 1。 S402 : 对每一个数据序列执行 : 将数据序列的 1024 个数据按地址从小到大依次提 取地址次低位为 0 的数据组成第一数据子序列, 再提取数据地址次低位为 1 的数据组成第 二数据子序列, 将第一数据子序列排列在前, 第二数据子序列排列在后 ;
     此步中, 数据压缩装置的 n 最大可以设置为 1024/2, 如采用 n = 512 的数据压缩装 置, 则对每一个数据序列只需要两个周期即可实现第一数据子序列、 第二数据子序列的提 取, 本步骤则只需要 4 个周期即可完成。
     若采用 n = 32 的数据压缩装置, 则对每一个数据序列的 1024 个数据, 则需要 32 个周期完成第一数据子序列、 第二数据子序列的提取, 本步骤则需要 64 个周期完成。
     S403、 对步骤 S402 得到的 2 个数据子序列, 依次对每一个数据子序列, 根据数据地 址从小到大的顺序, 依次提取数据地址第三低位为 0 的数据组成第三数据子序列, 再依次 提取数据地址第三低位为 1 的数据组成第四数据子序列, 将第三数据子序列排列在前, 第 四数据子序列排列在后 ;
     第三、 第四数据子序列中的数据个数均为 256, 完成这一步骤如果采用 n = 32 的压 缩装置同样需要 64 个时钟周期 ;
     S404、 继续对上一步骤得到的每一个数据子序列, 按数据地址从小到大的顺序, 依 次提取数据地址第四低位为 0 的数据组成第五数据子序列, 再依次提取数据地址第四低位 为 1 的数据组成第六数据子序列, 并将第五数据子序列排列在前, 第六数据子序列排列在 后;
     第五、 第六数据子序列中的数据个数为 128 个, 完成这一步骤如果采用 n = 32 的 压缩装置同样需要 64 个时钟周期 ;
     S405、 继续对上一步骤得到的每一个数据子序列, 按数据地址从小到大的顺序, 依 次提取数据地址第五低位为 0 的数据组成第七数据子序列, 再依次提取数据地址第六低位
     为 1 的数据组成第八数据子序列, 并将第七数据子序列排列在前, 第八数据子序列排列在 后;
     第七、 第八数据子序列中的数据个数为 64 个, 完成这一步骤同样 n = 32 的压缩装 置同样需要 64 个时钟周期 ;
     S406、 继续对上一步骤得到的每一个数据子序列, 按数据地址从小到大的顺序, 依 次提取数据地址第六低位为 0 的数据组成第九数据子序列, 再依次提取数据地址第七低位 为 1 的数据组成第十数据子序列, 并将第九数据子序列排列在前, 第十数据子序列排列在 后;
     第九、 第十数据子序列中的数据个数为 32 个, 完成这一步骤同样 n = 32 的压缩装 置同样需要 64 个时钟周期 ;
     S407、 将步骤 S406 中得到的每一个数据子序列中的数据进行序列内的倒序, 得到 最终的倒序存储的数据。
     序列内排序可以采用单步倒序装置实现, 如图 7 所示, 为单步 32 点倒序装置的示 意图, 采用两个寄存器组成, 第一寄存器的地址 0 的数据输出端连接第二寄存器的地址 0 数 据输入端, 第一寄存器的地址 1 的数据输出端连接第二寄存器的地址 16 数据输入端, 第一 寄存器的地址 2 数据输出端连接第二寄存器的地址 8 数据输入端, 等等。 当然, 也可以在步骤 S401 到步骤 S406 中的任意步骤, 当划分的数据子序列中的数 据到达或小于设定值时, 直接执行步骤 S407, 进行序列内倒序。
     当不执行步骤 S406, 对步骤 S405 得到的每一个数据子序列, 执行步骤 S407, 则在 步骤 S407 中的对序列内的数据进行序列内倒序时, 则需要采用单步 64 点倒序装置。
     当然, 单步倒序装置也可以设计成任意点数的单步 n 点倒序装置, 但 n 越大, 需要 的硬件资源越多, 需要的倒序时间越少, 综合考虑倒序时间以及需要的硬件资源, 可以在点 数较多时, 先采用步骤 S401 ~ S406 的分组方式, 将 N 点序列分为若干个子序列, 对每一个 子序列的序列内倒序, 因为点数较少, 则可以采用单步倒序装置直接实现, 这样就可以综合 考虑硬件资源以及节省了倒序时间。
     如图 5 所示, 为本发明实施例提供的 2048 点 FFT 倒序过程示意图。
     采用上述倒序方法, 如果采用 n = 32 的 2 倍数据压缩装置, 且步骤 S407 中采用单 步 32 点倒序装置, 最终需要消耗的时间为 64*7 = 448 个时钟周期, 相比现有的 FFT 倒序需 要 2048 个时钟周期, 节省了倒序时间。
     上述实施例只给出了基 2 的 FFT/DFT 的倒序方法, 下面详细描述对混合基的 FFT/ DFT 的倒序方法。
     实施例三
     如图 8 所示, 为本发明实施例提供的采用基 2、 基 3、 基 5 计算的 N = 30 点 FFT/DFT 的倒序方法流程图, 具体包括 :
     N = 30, 即存储器中共存储 30 个数据, 需要 30 个数据地址, 30 个数据地址采用混 合基表示为 c3c2c1,
     S801、 按数据地址从小到大的顺序依次从 N 个数据中, 分别提取数据地址最低位 为 0 的数据组成第一数据序列, 最低位为 1 的数据组成第二数据序列, 最低位为 2 的数据组 成第三数据序列, 最低位为 3 的数据组成第四数据子序列, 最低位为 4 的数据组成第五数据
     子序列, 并将五个数据序列按数据地址最低位从小到大排列 ;
     因为地址 c3c2c1 采用顺序为基 2、 基 3、 基 5 的表示方法, 因此, 最低位 c1 可能是 0 ~ 4, 倒数第二位 c2 可能是 0 ~ 2, 倒数第三位 c3 可能是 0、 1;
     此步骤中, 从 30 个数据中, 分别依次提取 c1 为 0 ~ 4 的数据组成五个数据子序列, 并将子序列按 c1 从小到大排列 ;
     完成此步, 需要采用 5 个时钟周期 ;
     S802、 对每一个数据子序列, 执行 : 按数据地址从小到大的顺次依次从每一个数据 子序列的 M 个数据中, 分别提取数据地址次低位为 0 ~ 2 的数据组成三个数据子序列, 并将 三个子序列按数据地址次低位从小到大排列 ;
     此步骤中, 从每一个子序列的 6 个数据中, 分别依次提取 c2 为 0 ~ 2 的数据组成 三个数据子序列, 并将数据子序列按 c2 从小到大排列, 完成对 30 个点数据的倒序。
     完成此步, 对每一个数据子序列, 需要 3 个时钟周期, 因此, 此步共需要 15 个时钟 周期。
     如图 9 所示, 为本发明实施例提供的采用基 2、 基 3、 基 5 计算的 N = 30 点 FFT/DFT 的倒序过程示意图。 采用这种倒序方法, 在步骤 S801 中需要 5 个时钟周期, 在步骤 S802 中需要 15 个 时钟周期, 共需要 20 个时钟周期, 相比传统倒序方法需要 30 个时钟周期, 节省了倒序时间。 尤其对点数较多的 DFT 变换, 节省的时间更多。
     实施例四
     下面以 1200 点 FFT 为例, 详细介绍混合基的 FFT 倒序方法。
     如图 10 所示, 为本发明实施例提供的 N = 1200 点 FFT 的倒序方法流程图, 采用的 地址表示方式为基顺序为基 3、 基 2、 基 2、 基 2、 基 2、 基 5、 基 5。
     S1001、 将 1200 个数据从存储器中按数据地址从小到大依次分别提取最低位为 0 ~ 4 的数据组成五个数据子序列, 并将五个数据子序列按地址最低位值从小到大排列 ;
     其中, 数据压缩装置可以采用 p 倍数据压缩装置, p 倍数据压缩装置具体示意图如 图 12 所示, 采用两个寄存器组成, 第一寄存器的地址 0 数据输出端连接第二寄存器的地址 0 数据输入端, 第一寄存器的地址 p 数据输出端连接第二寄存器的地址 1 数据输入端, 依次 类推, 第一寄存器的地址 pn-p 数据输出端连接第二寄存器的地址 n-1 数据输入端 ;
     其中, p 可以根据需要设置, p 倍数据压缩装置的作用即是从每 p 个数据中提取一 个数据, n 同样可以根据需要设置 ;
     例如 : 在步骤 S1001 中, 最低位地址为 0 ~ 4, 因此需要提取低位为 0 的数据组成数 据子序列, 则需要每 5 个数据中提取一个数据, 因此需要采用 p = 5 的 5 倍数据压缩装置 ;
     S1002、 对每一个数据子序列执行 : 将数据序列的 240 个数据按数据地址从小到大 依次输入数据压缩装置中, 分别提取数据地址次低位为 0 ~ 4 的数据组成五个数据子序列, 并将五个数据子序列按数据地址次低位从小到大的顺序排列 ;
     S1003、 对上述步骤中的每一个数据子序列, 共 48 个数据, 根据数据地址第三低位 依次进行数据提取组成数据子序列, 并将各数据子序列按数据地址第三低位从小到大的顺 序排列 ;
     具体的提取方式和步骤 S1002 中相同, 数据地址第三低位共 2 个值, 0、 1, 因此分别
     根据第三低位地址为 0 提取, 第三低位地址为 1 进行提取 ;
     S1004、 对上述步骤中得到的的每一个数据子序列, 共 24 个数据, 根据数据地址第 四低位依次进行数据提取组成数据子序列, 并将各数据子序列按数据地址第四低位从小到 大的顺序排列 ;
     经过此步划分后, 得到的每个数据子序列中的数据个数为 12 ;
     S1005、 将得到的每一个数据子序列中的数据进行序列内的倒序, 得到最终的倒序 数据。
     其中, 各序列内数据的倒序同样可以采用单步倒序装置实现, 在本步中, 每一个数 据子序列中包含 12 个数据, 可以采用 12 点单步倒序装置实现。
     如图 13 所示, 为单步 12 点倒序装置的示意图, 采用两个寄存器组成, 第一寄存器 的地址 0 的数据输出端连接第二寄存器的地址 0 数据输入端, 第一寄存器的地址 1 的数据 输出端连接第二寄存器的地址 6 数据输入端, 第一寄存器的地址 2 数据输出端连接第二寄 存器的地址 3 数据输入端, 第一寄存器地址 3 数据输出端连接第二寄存器地址 9 数据输入 端, 第一寄存器地址 n 数据输出端连接第二寄存器地址 m 数据输入端, 地址采用基 3、 基 2、 基 2 表示, 则 n 采用混合进制位串表示 (c3c2c1, 从右向左进位 ), n = c3*2*2+c2*2+c1, m 采用混合进制位串表示 (c3c2c1, 从左向右进位 ), m = c3+c2*2+c1*2*2。
     同样, 可以对步骤 S704 得到的每一个子序列再进行数据提取, 则进一步又将每一 个子序列分成两个子序列, 则之后每一个子序列中包含 6 个数据, 则可以采用 6 点单步倒序 装置实现序列内倒序, 或者一直划分, 直到每个数据子序列中只包含 2 个数据, 则不需要进 行序列内倒序, 就得到最终的倒序数据。
     当然, 也可以在步骤 S1001-S1004 中任意步骤后, 直接执行步骤 S1005, 对得到的 数据子序列进行序列内倒序。
     如图 11 所示, 为 1200 点 FFT 倒序过程示意图。
     本发明实施例还提供一种 FFT/DFT 倒序装置, 如图 14 所示, 包括 :
     数据序列划分模块 141, 用于在对信号进行 FFT/DFT 过程中, 将存储单元中数据地 址最低位相同的数据分别组成数据序列, 并在各数据序列内部, 各数据按数据地址从小到 大排列, 各数据序列之间, 各数据按数据地址最低位从小到大排列 ;
     数据子序列划分模块 142, 用于对各数据序列分别执行 : 将未经过排序处理的最 低地址位相同的数据分别组成数据子序列, 并在各数据子序列内部, 各数据按数据地址从 小到大排列, 各数据子序列之间, 各数据按未经过排序处理的最低地址位从小到大排列, 对 得到的各数据子序列, 返回继续执行将未经过排序处理的最低地址位相同的数据分别组成 数据子序列的步骤, 直到得到的各数据子序列中的数据小于设定值, 其中, 所述未经过排序 处理的最低地址位指各数据的数据地址中不相同地址位的最低位 ;
     序列内倒序模块 143, 用于对数据子序列最终得到的各数据子序列分别进行序列 内倒序。
     其中, 当采用基 2 算法的 FFT/DFT 时, 序列内倒序模块 143, 具体用于对数据子序 m 列中的 N = 2 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地址为二进 制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的地址 K’ 为二进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,其中, 当采用混合基算法的 FFT/DFT 时, 序列内倒序模块 143, 具体用于对数据子 序列中的 N = p1p2...pm 个数据, 将第 K 个数据排列到第 K’ 位, 其中, 第 K 个数据的数据地 址为混合进制位串 c1kc2k...cm-1,kcmk, 地址进位方式为从右向左进位, 则倒序后的地址 K’ 为 混合进制位串 c1kc2k...cm-1, 进位方式为从左向右进位。 kcmk,
     显然, 本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样, 倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内, 则本发明也意图包含这些改动和变型在内。

一种FFT/DFT倒序方法和装置.pdf_第1页
第1页 / 共22页
一种FFT/DFT倒序方法和装置.pdf_第2页
第2页 / 共22页
一种FFT/DFT倒序方法和装置.pdf_第3页
第3页 / 共22页
点击查看更多>>
资源描述

《一种FFT/DFT倒序方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种FFT/DFT倒序方法和装置.pdf(22页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102346728A43申请公布日20120208CN102346728ACN102346728A21申请号201010244292522申请日20100729G06F17/1420060171申请人中兴通讯股份有限公司地址518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部72发明人肖海勇74专利代理机构北京同达信恒知识产权代理有限公司11291代理人李娟54发明名称一种FFT/DFT倒序方法和装置57摘要本发明涉及通信领域,公开了一种FFT/DFT倒序方法和装置,能够减少信号处理过程中的FFT/DFT倒序时间,提高了矢量处理器的利用效率。本发明的FFT/。

2、DFT倒序方法包括在对信号进行FFT/DFT的过程中,通过对存储单元中的数据按数据地址最低位到最高位依次数据划分,得到数据子序列,并对数据子序列进行序列内倒序,得到最终的数据倒序结果。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书11页附图8页CN102346748A1/2页21一种快速傅里叶变换FFT/离散傅里叶变换DFT倒序方法,其特征在于,包括A、在对信号进行FFT/DFT过程中,将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列;B、对各数据序列分。

3、别执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列,并在各数据子序列内部,各数据按数据地址从小到大排列,各数据子序列之间,各数据按未经过排序处理的最低地址位从小到大排列,其中,所述未经过排序处理的最低地址位指各数据的数据地址中不相同地址位的最低位;C、对各数据子序列,返回步骤B中将未经过排序处理的最低地址位相同的数据分别组成数据子序列的步骤,直到得到的各数据子序列中的数据小于设定值;D、对步骤C中得到的各数据子序列分别进行序列内倒序。2如权利要求1所述的方法,其特征在于,当采用基2算法的FFT/DFT时,所述步骤D中的进行序列内倒序具体为对数据子序列中的N2M个数据,将第K个数据排。

4、列到第K位,其中,第K个数据的数据地址为二进制位串C1KC2KCM1,KMK,地址进位方式为从右向左进位,则倒序后的地址K为二进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。3如权利要求1所述的方法,其特征在于,当采用混合基算法的FFT/DFT时,所述步骤D中的进行序列内倒序具体为对数据子序列中的NP1P2PM个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为混合进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为混合进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。4如权利要求1所述的方法,其特征在于,当采用基2算法的FF。

5、T/DFT时,所述将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列具体为将存储单元中的数据按照数据地址从小到大依次提取数据地址最低位为0的数据组成第一数据序列,按照数据地址从小到大依次提取数据地址最低位为1的数据组成第二数据序列;将第一数据序列排列在前,第二数据序列排列在后。5如权利要求1所述的方法,其特征在于,当采用混合基P1P2PM算法的FFT/DFT时,所述将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按。

6、数据地址最低位从小到大排列具体为将存储单元中的数据按照数据地址从小到大依次分别提取数据地址最低位为0到PM11的数据组成PM个数据序列;将各数据子序列按照数据地址最低位从小到大排列。6如权利要求1所述的方法,其特征在于,当所述设定值小于等于3时,则不必执行步骤D。7一种快速傅里叶变换FFT/离散傅里叶变换DFT倒序装置,其特征在于,包括数据序列划分模块,用于在对信号进行FFT/DFT过程中,将存储单元中数据地址最低权利要求书CN102346728ACN102346748A2/2页3位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最。

7、低位从小到大排列;数据子序列划分模块,用于对各数据序列分别执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列,并在各数据子序列内部,各数据按数据地址从小到大排列,各数据子序列之间,各数据按未经过排序处理的最低地址位从小到大排列,对得到的各数据子序列,返回继续执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列的步骤,直到得到的各数据子序列中的数据小于设定值,其中,所述未经过排序处理的最低地址位指各数据的数据地址中不相同地址位的最低位;序列内倒序模块,用于对数据子序列最终得到的各数据子序列分别进行序列内倒序。8如权利要求7所述的装置,其特征在于,当采用基2算法的FFT/DFT时。

8、,序列内倒序模块,具体用于对数据子序列中的N2M个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为二进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为二进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。9如权利要求7所述的装置,其特征在于,当采用混合基算法的FFT/DFT时,序列内倒序模块,具体用于对数据子序列中的NP1P2PM个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为混合进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为混合进制位串C1KC2KCM1,KCMK,进位方式为从左向右进。

9、位。权利要求书CN102346728ACN102346748A1/11页4一种FFT/DFT倒序方法和装置技术领域0001本发明涉及通信领域,尤其涉及一种FFT/DFT倒序方法和装置。背景技术0002FFT快速傅里叶变换,FASTFOURIERTRANSFORM和DFT离散傅里叶变换,DISCRETEFOURIERTRANSFORM广泛应用于进行信号处理的通信系统中,尤其是涉及OFDM的LTE、CMMB、DVB、DAB等通信系统中。传统的FFT/DFT算法,无论是时间抽取DIT还是频率抽取DIF算法,在对抽取的信号进行FFT/DFT过程中,都需要对存储单元中的输入数据或者输出数据进行一次倒序操。

10、作。输入数据可以是正序输入存储到存储单元中,蝶形运算结束后再对存储单元中的数据进行一次倒序操作得到最终结果,或者首先对输入数据进行一次倒序操作存储到存储单元中,而后蝶形运算得到最终结果。0003传统的倒序操作通常是缓存所有的数据,而后逐个顺序的读出数据,每个数据计算相应的倒序后地址,然后按倒序后地址写回缓存。或者是按倒序的顺序逐个的读出数据,再按顺序逐个写回缓存。例如NP1P2PM点的DFT,若按基P1,基P2,基PM的顺序进行M级的DFT运算,那么对于N点的数据地址编号0到N1,每个数据可以得到其地址编号唯一的P1,P2,PM混合进制表示方式,第K个数据有唯一的地址表示方式0004KCMKC。

11、M1,KC2KC1KCMKPM1P1CM1,KPM2P1C2KP1C1K0CIKPIK10005上式的进位方式为从右向左进位,第K个数据倒序后的地址为0006KC1KC2KCM1,KCMKC1KPM1P1C2KPM2P1CM1,KP1CMK0007上式的进位方式同样为从右向左进位;如果采用从左向右进位,则倒序后地址KCMKCM1,KC2KC1K,该数据倒序后地址的比特序列和该数据倒序前地址的比特序列相同,但由于倒序后采用从左向右的进位方式,因此,倒序后的实际地址已变。例如若倒序前后都采用从右向左的进位表示方式,且P1P2PM2,C1KC2KCMK为数据倒序前的二进制地址,那么将该地址的二进制位。

12、串左右颠倒得到的二进制位串CMKCM1,KC1K即为第K个数据倒序后的二进制地址。0008但现有的倒序方法由于通常采用串行顺序实现,即需要对每个数据计算倒序后的地址,并依次进行倒序,这样在FFT/DFT点数较多时进行倒序操作需要消耗的时间也比较大。例如LTE系统中的2048点FFT需要消耗2048个时钟周期的时间。在FFT/DFT采用矢量处理器计算实现时,倒序需要消耗的时间甚至会数倍于矢量处理器蝶形运算时间,导致矢量处理器的利用率大大降低。发明内容0009本发明提供一种FFT/DFT倒序方法及装置,减少了数据的FFT/DFT倒序时间,提高了矢量处理器的利用效率。0010一种FFT/DFT倒序方。

13、法,包括0011A、在对信号进行FFT/DFT过程中,将存储单元中数据地址最低位相同的数据分别说明书CN102346728ACN102346748A2/11页5组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列;0012B、对各数据序列分别执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列,并在各数据子序列内部,各数据按数据地址从小到大排列,各数据子序列之间,各数据按未经过排序处理的最低地址位从小到大排列,其中,所述未经过排序处理的最低地址位指各数据的数据地址中不相同地址位的最低位;0013C、对各数据子序列,返回步骤B。

14、中将未经过排序处理的最低地址位相同的数据分别组成数据子序列的步骤,直到得到的各数据子序列中的数据小于设定值;0014D、对步骤C中得到的各数据子序列分别进行序列内倒序。0015其中,当采用基2算法的FFT/DFT时,所述步骤D中的进行序列内倒序具体为0016对数据子序列中的N2M个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为二进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为二进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0017其中,当采用混合基算法的FFT/DFT时,所述步骤D中的进行序列内倒序具体为0018对数据子序列中的。

15、NP1P2PM个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为混合进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为混合进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0019其中,当采用基2算法的FFT/DFT时,所述将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列具体为0020将存储单元中的数据按照数据地址从小到大依次提取数据地址最低位为0的数据组成第一数据序列,按照数据地址从小到大依次提取数据地址最低位为1的数据组成第二数。

16、据序列;0021将第一数据序列排列在前,第二数据序列排列在后。0022其中,当采用混合基P1P2PM算法的FFT/DFT时,所述将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列具体为0023将存储单元中的数据按照数据地址从小到大依次分别提取数据地址最低位为0到PM11的数据组成PM个数据序列;0024将各数据子序列按照数据地址最低位从小到大排列。0025其中,当所述设定值小于等于3时,则不必执行步骤D。0026一种FFT/DFT倒序装置,包括0027数据序列划分模块,用于在对信号进行FFT。

17、/DFT过程中,将存储单元中数据地址最低位相同的数据分别组成数据序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,各数据按数据地址最低位从小到大排列;0028数据子序列划分模块,用于对各数据序列分别执行将未经过排序处理的最低地址位相同的数据分别组成数据子序列,并在各数据子序列内部,各数据按数据地址从小到大排列,各数据子序列之间,各数据按未经过排序处理的最低地址位从小到大排列,对得到的各数据子序列,返回继续执行将未经过排序处理的最低地址位相同的数据分别组成数据说明书CN102346728ACN102346748A3/11页6子序列的步骤,直到得到的各数据子序列中的数据小于设。

18、定值,其中,所述未经过排序处理的最低地址位指各数据的数据地址中不相同地址位的最低位;0029序列内倒序模块,用于对数据子序列最终得到的各数据子序列分别进行序列内倒序。0030其中,当采用基2算法的FFT/DFT时,序列内倒序模块,具体用于对数据子序列中的N2M个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为二进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为二进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0031其中,当采用混合基算法的FFT/DFT时,序列内倒序模块,具体用于对数据子序列中的NP1P2PM个数据,将第K个数据排列。

19、到第K位,其中,第K个数据的数据地址为混合进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为混合进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0032本发明提供的FFT/DFT倒序方法,通过对存储单元中的数据按数据地址最低位到最高位依次数据划分,得到数据子序列,并对数据子序列进行序列内倒序,得到最终的数据倒序结果。采用本发明的方法,相对传统的FFT/DFT倒序方法,节省了倒序时间,提高了矢量处理器的利用效率。附图说明0033图1为本发明实施例提供的FFT/DFT的倒序方法流程图;0034图2为本发明实施例提供的N2416点的FFT的倒序方法流程。

20、图;0035图3为本发明实施例提供的16点FFT倒序过程示意图;0036图4为本发明实施例提供的N2612048点FFT的倒序方法流程图;0037图5为本发明实施例提供的2048点FFT倒序过程示意图;0038图6为2倍数据压缩装置示意图;0039图7为单步32点倒序装置的示意图;0040图8为本发明实施例提供的采用基2、基3、基5计算的N30点FFT/DFT的倒序方法流程图;0041图9为本发明实施例提供的采用基2、基3、基5计算的N30点FFT/DFT的倒序过程示意图;0042图10为本发明实施例提供的N1200点FFT的倒序方法流程图;0043图11为本发明实施例提供的1200点FFT倒。

21、序过程示意图;0044图12为本发明实施例提供的P倍数据压缩装置示意图;0045图13为本发明实施例提供的单步12点倒序装置的示意图;0046图14为本发明实施例提供的FFT/DFT倒序装置结构图。具体实施方式0047基于现有的FFT/DFT倒序方法,在进行傅里叶变换时,需要对存储单元中各数据地址中的每一数据计算倒序后地址,并将该数据存入倒序后地址中,需要消耗大量的时间。0048本发明实施例提供一种FFT/DFT的倒序方法及装置,通过对存储单元中数据按照说明书CN102346728ACN102346748A4/11页7数据地址最低位到最高位依次进行数据分组,第一次分别将最低位相同的数据划分为一。

22、个数据序列,并顺序对各数据序列排序;再分别对每一个划分的数据序列,将次低位相同的数据划分为一个数据子序列,并按顺序对各数据子序列进行排序,对各数据子序列,再按照地址第三低位进行划分,并排序,依次类推,直到划分的数据子序列中的数据小于设定值,对各数据子序列的数据直接进行序列内排序,得到最终的数据倒序排列。采用本发明的方法,不需要对存储单元中的每一个数据地址中的数据进行倒序后地址计算,节省了FFT/DFT倒序操作的时间。0049如图1所示,为本发明实施例提供的FFT/DFT的倒序方法流程图,具体包括0050S101、在对信号进行FFT/DFT过程中,将存储单元中数据地址最低位相同的数据分别组成数据。

23、序列,并在各数据序列内部,各数据按数据地址从小到大排列,各数据序列之间,按数据地址最低位从小到大排列,并称数据地址最低位已经过排序处理;0051例如对于点数为NP1P2PM的FFT/DFT,NP1P2PM表示采用基P1,基P2,基PM的顺序进行FFT/DFT运算,则数据地址同样采用混合进制P1P2PM表示,则数据地址最低位共有PM个值,为0到PM1,即对于数据个数为NP1P2PM的FFT/DFT,按照存储单元中数据地址从小到大依次提取数据地址最低位分别为0到PM1的数据,组成PM个数据序列,并对各数据序列按数据地址最低位从小到大排列;0052S102、分别对每一个数据序列,将未经过排序处理的最。

24、低地址位相同的数据分别组成数据子序列,并在各数据子序列内部,各数据按数据地址从小到大排列,各数据子序列之间,各数据按数据地址相同位的前一地址位从小到大排列,其中,未经过排序处理的最低地址位指各数据的数据地址中不相同地址位的最低位;0053并且经过该步处理后,则该最低地址位就为经过排序处理;0054例如对步骤S101中得到的数据地址最低位为0的数据序列,则数据地址中不相同的地址位为次低位至最高位,将未经过排序处理的最低地址位,即次低位相同的数据分别组成数据子序列,地址次低位共有PM1个值,为0到PM11,即按照数据地址从小到大对地址最低位为0的数据序列分别提取次低位地址为0的数据,组成第一数据子。

25、序列,再按照数据地址从小到大依次提取次低位地址为1的数据,组成第二数据子序列,依次类推,直到按照数据地址从小到大依次提取次低位地址为PM11的数据,组成第PM1数据子序列,则在每一数据子序列内部,各数据按数据地址从小到大排列,对各数据子序列按照次低位从小到大排列;0055依次对步骤S101中得到的数据地址最低位为1到PM1的数据序列均进行上述处理;0056S103、对各数据子序列,继续根据步骤S102中的方法进行数据子序列的划分,直到得到的各数据子序列中的数据小于设定值;0057对步骤S102中得到的数据各数据子序列,继续按照上一步骤的将未经过排序处理的最低地址位的值进行序列划分,划分方法和步。

26、骤S102中数据序列的划分方法相同,直到最后划分的各数据子序列中的数据小于设定值;0058S104、对步骤S103中最终得到的各数据子序列,分别进行序列内倒序。0059其中,当设定值为3时,即在步骤S103中,可以返回步骤S102中一直进行数据序列的划分,直到最后得到的数据子序列只有两个数据,因为各数据子序列中的数据是按地说明书CN102346728ACN102346748A5/11页8址从小到大排列,因此不用对该两个数据进行序列内的倒序,即得到最终的倒序排列的数据。这样可以不必执行步骤S104。但这样最后得到的各数据子序列越来越短,这样在进行最后几次的分组操作时,每次消耗较多的时间;0060。

27、因此,设定值的选择一般大于3,当划分的数据子序列内的数据到达或小于设定值时,就可以不再对数据子序列进行划分,而直接执行步骤S104,对各数据子序列内的数据进行序列内倒序,这样可以将最后的几次效率低下的序列划分操作合并为一步实现。0061当采用基2算法的FFT/DFT时,步骤S104中的进行序列内倒序具体为0062对数据子序列中的N2M个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为二进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为二进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0063当采用混合基算法的FFT/DFT时,步骤S1。

28、04中的进行序列内倒序具体为0064对数据子序列中的NP1P2PM个数据,将第K个数据排列到第K位,其中,第K个数据的数据地址为混合进制位串C1KC2KCM1,KCMK,地址进位方式为从右向左进位,则倒序后的地址K为混合进制位串C1KC2KCM1,KCMK,进位方式为从左向右进位。0065具体的序列内倒序可以采用单步倒序装置实现,单步倒序装置采用两个地址数相同的寄存器组成,第一寄存器的每一数据输出端连接对应的第二寄存器的数据输入端。例如第2个数据,如果倒序后的地址为第8位,则将第一寄存器中的地址1的数据输出端连接第二寄存器的地址7的数据输入端,第一寄存器中的每一地址均与倒序后对应的地址连接,即。

29、可以实现单步倒序装置。0066当采用基2算法的FFT/DFT时,第一寄存器的地址C1KC2KCM1,KCMK二进制位串,进位方式为从右向左进位数据输出端连接第二寄存器的地址C1KC2KCM1,KCMKC1KC2KCM1,KCMK二进制位串,进位方式为从右向左进位的数据输入端。进行序列内倒序,即将第一寄存器的数据按上述寄存器地址的连接关系输入第二寄存器,即完成序列内的倒序。0067当采用混合基算法的FFT/DFT时,第一寄存器的地址C1KC2KCM1,KCMK混合进制位串,进位方式为从右向左进位数据输出端连接第二寄存器的地址C1KC2KCM1,KCMKC1KC2KCM1,KCMK混合进制位串,进。

30、位方式为从左向右进位的数据输入端。进行序列内倒序,即将第一寄存器的数据按上述寄存器地址的连接关系输入第二寄存器,即完成序列内的倒序。0068例如各数据子序列中只有32个数据时,并且采用基2的FFT/DFT算法,采用单步倒序装置,第一寄存器的每一数据输出端连接对应的第二寄存器的数据输入端,将第一寄存器中地址0的数据连接第二寄存器的地址0,第一寄存器中地址1的数据连接第二寄存器的地址16,第一寄存器地址2的数据连接第二寄存器的地址7,第一寄存器地址NC5C4C3C2C1,从右向左进位的数据连接第二寄存器的地址MC5C4C3C2C1,从左向右进位。0069假设采用混合基NP1P2PM的FFT/DFT。

31、算法,采用单步倒序装置,则第一寄存器的第N个数据地址P1P2PM,从右向左进位输入第二寄存器的第M位地址P1P2PM,从左向右进位。0070实施例一说明书CN102346728ACN102346748A6/11页90071下面以16点FFT为例,详细说明本发明实施例提供的FFT倒序方法。0072如图2所示,为本发明实施例提供的N2416点的FFT的倒序方法流程图,具体包括0073N16,即存储器中共存储16个数据,需要16个数据地址,16个数据地址采用基2表示为C4C3C2C1,FFT倒序即是要对16个数据地址每一个确定倒序后的地址,并将该数据地址中的数据存储到倒序后的地址中。0074S201。

32、、按数据地址从小到大的顺序依次从存储单元的N个数据中,提取数据地址最低位为0的数据组成第一数据序列,再依次提取数据地址最低位为1的数据组成第二数据序列,并将第一数据序列排列在前,第二数据序列排列在后;0075即按数据地址从小到大的顺序依次从16个数据中提取C1为0的数据组成第一数据序列,提取C1为1的数据组成第二数据序列;0076在具体的实现中,可以采用数据压缩装置,从16个数据中先提取C1为0的8个数据,只需要一个时钟周期,再提取C1为1的8个数据,又只需一个时钟周期;因此,该步需要2个时钟周期;0077S202、对每一数据序列的M个数据继续执行按数据地址从小到大的顺次,依次提取数据地址次低。

33、位为0的数据组成第一数据子序列,并提取数据地址次低位为1的数据组成第二数据子序列,并将第一数据子序列排在M个数据的前半部分,第二子序列排在M个数据的后半部分;0078即对第一数据序列按数据地址从小到大的顺序,依次从8个数据中提取C2为0的数据组成第一数据子序列,提取C2为1的数据组成第二数据子序列,并将第一数据子序列排在8个数据的前半部分,第二数据子序列排在8个数据的后半部分;0079S203、对步骤S202中得到的每一个数据子序列继续执行按照数据地址从小到大的顺次,依次提取数据地址第三低位为0的数据组成第三数据子序列,并提取数据地址第三低位为1的数据组成第四数据子序列,并将第三数据子序列排在。

34、该子序列的前半部分,第四子序列排在该子序列的后半部分;0080对第一数据子序列,按数据地址从小到大的顺序,从4个数据中提取C3为0的数据组成第三数据子序列,提取C3为1的数据组成第四数据子序列,并将第三数据子序列排在该4个数据的前半部分,第四数据子序列排在该4个数据的后半部分,即完成对该16个数据的倒序。0081如图3所示,为本发明实施例提供的16点FFT倒序过程示意图;0082采用这种倒序方法,即实现了16点数据的FFT倒序过程,相对传统的倒序过程,需要对每一个数据计算倒序后的数据地址,需要16个时钟周期,采用本发明的方法,在步骤S201中,只需要2个时钟周期,步骤S202中,每一次提取需要。

35、1个时钟周期,共提取4次,需要4个时钟周期,步骤S203中,共需要8个时钟周期,因此,采用本发明的方法,需要14个时钟周期,相对于传统的倒序方法,节省了时间。尤其对点数较多的FFT变换,节省的时间更多。0083实施例二0084如图4所示,为本发明实施例提供的N2612048点FFT的倒序方法流程图,具体包括说明书CN102346728ACN102346748A7/11页100085S401将2048个数据从存储器中按数据地址从小到大依次提取地址最低位为0的数据组成第一数据序列,再提取数据地址最低位为1的数据组成第二数据序列,并且第一数据子序列排列在前,第二数据子序列排列在后;0086其中,具体。

36、的提取方法可以采用数据压缩装置,将2048个数据按数据地址从小到大依次输入数据压缩装置中,进行提取。0087其中,数据压缩装置可以采用2倍数据压缩装置,2倍数据压缩装置具体示意图如图6所示,采用两个寄存器组成,第一寄存器的地址0数据输出端连接第二寄存器的地址0数据输入端,第一寄存器的地址2数据输出端连接第二寄存器的地址1数据输入端,第一寄存器的地址4数据输出端连接第二寄存器的地址2数据输入端,依次类推,第一寄存器的地址2N2数据输出端连接第二寄存器的地址N1数据输入端。0088其中,数据压缩装置的N可以任意设置,如采用N1024的数据压缩装置,则提取地址最低位为0的数据组成第一数据序列,只需要。

37、一个时钟周期,再提取地址最低位为1的数据组成第二数据序列,又只需一个时钟周期。本步只需要两个时钟周期即可完成。0089若采用N32的数据压缩装置,则需要按数据地址从小到大每次输入64个连续数据到数据压缩装置中进行地址最低位为0、以及地址最低位为1的数据提取,64个周期后即可获得两个长度为1024的数据序列,且第一数据序列的地址最低位为0,第二数据地址最低位为1。0090S402对每一个数据序列执行将数据序列的1024个数据按地址从小到大依次提取地址次低位为0的数据组成第一数据子序列,再提取数据地址次低位为1的数据组成第二数据子序列,将第一数据子序列排列在前,第二数据子序列排列在后;0091此步。

38、中,数据压缩装置的N最大可以设置为1024/2,如采用N512的数据压缩装置,则对每一个数据序列只需要两个周期即可实现第一数据子序列、第二数据子序列的提取,本步骤则只需要4个周期即可完成。0092若采用N32的数据压缩装置,则对每一个数据序列的1024个数据,则需要32个周期完成第一数据子序列、第二数据子序列的提取,本步骤则需要64个周期完成。0093S403、对步骤S402得到的2个数据子序列,依次对每一个数据子序列,根据数据地址从小到大的顺序,依次提取数据地址第三低位为0的数据组成第三数据子序列,再依次提取数据地址第三低位为1的数据组成第四数据子序列,将第三数据子序列排列在前,第四数据子序。

39、列排列在后;0094第三、第四数据子序列中的数据个数均为256,完成这一步骤如果采用N32的压缩装置同样需要64个时钟周期;0095S404、继续对上一步骤得到的每一个数据子序列,按数据地址从小到大的顺序,依次提取数据地址第四低位为0的数据组成第五数据子序列,再依次提取数据地址第四低位为1的数据组成第六数据子序列,并将第五数据子序列排列在前,第六数据子序列排列在后;0096第五、第六数据子序列中的数据个数为128个,完成这一步骤如果采用N32的压缩装置同样需要64个时钟周期;0097S405、继续对上一步骤得到的每一个数据子序列,按数据地址从小到大的顺序,依次提取数据地址第五低位为0的数据组成。

40、第七数据子序列,再依次提取数据地址第六低位说明书CN102346728ACN102346748A8/11页11为1的数据组成第八数据子序列,并将第七数据子序列排列在前,第八数据子序列排列在后;0098第七、第八数据子序列中的数据个数为64个,完成这一步骤同样N32的压缩装置同样需要64个时钟周期;0099S406、继续对上一步骤得到的每一个数据子序列,按数据地址从小到大的顺序,依次提取数据地址第六低位为0的数据组成第九数据子序列,再依次提取数据地址第七低位为1的数据组成第十数据子序列,并将第九数据子序列排列在前,第十数据子序列排列在后;0100第九、第十数据子序列中的数据个数为32个,完成这一。

41、步骤同样N32的压缩装置同样需要64个时钟周期;0101S407、将步骤S406中得到的每一个数据子序列中的数据进行序列内的倒序,得到最终的倒序存储的数据。0102序列内排序可以采用单步倒序装置实现,如图7所示,为单步32点倒序装置的示意图,采用两个寄存器组成,第一寄存器的地址0的数据输出端连接第二寄存器的地址0数据输入端,第一寄存器的地址1的数据输出端连接第二寄存器的地址16数据输入端,第一寄存器的地址2数据输出端连接第二寄存器的地址8数据输入端,等等。0103当然,也可以在步骤S401到步骤S406中的任意步骤,当划分的数据子序列中的数据到达或小于设定值时,直接执行步骤S407,进行序列内。

42、倒序。0104当不执行步骤S406,对步骤S405得到的每一个数据子序列,执行步骤S407,则在步骤S407中的对序列内的数据进行序列内倒序时,则需要采用单步64点倒序装置。0105当然,单步倒序装置也可以设计成任意点数的单步N点倒序装置,但N越大,需要的硬件资源越多,需要的倒序时间越少,综合考虑倒序时间以及需要的硬件资源,可以在点数较多时,先采用步骤S401S406的分组方式,将N点序列分为若干个子序列,对每一个子序列的序列内倒序,因为点数较少,则可以采用单步倒序装置直接实现,这样就可以综合考虑硬件资源以及节省了倒序时间。0106如图5所示,为本发明实施例提供的2048点FFT倒序过程示意图。

43、。0107采用上述倒序方法,如果采用N32的2倍数据压缩装置,且步骤S407中采用单步32点倒序装置,最终需要消耗的时间为647448个时钟周期,相比现有的FFT倒序需要2048个时钟周期,节省了倒序时间。0108上述实施例只给出了基2的FFT/DFT的倒序方法,下面详细描述对混合基的FFT/DFT的倒序方法。0109实施例三0110如图8所示,为本发明实施例提供的采用基2、基3、基5计算的N30点FFT/DFT的倒序方法流程图,具体包括0111N30,即存储器中共存储30个数据,需要30个数据地址,30个数据地址采用混合基表示为C3C2C1,0112S801、按数据地址从小到大的顺序依次从N。

44、个数据中,分别提取数据地址最低位为0的数据组成第一数据序列,最低位为1的数据组成第二数据序列,最低位为2的数据组成第三数据序列,最低位为3的数据组成第四数据子序列,最低位为4的数据组成第五数据说明书CN102346728ACN102346748A9/11页12子序列,并将五个数据序列按数据地址最低位从小到大排列;0113因为地址C3C2C1采用顺序为基2、基3、基5的表示方法,因此,最低位C1可能是04,倒数第二位C2可能是02,倒数第三位C3可能是0、1;0114此步骤中,从30个数据中,分别依次提取C1为04的数据组成五个数据子序列,并将子序列按C1从小到大排列;0115完成此步,需要采用。

45、5个时钟周期;0116S802、对每一个数据子序列,执行按数据地址从小到大的顺次依次从每一个数据子序列的M个数据中,分别提取数据地址次低位为02的数据组成三个数据子序列,并将三个子序列按数据地址次低位从小到大排列;0117此步骤中,从每一个子序列的6个数据中,分别依次提取C2为02的数据组成三个数据子序列,并将数据子序列按C2从小到大排列,完成对30个点数据的倒序。0118完成此步,对每一个数据子序列,需要3个时钟周期,因此,此步共需要15个时钟周期。0119如图9所示,为本发明实施例提供的采用基2、基3、基5计算的N30点FFT/DFT的倒序过程示意图。0120采用这种倒序方法,在步骤S80。

46、1中需要5个时钟周期,在步骤S802中需要15个时钟周期,共需要20个时钟周期,相比传统倒序方法需要30个时钟周期,节省了倒序时间。尤其对点数较多的DFT变换,节省的时间更多。0121实施例四0122下面以1200点FFT为例,详细介绍混合基的FFT倒序方法。0123如图10所示,为本发明实施例提供的N1200点FFT的倒序方法流程图,采用的地址表示方式为基顺序为基3、基2、基2、基2、基2、基5、基5。0124S1001、将1200个数据从存储器中按数据地址从小到大依次分别提取最低位为04的数据组成五个数据子序列,并将五个数据子序列按地址最低位值从小到大排列;0125其中,数据压缩装置可以采。

47、用P倍数据压缩装置,P倍数据压缩装置具体示意图如图12所示,采用两个寄存器组成,第一寄存器的地址0数据输出端连接第二寄存器的地址0数据输入端,第一寄存器的地址P数据输出端连接第二寄存器的地址1数据输入端,依次类推,第一寄存器的地址PNP数据输出端连接第二寄存器的地址N1数据输入端;0126其中,P可以根据需要设置,P倍数据压缩装置的作用即是从每P个数据中提取一个数据,N同样可以根据需要设置;0127例如在步骤S1001中,最低位地址为04,因此需要提取低位为0的数据组成数据子序列,则需要每5个数据中提取一个数据,因此需要采用P5的5倍数据压缩装置;0128S1002、对每一个数据子序列执行将数。

48、据序列的240个数据按数据地址从小到大依次输入数据压缩装置中,分别提取数据地址次低位为04的数据组成五个数据子序列,并将五个数据子序列按数据地址次低位从小到大的顺序排列;0129S1003、对上述步骤中的每一个数据子序列,共48个数据,根据数据地址第三低位依次进行数据提取组成数据子序列,并将各数据子序列按数据地址第三低位从小到大的顺序排列;0130具体的提取方式和步骤S1002中相同,数据地址第三低位共2个值,0、1,因此分别说明书CN102346728ACN102346748A10/11页13根据第三低位地址为0提取,第三低位地址为1进行提取;0131S1004、对上述步骤中得到的的每一个数。

49、据子序列,共24个数据,根据数据地址第四低位依次进行数据提取组成数据子序列,并将各数据子序列按数据地址第四低位从小到大的顺序排列;0132经过此步划分后,得到的每个数据子序列中的数据个数为12;0133S1005、将得到的每一个数据子序列中的数据进行序列内的倒序,得到最终的倒序数据。0134其中,各序列内数据的倒序同样可以采用单步倒序装置实现,在本步中,每一个数据子序列中包含12个数据,可以采用12点单步倒序装置实现。0135如图13所示,为单步12点倒序装置的示意图,采用两个寄存器组成,第一寄存器的地址0的数据输出端连接第二寄存器的地址0数据输入端,第一寄存器的地址1的数据输出端连接第二寄存器的地址6数据输入端,第一寄存器的地址2数据输出端连接第二寄存器的地址3数据输入端,第一寄存器地址3数据输出端连接第二寄存器地址9数据输入端,第一寄存器地址N数据输出端连接第二寄存器地址M数据输入端,地址采用基3、基2、基2表示,则N采用混合进制位串表示C3C2C1,从右向左进位,NC322C22C1,M采用混合进制位串表示C3C2C1,从左向右进位,MC3C22C122。0136同样,可以对步骤S704得到的每一个子。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1