基于FPGA的FFT处理器设计

发布者:谁与争锋1最新更新时间:2009-01-02 来源: 中国民航大学学报关键字:FPGA  FFT  处理器 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  随着数字技术的快速发展,数字信号处理已深入到各个学科领域。在数字信号处理中,许多算法如相关、滤波、谱估计、卷积等都可通过转化为离散傅立叶变换(DFT)实现,从而为离散信号分析从理论上提供了变换工具。但DFT计算量大,实现困难。快速傅立叶(FFT)的提出,大大减少了计算量,从根本上改变了傅立叶变换的地位,成为数字信号处理中的核心技术之一,广泛应用于雷达、观测、跟踪、高速图像处理、保密无线通信和数字通信等领域。

  目前,硬件实现FFT算法的方案主要有:通用数字信号处理器(DSP)、FFT专用器件和现场可编程门阵列(FPGA)。DSP具有纯软件实现的灵活性,适用于流程复杂的算法,如通信系统中信道的编译码、QAM映射等算法。DSP完成FFT运算需占用大量DSP的运算时间,使整个系统的数据吞吐率降低,同时也无法发挥DSP软件实现的灵活性。采用FFT专用器件,速度虽能够达到要求。但其外围电路复杂,可扩展性差,成本昂贵。随着FPGA发展,其资源丰富,易于组织流水和并行结构,将FFT实时性要求与FPGA器件设计的灵活性相结合,实现并行算法与硬件结构的优化配置,不仅可以提高处理速度,并且具有灵活性高。开发费用低、开发周期短、升级简单的特点。针对某OFDM系统中FFT运算的实际需要,提出了基于FPGA的设计来实现FFT算法,并以16位长数据,64点FFT为例,在QuartusⅡ软件上通过综合和仿真。

  2 FFT原理及算法结构

  FFT是离散傅立叶变换(DFT)的快速算法。对于N点离散的有限长时问序列x(n),其傅里叶变换为:

  基于FPGA的FFT处理器设计

  完成N点的DFT需要N2次复数乘法和N(N-1)次复数加法。点数大时,计算量也大,所以难以实现信号的实时处理。FFT的基本思想是利用旋转因子WN的周期性、对称性、特殊性以及周期N的可互换性,将长度为N点的序列DFT运算逐次分为较短序列的DFT运算,合并相同项,大大减少了计算量。[page]

  FFT算法分为两大类:一类是针对N=2的整数次幂的算法,如基2算法、基4算法、实因子算法和分裂算法等:另一类是N≠2的整数次幂算法,以winograd为代表的一类算法。硬件实现时,不仅要考虑算法运算量的大小,而且要考虑算法的复杂性和模块化。控制简单、实现规整的算法在硬件系统中要优于仅降低运算量的算法。现有FFT算法的FPGA设计方案基本上都是针对于第一类算法,而第二类算法尽管有其重要的理论价值,但硬件不易实现。由于该设计点数不是太多,综合考虑FFT处理器的面积和成本。所以采用按时间抽取的基2快速傅立叶算法(基2DIT-FFT)。

  对于长度为N=2m的序列x(n),其中m是整数,将x(n)按奇偶分成两组,即令:n=2r和n=2r+1,而r=0,1,…,N/2-1,于是:

  基于FPGA的FFT处理器设计

  所以A(k)和B(k)可完整表示X(k)。依次类推,可一直向前追溯到2点的FFT,这样整个N点的FFT算法分解成log 2N级运算,每级有N/2个基2碟形运算。图1是N=8的DIT-FFT运算流图。

  基于FPGA的FFT处理器设计

  3 FFT处理器的结构设计

  FFT实现的设计方案有顺序处理、级联处理、并行处理和阵列处理。顺序处理每次运算仅用一个蝶形单元,处理方式简单,运算速度较慢。级联处理、并行处理和阵列处理的速度较快,但占用资源较多。考虑到该设计运算点数较少,因此采用改进的顺序处理方案,在原有顺序处理的基础上对FFT处理过程中数据传输进行控制。使得该结构在继承原有顺序处理电路简单、占用资源较少优点同时又兼有级联处理运算速度较快的优点。采用自顶向下的方法对处理器模块化,其结构框图如图2所示。[page]

  4 模块设计与综合仿真

  整个FFT处理器是由存储器、蝶形运算单元、旋转因子单元、控制单元和数据控制单元组成,各个单元通过控制单元产生的控制和使能信号进行工作。

  4.1 蝶形运算单元

  蝶形运算单元是整个FFT处理单元的重要部分,直接影响整个FFT单元性能。基2时间抽取的蝶形信号流程图如图3所示,p和q为数据序号,xm(p))和xm(q)是第m级蝶形运算的输入,xm+1(p)和xm+1(q)是该蝶形运算的输出,WrN为相应的旋转因子。

  基于FPGA的FFT处理器设计

  基于FPGA的FFT处理器设计

  由上式看出,一个基2蝶形运算要进行1次复乘、2次复加。为了提高运算速度采用并行运算,采用4个实数乘法器、3个实数加法器和3个实数减法器组成。设输入数据:x1=x1_r+jx1_im,x2=2_r+jx2_im,旋转因子为WrN=c-jd,则输出y1=y1_r+jy1_im和y2=y2_r+jy2_im。实现蝶型运算单元如图4所示。

  基于FPGA的FFT处理器设计

  数据格式选择定点16位二进制补码。设计时必须考虑乘法器速度,将会直接影响整个FFT处理单元的运算速度,该设计的乘法器利用QuartusⅡ开发软件中所提供的宏单元生成。乘法器的两输入均为16位,输出32位。因为乘法器中带有旋转因子项.所以乘法运算后不应改变输入的幅值即乘法器的输出仍为16位,因此要对输出数据进行截取,截取其中16位作为加(减)法器的输入。[page]

  4.2 存储单元

  在FFT处理单元中存储器是必不可少的单元,蝶形运算数据的输入输出和中间结果的存储都要经过存储器,因此它们的频繁读写操作对整个FFT处理速度影响较大。图2中存储器A和存储器B由RAM和状态机组成,各自分别具有数据总线、地址总线和触发时钟。存储器A接收外部输入数据,存储器B是中间结果单元,除第一级蝶形运算外每级数据的输入输出均经过该存储器。在两块存储器和蝶形运算模块之间加入两个数据控制器配合工作,可以在写入上一组中间结果的同时读取下一组蝶形运算数据,从而提高FFT的处理速度。

  4.3 旋转因子单元

  旋转因子单元是用于存储FFT运算所需的旋转因子WrN=exp(-j2πr/N)。在Matlab中旋转因子分为实部和虚部产生,由于它们是小于1的小数,故在设计中需将其定点化。其过程是将旋转因子扩大214倍。取整数部分转化为16位定点数,以.hex文件格式保存,利用QuartusⅡ软件的Megawizard工具设计。ROM,并将.hex文件同化在其中。根据旋转因子的对称性和周期性,在利用ROM存储旋转因子时,可以只存储旋转因子表的一部分,通过地址的改变查询出每级蝶形运算所需的旋转因子。

  4.4 控制单元

  控制单元用于协调驱动各模块,在FFT运算中具有关键作用。存储器A、旋转因子单元及数据控制器的读信号,存储器B的读写信号都是由控制单元产生。控制单元通过一个有限状态机(FSM)实现,使用两个内部计数器控制状态机的翻转。控制单元具有单独的输入时钟,可产生相应的控制信号。

  4.5 综合仿真

  选用Altera公司的QuartusⅡ软件作为开发平台,以Stratix系列中的EP1S25型FPGA为核心器件,采用白顶向下的设计思路和VHDL语言,实现对各个模块单元的设计、综合和仿真。为了简化设计,只在数据输入时钟下输入了一组64个复数,其余输入设为0,并且实部和虚部都限定在±l,±2,±3,±4,e5之内。为防止溢出先将输入数据乘以一定比例因子2-9,再乘以2 15转化为十六进制数。输出的结果如图5所示。需要注意的是:仿真结果乘以2 -6后才是实际结果。将仿真结果与Matlab计算的结果相比较,数据基本一致,说明了设计正确,其误差主要来源于数据的截取和旋转因子的近似。

  基于FPGA的FFT处理器设计

  5 结束语

  FFT算法是数字信号处理中一种重要运算,广泛应用于雷达、观测、跟踪、高速图像处理、保密无线通信和数字通信等领域。这里讨论了一种基于FPGA的64点FFT处理器的设计方案,输入数据的实部和虚部均以16位二进制数表示,采用基2DIT-FFT算法,以Altera公司的QuartusⅡ软件为开发平台对处理器各个的模块进行设计,在Stratix系列中的EP1S25型FPGA通过了综合和仿真,运算结果正确。采用FPGA实现FFT算法在体积、速度、灵活性等方面都具有优越性。

关键字:FPGA  FFT  处理器 引用地址:基于FPGA的FFT处理器设计

上一篇:Virtex-5 LXl10的ASlC原型开发平台设计
下一篇:分布式算法和FPGA实现基带信号成形的研究

推荐阅读最新更新时间:2024-05-02 20:44

凌华科技推出首款搭载高通QRB5165处理器的SMARC计算机模块
  整合多项科技 提供边缘人工智能   摘要:   ·凌华科技LEC-RB5 SMARC是高效能的小型多功能模块,搭载Qualcomm® QRB5165处理器,给予消费者、企业和工业用机器人终端智能 (on-device ) 和连网能力。   ·凌华科技LEC-RB5 SMARC 计算机模块配备高效能网络处理器 (NPU) 、8核心中央处理器 (8x Corex-A77),具有低功耗特质,并可支持最多6台相机。   ·专为机器人应用而设计的QRB5165处理器,可以高效运行复杂的AI计算、工作负载、以及智能终端推理,并兼顾低耗电。   中国上海 – 2021年12月1日   全球领先的边缘计算解决方案提供
[机器人]
凌华科技推出首款搭载高通QRB5165<font color='red'>处理器</font>的SMARC计算机模块
苹果第二颗自研处理器揭秘:或命名M2 专为桌面准备
苹果第一代M1处理器已经面向新款MacBook Air、MacBook Pro两款笔记本以及Mac mini推出,上市后后颇多好评,由x86向ARM转型也是苹果未来的大趋势。最近消息称,苹果第二款自研芯片已经在准备中,面向桌面平台推出。   据@手机晶片达人 爆料,苹果预计将在2021年下半年推出第二颗Apple Silicon CPU(暂称M2),内部代号Jade。据悉,该芯片将用在苹果的桌面Mac上。   此前就有外媒报道称,在首款自研Mac芯片顺利推出的情况下,致力于Mac产品线在两年内全部转向自研芯片的苹果,预计也在谋划下一代的Mac芯片。   针对苹果下一代的Mac芯片,外媒预计会命名为M2,台积电在代工M1芯
[手机便携]
苹果第二颗自研<font color='red'>处理器</font>揭秘:或命名M2 专为桌面准备
FPGA火力支持 微软发表Project Brainwave
软件业者为了强化人工智能算法的执行效率,纷纷跨足硬件设计。 继Google、Facebook之后,微软(Microsoft)近日也发表了自家的Project Brainwave平台。 该平台以英特尔(Intel)提供的Stratix 10现场可编程门阵列(FPGA)为基础,除了内建深度神经网络(DNN)加速引擎外,在软件堆栈方面,还可支持Google的Tensorflow、微软自家的Cognitive Toolkit等深度学习框架。 微软杰出工程师Doug Burger指出,在硬件层面,Project Brainwave是一个以FPGA为基础的高性能DNN处理平台。 微软已经将高性能FPGA应用在自家的数据中心多年,让该公司可以为
[半导体设计/制造]
Altera为Nois II处理器提供C语言硬件加速工具
Altera公司今天宣布为Nios II系统开发人员提供新的效能工具Nios® II C语言至硬件加速(C2H)编译器,该工具能够有效的提高嵌入式软件的性能。由于越来越多的嵌入式设计使用了FPGA,因此,Nios II C2H编译器的目的是帮助嵌入式系统开发人员提高效率,实现成功的设计。作为Nios II C2H编译器的一部分,Altera还允许第三方工具供应商使用其系统级基本结构,包括Quartus® II SOPC Builder工具,以促进多种电子系统级(ESL)设计工具的开发。 Nios II C2H编译器利用Altera系统级基本结构来切实提高多种实际应用的性能。这一新工具能够将对性能要求较高的C语言例程自动转换为硬件加
[单片机]
细看AMD收购赛灵思 独立FPGA时代终结了?
1984年,Ross Freeman与同事共同创立了赛灵思公司,并推出了世界上第一颗真正意义上的FPGA芯片XC2064,一个全新的行业就此诞生。 2020年,历经36年发展的赛灵思公司早已成为硅谷中的明星公司,FPGA行业也今非昔比。5G、AI为这个行业带来了难得的机会,广阔的发展空间就在眼前,但是领头者赛灵思公司却突然陷入了收购的传闻中。人们不禁会发问,独立的FPGA已经走向终结了吗? 隐忧 收购传闻的主角之一AMD公司,在杰出的女性CEO Lisa Su的带领下,已经走出了昔日的泥潭,迈入了自己的黄金时期。收购赛灵思,将给AMD增加一个重要的筹码,为同老对手Intel、NVIDIA在后续的较量中积蓄能量。 赛灵思自身的表现似
[手机便携]
细看AMD收购赛灵思 独立<font color='red'>FPGA</font>时代终结了?
数字信号处理器(DSP)在电源产品设计上的应用
1  前言     利用高性能的数字信号处理器(DSP)设计电源,不但能够减少电路的元器件,而且可以大大增加系统的可靠性和稳定性,克服电子设备长期受到供电不稳和大噪音的困扰,较传统的电源设计方式有着明显的优势。其主要优点如下:     ⑴更容易实现数字芯片的处理和控制,避免模拟信号传递的畸变、失真、减少杂散信号的干扰;     ⑵便于系统调试;     ⑶方便实现远程遥感、遥测、遥调。     本文以利用芯片ADMC331设计DC-DC直流驱动电源为例介绍数字信号处理器(DSP)在电源产品设计上的应用。 2  芯片ADMC331的结构特点     ADMC331是美国模拟器件公司(ADI)推出的基于DSP技术的电机控制器,
[电源管理]
数字信号<font color='red'>处理器</font>(DSP)在电源产品设计上的应用
基于NiosII的SOPC多处理器系统设计方法
两个或多个微处理器一起工作来完成某个任务的系统称为“多处理器系统”。传统基于单片机的多处理器系统结构复杂,可靠性差;而基于32位的嵌入式软核处理器NiosII的SOPC(可编程片上系统)多处理器系统解决方案,从根本上改变了多处理器系统的设计理念和方法。使用Altera公司的NiosII软核处理器和SOPC Builder工具,可以快速地设计和建立共享资源的多处理器系统。多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称为“对称多处理器SMP”)的高端PC计算。对于大部分嵌入式系统,当SMP的开销太大时,使用多个处理器执行不同的任务,实现不同的功能正引起越来越多的关注。Altera公司的FPGA为开发非对
[工业控制]
FPGA配合预失真技术的解调误码测试仪
   1 引言   工程实践中,我们往往需要对所设计的硬件电路进行设计检验以保证其正常运作,从而才能进一步支持基于该硬件的复杂程序的正确调试。这样,特定的相应测试系统设计就显得尤为重要,不仅可以保证硬件的健康度,更能提高整个调试过程的效率,方便检测出相关错误。针对增补转发系统( Gapfiller)中 QPSK解调程序调试的需求,分别对发射及接收电路设计了基于可编程逻辑器件(FPGA)的测试程序。为了保证其更强的纠错性和更可靠的验证能力,测试系统的设计原则应当是愈简易且愈典型为佳。目前国内对于 QPSK调制解调的基本原理、具体实现以及解调中所涉及的载波同步问题都已有很深入的研究,而本文对此并不作过多讨论,仅仅是借助于一种昀简易的
[嵌入式]
<font color='red'>FPGA</font>配合预失真技术的解调误码测试仪
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved