CN112163184A - 一种实现fft的装置及方法 - Google Patents
一种实现fft的装置及方法 Download PDFInfo
- Publication number
- CN112163184A CN112163184A CN202010911820.1A CN202010911820A CN112163184A CN 112163184 A CN112163184 A CN 112163184A CN 202010911820 A CN202010911820 A CN 202010911820A CN 112163184 A CN112163184 A CN 112163184A
- Authority
- CN
- China
- Prior art keywords
- butterfly
- calculation
- memory
- subunit
- point
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004364 calculation method Methods 0.000 claims abstract description 112
- 238000003860 storage Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims description 15
- 238000013507 mapping Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000003775 Density Functional Theory Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种实现快速傅里叶变换(FFT)的装置及方法。该装置包括蝶形计算单元、旋转因子存储单元、内存单元、地址产生单元,和内存分配单元,其中蝶形计算单元包括至少2个并行的蝶形计算子单元且使用定点数进行蝶形计算。该方法包括:首先,由地址产生单元产生初始地址;接着,由内存分配单元计算出每个初始地址对应的内存子单元编号和偏移地址,根据这个内存子单元编号和偏移地址读出内存子单元中存储的点数据;同时,根据初始地址值从旋转因子存储单元中读出本次蝶形计算的旋转因子;随后,将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果并将计结果写入原内存子单元的同一偏移地址。
Description
技术领域
本申请涉及一种快速傅里叶变换(Fast Fourier Transform,FFT)信息处理领域,尤其涉及一种实现FFT的装置及方法。
背景技术
FFT是利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,广泛应用于数字信号处理,数字通信,音视频多媒体处理等领域。
FFT的基本思想是把原始的N点序列,依次分解成一系列的短序列。充分利用DFT计算式中指数因子所具有的对称性质和周期性质,进而求出这些短序列相应的DFT并进行适当组合,达到删除重复计算,减少乘法计算和简化结构的目的。
目前,可以通过软件或硬件的方式来实现FFT算法。
其中,通过软件实现FFT算法,具有灵活性高,修改起来较为容易的优势,但也存在以下缺陷:1)耗用的指令周期数比较高,从而导致处理速度上不去,无法用于处理速度要求高的场合;2)由于软件处理需要频繁读取内存,导致功耗很大,因而不适合用于对功耗要求严格的产品。
通过硬件实现FFT算法时,针对不同的应用场景,通常可分为并行结构,流水结构和复用结构。其中,并行结构虽然速度高,延时低,但是面积和功耗开销太大,尤其对于点数较大的FFT计算(如32K点),会大到大多数用户无法接受的程度;流水结构在一定程度上可以实现多帧并行处理,但是单帧延时还是很高,不适用于要求高速低延时的场合;复用结构硬件开销小,但是延时和吞吐率都比较低,同样不适用于要求高速低延时的场合。
通过以上分析不难看出,对于要求高速低延时的场合,例如目前正在大力推广的5G通信系统中,采用硬件并行结构是实现FFT算法的最佳选择,然而如何克服并行结构面积和功耗开销太大的问题,则是推进FFT应用亟需解决的一个技术问题。
发明内容
针对以上问题,本申请提供了一种实现FFT的装置及方法。
根据本申请第一方面,提供一种实现FFT的装置,该装置包括蝶形计算单元、旋转因子存储单元、内存单元、地址产生单元和内存分配单元,其中:蝶形计算单元,包括至少2个并行的蝶形计算子单元,用于进行FFT过程中的蝶形计算,其中蝶形计算子单元的输入数据和计算结果均为采用1.n.m数制的定点数,1.n.m数制的定点数的最高1位表示符号、符号后的n位表示整数、整数后的m位表示小数,输入数据包括参与蝶形计算的点数据和旋转因子;旋转因子存储单元,用于存储旋转因子;内存单元,包括至少4个内存子单元,用于存储点数据或计算结果;地址产生单元,用于产生初始地址;内存分配单元,用于根据预设的算法将初始地址映射为内存子单元编号和偏移地址。
可选地,内存子单元包括具有至少两个端口的内存子单元。
根据本申请第二方面,一种实现FFT的方法,该方法包括:产生初始地址;根据预设的算法将初始地址映射为内存子单元编号和偏移地址;根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据;根据初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子;将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,其中蝶形计算子单元的输入数据和计算结果均是采用1.n.m数制的定点数,1.n.m数制的定点数最高1位表示符号、符号后的n位表示整数、整数后的m位表示小数,输入数据包括点数据和旋转因子;判断本次蝶形计算是否是最后一级蝶形计算,若是,则返回计算结果并结束本次执行,若否,则将计算结果写回相应的内存子单元的同一偏移地址以作为下一级蝶形计算的点数据。
可选地,在根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据,包括:判断本次蝶形计算是否是第一级蝶形计算,若是,则根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据并将点数据转换为1.n.m数制的定点数。
可选地,旋转因子是采用1.n.m数制的定点数。
可选地,旋转因子是采用1.m数制的定点数,1.m数制的定点数的最高1位表示符号、符号后的m位表示小数;相应地,在根据初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子之后,方法还包括:将1.m数制的定点数转换为1.n.m数制的定点数。
可选地,1.n.m数制的定点数的n是根据FFT的点数确定的,其中n是使点数小于等于2的n次方这一算式成立的最小的一个自然数。
可选地,1.n.m数制的定点数和1.m数制的定点数的m是根据蝶形计算所需的精度确定的,其中,若蝶形计算所需的精度是单精度,则将m确定为23,若蝶形计算所需的精度是双精度,则将m确定为52。
可选地,将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,包括:将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到采用2.2n.2m数制的定点数,2.2n.2m数制的定点数的最高2位表示符号、符号后的2n位表示整数、整数后的2m位表示小数;将2.2n.2m数制的定点数转换为1.n.m数制的定点数以得到本次蝶形计算的计算结果。
本申请提供了一种实现FFT的装置及方法。该装置包括蝶形计算单元、旋转因子存储单元、内存单元、地址产生单元,和内存分配单元,其中蝶形计算单元包括至少2个并行的蝶形计算子单元且使用定点数进行蝶形计算。该方法包括:首先,由地址产生单元产生初始地址;接着,由内存分配单元计算出每个初始地址对应的内存子单元编号和偏移地址,根据这个内存子单元编号和偏移地址读出内存子单元中存储的点数据;同时,根据初始地址值从旋转因子存储单元中读出本次蝶形计算的旋转因子;随后,将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果并将计算结果写入原内存子单元的同一偏移地址。由于在进行蝶形计算中采用的是不会溢出的定点数,无需对每一级蝶形计算的计算结果进行归一化处理,可大大简化控制逻辑和计算流程,使计算的复杂度及计算量都大为减小,也相应地减少了系统功耗;而原位存储的方式则大大减少了蝶形计算对内存单元的需求,也相应地减小了内存单元的面积;此外,使用本申请提供的装置及方法来实现FFT可在保证一定精度的前提下,最大程度地避免内存冲突或数据溢出。
需要理解的是,本申请的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本申请实施例实现FFT的装置的组成结构示意图;
图2为本申请实施例实现FFT的方法的实现流程示意图;
图3为本申请实施例蝶形计算子单元并行计算的取数顺序和内存分配示意图;
图4为本申请实施例与其他实现FFT装置的SNR对比图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
下面结合本申请实施例对本申请公开的一种实现FFT的装置及方法进行详细介绍。
根据本申请第一方面,提供一种实现FFT的装置。在如图1所示的一个实现FFT的装置的实施例中,该装置包括蝶形计算单元101、旋转因子存储单元102、内存单元103、地址产生单元104和内存分配单元104,其中:蝶形计算单元101,包括至少2个并行的蝶形计算子单元(如,蝶形计算子单元1011、蝶形计算子单元1012、……、蝶形计算子单元1014),用于进行FFT过程中的蝶形计算,其中蝶形计算子单元的输入数据和计算结果均为采用1.n.m数制的定点数,1.n.m数制的定点数的最高1位表示符号、符号后的n位表示整数、整数后的m位表示小数,输入数据包括参与蝶形计算的点数据和旋转因子;旋转因子存储单元102,用于存储旋转因子;内存单元103,包括至少4个内存子单元(如,内存子单元1031、内存子单元1032、……、内存子单元1038),用于存储点数据或计算结果;地址产生单元104,用于产生初始地址;内存分配单元105,用于根据预设的算法将初始地址映射为内存子单元编号和偏移地址。
其中,蝶形计算子单元可以使用基-2(radix-2)蝶形计算子单元,也可以使用基x(radix-x)蝶形计算子单元。相应地,对于n个并行的radix-x蝶形计算子单元,则需要n*x个内存子单元。
旋转因子存储单元可以是任何类型的存储单元,由于旋转因子通常都是预先设好的,且无需修改,因此优选只读存储单元,例如ROM。
内存单元可以是任何可读写的存储单元,为了进一步提高计算速度并不会在断电情况下丢失数据,建议使用高速的静态随机存取存储器SRAM。
可选地,内存子单元包括具有至少两个端口的内存子单元。当内存子单元是具有至少两个端口的内存子单元时,例如双端口SRAM,访问速度更高,延时更低。
根据本申请第二方面,一种实现FFT的方法,如图2所示,该方法包括:操作210,产生初始地址;操作220,根据预设的算法将初始地址映射为内存子单元编号和偏移地址;操作230,根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据;操作240,根据初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子;操作250,将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,其中蝶形计算子单元的输入数据和计算结果均是采用1.n.m数制的定点数,1.n.m数制的定点数的最高1位表示符号、符号后的n位表示整数、整数后的m位表示小数,输入数据包括点数据和旋转因子;操作260,判断本次蝶形计算是否是最后一级蝶形计算,若是,则返回计算结果并结束本次执行,若否,则将计算结果写回相应的内存子单元的同一偏移地址以作为下一级蝶形计算的点数据。
在操作210中,地址产生单元产生初始地址的实现方法有很多,本申请实施例实现FFT的方法并不对实现这一操作的具体方法或方式加以限定,实施者可采取任意适用的方法。
在操作220中,预设的算法所实现的主要是将初始地址映射为内存子单元编号和偏移地址。本申请实施例并不限定这一算法的具体实现方式,只要这一算法能够确保内存子单元编号和偏移地址所对应的点数据不会出现读写冲突即可。例如,可以是将初始地址和内存子单元编号的映射关系存在一张查找表里,或是通过某一函数或计算公式,由初始地址实时计算出内存子单元编号和偏移地址等。
由于根据FFT的特点,多个并行的蝶形计算子单元的取数顺序需要遵循一定的规律,使得每一级蝶形计算要计算的点数据可分配到不同的内存子单元中,因此如何为不同的蝶形计算子单元分配不同的取数地址,以及如何将这些分配的取数地址映射到不同的内存子单元中,是使用本申请实施例实现FFT的方法的关键。
下面就结合本申请一个具体实施例实现FFT的方法,进一步示例性描述如何通过调整计算顺序和制定合理的存储子单元分配策略,以较小的内存使用量和访问量来实现FFT。
以使用4个radix-2蝶形计算子单元进行32点FFT为例:4个radix-2的蝶形计算子单元进行并行计算需要8个内存子单元,以保证每个时钟周期内可以读取8个点数据给蝶形计算子单元做运算,同时将之前产生的8个计算结果写回到同一个内存子单元的同一偏移地址中。
依据表1所示的32点FFT运算的信号流程图:
表1
其中,表1是标准的32点FFT运算的信号流程图:
第1列表示参与蝶形计算的其中一个点数据的点序号,此处的点序号就是地址产生单元产生的初始地址;
第2列表示在进行第一级蝶形计算时,与第1列点序号对应的点数据进行配对运算的另一个点数据的点序号;
第3列表示在进行第二级蝶形计算时,与第1列点序号对应的点数据进行配对运算的另一个点数据的点序号;
第4列表示在进行第三级蝶形计算时,与第1列点序号对应的点数据进行配对运算的另一个点数据的点序号;
第5列表示在进行第四级蝶形计算时,与第1列点序号对应的点数据进行配对运算的另一个点数据的点序号;
第6列表示在进行第五级蝶形计算时,与第1列点序号对应的点数据进行配对运算的另一个点数据的点序号。
在进行第一级蝶形计算时,每个radix-2蝶形计算子单元的两个点数据间隔16个数。
在进行第二级蝶形计算时,每个radix-2蝶形计算子单元的两个点数据间隔8个数。
在进行第三级蝶形计算时,每个radix-2蝶形计算子单元的两个点数据间隔4个数。
在进行第四级蝶形计算时,每个radix-2蝶形计算子单元的两个点数据间隔2个数。
在进行第五级蝶形计算时,每个radix-2蝶形计算子单元的两个点数据间隔1个数。
为了具体说明从点序号到内存子单元编号的映射,下面以32点FFT,4个并行的radix-2蝶形计算子单元为例进行示例性说明。
对于使用4个并行的radix-2蝶形计算子单元实现32点FFT的情况,为了保证4个radix-2蝶形运算子单元能够同时读取所需的8个点数据,要求对应的8个点数据分别存储在8个不同的内存子单元中。
图3示出了使用4个并行的radix-2蝶形计算子单元实现32点FFT的情况下,每级蝶形计算的取数顺序和内存子单元的分配情况。对于其他不同点数,不同并行数目蝶形计算子单元的情况,也可以据此方便地推导出相应的每级蝶形计算的取数顺序和内存子单元的分配情况,在此不再赘述。
其中,第1列取数次数表示每次取8个点数据对应的点序号,32点FFT每级蝶形计算需要取4次点数据,每次取8个点数据;
第2列取数顺序表示所取点数据的先后顺序;
第3列表示第一级蝶形计算读取的点数据对应的点序号;
第4列表示第3列的点序号对应的内存子单元编号;
第5列表示第二级蝶形计算读取的点数据对应的点序号;
第6列表示第5列的点序号对应的内存子单元编号;
第7列表示第三级蝶形计算读取的点数据对应的点序号;
第8列表示第7列的点序号对应的内存子单元编号;
第9列表示第四级蝶形计算读取的点数据对应的点序号;
第10列表示第9列的点序号对应的内存子单元编号;
第11列表示第五级蝶形计算读取的点数据对应的点序号;
第12列表示第11列的点序号对应的内存子单元编号;
从图3中可以看出,无论在哪一级蝶形计算,每次同时读取的8个点数据,都分布在8个不同的内存子单元中。可见,如图3所示的内存子单元的分配方式可以保证不会发生数据读写冲突。
需要说明的是,本申请实施例实现FFT的方法并不对内存分配的具体方案进行限定,实施人可根据具体实施条件自行制定内存子单元的分配策略,只需保证每一次蝶形计算时,并行的蝶形计算子单元所需的点数据对应的点序号分别映射到8个不同的内存子单元中即可。
对于使用不同数目并行的蝶形计算子单元进行其他不同点数FFT的情况,可以根据上表方便地导出相应的每一级蝶形计算的取数顺序和内存子单元的分配情况,此处不再赘述。
在操作230中,通过内存子单元编号和偏移地址从对应的内存子单元读取点数据,其中,点数据就是每个蝶形计算子单元每次蝶形计算要配对计算的点数据。
在操作240中,其中旋转因子根据FFT运算流程预先设定好的。
在操作250中,本申请实施例实现FFT的方法并不对具体的蝶形计算的实现方法加以限定,实施者可以采用任意适用的实现方法。但需要特别指出的是,此处的蝶形计算在计算过程中使用的是1.n.m数制的定点数而非浮点数。
本申请实施例实现FFT的装置采用1.n.m数制的定点数,而不是采用浮点数或块浮点进行计算是因为:如果采用浮点数来进行蝶形计算,则计算逻辑会非常复杂,而且占用的时钟周期数较多;如果采用块浮点运算,则每一级FFT运算的计算结果需要进行归一化,即在每一级FFT运算产生的N个点序号中取一个最大值,然后以这个最大值对所有其他值做归一化。这样会导致每一级FFT运算需要额外进行取最大值和做归一化的逻辑控制和计算,从而导致整个计算所需的时间大大增加,难以降低系统功耗。
即使对上述过程进行了优化,例如,对第1级和第2级蝶形计算中,使其单级计算结果不超过输入数据的2倍;而第3级及之后的蝶形计算中,使其单级计算结果不超过输入数据的4倍。如此,在Q15或Q31的数制下,可以将第1级和第2级FFT运算的输入数据缩放到1/4到1/2之间,而第3级及之后的蝶形计算的输入数据缩放到1/8到1/4之间。虽然,这样可大大缩短蝶形计算的计算时间,但仍然需要在每一级蝶形计算前进行判断和移位缩放。
而采用1.n.m的二进制定点数作为蝶形计算子单元的输入数据,由于n的选择有效防止了计算过程中的溢出,而无需在每级计算时进行以上的判断和移位缩放操作,省略上述归一化处理、或每一级蝶形计算前进行的判断和移位缩放操作。如此,可大大简化计算过程,减少进行各种逻辑判断和归一化处理所需的计算量,进而大幅减少系统功耗。
在操作260中,由于本申请提供的实现FFT的方法采用的是原位存储的方式,即计算结束后将计算结果写入读取点数据的同一个内存子单元的同一偏移地址中,内存子单元的数目只需是并行的蝶形计算子单元数目的2倍即可,这样就大大缩减了进行FFT所需的内存子单元的数目,也相应地大大减小了硬件面积。
FFT是一个分级的操作,每一级的计算完成后,就进行下一级的计算,直到最后一级计算完成,就得到了最后的FFT结果。
可选地,在根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据,包括:判断本次蝶形计算是否是第一级蝶形计算,若是,则根据内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据并将点数据转换为1.n.m数制的定点数。
通常,在进行第一级蝶形计算时,存储在内存子单元的数据是原始点数据的浮点数。在这种情况下,则需要先把浮点数转换为1.n.m数制的定点数。
可选地,旋转因子是采用1.n.m数制的定点数。
可选地,旋转因子是采用1.m数制的定点数,1.m数制的定点数的最高1位表示符号、符号后的m位表示小数;相应地,在根据初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子之后,方法还包括:将1.m数制的定点数转换为1.n.m数制的定点数。
由于旋转因子的绝对值值不超过1,为节约存储面积,在这一实施方式中,旋转因子可以使用1.m数制的定点数。
可选地,1.n.m数制的定点数的n是根据FFT的点数确定的,其中n是使点数小于等于2的n次方这一算式成立的最小的一个自然数。
例如,当所述点数是512时,将n确定为9。此时,n的值最小且够用,可以最大程度地节省存储空间。
可选地,1.n.m数制的定点数和1.m数制的定点数中的m是根据蝶形计算所需的精度确定的,其中,若蝶形计算所需的精度是单精度,则将m确定为23,若蝶形计算所需的精度是双精度,则将m确定为52。
可选地,将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,包括:将点数据和旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到采用2.2n.2m数制的定点数,2.2n.2m数制的定点数的最高2位表示符号、符号后的2n位表示整数、整数后的2m位表示小数;将2.2n.2m数制的定点数转换为1.n.m数制的定点数以得到本次蝶形计算的计算结果。
例如,可以采用以下方法将2.2n.2m数制的计算结果转换为1.n.m的定点数:符号位由2个乘数的符号位通过异或运算获得。n位取2n位中的低n位,m位取2m位中的高[2m-1:m]位(截位情况)或是通过运算[2m-1:m]+[m-1]获得(例如,进行四舍五入)。
下面以本申请一个具体的实施例为例,对本申请提供的实现FFT的装置和方法所需的时间和硬件面积进行详细说明。
假设该实施例要进行的是1K-32K点数可变的FFT,在该实施例中设置了4个并行的蝶形计算子单元和8个内存子单元,为了更为灵活地进行各种点数据的蝶形计算,使用了radix-2蝶形计算子单元来进行蝶形计算并采用radix-2时间抽取算法,但本申请实施例实现FFT的方法对此并不加以限定,也可以采用radix-2频率抽取算法。
以32K点数的FFT为例,使用本申请实现FFT的装置和方法来进行FFT运算时,需要进行15级蝶形计算,每一级蝶形计算要进行16K次radix-2蝶形计算。其中,每次radix-2蝶形计算过程包括:从内存子单元中读取点数据(1个时钟周期)、进行蝶形计算(1个时钟周期)并将计算结果写入内存子单元(1个时钟周期),而读取数据与写入计算结果是并行的,因此每一级蝶形计算需要2个时钟周期。
根据设计代码的综合结果,该设计最高可以跑到600MHz,为减小功耗,可采用400MHz的时钟,对应时钟周期是2.5ns。
采用4个radix-2蝶形计算子单元和8个内存子单元来进行上述蝶形计算,则每一级蝶形计算需要迭代2000次(16K/8=2000),每次处理所需时间为(2000+2)*2.5ns=5005ns,完成FFT总共需要的时间为5005*15=75075ns,即75.075us。
在进行蝶形计算的过程中,4个并行的radix-2蝶形计算子单元在进行每一级蝶形计算时,需要读取8个不同的输入数据(定点数),并写入8个计算结果。
假设,在本申请实施例中的内存单元使用的是SRAM,其总容量为32K*64bit,将该SRAM分为16个子的内存子单元后,每个内存子单元的大小是:2K*64bit。假设在28nm HPCplus process下,每个内存子单元面积是:0.0341mm2,则8个这样的SRAM的总面积为:8*0.0341mm2=0.273mm2。
需要说明的是,上述硬件面积是工具报出的布局(layout)面积,在实际生成和制造过程中,经过收缩工艺(shrink)之后的面积会是该面积的80%左右。
而计算电路和控制电路的面积远小于SRAM的大小。因此,实现FFT所需的硬件总面积可以控制在0.5mm2以内。
综上所述,该实施例在TSMC 28nm HPC工艺条件下,时钟可以跑到400MHz,32K点数的FFT总的计算时间不到80us,硬件面积小于0.5mm2。
由此不难看出,本申请实施例实现FFT的装置及方法实施例,可以以较短的计算时间和较小的硬件面积完FFT运算,同时系统功耗也很低。
图4示出了不同软硬件实现方法的信噪比(SNR),其中:
点划线代表的是本申请实现FFT的装置及方法实施例的SNR;
X划线代表单精度浮点数制的DSP库函数运算结果;
◇划线代表的是本专利所述算法实施1.9.22运算,结果取Q15;
*划线代表的是32-bit定点数运算得到的结果
□划线代表的是16-bit块浮点数运算得到的结果
Δ划线代表的是16-bit定点数运算得到的结果
由此可见,使用本申请实现FFT的装置及方法实施例可在较小的硬件开销下,取得较好非常好的性能。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种实现快速傅里叶变换的装置,其特征在于,所述装置包括蝶形计算单元、旋转因子存储单元、内存单元、地址产生单元和内存分配单元,其中:
所述蝶形计算单元,包括至少2个并行的蝶形计算子单元,用于进行快速傅里叶变换过程中的蝶形计算,其中所述蝶形计算子单元的输入数据和计算结果均为采用1.n.m数制的定点数,所述1.n.m数制的定点数的最高1位表示符号、所述符号后的n位表示整数、所述整数后的m位表示小数,所述输入数据包括参与蝶形计算的点数据和旋转因子;
所述旋转因子存储单元,用于存储所述旋转因子;
所述内存单元,包括至少4个内存子单元,用于存储所述点数据或所述计算结果;
所述地址产生单元,用于产生初始地址;
所述内存分配单元,用于根据预设的算法将所述初始地址映射为所述内存子单元编号和偏移地址。
2.根据权利要求1所述的装置,其特征在于,所述内存子单元包括具有至少两个端口的内存子单元。
3.一种实现快速傅里叶变换的方法,其特征在于,所述方法包括:
产生初始地址;
根据预设的算法将所述初始地址映射为内存子单元编号和偏移地址;
根据所述内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据;
根据所述初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子;
将所述点数据和所述旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,其中所述蝶形计算子单元的输入数据和计算结果均是采用1.n.m数制的定点数,所述1.n.m数制的定点数的最高1位表示符号、所述符号后的n位表示整数、所述整数后的m位表示小数,所述输入数据包括所述点数据和所述旋转因子;
判断所述本次蝶形计算是否是最后一级蝶形计算,若是,则返回所述计算结果并结束本次执行,若否,则将所述计算结果写回所述相应的内存子单元的同一偏移地址以作为下一级蝶形计算的点数据。
4.根据权利要求3所述的方法,其特征在于,所述在根据所述内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据,包括:
判断所述本次蝶形计算是否是第一级蝶形计算,若是,则根据所述内存子单元编号和偏移地址从相应的内存子单元中获取本次级蝶形计算的点数据并将所述点数据转换为所述1.n.m数制的定点数。
5.根据权利要求3所述的方法,其特征在于,所述旋转因子是采用1.n.m数制的定点数。
6.根据权利要求3所述的方法,其特征在于,所述旋转因子是采用1.m数制的定点数,所述1.m数制的定点数的最高1位表示符号、所述符号后的m位表示小数;
相应地,在所述根据所述初始地址从旋转因子存储单元中读取本次蝶形计算对应的旋转因子之后,所述方法还包括:
将所述1.m数制的定点数转换为1.n.m数制的定点数。
7.根据权利要求3所述的方法,其特征在于,所述1.n.m数制的定点数中的n是根据所述快速傅里叶变换的点数确定的,其中所述n是使所述点数小于等于2的n次方这一算式成立的最小的一个自然数。
8.根据权利要求3所述的方法,其特征在于,所述1.n.m数制的定点数和所述1.m数制的定点数中的m是根据所述蝶形计算所需的精度确定的,其中,若所述蝶形计算所需的精度是单精度,则将m确定为23,若所述蝶形计算所需的精度是双精度,则将m确定为52。
9.根据权利要求3所述的方法,其特征在于,所述将所述点数据和所述旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到本次蝶形计算的计算结果,包括:
所述将所述点数据和所述旋转因子输入到并行的蝶形计算子单元中进行蝶形计算得到采用2.2n.2m数制的定点数,所述2.2n.2m数制的定点数的最高2位表示符号、所述符号后的2n位表示整数、所述整数后的2m位表示小数;
将所述2.2n.2m数制的定点数转换为1.n.m数制的定点数以得到本次蝶形计算的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911820.1A CN112163184B (zh) | 2020-09-02 | 2020-09-02 | 一种实现fft的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911820.1A CN112163184B (zh) | 2020-09-02 | 2020-09-02 | 一种实现fft的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112163184A true CN112163184A (zh) | 2021-01-01 |
CN112163184B CN112163184B (zh) | 2024-06-25 |
Family
ID=73857504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010911820.1A Active CN112163184B (zh) | 2020-09-02 | 2020-09-02 | 一种实现fft的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112163184B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094639A (zh) * | 2021-03-15 | 2021-07-09 | Oppo广东移动通信有限公司 | 一种dft并行处理方法、装置、设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6137839A (en) * | 1996-05-09 | 2000-10-24 | Texas Instruments Incorporated | Variable scaling of 16-bit fixed point fast fourier forward and inverse transforms to improve precision for implementation of discrete multitone for asymmetric digital subscriber loops |
US20050273330A1 (en) * | 2004-05-27 | 2005-12-08 | Johnson Richard G | Anti-terrorism communications systems and devices |
US20100017452A1 (en) * | 2008-07-16 | 2010-01-21 | Chen-Yi Lee | Memory-based fft/ifft processor and design method for general sized memory-based fft processor |
WO2010045808A1 (zh) * | 2008-10-24 | 2010-04-29 | 中兴通讯股份有限公司 | 一种实现快速傅立叶变换、反变换的硬件装置及方法 |
CN101764778A (zh) * | 2009-10-09 | 2010-06-30 | 重庆唐大科技有限公司 | 一种基带处理器和基带处理方法 |
DE102010049533A1 (de) * | 2009-10-23 | 2011-04-28 | Infineon Technologies Ag | Automatische Erzeugung unterschiedlicher Software zur Verwendung in Systemen mit hoher Integrität |
US8681166B1 (en) * | 2012-11-30 | 2014-03-25 | Analog Devices, Inc. | System and method for efficient resource management of a signal flow programmed digital signal processor code |
CN103970718A (zh) * | 2014-05-26 | 2014-08-06 | 苏州威士达信息科技有限公司 | 一种快速傅里叶变换实现装置及方法 |
WO2017000756A1 (zh) * | 2015-06-29 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质 |
CN107391439A (zh) * | 2017-07-11 | 2017-11-24 | 创达特(苏州)科技有限责任公司 | 一种可配置快速傅里叶变换的处理方法 |
CN109977347A (zh) * | 2019-03-29 | 2019-07-05 | 南京大学 | 一种支持多模式配置的可重构fft处理器 |
EP3696814A1 (en) * | 2019-02-15 | 2020-08-19 | Shenzhen Goodix Technology Co., Ltd. | Speech enhancement method and apparatus, device and storage medium |
-
2020
- 2020-09-02 CN CN202010911820.1A patent/CN112163184B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6137839A (en) * | 1996-05-09 | 2000-10-24 | Texas Instruments Incorporated | Variable scaling of 16-bit fixed point fast fourier forward and inverse transforms to improve precision for implementation of discrete multitone for asymmetric digital subscriber loops |
US20050273330A1 (en) * | 2004-05-27 | 2005-12-08 | Johnson Richard G | Anti-terrorism communications systems and devices |
US20100017452A1 (en) * | 2008-07-16 | 2010-01-21 | Chen-Yi Lee | Memory-based fft/ifft processor and design method for general sized memory-based fft processor |
WO2010045808A1 (zh) * | 2008-10-24 | 2010-04-29 | 中兴通讯股份有限公司 | 一种实现快速傅立叶变换、反变换的硬件装置及方法 |
CN101764778A (zh) * | 2009-10-09 | 2010-06-30 | 重庆唐大科技有限公司 | 一种基带处理器和基带处理方法 |
DE102010049533A1 (de) * | 2009-10-23 | 2011-04-28 | Infineon Technologies Ag | Automatische Erzeugung unterschiedlicher Software zur Verwendung in Systemen mit hoher Integrität |
US8681166B1 (en) * | 2012-11-30 | 2014-03-25 | Analog Devices, Inc. | System and method for efficient resource management of a signal flow programmed digital signal processor code |
CN103970718A (zh) * | 2014-05-26 | 2014-08-06 | 苏州威士达信息科技有限公司 | 一种快速傅里叶变换实现装置及方法 |
WO2017000756A1 (zh) * | 2015-06-29 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质 |
CN107391439A (zh) * | 2017-07-11 | 2017-11-24 | 创达特(苏州)科技有限责任公司 | 一种可配置快速傅里叶变换的处理方法 |
EP3696814A1 (en) * | 2019-02-15 | 2020-08-19 | Shenzhen Goodix Technology Co., Ltd. | Speech enhancement method and apparatus, device and storage medium |
CN109977347A (zh) * | 2019-03-29 | 2019-07-05 | 南京大学 | 一种支持多模式配置的可重构fft处理器 |
Non-Patent Citations (4)
Title |
---|
IMRAN ALI QURESHI ET AL: "Generalized twiddle factor index mapping of radix-2 fast Fourier transform algorithm", 《2014 IEEE 5TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING AND SERVICE SCIENCE》, pages 1 - 4 * |
吴琦 等: "IM-DDO OFDM-PON中全并行1024定点FFT优化的研究与实现", 《光通信技术》, vol. 40, no. 10, pages 1 - 4 * |
王兵锐: "块浮点FFT处理器系统的设计", 《中国优秀硕士学位论文全文数据库信息科技辑》, pages 137 - 7 * |
马翠梅: "低复杂度混合基FFT研究与设计", 《中国博士学位论文全文数据库信息科技辑》, no. 4, pages 136 - 11 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094639A (zh) * | 2021-03-15 | 2021-07-09 | Oppo广东移动通信有限公司 | 一种dft并行处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112163184B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643228A (zh) | 用于浮点乘加运算的低能耗尾数乘法 | |
Luo et al. | Efficient memory-addressing algorithms for FFT processor design | |
CN110597865A (zh) | 一种处理用户标签的方法、装置、计算设备及存储介质 | |
WO2013187862A1 (en) | A FAST MECHANISM FOR ACCESSING 2n±1 INTERLEAVED MEMORY SYSTEM | |
WO2006039610A1 (en) | An apparatus and method for address generation using a hybrid adder | |
US20040123249A1 (en) | Apparatus and method for estimating power consumption | |
Xiao et al. | Reduced memory architecture for CORDIC-based FFT | |
CN104679720A (zh) | 一种实现fft的运算方法 | |
Xiao et al. | An efficient FFT engine with reduced addressing logic | |
CN104679719A (zh) | 一种基于fpga的浮点运算方法 | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN112163184A (zh) | 一种实现fft的装置及方法 | |
CN109710309B (zh) | 减少存储体冲突的方法 | |
US7657587B2 (en) | Multi-dimensional fast fourier transform | |
CN113609715A (zh) | 一种数字孪生背景下的多元模型数据融合方法及系统 | |
CN113111300B (zh) | 具有优化资源消耗的定点fft实现系统 | |
US20140089370A1 (en) | Parallel bit reversal devices and methods | |
Takala et al. | Butterfly unit supporting radix-4 and radix-2 FFT | |
Ma et al. | Simplified addressing scheme for mixed radix FFT algorithms | |
Kabuo et al. | An 80-MOPS-peak high-speed and low-power-consumption 16-b digital signal processor | |
CN114510217A (zh) | 处理数据的方法、装置和设备 | |
CN101300544A (zh) | 大数乘法方法和装置 | |
CN111580867A (zh) | 一种用于fft运算的块浮点处理方法及装置 | |
CN110427172A (zh) | 浮点数处理方法、装置、设备及计算机可读存储介质 | |
CN112257843B (zh) | 一种基于MobileNetV1网络推理任务的扩展指令集的系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: Room 3712, 3 / F, 2879 Longteng Avenue, Xuhui District, Shanghai 200030 Applicant after: Shencong Semiconductor (Jiangsu) Co.,Ltd. Address before: Room 3712, 3 / F, 2879 Longteng Avenue, Xuhui District, Shanghai 200030 Applicant before: Shanghai shencong Semiconductor Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant |