CN102104773B - 用于实现可变数据个数的fft/ifft处理器的基4模块 - Google Patents

用于实现可变数据个数的fft/ifft处理器的基4模块 Download PDF

Info

Publication number
CN102104773B
CN102104773B CN 200910201955 CN200910201955A CN102104773B CN 102104773 B CN102104773 B CN 102104773B CN 200910201955 CN200910201955 CN 200910201955 CN 200910201955 A CN200910201955 A CN 200910201955A CN 102104773 B CN102104773 B CN 102104773B
Authority
CN
China
Prior art keywords
data
register
radix
blocks
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910201955
Other languages
English (en)
Other versions
CN102104773A (zh
Inventor
左耀华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Huahong Integrated Circuit Co Ltd
Original Assignee
Shanghai Huahong Integrated Circuit Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Huahong Integrated Circuit Co Ltd filed Critical Shanghai Huahong Integrated Circuit Co Ltd
Priority to CN 200910201955 priority Critical patent/CN102104773B/zh
Publication of CN102104773A publication Critical patent/CN102104773A/zh
Application granted granted Critical
Publication of CN102104773B publication Critical patent/CN102104773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种用于实现可变数据个数的FFT/IFFT处理器的基4模块,包括:寄存器A、寄存器B和寄存器C,在外部数据输入时,该数据块被分成四块,三个存储器依次分别存储第一块、第二块和第三块数据;在基4运算单元完成运算后,三个存储器依次分别存储第二块数据,第三块数据,第四块数据;基4运算单元,用以进行基4运算;基4运算完成之后,第一个数据直接输出进行乘法运算,其他三个数据分别转存到寄存器A,寄存器B和寄存器C;四个MUX选择器,用来对数据流进行选择控制;选择与控制模块,控制整个过程的数据流向和运算过程。本发明能够减少寄存器使用数量,提高资源利用效率,降低功耗;适用于CMMB,DVB-T等移动数字电视芯片的设计。

Description

用于实现可变数据个数的FFT/IFFT处理器的基4模块
技术领域
本发明涉及信号处理技术领域,特别是涉及一种用于实现可变数据个数的FFT/IFFT处理器的基4模块。
背景技术
随着通信技术和信号处理技术的发展,人们对多媒体的需求越来越多,要求的质量也越来越高,如何在现有的技术水平和硬件条件下实现合理优化实时的多媒体通信终端设备和产品一直是近年来信号处理领域和相关公司关注的话题。
移动数字电视作为多媒体通信以及集成电路产业发展的重要方向,近年来在国际上获得飞速发展,在国内也呈现出百花齐放的态势;而作为数字电视标准中的佼佼者,CMMB标准更是凭借2008年奥运之东风加速了其产业链的完善和商业化进程,其信号已覆盖全国大多数大中型城市,相信在不久的将来,拥有CMMB标准的数字电视将会深入到社会的每个角落,使国民共享由科技发展所带来的盛宴。CMMB数字电视良好的应用前景和市场使得不少公司和研究单位陆续投入大量人力物力对其进行研究开发。
而在信号分析处理方面有着卓越表现的快速傅里叶变换FFT及反快速傅里叶变换IFFT不仅能将模拟信号转换到频域,而且还能把数字信号从频域转换到时域或从时域转换到频域;这使得它在通信领域应用十分广泛。在CMMB系统发送端需要对信号进行反快速傅里叶变换IFFT,而在CMMB系统接收端则需要对信号进行快速傅里叶变换FFT。
FFT/IFFT系统中的核心运算就是基2或基4运算,基4或基2模块的性能对整个FFT/IFFT系统的性能影响巨大。
发明内容
本发明要解决的技术问题是提供一种用于实现可变数据个数的FFT/IFFT处理器的基4模块,能够减少寄存器使用数量,提高资源利用效率,降低功耗。
为解决上述技术问题,本发明的用于实现可变数据个数的FFT/IFFT处理器的基4模块包括:
寄存器A、寄存器B和寄存器C,三个寄存器的容量大小均为N/4,N为大于1的整数,用于依次分别存储不同时期的三块数据;当一个数据个数为N的数据块从外部输入时,该数据块被分成四块,所述三个寄存器依次分别存储第一块数据,第二块数据,第三块数据;第四块数据依次输入到基4运算单元的输入端;在基4运算单元完成运算后,三个寄存器依次分别存储第二块数据,第三块数据,第四块数据;
基4运算单元,其输入端输入的数据分别来自寄存器A,寄存器B,寄存器C和外部输入的第四块数据,用于进行基4运算;当基4运算完成之后,第一个数据直接输出进行乘法运算,其他三个数据分别转存到寄存器A,寄存器B和寄存器C;
第一MUX选择器,其输入端输入的数据来自外部输入的第一块数据和基4运算单元输出的第二块数据,其输出端与寄存器A连接,用于对数据流进行选择控制;
第二MUX选择器,其输入端输入的数据来自外部输入的第二块数据和基4运算单元输出的第三块数据,其输出端与寄存器B连接,用于对数据流进行选择控制;
第三MUX选择器,其输入端输入的数据来自外部输入的第三块数据和基4运算单元输出的第四块数据,其输出端与寄存器C连接,用于对数据流进行选择控制;
第四MUX选择器,其输入端输入的数据来自寄存器A,寄存器B,寄存器C输出的数据及基4运算单元输出的数据,用于对数据流进行选择控制;
选择与控制模块,用于控制整个过程的数据流向和运算过程,保证整个电路正常工作。
采用本发明的基4模块,能节省大量存储器资源,例如在设计数据个数N=4096的FFT处理器时,比传统设计方法节省的存储器资源可达62.5%,N越大,节省的寄存器资源越多;实现过程简单,可在FPGA或者ASIC上实现;适用于CMMB,DVB-T等移动数字电视芯片的设计。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明的基4模块一实施例结构框图;
图2是寄存器读写时序图。
具体实施方式
结合图1所示,本发明的基本构思是:当数据个数为N的数据块从外面输入到基4模块后,第1~N/4个数据被送往寄存器A暂存,第(N/4+1)~N/2个数据被送往寄存器B暂存,第(N/2+1)~3*N/4个数据送往寄存器C暂存,在第(3*N/4+1)~N个数据到来时,被送往基4运算单元;同时,从寄存器A中读取第1~N/4个数据,从寄存器B中读取第(N/4+1)~N/2个数据,从寄存器C中读取第(N/2+1)~3*N/4个数据,分4路送往基4运算单元进行处理(即“基4运算单元”的输入端有4路输入信号,分别来自寄存器A,寄存器B,寄存器C的输出,及外部数据din);基4运算单元处理4路输入数据后会同时产生4路输出数据,把第一路数据直接输出到乘法模块,把第二路数据写入到寄存器A,把第三路数据写入到寄存器B,把第四路数据写入到寄存器C。当所有数据处理完毕时,第一路数据也恰好输出完毕;此时,若下一个数据为N的数据块到达基4模块,则采取先读后写的方式,先从寄存器A读取第二路数据输出到乘法模块并写入下一个数据块中的第1~N/4个数据;第二路数据输出完毕后,再从寄存器B读取第三路数据输出到乘法模块并写入下一个数据块中的第(N/4+1)~N/2个数据;第三路数据输出完毕后,再从寄存器C读取第四路数据输出到乘法模块并写入下一个数据块中的第(N/2+1)~3*N/4个数据;继续重复上面的过程进行数据处理。
按照上面所述的设计构思具体实施时,如果输入数据的时钟若为clk1x,则基4模块的三个寄存器以及相关控制逻辑电路的时钟需采用两倍时钟clk2x,这样才能保证在下一个数据块到来时,对寄存器的先读后写操作不会出现出数据被覆盖或丢失的情况。
下面以数据个数N为4096的数据块的基4运算为例,进行详细的说明,能更有助于理解本发明的技术解决方案及所产生的有益效果。
将4096个数据分成四块,第一块为第1~1024个数据;第二块为第1025~2048个数据;第三块为第2049~3072个数据;第四块为第3073~4096个数据。当第一块数据(即第1~1024个数据)到来时,被送往寄存器A暂存,当第二块数据(即第1025~2048个数据)到来时,被送往寄存器B暂存,当第三块数据(即第2049~3072个数据)到来时,被送往寄存器C暂存,当第四块数据(即第3073~4096个数据)的第一个数据(即第3073个数据)到来时,直接送往基4运算单元;同时,从寄存器A取出第一块数据的第一个数据(即第1个数据),从寄存器B取出第二块数据的第一个数据(即第1025个数据),从寄存器C取出第三块数据的第一个数据(即第2049个数据),一起送往基4运算单元,进行基4运算。运算完成后,会产生4个输出数据,把第1个基4运算单元的输出数据直接输出到乘法模块,进行乘法运算,把第2个基4运算单元的输出数据写回到寄存器A,保存在原来第1个数据的位置,把第3个基4运算单元的输出数据写回到寄存器B,保存在原来第1025个数据的位置,把第4个基4运算单元的输出数据写回到寄存器C,保存在原来第2049个数据的位置;然后再接受第四块数据(即第3073~4096个数据)的第二个数据(即第3074个数据),直接送往基4运算单元,同时,从寄存器A取出第一块数据的第二个数据(即第2个数据),从寄存器B取出第二块数据的第二个数据(即第1026个数据),从寄存器C取出第三块数据的第二个数据(即第2050个数据),一起送往基4运算单元,进行基4运算。运算完成后,会产生4个输出数据;第1个基4运算单元的输出数据直接输出到乘法模块,进行乘法运算;第2个基4运算单元的输出数据写回到寄存器A,保存在原来第2个数据的位置;第3个基4运算单元的输出数据写回到寄存器B,保存在原来第1026个数据的位置;第4个基4运算单元的输出数据写回到寄存器C,保存在原来第2050个数据的位置。然后,再接受第四块数据(即第3073~4096个数据)的第三个数据(即第3075个数据)……直至第四块数据(即第3073~4096个数据)的最后一个数据(即第4096个数据)处理完毕。与此同时,第一块数据(即第1~1024个数据),第二块数据(即第1025~2048个数据)和第三块数据(即第2049~3072个数据)也已经处理完毕。经过基4运算单元处理后的数据中,第一块已被基4运算单元处理的数据已经输出到乘法模块进行乘法运算,第二块已被基4运算单元处理的数据暂存在寄存器A,第三块已被基4运算单元处理的数据暂存在寄存器B,第四块已被基4运算单元处理的数据暂存在寄存器C。在输出完第一块已被基4运算单元处理的数据后,开始依次输出暂存在寄存器A中第二块已被基4运算单元处理的数据,同时接受外面的输入数据din,把外面输入数据的第一块数据(即第1~1024个数据)保存在寄存器A。
寄存器A的读写时序如图2所示,在2倍的外部输入数据的时钟的控制下,采取先读后写的方式,在前一个时钟周期把寄存器当前地址的存储单元里保存的数据读取出来输出,在后一个时钟周期把当前这个由外面输入的数据写入到寄存器当前地址的存储单元。在输出暂存在寄存器A中第二块已被基4运算单元处理的数据,并将由外面输入数据的第一块数据(即第1~1024个数据)保存在寄存器A后,再输出暂存在寄存器B中第三块已被基4运算单元处理的数据,并将由外面输入数据的第二块数据(即第1025~2048个数据)保存在寄存器B。然后,再输出暂存在寄存器C中第四块已被基4运算单元处理的数据,并将由外面输入数据的第三块数据(即第2049~3072个数据)保存在寄存器C……,直至所有已被基4运算单元处理的数据输出,下一轮需处理的数据暂存完毕,再进行下一轮的基4数据处理。
在设计可变数据个数的FFT(或IFFT)处理器时,使用本发明所述的基4模块组成的FFT处理器能节省大量的寄存器资源。以数据个数N为4096为例,传统方法在实现N=4096的FFT处理器时,需要12级流水线操作,每级流水线需2个大小为N/2=2048的存储器,如果数据宽度为32bit(比特位),则所需寄存器大小为:12*2*2048*32=1,572,864bit。而采用本发明所述的基4模块组成的FFT处理器只需要6级流水线,每级流水线需3个大小为N/4=1024的寄存器,如果数据宽度为32bit,则所需寄存器大小为:6*3*1024*32=589,824bit,节省寄存器62.5%。在大规模集成电路设计的今天,电路的复杂度及面积越来越大,在芯片面积不变的情况下,大量寄存器的节省显得尤为重要,既可以节省面积又可以降低功耗。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

Claims (4)

1.一种用于实现可变数据个数的FFT/IFFT处理器的基4模块,其特征在于,包括:
寄存器A、寄存器B和寄存器C,三个寄存器的容量大小均为N/4,N为大于1的整数,用于分别存储不同时期的三块数据;当一个数据个数为N的数据块从外部输入时,该数据块被平均分成四块,所述三个寄存器依次分别存储第一块数据,第二块数据,第三块数据;第四块数据依次输入到基4运算单元的输入端;在基4运算单元完成运算后,三个寄存器依次分别存储经基4运算单元处理后的第二块数据,第三块数据,第四块数据;
基4运算单元,其输入端输入的数据分别来自寄存器A,寄存器B,寄存器C和外部输入的第四块数据,用于进行基4运算;当基4运算完成之后,第一个输出数据直接输出进行乘法运算,其他三个输出数据依次分别转存到寄存器A,寄存器B和寄存器C;
第一MUX选择器,其输入端输入的数据来自外部输入的第一块数据和基4运算单元输出经基4运算后的第二块数据,其输出端与寄存器A连接,用于对数据流进行选择控制输出经基4运算后的第二块数据;
第二MUX选择器,其输入端输入的数据来自外部输入的第二块数据和基4运算单元输出经基4运算后的第三块数据,其输出端与寄存器B连接,用于对数据流进行选择控制输出经基4运算后的第三块数据;
第三MUX选择器,其输入端输入的数据来自外部输入的第三块数据和基4运算单元输出经基4运算后的第四块数据,其输出端与寄存器C连接,用于对数据流进行选择控制输出经基4运算后的第四块数据;
第四MUX选择器,其输入端输入的数据来自寄存器A,寄存器B,寄存器C输出的数据及基4运算单元输出的数据,用于对数据流进行选择控制;
选择与控制模块,用于控制整个过程的数据流向和运算过程,保证整个电路正常工作。
2.如权利要求1所述的基4模块,其特征在于,还包括:
旋转因子模块,用于产生乘法运算所需的旋转因子;
乘法模块,将经第四MUX选择器输出的基4运算单元的运算结果与所述旋转因子进行乘法运算。
3.如权利要求1所述的基4模块,其特征在于:所述基4模块的时钟应为外部输入数据的时钟的2倍。
4.如权利要求1所述的基4模块,其特征在于:所述N为4096个数据,分成四块,第一块为第1~1024个数据;第二块为第1025~2048个数据;第三块为第2049~3072个数据;第四块为第3073~4096个数据;
当第一块数据到来时,被送往寄存器A暂存,当第二块数据到来时,被送往寄存器B暂存,当第三块数据到来时,被送往寄存器C暂存,当第四块数据的第一个数据到来时,直接送往基4运算单元;同时,从寄存器A取出第一块数据的第一个数据,从寄存器B取出第二块数据的第一个数据,从寄存器C取出第三块数据的第一个数据,一起送往基4运算单元,进行基4运算;
运算完成后产生的4个输出数据,第1个基4运算单元的输出数据直接输出到乘法模块,进行乘法运算,第2个基4运算单元的输出数据写回到寄存器A,保存在原来第1个数据的位置,第3个基4运算单元的输出数据写回到寄存器B,保存在原来第1025个数据的位置,第4个基4运算单元的输出数据写回到寄存器C,保存在原来第2049个数据的位置;
然后再接受第四块数据第二个数据,直接送往基4运算单元,同时,从寄存器A取出第一块数据的第二个数据,从寄存器B取出第二块数据的第二个数据,从寄存器C取出第三块数据的第二个数据,一起送往基4运算单元,进行基4运算;
运算完成后产生的4个输出数据;第1个基4运算单元的输出数据直接输出到乘法模块,进行乘法运算;第2个基4运算单元的输出数据写回到寄存器A,保存在原来第2个数据的位置;第3个基4运算单元的输出数据写回到寄存器B,保存在原来第1026个数据的位置;第4个基4运算单元的输出数据写回到寄存器C,保存在原来第2050个数据的位置;
然后,再接受第四块数据的第三个数据,如此循环直至第四块数据的最后一个数据处理完毕;
与此同时,第一块数据,第二块数据和第三块数据也已经处理完毕,经过基4运算单元处理后的数据中,第一块已被基4运算单元处理的数据已经输出到乘法模块进行乘法运算,第二块已被基4运算单元处理的数据暂存在寄存器A,第三块已被基4运算单元处理的数据暂存在寄存器B,第四块已被基4运算单元处理的数据暂存在寄存器C;在输出完第一块已被基4运算单元处理的数据后,开始依次输出暂存在寄存器A中第二块已被基4运算单元处理的数据,同时接受外面的输入数据,把外面输入数据的第一块数据保存在寄存器A;输出完暂存在寄存器A的已被基4运算单元处理的最后一个数据后,开始依次输出暂存在寄存器B中第三块已被基4运算单元处理的数据,同时接受外面的输入数据,把外面输入数据的第二块数据保存在寄存器B;输出完暂存在寄存器B的已被基4运算单元处理的最后一个数据后,开始依次输出暂存在寄存器C中第四块已被基4运算单元处理的数据,同时接受外面的输入数据,把外面输入数据的第三块数据保存在寄存器C。
CN 200910201955 2009-12-18 2009-12-18 用于实现可变数据个数的fft/ifft处理器的基4模块 Active CN102104773B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910201955 CN102104773B (zh) 2009-12-18 2009-12-18 用于实现可变数据个数的fft/ifft处理器的基4模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910201955 CN102104773B (zh) 2009-12-18 2009-12-18 用于实现可变数据个数的fft/ifft处理器的基4模块

Publications (2)

Publication Number Publication Date
CN102104773A CN102104773A (zh) 2011-06-22
CN102104773B true CN102104773B (zh) 2013-03-20

Family

ID=44157243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910201955 Active CN102104773B (zh) 2009-12-18 2009-12-18 用于实现可变数据个数的fft/ifft处理器的基4模块

Country Status (1)

Country Link
CN (1) CN102104773B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102238348B (zh) * 2010-04-20 2014-02-05 上海华虹集成电路有限责任公司 一种可变数据个数的fft/ifft处理器的基4模块
CN105045766B (zh) 2015-06-29 2019-07-19 深圳市中兴微电子技术有限公司 基于3072点快速傅里叶变换的数据处理方法及处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504890A (zh) * 2002-12-03 2004-06-16 中国科学院计算技术研究所 数据全并行的fft处理器地址映射方法和系统
CN1983246A (zh) * 2005-12-14 2007-06-20 上海微小卫星工程中心 一种变换地址原址返回的级间流水fft处理模块
CN101083643A (zh) * 2006-05-31 2007-12-05 中国科学院微电子研究所 一种低存储器开销的混合基fft处理器及其方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349317B1 (en) * 1999-03-13 2002-02-19 Vitit Kantabutra Efficient radix-4 CORDIC vector rotators and computers of sine and cosine functions
US6914983B2 (en) * 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication
EP1426872A3 (en) * 2002-12-03 2006-02-22 STMicroelectronics Ltd. Linear scalable FFT/IFFT computation in a multi-processor system
CN1696894B (zh) * 2004-05-10 2010-04-28 华为技术有限公司 大数模乘计算乘法器
US7577698B2 (en) * 2004-12-28 2009-08-18 Industrial Technology Research Institute Fast fourier transform processor
CN101136891B (zh) * 2007-08-09 2011-12-28 复旦大学 流水线结构的3780点快速傅里叶变换处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504890A (zh) * 2002-12-03 2004-06-16 中国科学院计算技术研究所 数据全并行的fft处理器地址映射方法和系统
CN1983246A (zh) * 2005-12-14 2007-06-20 上海微小卫星工程中心 一种变换地址原址返回的级间流水fft处理模块
CN101083643A (zh) * 2006-05-31 2007-12-05 中国科学院微电子研究所 一种低存储器开销的混合基fft处理器及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特表2007-527072A 2007.09.20

Also Published As

Publication number Publication date
CN102104773A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
CN108132467B (zh) 基于增强型adc的dsp+fpga双基前视sar成像方法及成像装置
CN105912501B (zh) 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统
CN101136891B (zh) 流水线结构的3780点快速傅里叶变换处理器
CN102208005A (zh) 一种2-d卷积器
CN105975251B (zh) 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法
WO2010108371A1 (zh) 一种实现fft/ifft变换的电路及方法
CN101587469A (zh) 可变长度的快速傅立叶变换装置
CN101667984A (zh) 3780点快速傅立叶变换处理器及运算控制方法
CN101894096A (zh) 一种适用于cmmb和dvb-h/t的fft运算电路结构
CN102104773B (zh) 用于实现可变数据个数的fft/ifft处理器的基4模块
CN105095152A (zh) 一种可配置的128点fft装置
CN102567282A (zh) 通用dsp处理器中fft计算实现装置和方法
Lin et al. Low-cost FFT processor for DVB-T2 applications
CN103389413A (zh) 一种频谱直方图的实时统计方法
CN104268124A (zh) 一种fft实现装置和方法
CN101719117A (zh) 一种fft运算装置及其制造方法
CN1118033C (zh) 3780点离散傅里叶变换处理器系统
CN102238348B (zh) 一种可变数据个数的fft/ifft处理器的基4模块
CN101763337A (zh) N点fft/ifft/ifft/ifft方法和装置
CN101640791A (zh) 一种解码方法、装置和解码器
CN111600681A (zh) 基于fpga硬件加速的下行链路比特级处理方法
Chang Design of an 8192-point sequential I/O FFT chip
CN214045680U (zh) 一种粗粒度可重构ofdm发射端、接收端及通信系统
CN205228473U (zh) 一种基于现场可编程门阵列的微型导航计算机
CN104053011A (zh) 应用于jpeg2000解码器中的二维离散小波逆变换器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant