基于dsp芯片的可变长度fft计算方法

文档序号:6545084阅读:509来源:国知局
基于dsp芯片的可变长度fft计算方法
【专利摘要】本发明公开一种基于DSP芯片的可变长FFT计算方法,步骤为:1)判断待运算数据的长度N,若N<N1,执行步骤2);若N1<N<TH1,执行步骤3);若TH1<N<TH2,执行步骤4);其中N1为DSP芯片内FFT执行装置能够直接支持的最大点数,TH1为片上存储器能够存储的最大点数,TH2=N1*N1;2)直接执行一维FFT并以DMA方式从片外存储器读写数据;3)执行二维FFT且由片上存储器存储中间数据并进行矩阵转置;4)分成多个数据块进行变换,由片上存储器存储每个数据块。本发明具有实现方法简单、能够实现可变长度的FFT计算且计算长度范围大、存储带宽利用率高、执行效率高的优点。
【专利说明】基于DSP芯片的可变长度FFT计算方法
【技术领域】
[0001]本发明涉及数字信号处理领域,尤其涉及一种基于SRAM的可变长度FFT计算方法。
【背景技术】
[0002]DFT (Discrete Fourier Transformation,离散傅里叶变换)是数字信号处理领域不可缺少的工具之一,它将一种信号从时域变换到频域,广泛应用于声学、图像、雷达、电信和无线信号处理等领域。FFT (Fast Fourier Transformation,快速傅立叶变换)是DFT的一种快速实现方法,FFT的出现使得DFT在实际应用中得到了更广泛的应用。FFT算法是利
用复指数常数Wn =e ITl的特性将信号序列X(η)或X(k)的排列次序进行重排并分解成
短序列运算,将DFT运算复杂度由0(n2)降低到O(nlogn)。在实时信号处理领域,FFT算法对嵌入式处理器的性能和效率都提出更高要求,对于不同的应用,FFT的运算规模变化非常大,可能由数十点到数十万点。
[0003]目前,大部分FFT算法采用DSP芯片上的运算单元实现,然而FFT计算过程需要交叉访问信号序列X (η),无法充分发挥DSP芯片的计算和存储效率,尤其对于大规模FFT计算,不能将整行变换数据存储到Cache或者片上存储器中,导致需要频繁访问片外存储器,从而存储带宽利用率 非常低,而且无法发挥DSP芯片提供的流水线计算效率。
[0004]部分DSP芯片中虽然提供了 FFT加速器方案,例如TI C55X系列的DSP芯片中的紧耦合FFT加速器,支持的最大运算规模仅为1K,限制FFT加速器的应用范围。由于执行大规模FFT时至少需要将一行数据存储到FFT加速器内部数据寄存器中,因此FFT加速器所需存储容量随FFT规模的增大而线性增加,存储容量将成为大规模FFT加速器设计的主要限制。
[0005]DDR和SRAM是两类最常用的数据存储器,其中DDR存储器具有存储容量大(通常为G量级)、价格低的特点,通常用于大规模原始数据和计算结果的存储。DDR存储器的行缓冲组织结构决定了 DDR存储器的访问特征,若数据顺序存储且按照顺序进行访问,则能够充分发挥DDR存储器存储带宽,获得较大实际访问带宽;但若以不规则方式访问DDR存储器时,DDR存储器存储带宽利用率将急剧下降。片上SRAM存储器是一种随机访问存储器,具有访问灵活、速度快的特点,但是相对于DDR存储器来说,SRAM存储器的存储容量较小,通常仅为M量级,无法存储大规模原始数据和计算结果。在DSP芯片中,通常将SRAM设计成多核之间的高速共享存储器。随着工艺的提升,DSP芯片内部集成的SRAM容量越来越大,如TI C66XX系列DSP芯片的SRAM存储容量达到4MB。
[0006]对于大规模的FFT计算,可以通过二维FFT计算的方式模式实现。N = N1^N2点的FFT可以通过N2个N1点和N1个N2点的FFT算法来实现,迭代公式如下式所示:
[0007]
【权利要求】
1.一种基于DSP芯片的可变长度的FFT计算方法,其特征在于步骤为: (1) 判断存储在片外存储器中待运算数据的长度N,若MN1,转入执行步骤(2);若N^NGH1,转入执行步骤(3);若TH^NGH2,转入执行步骤(4);其中N = 2k,N1为DSP芯片内FFT执行装置能够直接支持的最大点数,TH1为片上存储器能够存储的最大点数,TH2 =N1^N1 ; (2)直接以DMA方式从片外存储器中读取初始数据,所述FFT执行装置执行N点一维FFT运算后将运算结果以DMA方式写回片外存储器中,退出计算; (3)将所述待运算数据视为NfN2的二维数据矩阵并按行顺序读取到片上存储器,其中N = N1^N2 ;所述FFT执行装置对片上存储器中数据矩阵执行二维FFT运算后得到最终结果矩阵,按列顺序读取所述最终结果矩阵并按行顺序写回片外存储器,退出计算; (4)将所述待运算数据视为NfN2的二维矩阵并按列分为多个列数据块,每个列数据块包含TH1个数据点,依次读取每个列数据块到片上存储器中并由所述FFT执行装置进行列方向的FFT计算,将计算结果顺序写回片外存储器;将所述计算结果按行分为多个行数据块,每个行数据块包含TH1个数据点,依次读取每个行数据块到片上存储器中,由所述FFT执行装置进行行方向的FFT计算,按列顺序读取计算结果并按行顺序写回片外存储器,退出计算。
2.根据权利要求1所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(3)的具体步骤为: (3.1)将片外存储器中N点所述待运算数据视为NfN2的二维数据矩阵,按行顺序读取所述二维数据矩阵并以相同顺序存储到片上存储器中,得到初始数据矩阵; (3.2)所述FFT执行装置读取片上存储器中的所述初始数据矩阵并执行列方向上的N2次&点FFT运算,进行旋转因子补偿后得到列方向运算结果矩阵,并写入片上存储器中对应位置; (3.3)所述FFT执行装置从片上存储器中顺序读取所述列方向运算结果矩阵并执行行方向上的N1次N2点FFT运算,得到最终运算结果矩阵并顺序写入到片上存储器中对应位置; (3.4)按列顺序从片上存储器中读取所述最终结果矩阵并以行顺序写回片外存储器中,得到最终结果矩阵,退出计算。
3.根据权利要求2所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(3.2)的具体步骤为: (3.2.1)以间隔寻址的方式从片上存储器中读取所述初始数据矩阵的一列数据至所述FFT执行装置中; (3.2.2)由所述FFT执行装置进行N1点FFT运算,得到当前列数据的蝶形运算结果;对所述蝶形运算结果进行一级补偿旋转因子计算,得到当前列数据的计算结果;以间隔寻址的方式读取下一列数据至所述FFT执行装置中,返回执行步骤(3.2.2),总计执行N2次后得到列方向运算结果矩阵; (3.2.3)将所述列方向运算结果矩阵的每列数据以间隔寻址的方式写入片上存储器的对应位置中,转入执行步骤(3.3)。
4.根据权利要求3所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(3.3)的具体步骤为: (3.3.1)从片上存储器中顺序读取所述列方向运算结果矩阵的一行数据至所述FFT执行装置中; (3.3.2)由所述FFT执行装置进行N2点FFT运算,得到当前行数据的运算结果;顺序读取下一行数据至所述FFT执行装置中,返回执行步骤(3.3.2),总计执行N1次后得到最终运算结果矩阵; (3.3.3)将所述最终运算结果矩阵的每行数据顺序写入片上存储器的对应位置中,转入执行步骤(3.4)。
5.根据权利要求1所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(4)的具体步骤为: (4.1)将片外存储器中所述待运算数据视为NfN2的二维数据矩阵,并将二维数据矩阵按列分为m个列数据块,每个列数据块包含TH1个数据点,其中w ;按行顺序读取一个列数据块,转入执行步骤(4.2); (4.2)将当前列数据块按顺序读取到片上存储器中,由所述FFT执行装置执行列方向的FFT计算,进行旋转因子补偿后得到当前列数据块的计算结果,并将所述当前列数据块的计算结果顺序写回片外存储器;按行顺序读取下一个列数据块,返回执行步骤(4.2),直至完成所有列数据块的运算,得到列方向计算结果矩阵; (4.3)按行顺序将片外存储器中所述步骤(4.2)得到的列方向计算结果矩阵分为m个大行数据块,每个行数据块包含TH1个数据点,按行顺序读取一个行数据块,转入执行步骤(4.4); (4.4)将当前行数据块按顺序读取到片上存储器中,由所述FFT执行装置执行行方向的FFT计算,得到当前行数据块的计算结果,按列读取所述当前行数据块的计算结果并按行写回片外存储器;按行顺序读取下一个行数据块,返回执行步骤(4.4);直至完成所有行数据块的运算,得到最终结果矩阵,退出计算。
6.根据权利要求5所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(4.2)中得到当前列数据块的计算结果的具体步骤为: (4.2.1)以间隔寻址的方式从片上存储器中读取当前列数据块的一列数据至所述FFT执行装置中; (4.2.2)由所述FFT执行装置进行N1点FFT运算,得到当前列数据的蝶形运算结果;对蝶形运算结果进行一级补偿旋转因子计算,得到当前列的运算结果;以间隔寻址的方式读取下一列数据至所述FFT执行装置中,返回执行步骤(4.2.2),总计执行完h次后得到当前
列数据块的列方向计算结果矩阵,其中 (4.2.3)将所述当前列数据块的列方向计算结果矩阵以间隔寻址的方式写入片上存储器的对应位置中,得到当前列数据块的计算结果。
7.根据权利要求5所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于,所述步骤(4.4)中得到当前行数据块的计算结果的具体步骤为: (4.4.1)以顺序寻址的方式从当前行数据块中取出一行数据至所述FFT执行装置中;(4.4.2)由所述FFT执行装置进行N3点FFT计算,其中#3=$,得到当前行数据的运算结果;以顺序寻址的方式读取下一行数据至所述FFT执行装置中,返回执行步骤


(4.4.2),总计执行t2次后得到当前行数据块的行方向计算结果矩阵,其中?2;


(4.4.3)将所述当前行数据块的行方向计算结果矩阵的每行数据顺序写入片上存储器的对应位置中,得到当前行数据块的计算结果。
8.根据权利要求1~7中任意一项所述的基于DSP芯片的可变长度的FFT计算方法,其特征在于:所述片上存 储器为DDR存储器,所述片外存储器为SRAM存储器。
【文档编号】G06F17/14GK103955446SQ201410174461
【公开日】2014年7月30日 申请日期:2014年4月28日 优先权日:2014年4月28日
【发明者】雷元武, 彭元喜, 陈书明, 郭阳, 刘宗林, 万江华, 孙书为, 陈小文, 余再祥, 孙永节, 陈跃跃, 屈晓阳 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1