《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 实序列并行IFFT在Blackfin DSP上的实现

实序列并行IFFT在Blackfin DSP上的实现

2009-06-03
作者:李 刚, 高 峰, 林 凌

  摘 要: 针对DSP上常用的实序列IFFT算法运算速度慢的缺陷,采用两行实序列合并为一行复序列进行IFFT运算的方法编制了在Blackfin系列DSP上进行实序列基-2 IFFT运算的程序。实验表明,结合DSP指令的并行性及硬件并行结构的软件设计提高了运算速度,完成两行512点实序列的IFFT运算只需要11864个时钟周期,为原来方法所需时间的一半。该方法应用于基于BF561的并行频域OCT图像处理系统中,满足系统实时处理的要求。
  关键词: 实序列IFFT; Blackfin DSP; 并行

 

  离散傅里叶逆变换(IDFT)是一种将离散信号从频域转变为时域表示的变换手段,其快速算法——快速傅里叶逆变换(IFFT)在数字信号处理过程中得到广泛使用。
  实际应用中经常遇到实序列的IFFT运算[1-2]。如在如图1所示的并行频域OCT(Parallel Spectral-Domain Optical Coherence Tomography,PSDOCT)图像处理系统中,需要对摄像机输入的像素为180×512的频域图像在DSP内进行逐行IFFT运算及幅度谱运算后得到反映样品深度信息的空域层析图像[3]并输出显示。由于系统需要进行25帧/s视频速度的实时处理,而常用的把实数数据当作虚部为0的复数数据进行IFFT运算的方式浪费了其中一半的运算量和存储量,不能满足实时处理的要求。鉴于此,本文介绍了一种将两行实序列合并为一行复序列进行IFFT运算的方法[4],并且结合ADI公司Blackfin系列DSP指令的并行性及硬件的并行结构[5-6],编制了512点实序列IFFT并行运算程序。实验表明,该方法对两行实序列运算所需的周期数约为直接进行复数计算周期数的一半,可以满足并行频域OCT图像处理系统实时处理的要求。

 


1 实序列IFFT并行运算原理
  进行N点实数X(k)的IFFT 运算时,一般的方法是把实数数据当作虚部为0的复数数据来处理。由于这种函数的时域呈现如式1所示的复数共轭对称的性质,所以运算所需的2N个存储单元中有一半是多余的,并且所耗的运算量与复数IFFT相同,没有达到优化设计的目的。为了节约DSP 片内资源并且加快运算速度,可以将两行实序列组合为复序列进行处理。设有两个N点的实序列X(k)与Y(k),整合为复序列Z(k)=X(k)+Y(k)j 。根据IDFT的线性和对称性可得X(k)与Y(k)处理结果x(n)、y(n)与Z(k)的结果z(n)的关系式,如式(2)、(3)所示。
 
  这样就将x(n)、y(n)从z(n)中分离出来。该方法将运算速度提高了近一倍,并且运算需要的存储量减少了一半。
2 算法在Blackfin DSP上的实现
  Blackfin系列DSP是ADI公司和Intel 公司合作推出的基于微信号体系结构(Micro Signal Architecture)技术的定点DSP,整合了传统体系结构DSP和RISC控制器的优点。该系列器件具有多级流水线结构,含有2个乘加运算(MAC)单元,并集成了大量的外围设备和存储器接口,每秒最高可执行1.2亿次乘加运算,适用于实时图像处理。由于在图像处理过程中经常会遇到对实序列进行离散傅里叶逆变换的问题,所以需要设计一种优化的实序列IFFT程序。下面选用Blackfin系列中的BF561进行实序列并行基-2 IFFT程序设计,该程序适用于Blackfin系列所有的DSP。算法程序采用汇编语言编写,可以通过C语言调用,具有良好的接口性能和可扩展性能。
2.1 实序列IFFT并行算法流程
  在BF561上进行N点实序列基-2 IFFT运算流程如图2所示(N=2m,m≥3),具体功能块描述如下:
  (1)程序初始化。由于BF561为定点DSP,如果进行浮点运算(如“块浮点”运算[7])将会影响计算的实时性。所以对输入输出数据及旋转因子都做了定点处理,规定数据都为如图3所示的16位有符号小数格式(即Q15格式)。IFFT运算的旋转因子可由Matlab产生并以cos(2πk/N)、sin(2πk/N)(k=0,1,2……,2m-1)的格式进行实部、虚部交替排列成表,通过“#include”语句填充到BF561上的L1数据SRAM中,需要N字节容量存储空间。L1数据SRAM以内核速度访问,使得查表的速度达到最快。在L1数据SRAM中开辟了4N字节容量的存储区进行中间结果的存放。


  (2)将两行N点实数数据X(k)、Y(k)合并成为N点复数数据Z(k),并完成复数数据的位反转操作。Blackfin DSP有专为IFFT算法设计的反序间接寻址,可实现增/减1或增/减一个变量的间接寻址方式,可以直接实现各种方式的位反转操作。
  (3)计算N点复数数据基-2 IFFT运算的蝶形运算结构如图4所示。IFFT运算过程中需要大量的循环运算,而BF561支持“零开销的硬件循环控制”及“硬件循环缓存”功能,即利用硬件寻址功能实现循环构造,并且循环体的指令在每次执行后暂时存放在循环缓存中以备下次使用,极大地加快了循环运算速度。

 


  (4)分离还原。根据式(2)、(3)将两行N点实数数据IFFT运算结果x(n)、y(n)从z(n)中分离出来。
2.2 利用并行指令进行程序设计
  Blackfin系列DSP的多级流水线结构可以实现多个乘加及算术逻辑运算,并且可以实现运算与存储器读写的并行执行。充分利用指令的并行性可以加快IFFT的运算速度。
2.2.1 32位数据寄存器的并行操作
  Blacfin DSP的数据寄存器可以作为一个32位字(Rn)或是2个16位半字(Rn.H与Rn.L)。并且由于Blackfin DSP具有2个MAC,所以在一个指令周期内可以进行4个16位半字的操作。利用该并行指令进行如图4的碟形运算的程序如式(4)、式(5)、式(6)所示,其中寄存器R1与R2的低位、高位分别存放Z1(k)与Z2(k)的实部、虚部,R3的低位、高位分别存放wN-k的实部、虚部。完成一次碟形运算只需要3个指令周期。

  R1=R1+|+R2, R2=R1-|-R2(ASR);
       /*16位加减并行运算,结果右移一位*/         (4)
   A1=R2.L*R3.H, A0=R2.L*R3.L;
        /*16位乘法并行运算*/                       (5)
    R3.H=(A1+=R2.H*R3.L),R3.L=(A0-=R2.H*R3.H);
        /*16位乘法并行运算*/                       (6)
2.2.2 运算与存储器读写的并行指令
    Blackfin DSP支持下列3种并行指令语句:
  (1) A 32-bit ALU/MAC instruction || A 16-bit instruction ||A 16-bit instruction;//
  (2) A 32-bit ALU/MAC instruction || A 16-bit instruction; //
  (3) MNOP || A 16-bit instruction || A 16-bit instruction; //

  其中:(1)表示1个指令周期内可以同时执行一条32位逻辑/乘加运算及2条16位指令;(2)表示1个指令周期内可以同时执行1条32位逻辑/乘加运算及1条16位指令;(3)表示1个指令周期内可以同时执行2条16位指令。其中16位指令包括对数据的读取和存储指令。
  结合上述两种并行指令的蝶形运算程序如式(7)、(8)、(9)所示。由程序可以看出:3个指令周期内不仅可以完成一次碟形运算,还可以实现旋转因子的查表读入、数据的读入和运算结果的储存等操作,大大减少了运算周期数。

2.3 硬件的并行处理
  Blackfin DSP的L1数据SRAM采用分块设计,如BF561的64 KB容量的L1数据SRAM分为16个独立的存储块(每块容量为4KB),并且内核与DMA可以同时访问不同的存储块,所以可以通过“乒乓操作”的方式进行数据传输和处理的并行执行。这种流水线式算法完成了数据的无缝缓冲与处理,大大加快了IFFT运算速度。
3 实验结果
  在Blackfin集成开发环境Visual DSP++4.5上编制512点实序列基-2 IFFT程序。并用该程序在BF561上对两行512点正弦数据进行计算,通过集成开发环境中的CYCLES计数器进行周期计数表明两行数据IFFT运算需要11 864个周期。而直接计算两行数据需要的周期数为21 098。前者所用的运算时间约为后者的一半。以MATLAB计算的32位精度结果作为基准进行比较,该程序计算结果误差为0.009%。在如图1的系统中对一帧频域图像(180×512)进行IFFT运算,其中BF561的内核时钟为600MHz,运算需要的时间仅为1.7ms。
  结合实序列IFFT运算、Blackfin系列DSP指令的并行性及硬件的并行结构设计了在BF561定点DSP上对实序列进行基-2 IFFT运算的程序。实验证明,该程序比以往的方法运算周期减少了约一半,并且误差小于万分之一,满足快速精确计算的要求。运用于并行频域OCT图像处理系统中,满足系统实时处理的要求。该程序同样适用于Blackfin系列中其他的DSP。


参考文献
[1] 马振鹤,王瑞康,张帆,等.快速高分辨率的频谱光学相干层析成像系统研究[J].纳米技术与精密工程,2005,3
(3):232-235.
[2] 陈燕东,刘景琳,孟志强.新型实时光电混合图像识别系统设计[J].电子测量与仪器学报,2007, 21(3):103-107.
[3] 李刚,任钊,吴开杰,等.Parallel spectral-domain optical coherence tomography for non-scattering object imaging[J].天津大学学报(英), 2007,13(2):107-112.
[4] 胡广书.数字信号处理理论-算法与实现[M].北京:清华大学出版社,2003.
[5] ADSP-BF53x/BF56x Blackfin processor programming reference[Z]. USA:AD Inc., 2006.
[6] 陈峰. Blackfin系列DSP原理与系统设计[M].北京:电子工业出版社,2004.
[7] 杨向萍.提高FFT运算速度的几项措施[J].中国纺织大学学报,1999,25(1):42-62.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。