工作日记_250214

工作日记 250214

一 post_FFT模块,会将FFT地址重保存成BIt-Reversal(比特反转)的新地址

  1. 主要函数

该函数主要实现的是 地址的比特反转(bit-reversal)+ N/2 的移位,用于 OFDM 或 FFT 频域索引变换。
2. 变化原理

bitrev(addr, m_bitwidth) 的作用是将 addr 的二进制位倒序排列。
例如 addr=3 (二进制 0000000000000011),比特反转后变成 1100000000000000,即 3 变为 6144(假设 m_bitwidth=13)。
加 N/2之后,结果再加 N/2 = 4096,相当于对整个索引进行移位。
取模N确保索引仍然落在 [0, N-1] 范围内。
3. 算法原理
在 基 2 的 FFT(Radix-2 FFT) 计算过程中,输入数据需要按照 自然顺序 存放,而蝶形运算(Butterfly Computation)要求数据按照特定方式被访问。
如果不进行比特反转重排,在计算 FFT 时,每一步计算都需要在数组中跳跃式访问数据,导致 cache 命中率降低,计算效率下降。
比特反转重排使得 数据在计算前按照正确的顺序排列,这样后续 FFT 计算时,数据访问是连续的,避免非局部访问,提高 计算效率。

比特反转重排的数学意义
比特反转(Bit-Reversal)操作实际上是 FFT 递归分解的自然结果。
在 Cooley-Tukey FFT 算法中:
原始序列是线性递增的(如 0, 1, 2, 3, ...)。
但是按照二分递归的方式处理 FFT 时,数据访问顺序变成 比特反转的顺序。
所以在 FFT 计算前,我们需要预处理数据,使其 提前按照比特反转顺序排列,这样 FFT 计算时就能直接按照递归的方式进行,无需额外的重排。

posted @ 2025-02-14 17:25  茶山刘  阅读(8)  评论(0)    收藏  举报