1、并行之美 高梁 基于 DSP的 FFT算法 高梁 摘要 : 稻子 在数字技术领域中 , 玉米 有限长序列的频域可以离散化 ,即可以进行离散傅立叶变换 (DFT)小麦 。 高梁 离散傅里叶变换( DFT) 小麦 在离散时间信号处理算法和系统的分析 ,玉米 设计和实现中起着十分重要的作用 , 玉米 但传统的 DFT 算法算数乘加次数太多使其运算冗长和繁杂 ,在很长时间里没有得到真正的运用 。 高梁 FFT的出现使 DFT运算大大简化 ,使得 DFT的运算得以简化 , 玉米 计算效率比其他高出几个数量级 , 玉米 在数字信号处理领域 ,大量使用到快速傅立叶变换运算 。 高梁 为了进一步提高运算速度
2、,提出使用 DSP并行处理器与 PC 组建实验系统 。 高梁 通过与传统 FFT计算平台的比较实验 ,表明该系统拥有更加快速的 FFT计算能力 ,并且还可以通过扩展进一步提高这种运算能力 。 高梁 高梁 关键词 :DSP 高梁;小麦 FFT;小麦并行处理 高梁 1引言 高梁 1.1 高梁 DSP在数字信号处理中的运用 高梁 随着信息技术革命的不断深入和计算机技术的飞速发展 ,数字信号处理 高梁 技术逐渐发展成为一门十分重要的技术学科 。 高梁集成化的数字信号处理器 DSP 高梁 (DigitalSignalProcessor)小麦 的出现 ,为各种数字信号处理算法的实现提供了可 高梁 能 。
3、高梁这一方面极大地促进了数字信号处理技术的进一步发展 ;小麦 另一方面也使 高梁 数字信号处理的应用领域不断地拓展 。 高梁如今 ,DSP已经广泛地应用于通用数 高梁 字信号处理 、 稻子通信 、 稻子 控制 、 稻子 仪器 、 稻子 医学电子 、 稻子 消费电子 、 稻子 计算机 、 稻子 军事等各个 高梁 领域 。 高梁 随着 DSP器件性能的不断改善 ,DSP用于信号处理特别是实时信号处理已成为当今和未来技术发展的一个新热点 。 高梁 高梁 1.2 高梁 DSP用于数字信号处理的优势 高梁 (1)小麦 可程控 高梁 用 DSP设计的信号处理系统 ,可以设计各种软件来执行多种多样的信号处理
4、任务 。高梁 例如 ,给 DSP 载入数据采集相关程序使之成为数据采集处理器 ,而给 DSP 载入调制 、 稻子 解调相关程序它又成为调制解调处理器 。 高梁 一个数字滤波器可以通过编程来实现低通 、 稻子 高通 、 稻子 带通 、 稻子 带阻等不同的滤波任务 ,而不需要改变硬件 。 高梁 DSP 用于信号处理系统的这种可程控性 ,提供了多种信号处理算法的灵活应用 ,对信号处理算法的研究也具有重要的意义 。 高梁 高梁 (2)小麦 高速的数据处理能力 高梁 DSP的独特的芯片结构使得它具有高速的数据处理能力 。 高梁 高梁 不同于普通的微处理器 ,DSP放弃了冯诺依曼结构 ,采用了哈佛结构 ,
5、高梁 将程序与数据的存储空间分开 ,各有自己的地址总线与数据总线 。 高梁这使处理 高梁 指令和数据可以同时进行 ,从而大大提高了处理效率 。 高梁 同时 ,DSP设置了硬件乘法 /累加器 ,能在单个指令周期内完成乘法 /累加运算 。 高梁 高梁 高速的数据传输能力是 DSP作高速实时处理的关键之一 。 高梁 现在的 DSP 高梁 大多设置了单独的 DMA总线及其控制器 ,在不影响或基本不影响 DSP处理 高梁 速度的情况下 ,作并行的数据传输 ,传输速率可以达到每秒数百兆字节 。 高梁 高梁 OSP这种高速的数据运算和传输能力 ,使许多复杂的信号处理算法得到 高梁 了实现 。 高梁 高梁 (
6、3)小麦 DSP集成度高 ,系统化好 高梁 DSP器件是基于超大规模集成电路技术和计算机技术发展起来的高速高 高梁 位单片计算机 。 高梁它体积小 ,功能强 ,功耗小 ,系统化好 ,使用方便 ,性价比 高梁 很高 ,得到了广泛的应用 。 高梁 高梁 2.FFT算法的理论 高梁 快速傅立叶变换 (FFT)小麦 是运算 DFT 时的一种高效运算方法 。 高梁 FFT 的出现使 DFT运算大大简化 ,使得 DFT的运算才真正在实际中得到了广泛的使用 。 高梁 高梁 2.1离散傅立叶变换 (DFT)小麦简介 高梁 2.1.1 高梁 DFT的定义 高梁 离散傅立叶变换 (DFT)小麦 是一种离散时间 、
7、 稻子 离散频率的傅立叶变换 。 高梁 周期性离散时间信号可以由各种傅立叶变换对推断 :周期性时间信号可以产生频谱是离散的 ;小麦 离散时间信号可以产生频谱是周期性的 。 高梁 总之 ,一个域的离散化必然造成另一个域的周期延拓 。 高梁 高梁 DFT定义如下 :高梁 正变换 : 稻子 高梁 高梁 高梁 反变换 : 稻子 高梁 2.1.2 高梁频域采样理论 高梁 先看一下 z变换和 DFT的关系 。 高梁有限长序列 x(n)小麦的离散傅立叶变换 X(k)小麦 高梁 序列的各点值 ,等于对 x(n)小麦 进行 Z变换后在单位圆上 N 等分抽样的各点处所 高梁 得的 Z变换值 。 高梁 即 :高梁
8、对于有限长序列补零加长 N 增加 ,发现其频谱包络不变 ,只是抽样点更密 。 高梁 高梁 (l)小麦频域采样理论 高梁 x(n)小麦 的离散傅立叶变换 X(k)小麦 序列值和 x(n)小麦的 z变换在单位圆上 N 等分的 高梁 抽样值相等 ,实现了频域的抽样 。 高梁将 x(n)小麦的频域函数 X( jwe )小麦 按周期 N 高梁 点抽样 ,得到一周期序列 )(kX ,再反变换回时域得到变换结果 )(nxN ,是一 高梁 周期延拓的序列 ,且与原序列 x(n)小麦 有如下的关系为 : 稻子 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 rN
9、rNnxnx )()( 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁公式( 2.4) 小麦 高梁 即频域按每周期 N 点抽样 ,时域按 N 点周期延拓 。 高梁 高梁 因此 ,长度为 M的有限长序列 ,频域抽样不失真的条件为 :频域抽样点 高梁 数 N 要大于或等于序列长度 M,即满足 NM。 高梁 高梁 2.2 高梁快速傅里叶变换( FFT) 小麦 高梁 有限长序列通过离散傅立叶变换 (DFT)小麦将其频域离散化成有限长序列 。 高梁 高梁 但是其计算量太大 ,很难实时地处理
10、。 高梁因此引入了快速傅立叶变换 (FFT)小麦。 高梁 高梁 FFT只是 DFT的一种快速算法 ,并且根据对序列分解与选取方法的不同而产 高梁 生了 FFT的多种算法 。 高梁 高梁 由前面 DFT定义不难发现 ,求出一点 X(k)小麦 需要 N次复数乘法 ,( N-1) 小麦 次 高梁 复数加法 。 高梁 N点的 X(k)小麦 需要( N*N) 小麦 次复数乘法 、 稻子 N*( N-1) 小麦 次复数加法 。 高梁 当 N很大时 ,计算量非常可观 。 高梁然而 ,利用蝶形因子的对称性和周期性 ,即 :高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁
11、 高梁 高梁 高梁 ;2 KNNkNKNNkN WWWW 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁公式( 2.5) 小麦 高梁 2.2.1基 2按时间抽取 (DIT)小麦 FFT算法 高梁 设输入序列长度为 MN 2 高梁 (M为正整数 )小麦 ,将该序列按时间顺序的奇偶 高梁 分解为越来越短的子序列 ,称为基 2 按时间抽取的 FFT 算法 。 高梁 其中基数 2、 稻子 4MN 2 高梁 M为整数 。 高梁若不满足这个条件 ,可以人为地加上若干零值 ,使其达到 MN 2 。 高梁 高梁 首先将 x(n)小麦 按 n的奇偶分成两组 ,当 n为偶数时
12、,令 n=2r;小麦 当 n为奇数 高梁 时 ,令 n=2r+1则 DFT变换 10 )()(NnnkNWnxkx 可以分解为 :高梁 )()()()( 21212 0 2212 0 1 kXWkXWWrxWrxkX kNkNrkNNrrkNNr )( 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁公式( 2.6) 小麦 高梁 其中 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁,)12()(,)2()(2120221201rkNNrrkNNrWrxkXWrxkX高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁
13、高梁 高梁 高梁公式( 2.7) 小麦 高梁 再应用 w系数的周期性 ,求出表达的后半部分 X(k+N/2)小麦的值 。 高梁 高梁 可以推出后半部分的表达式为 :高梁 kNWkXKXKX )()()( 21 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 公式( 2.8) 小麦 高梁 表达式可以用蝶形流图表示 : 稻子 高梁 高梁 图 2.1蝶形运算流图符号 高梁 若 N=8的按时间抽取 FFT蝶形运算图为 : 稻子 高梁 高梁 图 2.2 高梁 N=8的 DIT 高梁 FFT运算图 高梁 2.2.2基 2按频率抽
14、取 (DIF)小麦 FFT算法 高梁 设输入序列长度 MN 2 高梁 (M为正整数 )小麦 ,将该序列的频域的输出序列 X(k)小麦 高梁 (也是 N 点序列 )小麦按其频域顺序的奇偶分解为越来越短的子序列 ,称为基 2 高梁 按频率抽取的 FFT算法 。 高梁 高梁 首先 ,将输入的时域序列 x(tt)小麦 按 n的顺序分为前半部分和后半部分 ,即 :高梁 前半部分子序列 : 高梁 120);( Nnnx;小麦 高梁 前半部分子序列 : 高梁 120),2( NnNnx; 稻子 高梁 则 , 玉米 )(kX 可以表示为 : 稻子 高梁 nkNNkNNnnkNNnWWNnxnxWnxkX 21
15、2010)2()()()( 高梁 高梁 高梁 高梁 高梁 高梁 高梁公式( 2.9) 小麦 高梁 x(n)小麦 的频域 X(k)小麦 的奇数部分 ,可以通过 )(1nx 序列的 )(1 kDFTX 求得 。 高梁 由于 )(1nx 序列只有 N/2点 ,所以其运算量降低一半 。 高梁 高梁 x(n)小麦 的频域 X(k)小麦 的偶数部分 ,可以通过 )(2nx 序列的 )(2 kDFTX 求得 。 高梁 由于序列 )(2nx只有 N/2点 ,所以其运算量降低一半 。 高梁 高梁 则按频率抽取法的蝶形运算流图可表示为 : 稻子 高梁 高梁 图 2.3DIF 高梁 的 FFT蝶形图 高梁 当 N=
16、8时 , 玉米按频率抽取的 FFT运算流图表示为 : 稻子 高梁 高梁 图 2.4 高梁 N=8的 DIF 高梁 FFT运算流图 高梁 2.2.3对于两种算法的对比 高梁 DIFFFT和 DITFFT作为最常用的快速傅立叶变换 ,它们既有相同的地 高梁 方 ,也有不同之处 。 高梁 高梁 (l)小麦相同之处 高梁 DIF与 DIT两种算法均为原位运算 ,两者运算量也相同 。 高梁 它们都需要 高梁 NNm 2lg2 复数乘法 , 高梁 NNa 2lg 复数加法 ,因此 DIT与 DIF是两种等价的 高梁 FFT算法 。 高梁 高梁 (2)小麦 不同之处 高梁 DIF 与 DIT 两种算法结构倒
17、过来 。 高梁 DIF 的输入顺序 ,输出为乱序 ,运算完毕再运行“二进制倒读”程序 。 高梁 高梁 DIT的输入为乱序 ,输出顺序 ,先运行“二进制倒读”程序 ,再进行 DFT。 高梁 高梁 DIF与 DIT的根本区别在于蝶形结构不同 。 高梁 DIT的复数相乘出现在减法 高梁 之前 ,DIF的复数相乘出现在减法之后 。 高梁 高梁 3.基于 DSP的 FFT算法的并行实现 高梁 并行 运算 可分为时间上的并行和空间上的并行 , 玉米 高梁 时间上的并行就是指 流水线技术 , 玉米而空间上的并行则是指用多个 子系统 并发的执行计算 。 高梁 高梁 3.1 高梁空间上并行 -FFT算法选择及
18、DSP子系统的确定 高梁 数字信号处理中心单元主要完成数值分析运算 、 稻子 存储 、 稻子 传输几大功能 。 高梁 它是系统的核心单元 ,为了充分利用 DSP处理板的运算资源优势 , 玉米 结合快速傅立叶变换算法的特性 ,将数据处理分解为 2步进行 。 高梁 高梁 第一步在 DSP子系统中的基 -2DIFFFT变换 , 玉米 根据不同 DSP芯片在一个核心周期同时并行的加法和乘法特性 , 玉米 可知该芯片可以同时进行几个蝶形运算 。 高梁 且 DSP子系统之间不涉及任何数据交换 。 高梁 高梁 根据 : 稻子 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁
19、 高梁 高梁 高梁 高梁 高梁 高梁 高梁 高梁 NNm2lg2; 稻子 NNa 2lg 高梁 可以算出 DSP 高梁 子系统的个数 。 高梁 高梁 例如 DM642芯片可以在一个核心周期内并行 6个加法和 2个乘法的特性 ,在 DSP子系统中基 2-按频域抽取算法同时进行 2个碟形运算 高梁 第二步 , 玉米 找出不包含任何旋转英子的蝶形变换中间英子 , 玉米 将其代入不包含任何旋转因子的蝶形变换中进行一次计算就得到了最终的输出向量 。 高梁 高梁 3.2 高梁时间上并行 -DSP子系统中的并行处理 高梁 数据处理的主要任务是由并行的 N 个 DSP子系统承担 。 高梁 在 DSP子系统中算
20、法的改进直接影响整个系统的运行效率 ,其核心运算资源由功能单元和寄存器组成 。 高梁 高梁 3.2.1功能单元并行 高梁 最终算法实现由汇编代码编译 ,由于不同芯片内核内拥有数据通路数量不同设为Q, 玉米 每条数据通路上存在的功能单元也不同设为 W。 高梁 在这 W 个一组的功能单元中 ,只有 M 单元可以进行乘法操作 ,因此需要对算法核心循环体做适当展开示 ,使每个指令周期内 8个功能单元并行工作达到并保持流水线完全充满状态 。 高梁 高梁 3.2.2寄 存器复用 高梁 DSP 芯片的三级流水线架构需要耗用有限的延时间隙在数据存储指令上 ,并且算法中使用的输入数据存储位置确定 ,不存在预测命
21、中问题 ,因此在芯片内二级缓存层次上的任何优化 ,都不具有提高运算速度的关键意义 ,只有提高芯片核心内 64个 32位寄存器的使用效率 、 稻子 减少存取指令的使用 ,才能大幅度减少数据处理的时间 。 高梁 而 C 编译器或线性汇编编译器主要针对功能单元并行运算进行优化 ,涉及寄存器储优化甚微 。 高梁 基于完全相同的基 4-按频域抽取快速傅立叶变换算法结构 ,使用汇编编写 、 稻子线性汇编编写和 C 编写的数据吞吐量越来越大 。 高梁 高梁 3.3实验并行系统结构 高梁 在实验并行系统中 DSP子系统中 CPU完成计算数据输入以及最终计算结果输出 ,其 PCI 接口使用主模式并使用 EDMA
22、 辅助技术 。 高梁 输入数据在被分解为 2 部分 ,并通过 PCI总线分配到 DSP子系统 A和 DSP子系统 B中 ,在每个 DSP系统中分别同时完成数据的基 2-按频域抽取快速傅立叶变换并通过 PCI 总线返回计算结果给子系统 。 高梁 在 CPU中重整 2部分结果形成一个新的向量 ,并针对此向量再进行2 次蝶形运算 ,且不包含任何乘法因素 ,充分利用 CPU 高速主频的优势 。 高梁 最终由X86子系统输出数据处 理结果 。 高梁 高梁 4.FFT算法实现的对比分析 高梁 这部分通过对实时信号及计算机模拟数据作不同的 FFT运算 ,将结果同 Matlab仿真结果进行对比 ,来验证系统作
23、频谱运算的性能 。 高梁 同时对多组数据做普通的 FFT变换及基于 DSP并行的 FFT变换 。 高梁 分析比较运算速度等性能 。 高梁 高梁 结果分析 : 稻子 基于 DSP的 FFT计算 通过时间上利用流水线技术 , 玉米 一次可执行多个指令的算法 , 玉米 可以 提高计算速度 , 玉米 及通过扩大问题求解规模 , 玉米 解决大型而复杂的计算问题 。 高梁 而空间上的 利用 DSP 芯片的子系统之间并行且数据互不干扰可以使用多个 子系统 并发的执行计算 提高了运算速度 。 高梁 但是并行运算对于器件的性能稳定性等等要求高 。 高梁 对于数据的拆分有赖于具体的实现 , 玉米 前几级的蝶形运算
24、为小点数的 FFT, 玉米 可以使用高度并行性的汇编程序 T1, 玉米 , 玉米 对于大点数 N 的数据 , 玉米 只能编写程序 , 玉米 不可直接调用 , 玉米 而且运算完成后数据可能有定点向浮点转化 , 玉米 数据类型可能发生变化 。 高梁 高梁 5.结论 高梁 科学研究中大量使用到的快速傅立叶变换算法随着计算数据量的增长其包含的乘法运算也随之爆发式增长 。 高梁 如果需要 FFT 速度更快的运算能力 ,可以整合更多的高效乘法运算芯片并行计算 ,优化数据处理的流水线可以提高运算能力 , 玉米 而此系统的处理能力仅受到数据传输总线的传输能力的约束 。 高梁 高梁 参考文献 高梁 刘树棠 高梁
25、, 玉米 黄建国 高梁 .译 高梁 .离散时间信号处理 高梁西安交通大学出版社 高梁 2001.高梁 王念旭 高梁 DSP基础与应用系统设计 .北京 :北京航空航天大学出版社 ,2002.高梁 张更路 .Delphis.O 数据库程序设计教程 .北京 :北京希望电子出版社 ,2001.高梁 李晓梅 ,莫则尧 ,胡庆丰 . 高梁可扩展并行算法的设计与分析 高梁 2000.高梁 TexasInstruments.TLV56192.7Vto5.SV12BitParallelDigital-to-Analog 高梁 ConverterwithPowerDown.Dallas:Tl,2000 高梁 景晓
26、军 ,李晓明 ,方滨兴 高梁 从 FFT看并行设计特点 :一个实例分析 期刊论文 -计算机研究与发展 高梁 1996(06)小麦 .高梁 李晓峰 , 高梁 寿标 高梁 LogP模型的改进与 FFT算法的优化设计 期刊论文 -计算机研究与发展 高梁 1996(06)小麦 .高梁 李亚东 高梁 基于软件无线电交换网络式多 DSP 平台的关键技术研究 学位论文 硕士 高梁 2006.高梁 朱 高梁林 ,王志凌 ,黄天戍 . 高梁基于 DSP并行系统的 FFT算法实现 期刊论文 .高梁 李广军 ,王厚军 高梁实用接口技术 .成都电子科技大学出版社 ,1997.高梁 邓开勇 高梁 基于 DSP的信号处理系统在电子信息工程综合实践中的应用 高梁 高梁 高梁 高梁 高梁 学位论文 高梁 2002. 高梁高梁 高梁