CN109948113A - 一种基于fpga的二维fft加速器 - Google Patents

一种基于fpga的二维fft加速器 Download PDF

Info

Publication number
CN109948113A
CN109948113A CN201910159208.0A CN201910159208A CN109948113A CN 109948113 A CN109948113 A CN 109948113A CN 201910159208 A CN201910159208 A CN 201910159208A CN 109948113 A CN109948113 A CN 109948113A
Authority
CN
China
Prior art keywords
fft
data
address
fpga
buffer area
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.)
Pending
Application number
CN201910159208.0A
Other languages
English (en)
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.)
Southeast University - Wuxi Institute Of Technology Integrated Circuits
Southeast University
Original Assignee
Southeast University - Wuxi Institute Of Technology Integrated Circuits
Southeast University
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 Southeast University - Wuxi Institute Of Technology Integrated Circuits, Southeast University filed Critical Southeast University - Wuxi Institute Of Technology Integrated Circuits
Priority to CN201910159208.0A priority Critical patent/CN109948113A/zh
Publication of CN109948113A publication Critical patent/CN109948113A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开一种基于FPGA的二维FFT加速器,MCU与外部存储器相连接,用于读取外部存储器的输入数据,并将FFT计算结果发送给外部存储器;图片缓存区和旋转因子缓存区分别包含N个图片子缓存区和N个旋转因子子缓存区,用于缓存通过AXI4总线接口从MCU读取的图片和旋转因子数据;地址产生器用于产生图片缓存区的读取地址,按照该地址读取图片缓存区中的数据送入FFT计算器;FFT计算器采用FPGA实现,包含N个FFT计算子单元,每个计算子单元对应配置一个图片子缓存区和一个旋转因子子缓存区,每个计算子单元均用于完成复数乘法功能和四点FFT操作;结果缓存区用于缓存FFT计算器处理后的计算结果,然后通过AXI4总线接口发送至MCU。此种结构能够高效地进行图像的二维FFT。

Description

一种基于FPGA的二维FFT加速器
技术领域
本发明属于电子信息和深度学习技术领域,特别涉及了一种FPGA(Field-Programmable Gate Array,现场可编程门阵列)的二维FFT(Fast FourierTransformation,快速傅里叶变换)加速器。
背景技术
随着近年来人工智能的火热,人脸检测识别的应用占据一个很大的市场,支付宝登录验证、家用智能门锁、火车站安检等等方面都有人脸检测识别的需求。这些应用都要求有极高的识别准确率,在影响识别率的因素中,光照影响占据着一个很重的位置,一个简单有效的光照处理算法十分必要。FFT作为一种能够将图像从时域转换到频域的转换算法,有利于分离出低频部分进行进一步处理,而人脸的光照部分主要集中在低频部分,能够处理好低频部分的图像即可大大降低光照这一因素在检测识别过程中的影响。
图像的离散傅里叶变换一般都通过CPU或者GPU实现,资源少的CPU将会出现处理效率慢、资源多的不方便携带等问题,以及一些便携性因素的考量。利用FPGA实现图像的二维FFT是一个可行的方向,也为人脸光照归一化算法的进行奠定了基础。FPGA具有较多的硬件资源和并行操作的可行性,相比较于ASIC的高成本,FPGA则具有先天的优势。将FFT操作从CPU端放置在FPGA端主要实现了数据的并行处理,充分利用了FPGA资源达到更快的处理速率。
发明内容
本发明的目的,在于提供一种基于FPGA的二维FFT加速器,其能够高效地进行图像的二维FFT。
为了达成上述目的,本发明的解决方案是:
一种基于FPGA的二维FFT加速器,包括MCU、图片缓存区、旋转因子缓存区、地址产生器、FFT计算器和结果缓存区;
MCU与外部存储器相连接,用于读取外部存储器的输入数据,并将FFT计算结果发送给外部存储器;
图片缓存区和旋转因子缓存区分别包含N个图片子缓存区和N个旋转因子子缓存区,用于缓存通过AXI4总线接口从MCU读取的图片和旋转因子数据;
地址产生器用于产生图片缓存区的读取地址,按照该地址读取图片缓存区中的数据送入FFT计算器;
FFT计算器采用FPGA实现,包含N个FFT计算子单元,每个计算子单元对应配置一个图片子缓存区和一个旋转因子子缓存区,每个计算子单元均用于完成复数乘法功能和四点FFT操作;
结果缓存区用于缓存FFT计算器处理后的计算结果,然后通过AXI4总线接口发送至MCU。
其中,AXI4总线接口适用任何支持AXI4总线接口的设备,通过AXI4接口可将加速器搭载在任意的设备上,同时AXI4具有高性能,能够将要处理的数据高效放置在数据缓存区。
上述图片缓存区和旋转因子缓存区由缓存控制器控制所有的sram的读写使能和地址操作,N个图片缓存区和N个旋转因子缓存区构成整个高并行的图片和旋转因子缓存区,数据以串行的方式写入缓存区,以并行的方式读出。
上述地址产生器产生图片缓存区的读取地址,按照该地址以间隔N/4读取四个数据,并将四点FFT操作的结果按地址存入原先保存图片的初始地址。
上述FFT计算器采用定点数计算器,以DSP48为基础,待计算数据并行进入FFT计算器,依次进行一次复数乘法操作以及一次4点FFT计算,其中,一次复数计算包括四次乘法以及两次加减法操作;每一个FFT计算子单元配置两个DSP资源,利用两个时钟完成复数计算中的四个乘法操作,在第三个时钟完成两次加减法操作,然后利用地址产生器从图片缓存区获取每一级的N/4次四点FFT计算的数据。
上述MCU与AXI4总线接口之间还设置直接存取控制器,数据的传输由该直接存取控制器提供数据流缓存,并将实部与虚部拼接成一个数据发送,提高传输速率以及处理效率。
还包括转置控制器,用于通过每个时钟控制不同数量的读写使能和读写地址,完成转置操作。转置控制器采用对角对换的方法,利用整个block ram的读数据有两个时钟的延时的特性,进行原缓存区域的对角变换,通过每个时钟进行的对角变换,完成整个转置操作,实现了在原地址上的转置操作,因为FPGA的特性不能同时对一个地址进行读写操作,所以利用读数据的延时,可以将读写操作分开。
上述转置控制器的工作方式是:完整的一次二维FFT需要进行2*log4N次转置操作,分为两次log4N级计算,每次计算从图片缓存区和旋转因子缓存区分别读出四个32位数据,对应相乘之后,进行四点FFT,然后按照顺序写入空白地址的图片缓存区;重复进行,得到按行计算的一维FFT结果,通过转置操作进行行列转换,在进行列方向的一维FFT运算,得到最终的二维FFT结果。
还包括状态控制器,状态控制器控制整个二维FFT的流程,包括接收、缓存、四点FFT计算、转置、再缓存、发送结果以及等待接收。
采用上述方案后,本发明的有益效果是:并行度提高了数据处理的速度,并且通过复数乘法与4点FFT的分开,能够统一操作流程,方便每一级数据操作,转置操作的片上实施减少了MCU与FPGA之间两次数据传输的耗时,与此同时,在原地址的转置操作,保证了下一次一维FFT的顺利进行,大大降低了控制层面的难度。
本发明在基于MIZ-702N开发板验证下,在100MHz的工作频率下,64*64的二维FFT处理速度达到100FPS,同时精度损失不超过5%。
附图说明
图1是本发明的结构示意图;
图2是本发明数据缓存区结构示意图;
图3是本发明FFT计算器工作示意图;
图4是状态控制器示意图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示为本发明设计的基于FPGA的二维FFT加速器结构,N以64为例,其工作模式如下:MCU从外部存储器获取图像数据,并通过DMA的方式将数据做了一级FIFO缓存,一级FIFO与缓存区之间同样也通过总线连接。所述的图片缓存区与旋转因子缓存区是通过缓存区控制器来控制SRAM的读写使能和地址操作,64个图片缓存区与64个旋转因子缓存区以串行的方式写入、并行的方式读出。本发明中的FFT计算器为定点数计算器,同时从64个图片和旋转因子缓存区读取数据进行一次复数乘法操作,并依次将处理完的数据存储到64-127地址中,接着根据地址产生器产生形如64、80、96、112;65、81、97、113….等地址,四个时钟获取四个数据,然后进行4点FFT计算,将数据按照顺序存放到0-63地址。进行三次同样的操作,第三次则按照特定的顺序将数据存放到指定地址中,接着进行转置操作,转置结束后,再次进行三级的FFT计算操作,得到最后的64*64的二维FFT结果。本发明中,状态控制一共包含7个状态,分别为等待、旋转因子缓存、图片缓存、复数乘法、四点FFT、转置、发送结果。
进一步的,参照图2所示,是本发明的实施例中高并行的图片缓存区和旋转因子缓存区示意图。缓存区分为两个大的部分,分别为图片缓存区和旋转因子缓存区,每个大的缓存区都是由64个子缓存区构成。通过控制每个子缓存区的读写使能和地址信号,将数据以串行的方式写入到每一个子缓存区中,同时需要进行FFT计算时,则是同时从图片像数据缓存区和旋转因子缓存区读出数据,进行处理。
参照图3所示,带计算的数据依次进行复数乘法操作,从每一个图片缓存区和旋转因子缓存区的0-63地址依次读出一个数据,进行复数乘法计算,通过两个DSP资源两个时钟内完成复数乘法的四次乘法计算,第三个时钟将复数乘法的实部与虚部组合成一个新的32位数据,依次写入到64-127地址中,接着通过地址产生器,循环产生16组地址数据;依次为64、80、96、112;65、81、97、113….,每四个地址为一组,四个时钟读出四个地址中的数据用寄存器缓存,进行简单的加减操作完成四点FFT,并将产生的四点FFT结果按照顺序依次写入到0-63的地址中去,第二级与第三级的复数乘法存储与第一级一样,第二级的四点FFT存储与第一级一样,第三级的四点FFT结果因为是一位行变换的结果,必须经过特定的位置存放,也是由地址产生器控制,从而实现整个一次行变换结果,转置结束之后进行列变换,依旧是按照三级计算,最终输出图片二维傅里叶变换的结果。
参照图4所示,为整个状态控制器的状态转换示意图,一共有七个状态,等待状态、写图片、写旋转因子、复数乘法、4点FFT、转置以及最终的结果发送。
初始化时整个状态机进入到等待状态,通过MCU的ram_signal信号控制,当ram_signal为001时,进行写旋转因子状态;当ram_signal为010时,进入到写图片状态,当图片与旋转因子都缓存结束后,MCU发送复数乘法指令,状态机进入到复数乘法状态,紧接着进行第一级的4点FFT,然后跳回复数乘法,三级运算结束后进入转置阶段,转置结束后,再进行三级计算,最后将处理完的计算结果发出,进入到等待状态,等待下一张图像的输入。
写图片:一进入到该状态,所有旋转因子的RAM使能有效,当AXI总线上的数据有效时,开始接收数据,RAM的写地址开始从0累加,每次累加到63后清零从0重新累加,指示再缓存到下一个图片子缓存区,一共缓存64个旋图片RAM。完成后等待MCU指令信号ram_signal,当ram_signal为011时则进入复数乘法状态。
写旋转因子:一进入到该状态,所有旋转因子的RAM使能有效,当AXI总线上的数据有效时,开始接收数据,RAM的写地址开始从0累加,每次累加到191后清零从0重新累加,指示再缓存到下一个旋转因子缓存区,一共缓存64个旋转因子RAM。完成后等待MCU指令信号ram_signal,当ram_signal为1XX时则进入复数乘法状态。
复数乘法:一旦进入该状态,开始从图片RAM和旋转因子RAM并行读出数据,旋转因子RAM的读地址从0开始,第一级读取0-63地址的数据,第二级读取64-127的数据,第三级读取128-191地址的数据,图片RAM在三级计算中每次都是从0-63地址依次读取数据,当图片读地址为63时表示计算完成,并且复数乘法的数据依次写入到每一个图片子缓存取的N-127地址中,接着进入到4点FFT状态。
4点FFT:一旦进入该状态,地址产生器就会开始工作,开始产生64、80、96、112;65、81、97、113;….;79、95、111、127等16组地址数据,每次读取一组地址的数据之后进行4点FFT,当16组4点FFT计算都结束后,通过一个计数器信号(cal_cnt)来判断下一状态,当cal_cnt=3&&add_done=1时,进入转置操作,当cal_cnt=6&&add_done=1时进入结果输出状态。
转置:一旦进入该状态,转置控制器就会控制N个图片缓存区的读写使能和地址,用125次对角交换操作完成转置操作,例如将block ram0的1地址数据与block ram1的0地址数据进行交换,接下来的时钟则是交换block ram0的2地址数据与block ram2的0地址数据进行交换,以此类推,最多一个时钟进行32个交换,block ram0的63地址数据与blockram63的0地址数据进行交换,block ram1的62地址数据与block ram62的1地址数据进行交换…block ram31的32地址数据与block ram32的31地址数据进行交换。利用block ram读取数据延时性,完成了在原地址上的数据转置,为方便下一次的列变换打下基础。
计算结果发送:一旦进入该状态,表示一帧图像的二维FFT已经计算完毕,接下来等待MCU控制,通过AXI总线的方式将处理完的数据发回到外部存储器中。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (8)

1.一种基于FPGA的二维FFT加速器,其特征在于:包括MCU、图片缓存区、旋转因子缓存区、地址产生器、FFT计算器和结果缓存区;
MCU与外部存储器相连接,用于读取外部存储器的输入数据,并将FFT计算结果发送给外部存储器;
图片缓存区和旋转因子缓存区分别包含N个图片子缓存区和N个旋转因子子缓存区,用于缓存通过AXI4总线接口从MCU读取的图片和旋转因子数据;
地址产生器用于产生图片缓存区的读取地址,按照该地址读取图片缓存区中的数据送入FFT计算器;
FFT计算器采用FPGA实现,包含N个FFT计算子单元,每个计算子单元对应配置一个图片子缓存区和一个旋转因子子缓存区,每个计算子单元均用于完成复数乘法功能和四点FFT操作;
结果缓存区用于缓存FFT计算器处理后的计算结果,然后通过AXI4总线接口发送至MCU。
2.如权利要求1所述的一种基于FPGA的二维FFT加速器,其特征在于:所述图片缓存区和旋转因子缓存区由缓存控制器控制所有的sram的读写使能和地址操作,N个图片缓存区和N个旋转因子缓存区构成整个高并行的图片和旋转因子缓存区,数据以串行的方式写入缓存区,以并行的方式读出。
3.如权利要求1所述的一种基于FPGA的二维FFT加速器,其特征在于:所述地址产生器产生图片缓存区的读取地址,按照该地址以间隔N/4读取四个数据,并将四点FFT操作的结果按地址存入原先保存图片的初始地址。
4.如权利要求1所述的一种基于FPGA的二维FFT加速器,其特征在于:所述FFT计算器采用定点数计算器,待计算数据并行进入FFT计算器,依次进行一次复数乘法操作以及一次4点FFT计算,其中,一次复数计算包括四次乘法以及两次加减法操作;每一个FFT计算子单元配置两个DSP资源,利用两个时钟完成复数计算中的四个乘法操作,在第三个时钟完成两次加减法操作,然后利用地址产生器从图片缓存区获取每一级的N/4次四点FFT计算的数据。
5.如权利要求1所述的一种基于FPGA的二维FFT加速器,其特征在于:所述MCU与AXI4总线接口之间还设置直接存取控制器,数据的传输由该直接存取控制器提供数据流缓存,并将实部与虚部拼接成一个数据发送。
6.如权利要求1所述的一种基于FPGA的二维FFT加速器,其特征在于:还包括转置控制器,用于通过每个时钟控制不同数量的读写使能和读写地址,完成转置操作。
7.如权利要求6所述的一种基于FPGA的二维FFT加速器,其特征在于:所述转置控制器的工作方式是:完整的一次二维FFT需要进行2*log4N次转置操作,分为两次log4N级计算,每次计算从图片缓存区和旋转因子缓存区分别读出四个32位数据,对应相乘之后,进行四点FFT,然后按照顺序写入空白地址的图片缓存区;重复进行,得到按行计算的一维FFT结果,通过转置操作进行行列转换,在进行列方向的一维FFT运算,得到最终的二维FFT结果。
8.如权利要求6所述的一种基于FPGA的二维FFT加速器,其特征在于:还包括状态控制器,状态控制器控制整个二维FFT的流程,包括接收、缓存、四点FFT计算、转置、再缓存、发送结果以及等待接收。
CN201910159208.0A 2019-03-04 2019-03-04 一种基于fpga的二维fft加速器 Pending CN109948113A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910159208.0A CN109948113A (zh) 2019-03-04 2019-03-04 一种基于fpga的二维fft加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910159208.0A CN109948113A (zh) 2019-03-04 2019-03-04 一种基于fpga的二维fft加速器

Publications (1)

Publication Number Publication Date
CN109948113A true CN109948113A (zh) 2019-06-28

Family

ID=67008174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910159208.0A Pending CN109948113A (zh) 2019-03-04 2019-03-04 一种基于fpga的二维fft加速器

Country Status (1)

Country Link
CN (1) CN109948113A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置
CN113034344A (zh) * 2021-04-26 2021-06-25 电子科技大学 一种低存储资源开销的二维fft结构
CN113973203A (zh) * 2021-10-22 2022-01-25 上海济物光电技术有限公司 一种jpeg图像压缩加速方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838704A (zh) * 2014-03-20 2014-06-04 南京大学 一种高吞吐率的fft加速器
CN106021182A (zh) * 2016-05-17 2016-10-12 华中科技大学 一种基于二维fft处理器的行转置架构设计方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838704A (zh) * 2014-03-20 2014-06-04 南京大学 一种高吞吐率的fft加速器
CN106021182A (zh) * 2016-05-17 2016-10-12 华中科技大学 一种基于二维fft处理器的行转置架构设计方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭文: "基于FPGA的二维FFT研究与设计", 《万方学位论文数据库》 *
杨军等: "基于FPGA的二维FFT处理器的研究与设计", 《云南大学学报(自然科学版)》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置
CN113034344A (zh) * 2021-04-26 2021-06-25 电子科技大学 一种低存储资源开销的二维fft结构
CN113034344B (zh) * 2021-04-26 2024-03-19 电子科技大学 一种低存储资源开销的二维fft方法
CN113973203A (zh) * 2021-10-22 2022-01-25 上海济物光电技术有限公司 一种jpeg图像压缩加速方法

Similar Documents

Publication Publication Date Title
CN107657581A (zh) 一种卷积神经网络cnn硬件加速器及加速方法
CN109948113A (zh) 一种基于fpga的二维fft加速器
CN104699631B (zh) Gpdsp中多层次协同与共享的存储装置和访存方法
CN110097174A (zh) 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
CN103412284B (zh) 基于dsp芯片的sar成像系统中矩阵转置方法
CN106021182B (zh) 一种基于二维fft处理器的行转置架构设计方法
CN109522254A (zh) 运算装置及方法
CN109359736A (zh) 网络处理器和网络运算方法
CN101526924B (zh) 一种优化数字信号处理芯片数据访问的方法
CN106127302A (zh) 处理数据的电路、图像处理系统、处理数据的方法和装置
CN102222316A (zh) 一种基于dma的双缓冲乒乓并行结构图像处理优化方法
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN103955447B (zh) 基于dsp芯片的fft加速器
CN101401128A (zh) 使用图形处理进行粒子操作的方法和装置
US11934826B2 (en) Vector reductions using shared scratchpad memory
CN102929724B (zh) 基于异构众核处理器的多级访存方法、离散访存方法
CN101201933B (zh) 绘图处理单元及方法
CN101236774A (zh) 单端口存储器实现多端口存储功能的装置和方法
CN106776466A (zh) 一种fpga异构加速计算装置及系统
CN116860665A (zh) 由处理器执行的地址翻译方法及相关产品
CN102541769B (zh) 一种存储器接口访问控制方法及装置
CN103577161A (zh) 一种面向大数据的数据频度并行处理方法
CN109446478A (zh) 一种基于迭代和可重构方式的复协方差矩阵计算系统
Wang et al. A scalable FPGA engine for parallel acceleration of singular value decomposition
US9268744B2 (en) Parallel bit reversal devices and methods

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190628