• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 19
    • 下载费用:30 金币  

    重庆时时彩历史开奖记录: 基于DSP芯片的FFT加速器.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN201410174795.8

    申请日:

    2014.04.28

    公开号:

    CN103955447A

    公开日:

    2014.07.30

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 17/14申请日:20140428|||公开
    IPC分类号: G06F17/14 主分类号: G06F17/14
    申请人: 中国人民解放军国防科学技术大学
    发明人: 刘宗林; 雷元武; 郭阳; 陈书明; 鲁建壮; 彭元喜; 吴虎成; 罗恒; 孙永节; 陈跃跃; 陈小文; 孙书为
    地址: 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院微电子与微处理器研究所
    优先权:
    专利代理机构: 湖南兆弘专利事务所 43008 代理人: 周长清
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410174795.8

    授权公告号:

    ||||||

    法律状态公告日:

    2017.04.12|||2014.08.27|||2014.07.30

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明公开一种基于DSP芯片的FFT加速器,包括:模式配置???,接收数据地址、运算规模及运算次数的配置数据;FFT运算控制???,当运算规模小于能够直接支持的最大运算规模时控制FFT计算??橹葱幸晃現FT运算,当大于能够直接支持的最大运算规模时,控制FFT计算??橹葱卸現FT运算;数据访问控制???,控制以DMA方式从存储器中读取运算数据并将运算结果写回存储器;FFT计算???,根据FFT运算控制??槭涑龅目刂菩藕挪⑿兄葱蠪FT运算。本发明具有支持运算规模、运算次数和数据格式的多种配置方式、能够实现从小规模到大规模范围内的FFT运算、执行效果高、硬件资源利用率高的优点。

    权利要求书

    权利要求书
    1.  一种基于DSP芯片的FFT加速器,其特征在于,包括:
    模式配置???1),用于从DSP内核接收数据地址、运算规模N=2k及运算次数M的配置数据,输出至FFT运算控制???2)及数据访问控制???3);
    FFT运算控制???2),用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算???4)进行N点一维FFT运算;若为是,控制FFT计算???4)进行N1*N2的二维FFT运算,其中N=N1*N2,N1为FFT计算???4)能够直接支持的最大FFT运算规模且N1大于或等于N2,输出控制信号至FFT计算???4);
    数据访问控制???3),用于FFT计算???4)执行运算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算???4),并将FFT计算???4)输出的运算结果存储回存储器中;
    FFT计算???4),用于根据FFT运算控制???2)输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。

    2.  根据权利要求1所述的基于DSP芯片的FFT加速器,其特征在于:还包括分别与数据访问控制???3)、FFT计算???4)的输出端连接的数据格式转换???5),所述数据格式转换???5)用于当数据访问控制???3)读取的运算数据为定点格式时将运算数据转换为浮点格式,输出至FFT计算???4),并将FFT计算???4)输出的运算结果转换为对应的定点格式后输出回数据访问控制???3)。

    3.  根据权利1或2所述的基于DSP芯片的FFT加速器,其特征在于:所述FFT计算???4)包括两个并行的FFT执行子??橐约胺直鹩肓礁鯢FT执行子??榱拥腃ORDIC补偿旋转因子计算子???43);两个所述FFT执行子??椴⑿兄葱辛阶槭莸腇FT计算,其中每一组数据为规模小于或等于N1点的数据,所述CORDIC补偿旋转因子计算子???43)根据数据地址及运算规模N采用CORDIC算法计算补偿旋转因子,分别输出至两个所述FFT执行子???。

    4.  根据权利3所述的基于DSP芯片的FFT加速器,其特征在于:每个所述FFT执行子??榘‵FT计算控制单元(411)、数据存储单元(412)、并行蝶形运算单元(413)以及旋转因子存储单元(414);所述FFT计算控制单元(411)接收FFT运算控制???2)输出的控制信号,控制并行蝶形运算单元(413)及CORDIC补偿旋转因子计算子???43)的启动;所述数据存储单元(412)存储并行蝶形运算单元(413)待输入的运算数据以及待输出的运算结果;所述并行蝶形运算单元(413)并行执行一组数据的蝶形运算或补偿旋转因子 计算,由所述旋转因子存储单元(414)存储蝶形运算时的旋转因子。

    5.  根据权利4所述的基于DSP芯片的FFT加速器,其特征在于:所述并行蝶形运算单元(413)包括两个并行的蝶形运算部件。

    6.  根据权利5所述的基于DSP芯片的FFT加速器,其特征在于:每个所述蝶形运算部件包括多个IEEE-754标准的单精度浮点乘法器、多个单精度浮点加/减法器。

    7.  根据权利6所述的基于DSP芯片的FFT加速器,其特征在于:所述单精度浮点乘法器为4个,所述单精度浮点加/减法器为6个。

    8.  根据权利4~7中任意一项所述的基于DSP芯片的FFT加速器,其特征在于:所述数据存储单元(412)包括两组数据存储器,对待输入的运算数据以及待输出的运算结果进行乒乓结构的缓存;每组所述数据存储器包括4个双端口的RAM。

    9.  根据权利5~7中任意一项所述的基于DSP芯片的FFT加速器,其特征在于:所述旋转因子存储单元(414)采用两个查找表,每个所述查找表具有N1个选项;每个所述查找表对应连接一个所述蝶形运算部件。

    说明书

    说明书基于DSP芯片的FFT加速器
    技术领域
    本发明涉及数据处理中的FFT计算技术领域,尤其涉及一种基于DSP芯片的FFT加速器。
    背景技术
    DFT(Discrete Fourier Transformation,离散傅里叶变换)是数字信号处理领域不可缺少的工具之一,它将一种信号从时域变换到频域,广泛应用于声学、图像、雷达、电信和无线信号处理等领域。FFT(Fast Fourier Transformation,快速傅立叶变换)是DFT的一种快速实现方法,FFT的出现使得DFT在实际应用中得到了更为广泛的应用。FFT算法是利用复指数常数的特性将信号序列x(n)或X(k)的排列次序进行重排并分解成短序列运算,将DFT运算复杂度由O(n2)降低到O(nlogn)。
    在实时信号处理领域,需要支持实数FFT、复数FFT、实数IFFT(Inverse FFT)和复数IFFT的运算,数据格式可能是IEEE-754标准的浮点格式或定点格式,对于不同的应用FFT的运算规模变化也非常大,可能为数十点或数十万点。
    现有技术中,部分DSP芯片中虽然提供了FFT加速方案,但支持的最大运算规模仅为1K,限制FFT加速器的应用范围,且通常仅能支持32位定点计算,对于更常用IEEE-754标准浮点格式不提供支持。例如TI C55X系列DSP芯片,其包含一个紧耦合FFT加速器(称为HWA),通过使用加速器指令可以实现FFT加速器与C55X DSP通讯,该FFT加速器仅支持32位定点格式的8点到1024点实数和复数FFT计算。
    发明内容
    本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、成本低廉、支持可变的运算规模且能够支持大规模的FFT运算、应用范围广、执行效率高的基于DSP芯片的FFT加速器。
    为解决上述技术问题,本发明提出的技术方案为:
    一种基于DSP芯片的FFT加速器,包括:
    模式配置???,用于从DSP内核接收数据地址、运算规模N=2k及运算次数M的配置数据,输出至FFT运算控制??榧笆莘梦士刂颇??;
    FFT运算控制???,用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算??榻蠳点一维FFT运算;若为是,控制FFT计算??榻蠳1*N2的二维FFT运算,其中N=N1*N2,N1为FFT计算??槟芄恢苯又С值淖畲驠FT运算规模且N1大于或等于N2,输出 控制信号至FFT计算???;
    数据访问控制???,用于FFT计算??橹葱性怂闶?,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算???,并将FFT计算??槭涑龅脑怂憬峁娲⒒卮娲⑵髦?;
    FFT计算???,用于根据FFT运算控制??槭涑龅目刂菩藕挪⑿兄葱蠪FT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。
    作为本发明的进一步改进:还包括分别与数据访问控制???、FFT计算??榈氖涑龆肆拥氖莞袷阶荒??,所述数据格式转换??橛糜诘笔莘梦士刂颇?槎寥〉脑怂闶菸ǖ愀袷绞苯怂闶葑晃〉愀袷?,输出至FFT计算???,并将FFT计算??槭涑龅脑怂憬峁晃杂Φ亩ǖ愀袷胶笫涑龌厥莘梦士刂颇??。
    作为本发明的进一步改进:所述FFT计算??榘礁霾⑿械腇FT执行子??橐约胺直鹩肓礁鯢FT执行子??榱拥腃ORDIC补偿旋转因子计算子???;两个所述FFT执行子??椴⑿兄葱辛阶槭莸腇FT计算,其中一组数据为规模小于或等于N1点的数据,所述CORDIC补偿旋转因子计算子??楦菔莸刂芳霸怂愎婺采用CORDIC算法计算补偿旋转因子,分别输出至两个所述FFT执行子???。
    作为本发明的进一步改进:每个所述FFT执行子??榘‵FT计算控制单元、数据存储单元、并行蝶形运算单元以及旋转因子存储单元;所述FFT计算控制单元接收FFT运算控制??槭涑龅目刂菩藕?,控制并行蝶形运算单元和CORDIC补偿旋转因子计算子??榈钠舳?;所述数据存储单元存储并行蝶形运算单元待输入的运算数据以及待输出的运算结果;所述并行蝶形运算单元并行执行一组数据的蝶形运算或补偿旋转因子计算,所述旋转因子存储单元存储蝶形运算时的旋转因子。
    作为本发明的进一步改进:所述并行蝶形运算单元包括两个并行的蝶形运算部件。
    作为本发明的进一步改进:每个所述蝶形运算部件包括多个IEEE-754标准的单精度浮点乘法器、多个单精度浮点加/减法器。
    作为本发明的进一步改进:所述单精度浮点乘法器为4个,所述单精度浮点加/减法器为6个。
    作为本发明的进一步改进:所述数据存储单元包括两组数据存储器,对待输入的运算数据以及待输出的运算结果进行乒乓结构的缓存;每组所述数据存储器包括4个双端口的RAM。
    作为本发明的进一步改进:所述旋转因子存储单元采用两个查找表,每个所述查找表具 有N1个选项;每个所述查找表对应连接一个所述蝶形运算部件。
    与现有技术相比,本发明的优点在于:
    (1)本发明根据运算规模及运算次数的配置数据控制执行FFT运算,对于大规模的FFT,将N点一维FFT运算转换为二维FFT运算,能够实现小规模到大规模范围内的FFT运算,应用范围广泛、灵活性强;执行FFT运算时采用IEEE-754标准的浮点运算并通过CORDIC算法计算补偿旋转因子,能够支持更为常用的浮点格式FFT运算,通过数据格式的转换还能够支持32位定点数据格式,运算规模、运算次数及数据格式支持多种配置模式。
    (2)本发明执行FFT计算时采用两个FFT执行子??椴⑿兄葱辛阶槭莸腇FT计算,每个FFT执行子??椴捎昧礁龅卧怂悴考⑿兄葱?,能够有效的加速实现FFT运算、提高加速器的执行性能;同时由两个FFT执行子??楣蚕硪桓鯟ORDIC补偿旋转因子计算子???,每个FFT执行子??橹械卧怂阌胄蜃硬钩ゼ扑愀从猛挥布峁?,使硬件执行效率最大化同时节省硬件资源。
    (3)本发明在FFT计算时采用两组乒乓多体结构的数据存储器存储读入或写出的数据,两组数据的FFT计算的交替执行,同时每组数据存储器由4个RAM组成,保证数据存储器的初始化与FFT计算同时进行,通过FFT的计算开销隐藏从存储器访问数据的开销,从而提高FFT的计算性能。
    附图说明
    图1是本实施例基于DSP芯片的FFT加速器结构示意图。
    图2是本实施例中基于DSP芯片的FFT加速器的外部接口结构示意图。
    图3是本实施例中CORDIC补偿旋转因子计算子??榻峁故疽馔?。
    图4是本实施例中角度计算单元结构示意图。
    图5是本实施例中迭代单元ROT结构示意图。
    图6是本实施例中第一FFT执行子???FFT-PE[1])结构示意图。
    图7是本实施例中并行蝶形运算单元结构示意图。
    图8是本实施例中蝶形运算部件结构示意图。
    图9是本实施例中数据存储单元结构示意图。
    图10是本实施例中旋转因子存储单元结构示意图。
    图11是本实施例中两个FFT执行子??镕FT-PE计算时的时序原理示意图。
    图例说明
    1、模式配置???;2、FFT运算控制???;3、数据访问控制???;4、FFT计算???;41、第一FFT执行子???FFT-PE[1]);42、第二FFT执行子???FFT-PE[2]);43、CORDIC 补偿旋转因子计算子???;411、FFT计算控制单元;412、数据存储单元;413、并行蝶形运算单元;414、旋转因子存储单元;5、数据格式转换???。
    具体实施方式
    以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的?;し段?。
    如图1所示,本实施例基于DSP芯片的FFT加速器结构,包括:
    模式配置???,用于从DSP内核接收数据地址、运算规模N=2k及运算次数M的配置数据,输出至FFT运算控制???及数据访问控制???;
    FFT运算控制???,用于判断运算规模N是否大于阈值N1,若为否,控制FFT计算???进行N点一维FFT运算;若为是,将初始运算数据转换为N1*N2的二维矩阵并控制FFT计算???进行二维FFT运算,其中N=N1*N2,N1为为FFT计算???能够直接支持的最大FFT运算规模且N1大于或等于N2,输出控制信号至FFT计算???;
    数据访问控制???,用于FFT计算???执行运算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算???,并将FFT计算???输出的运算结果存储回存储器中;
    FFT计算???,用于根据FFT运算控制???输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行N2次N1点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算。
    本实施中,阈值N1由DSP芯片中实际采用的FFT计算???能够直接支持的最大FFT运算规模决定,如采用现有技术中的FFT加速器。运算规模N小于阈值N1时,FFT加速器可直接支持,通过执行N点的一维FFT运算完成;对于大于阈值N1的大规模FFT运算,则将N点FFT运算转换为二维FFT运算,FFT运算采用浮点格式。采用以上方法,本实施例基于DSP芯片的FFT加速器能够支持的最大规模为N1*N1的FFT运算。
    本实施例中,还包括分别与数据访问控制???、FFT计算???的输出端连接的数据格式转换???。对于定点输入数据,数据格式转换???将数据转换为浮点格式并将FFT计算结果转换为相应的定点格式。输入的数据为定点格式时,在数据输入阶段,数据访问控制???从存储器中读取定点格式的初始数据,由数据格式转换???将数据转换为浮点格式输出至FFT计算???;在数据写回阶段时,将FFT计算???输出的运算结果转换为对应的定点格式后输出回数据访问控制???。工作时,由FFT运算控制???输出数据格式及计算阶段至数据访问控制???,数据格式转换???根据数据格式及计算阶段执行数据 格式的转换。采用浮点格式计算FFT运算,能够实现对实际应用中更为常用的IEEE-754标准浮点格式数据的FFT计算,同时通过数据格式的转换也能够支持定点格式数据的计算,对输入数据的格式要求灵活。
    本实施例中,模式配置???通过命令总线从DSP内核接收配置数据,其中配置数据包括初始数据起始地址、中间数据地址及结果数据地址、运算规模N、FFT运算个数M、浮点和定点选择信号以及定点格式信号。FFT运算控制???根据配置数据,控制FFT计算???执行不同运算规模、不同FFT运算个数以及浮点或定点格式的FFT运算,能够支持可变的运算规模及FFT运算个数,输入数据可以为IEEE-754标准的单精度浮点格式或32位定点数据格式,能够支持多种配置模式,满足不同嵌入式应用领域的要求,应用范围广泛且灵活性强。在其它实施例中配置数据还可包括FFT与IFFT选择信号、实数与复数选择信号、浮点和定点选择信号以及定点格式信号,FFT运算控制???根据配置数据控制FFT计算???执行FFT或IFFT运算、实数或复数类型的FFT/IFFT运算,实现多种运算模式。
    对于N点FFT且N>N1,总共需要执行次蝶形运算,包括级、每级次蝶形运算。小规模FFT计算中,即运算规模N小于N1时,同一级的次蝶形运算可以并行执行。
    本实施例中,由FFT运算控制???控制FFT计算???运行完成N点FFT运算。FFT运算控制???通过命令总线从DSP内核接收命令,命令包括启动FFT执行命令、暂停FFT执行命令、恢复FFT执行命令以及作废FFT执行命令,控制FFT计算???执行相应的命令。启动FFT执行命令为启动进行FFT计算,暂停FFT执行命令为暂停数据访问总线,恢复FFT执行命令为恢复本次FFT计算,作废FFT执行命令为作废本次FFT运算。当FFT计算???完成所有FFT计算后,FFT运算控制???立即向DSP内核发送FFT完成中断信号,同时置完成寄存器的值为1。
    FFT运算控制???控制FFT计算???启动FFT执行命令时,发送启动命令并根据配置数据控制FFT计算???执行,输出相应的控制信号及运算规模N至FFT计算???并向数据访问控制???发送数据访问请求。数据访问控制???响应FFT运算控制???的数据访问请求,根据数据地址控制读取运算数据至FFT计算???进行运算。对于大于N1点的FFT运算,FFT运算控制???将N点初始运算数据视为N2*N1的二维矩阵,控制FFT计算???执行二维FFT运算,FFT计算???进行二维FFT运算时,首先并行执行N2次N1点的列方向一维FFT计算,进行旋转因子补偿后完成列方向的FFT运算,再对列方向的FFT运算结果并行执行N1次N2点的行方向一维FFT计算,完成N点的FFT运算;对于运 算规模N小于N1的FFT运算,直接并行执行N点的一维FFT。
    FFT运算过程中,需要将初始运算数据、中间数据及运算结果存储在片外或片上存储器中。对于片外的DDR存储器,能够提供较大的存储空间(G量级)来存储初始数据和运算结果,然而DDR存储器组织结构特点决定了需要以突发方式连续访问数据;对于片上SRAM存储器,能够以随机访问方式快速得到SRAM中任何地址中的数据,其数据组织较为灵活,然而占用了DSP芯片资源且存储容量有限(M量级),进行大规模FFT计算时原始数据和计算结果不能都存储在片上SRAM存储器中。
    如图2所示,本实施例中基于DSP芯片的FFT加速器的外部接口结构,由数据访问控制???实现与DSP芯片内或芯片外存储器的数据交互,模式配置???接收DSP内核的配置数据、FFT运算控制???接收DSP内核的命令并将FFT完成中断信号发送至DSP内核。FFT计算???每次执行计算时,由FFT运算控制???向数据访问控制???发送数据访问请求,控制进行运算数据的读写。数据访问控制???将FFT运算控制???的读、写数据请求转换为DDR总线协议的访问或者SRAM总线协议的访问,其中对于读数据请求,数据访问控制???根据数据地址从片外DDR存储器或者片上SRAM存储器中以突发方式读出数据,并将数据写到FFT计算???的数据存储器中;对于写数据请求,从FFT计算???的数据存储器中读出数据,并写回到片外DDR存储器或者片上SRAM中。
    本实施例中,结合片外DDR存储器和片上SRAM存储器对数据进行存储,利用片外DDR存储器存储数据量大的初始运算数据和计算结果,利用片上SRAM存储器随机访问的特性存储FFT计算时的中间数据,同时使用片上SRAM存储器完成二维FFT计算时的二维数据转置,避免对片外DDR存储器中数据进行按列访问。采用DMA的方式实现DSP芯片内外数据的交互,能够最大化发挥各个数据通路的带宽,结合DDR存储器和SRAM存储器的优点共同实现对大点数FFT运算数据的存储,存储带宽利用率高、有效发挥DSP芯片的流水线计算效率。
    一级蝶形运算表达式可以表示为:
    X(k)=X(k)+X(k+B)WNrX(k+B)=X(k)-X(k+B)WNr---(1)]]>
    其中X(k)、X(k+B)为本级蝶形运算的数据输入,X(k)'、X(k+B)'为本级蝶形运算的运算结果,WNr=cos(-2πrN)+jsin(-2πrN)]]>为旋转因子。
    假定X=X(k)=Xr+i*Xi,Y=X(k+B)=Yr+i*Yi,X'=X(k)'=Xr'+i*Xi',Y'=X(k+B)'=Yr'+i*Yi',其中X、Y、W均为复数,Xr、Xi、Yr、Yi、 Xr'、Xi'、Yr'、Yi'、Wr、Wi分别表示X、Y、W的实部和虚部,则满足以下关系式:
    Xr=Xr+Yr*Wr-Yi*WiXi=Xi+Yr*Wi+Yi*WrYr=Xr-(Yr*Wr-Yi*Wi)Yi=Xi-(Yr*Wi+Yi*Wr)---(2)]]>
    旋转因子补偿计算就是浮点复数乘法运算,即实现C=Y*W,其中C、Y、W均为复数,Cr、Ci、Yr、Yi、Wr、Wi分别表示C、Y、W的实部和虚部,则满足:
    Cr=Yi*Wr-Yi*WiCi=Yr*Wi+Yi*Wr---(3)]]>
    本实施例中,FFT计算???包括两个并联的FFT执行子??镕FT-PE以及分别与两个FFT执行子??镕FT-PE连接的CORDIC补偿旋转因子计算子???3,两个FFT执行子??镕FT-PE分别为第一FFT执行子???1(FFT-PE[1])和第二FFT执行子???2(FFT-PE[2])。由每个FFT执行子??镕FT-PE执行一组数据的蝶形运算或旋转因子补偿计算,其中一组数据为规模小于或等于N1点的数据,FFT-PE[1]、FFT-PE[2]以交替的方式并行执行,蝶形运算公式如式(2)所示,旋转因子补偿计算如式(3)所示。运算规模N小于N1时,一组数据即为N点数据;运算规模N大于N1时,需要执行二维FFT,一组数据为N1*N2二维矩阵的一行或一列数据。
    本实施例采用采用任务级并行的方法,由两个FFT执行子??镕FT-PE并行完成两组数据的FFT计算,两个FFT执行子??镕FT-PE交替执行,在不受到存储带宽限制的情况下,运算性能能够获得近似线性的提升。
    本实施例中,采用CORDIC算法实现补偿旋转因子动态产生,即采用CORDIC算法实现旋转因子中实部和虚部的计算,由CORDIC补偿旋转因子计算子???3根据数据地址A及运算规模N计算出相应的补偿旋转因子,其中数据地址A即为旋转因子表达式中的参数r。如图3所示,本实施例中CORDIC补偿旋转因子计算子??榻峁?,与现有技术中基于CORDIC算法的三角函数实现装置相同,包括多个角度计算单元(1)~(16)、多个迭代单元ROT(1)~ROT(41)和一个规格化???,根据地址A和k(N=2k)得到初始角度Z0,每个角度计算单元由输入角度Zi计算得出每级CORDIC迭代的旋转方向σi,每个迭代单元ROT则根据旋转方向σi、X方向和Y方向输入Xi、Yi执行一级CORDIC迭代,共执行41级迭代后由规格化??榻泄娓窕?,得到三角函数值cos(Z0)、sin(Z0)。如图4所示,本实施例中角度计算单元结构,由上 一级的角度Zi-1计算得到本级的角度Zi。如图5所示,本实施例中迭代单元ROT结构,由上一级X方向和Y方向的值Xi-1、Yi-1迭代得到本级X方向和Y方向的值Xi、Yi。
    如图6所示,本实施例中第一FFT执行子???FFT-PE[1])结构,与第二FFT执行子???2的结构相同,包括依次连接的FFT计算控制单元411、数据存储单元412、并行蝶形运算单元413以及旋转因子存储单元414。FFT计算控制单元411控制FFT运算及CORDIC补偿旋转因子计算子???3的启动,CORDIC补偿旋转因子计算子???3在FFT计算控制单元411的控制下根据数据地址A及运算规模N计算出补偿旋转因子,通过选择器输出给并行蝶形运算单元413;数据存储单元412根据FFT计算控制单元411提供的数据地址及写使能信号输入待运算数据至并行蝶形运算单元413并在并行蝶形运算单元413完成FFT计算后输出运算结果;并行蝶形运算单元413并行执行一组数据的蝶形运算或补偿旋转因子的计算,其中当执行蝶形计算时,通过选择器选择旋转因子存储单元414提供旋转因子,当进行旋转因子补偿计算时,由CORDIC补偿旋转因子计算子???3提供补偿旋转因子。
    本实施例中每个FFT执行子??橹胁⑿械卧怂愕ピ?13设置两个并行的蝶形运算部件,并行执行一个小规模FFT运算,即规模小于N1点的FFT运算,每个蝶形运算部件执行次蝶形运算。如图7所示,本实施例中并行蝶形运算单元结构,包括两个并行的蝶形运算部件:蝶形运算部件[0]和蝶形运算部件[1],共同完成一组数据的蝶形运算或旋转因子补偿计算。每个蝶形运算部件输入待变换的数据或旋转因子,经过计算后输出蝶形运算结果。
    对于大于N1点FFT运算中,补偿旋转因子个数与FFT规模相同,例如1M点FFT运算,补偿旋转因子的存储量将达到8MB,所需存储空间较大。本实施例中,由两个FFT执行子??镕FT-PE并行完成N点FFT运算,FFT执行子??镕FT-PE中每个蝶形运算部件执行的计算次数为由于N点FFT的补偿旋转因子计算次数为N,因此可以设置两个FFT执行子??镕FT-PE共享一个CORDIC补偿旋转因子计算子???3。
    本实施例由两个FFT执行子??镕FT-PE共享一个CORDIC补偿旋转因子计算子???3,使硬件效果最大化硬件。
    根据公式(2)可知,蝶形运算需要4个乘法来分别实现等式:T1=Yr*Wr、T2=Yi*Wi、T3=Yr*Wi以及T4=Yi*Wr,需要6个加减法来分别实现等式:T5=T1-T2、T6=T3+T4、Xr'=Xr+T5、Xi'=Xi+T6、Yr'=Xr-T5以及Yi'=Xi-T6。
    根据公式(3)可知,旋转因子补偿计算需要4个乘法来分别实现等式:T1=Yr*Wr、T2=Yi*Wi、T3=Yr*Wi、T4=Yi*Wr,2个加减法来分别实现等式:Cr=T5=T1-T2、Ci=T6=T3+T4。
    由于在FFT运算过程中,蝶形运算和旋转因子补偿计算不会同时执行,本实施例中采用复用策略利用同一硬件逻辑实现蝶形运算和旋转因子补偿计算,由并行蝶形运算单元413执行蝶形运算或补偿旋转因子的计算。当FFT执行子??镕FT-PE执行蝶形计算时,通过选择器选择旋转因子存储单元414提供旋转因子进入蝶形运算部件;当进行旋转因子补偿计算时,由CORDIC补偿旋转因子计算子???3提供补偿旋转因子进入蝶形运算部件。
    如图8所示,本实施例中蝶形运算部件结构,采用全硬件流水结构实现流水线并行计算,包括4个IEEE-754标准的单精度浮点乘法器和6个IEEE-754标准的单精度浮点加/减法器,其中包括3个单精度浮点加法器及3个单精度浮点减法器,图中还示出了流水寄存器。由蝶形运算部件在每个时钟周期内完成一次蝶形运算或一个补偿旋转因子计算,即实现公式(2)、(3),计算得到Xr'、Yr'、Cr、Ci、Xi'以及Yi'。
    本实施例中,数据存储单元412包括两组数据存储器并采用乒乓多体结构,保证数据存储单元412的初始化与FFT计算能够同时进行,通过FFT的计算开销隐藏从片上SRAM或者片外DDR存储器读取数据和写回结果的开销,从而提高FFT加速器的计算性能。
    由于每个蝶形运算部件需要读取两个复数X(k)和X(k+B),同时将两个蝶形运算结果X(k)'和X(k+B)'写入到数据存储器中,两个蝶形运算部件需要同时提供4个读端口和4个写端口。本实施例中,数据存储单元412包括两组数据存储器,每组数据存储器由4个双端口的的RAM组成,保证两个并行的蝶形运算部件能够同时从数据存储单元412中读取出数据,并把结果写回到数据存储单元412的相应位置。数据存储单元412的存储容量为16N1B,由阈值N1确定,两个FFT执行子??镕FT-PE共提供32N1B存储容量的数据存储器。如图9所示,本实施例中数据存储单元结构,包括第一组数据存储器和第二组数据存储器,每组数据存储器包含4个双端口的RAM。
    每次蝶形运算需要一个旋转因子,两个蝶形运算部件需要两个旋转因子存储体。本实施例中,旋转因子存储单元414包括两个旋转因子存储体并组织成一个多体结构,旋转因子存储单元414的存储容量需求为4N1B,由阈值N1确定,两个FFT执行子??镕FT-PE共提供8N1B存储容量的旋转因子存储体。如图10所示,本实施例中旋转因子存储单元结构,包括RAM0和RAM1两个旋转因子存储体。
    如图11所示,本实施例中两个FFT执行子??镕FT-PE计算时的时序原理,其中读表示读源操作数,FFT-PE[1]计算及FFT-PE[2]计算分别表示FFT-PE[1]执行FFT计算、FFT-PE[2]执行FFT计算,写表示写计算结果,虚线箭头表示存储通路依赖关系。两个FFT执行子??镕FT-PE之间没有数据依赖关系,当初始数据存储到FFT执行子??镕FT-PE的数据寄存器后启动对应的FFT执行子??榧扑?。第一次读初始数据顺序为:FFT-PE[1]中的第一组数据存储 器、FFT-PE[2]中的第一组数据存储器、FFT-PE[1]中的第二组数据存储器、FFT-PE[2]中的第二组数据存储器。两个FFT执行子??榈募扑懵呒越惶娴姆绞蕉缘谝蛔楹偷诙槭萁屑扑?,对于每组数据寄存器,当计算完成后且数据通路保持空闲状态,就可以启动写结果步骤,当写完结果后立即启动该组存储器的读初始数据。
    本实施例采用两个FFT执行子??椴⑿?、交替的执行两组数据的FFT运算,两组数据存储器采用乒乓多体结构,使得FFT计算与数据读写访问能够同时执行,提高FFT执行效率。
    本实施例中,采用上述基于DSP芯片的FFT加速器执行FFT计算的具体步骤为:
    步骤1):DSP内核通过外置总线接口将配置数据并写入到FFT加速器的配置寄存器中;
    步骤2):DSP内核通过外置总线接口向FFT加速器发送命令,启动FFT加速器的运行,FFT运算控制???开始产生控制信号控制FFT计算???的运行;
    步骤3):通过数据访问控制???的控制,以DMA方式从片外DDR存储器或片上SRAM存储器中读取数据放入到FFT执行子??镕FT-PE中的数据寄存器中;
    步骤4):启动FFT执行子??镕FT-PE,完成FFT计算;
    步骤5):将计算结果写回到片外DDR存储器或片上SRAM存储器中指定的地址。
    步骤6):完成FFT计算后,发送FFT完成中断信号给DSP内核。
    其中步骤3)、步骤4)和步骤5)同时启动,使数据读写操作与FFT运算能够重叠起来,最大限度发挥FFT执行子??镕FT-PE、DDR总线通路和SRAM总线通路的效率。
    以下以能够直接支持的最大FFT运算规模为1K点为例进一步说明本发明,即N1=1K。
    本实施例中基于DSP芯片的FFT加速器结构,包括:
    模式配置???,用于从DSP内核接收数据地址、运算规模N=2k及运算次数M的配置数据,其中2<N<1M,输出至FFT运算控制???及数据访问控制???;
    FFT运算控制???,用于判断运算规模N是否大于1K,若为否,控制FFT计算???进行N点一维FFT运算;若为是,控制FFT计算???进行2k-10*1024的二维FFT运算,输出控制信号至FFT计算???;
    数据访问控制???,用于FFT计算???每次计算时,根据数据地址控制以DMA方式从存储器中读取出运算数据至FFT计算???,并将FFT计算???输出的运算结果存储回存储器中;
    FFT计算???,用于根据FFT运算控制???输出的控制信号并行执行FFT运算;进行一维FFT运算时,并行执行N点的一维FFT运算;进行二维FFT运算时,并行执行2k-10次1K点的列方向一维FFT计算,对计算结果进行旋转因子补偿,再并行执行1K次2k-10点的行方向一维FFT计算,完成N点的FFT运算。
    工作时,模式配置???接收配置数据,对数据格式、运算规模N、FFT运算个数M进行配置;FFT运算控制???接收到启动命令后启动FFT加速器运行,根据配置数据向数据访问控制???发送数据访问请求并控制FFT计算???执行FFT运算;若运算规模N小于1K时,FFT运算控制???控制FFT计算???执行N点一维FFT运算,由数据访问控制???从片外存储器或片上SRAM存储器中读取出N点初始数据,FFT计算???执行一次计算完成N点一维FFT运算后,数据访问控制???将计算结果写回片外存储器或片上SRAM存储器的相应位置;若运算规模N大于1K时,FFT运算控制???将N点一维FFT运算转换为2k-10*1024的二维FFT运算,控制FFT计算???以行方向计算2k-10次1K点FFT运算,进行旋转因子补偿后以列方向计算1K次2k-10点FFT运算;FFT计算???每次执行运算时,由数据访问控制???根据数据地址从片外DDR存储器或片上SRAM存储器中读取出运算数据,并在完成运算后将运算结果写回片外DDR存储器或片上SRAM存储器中。
    本实施例通过将大于1K点FFT运算转换为二维FFT运算,可支持最大规模为1M的大规模FFT运算。
    本实施例中,还包括分别与数据访问控制???、FFT计算???的输出端连接的数据格式转换???。对于定点输入数据和FFT计算结果,数据格式转换???用于在数据输入阶段,即数据访问控制???读取的数据为定点格式,将数据转换为浮点格式输出至FFT计算???;在数据写回阶段时,将FFT计算???输出的运算结果转换为对应的定点格式后输出回数据访问控制???。
    本实施例中,FFT计算???包括两个并联的FFT执行子??镕FT-PE以及分别与两个FFT执行子??榱拥腃ORDIC补偿旋转因子计算子???3,两个FFT执行子??镕FT-PE分别为第一FFT执行子???1(FFT-PE[1])和第二FFT执行子???2(FFT-PE[2])。由每个FFT执行子??镕FT-PE执行一组数据的蝶形运算或旋转因子补偿计算,其中一组数据为规模小于1K点的数据,FFT-PE[1]、FFT-PE[2]以交替的方式并行执行,蝶形运算公式如式(2)所示,旋转因子补偿计算如式(3)所示。当运算规模N小于1K时,直接执行N点的一维FFT,此时一组数据为N点的一行数据;当运算规模N大于1K时,执行2k-10*1K的二维FFT运算,先执行2k-10次1K点列方向FFT计算时,再对列方向FFT计算结果进行旋转因子补偿操作,最后再执行1K次2k-10点行方向FFT计算,由FFT执行子??镕FT-PE并行执行两行或两列数据计算。
    本实施例中FFT执行子模包括依次连接的FFT计算控制单元411、数据存储单元412、并行蝶形运算单元413以及旋转因子存储单元414。FFT计算控制单元411控制FFT运算及CORDIC补偿旋转因子计算子???3的启动,CORDIC补偿旋转因子计算子???3在FFT 计算控制单元411的控制下根据数据地址A及运算规模N计算出补偿旋转因子,通过选择器输出给并行蝶形运算单元413;数据存储单元412根据FFT计算控制单元411提供的数据地址及写使能信号输入待运算数据至并行蝶形运算单元413并在并行蝶形运算单元413完成FFT计算后输出运算结果;并行蝶形运算单元413并行执行一组数据的蝶形运算或补偿旋转因子的计算,其中通过选择器选择进行蝶形运算时,由旋转因子存储单元414提供旋转因子,选择进行旋转因子补偿计算时,由CORDIC补偿旋转因子计算子???3提供补偿旋转因子。
    本实施例中每个FFT执行子??橹胁⑿械卧怂愕ピ?13设置两个并行的蝶形运算部件,并行执行规模小于1K点数据的FFT计算,每个蝶形运算部件执行次蝶形运算。
    本实施例中,设置两个FFT执行子??镕FT-PE共享一个CORDIC补偿旋转因子计算子???3。
    本实施例中采用复用策略利用同一硬件逻辑实现蝶形运算和旋转因子补偿计算,由并行蝶形运算单元413执行蝶形运算或补偿旋转因子的计算。
    本实施例中蝶形运算部件采用全硬件流水结构实现流水线并行计算,包括4个IEEE-754标准的单精度浮点乘法器、3个单精度浮点加法器及3个单精度浮点减法器,在每个时钟周期内完成一次蝶形运算或一个补偿旋转因子计算,实现公式(2)、(3)。
    本实施例中,数据存储单元412包括两组数据存储器并采用乒乓多体结构,保证数据存储单元412的初始化与FFT计算能够同时进行,每组数据存储器由4个双端口的RAM组成,保证两个并行的蝶形运算部件能够同时从数据存储单元412中读取出数据,并把结果写回到数据存储单元412的相应位置。数据存储单元412的存储容量为256*64位,两个FFT执行子单元FFT-PE共提供2048*64位的数据存储器。
    本实施例中,旋转因子存储单元414组织成一个多体结构,包括两个旋转因子存储体,每个旋转因子存储体采用1024选项的64位查找表实现。
    上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案?;さ姆段?。

    关 键 词:
    基于 DSP 芯片 FFT 加速器
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:基于DSP芯片的FFT加速器.pdf
    链接地址://www.4mum.com.cn/p-6142998.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03