基于FPGA的可扩展高速FFT处理器的设计与实现

发布者:飘然出尘最新更新时间:2007-08-01 来源: 电讯技术关键字:算法  旋转  并行  流水 手机看文章 扫描二维码
随时随地手机看文章
一、引言

DFT(离散傅里叶变换)作为将信号从时域转换到频域的基本运算,在各种数字信号处理中起着核心作用,其快速算法FFT(快速傅里叶变换)在无线通信、语音识别、图像处理和频谱分析等领域有着广泛的应用。用大规模集成电路FPGA(现场可编程门阵列)来实现FFT算法时,需要重点考虑的不再是算法运算量,而是算法的复杂性、规整性和模块化,因为算法的简单性和规整性将更适合大规模集成,更方便于版图设计,而算法的模块化更有利于FFT处理器的灵活扩展。组合数FFT算法和CORDIC(坐标旋转数字计算机)算法结合起来,在计算长点数、可扩展FFT时具有较大的优越性[1,2]。而面向高速、大容量数据流的FFT的实时处理,可以通过VLSI(超大规模集成电路)器件的并行处理或多级流水线处理等来达到。特别是多级流水线处理的FFT结构使得基于FPGA器件的FFT处理器完成不同点数的FFT计算时可以通过增减模块级数很容易地实现。

二、组合数N=r1r2点混合基FFT原理

计算N点DFT:

式中k=0,1,…,N-1。

若N=r1r2的组合数,可将n(n<N)表示为

  

式(2)的意义在于,计算组合数N=r1r2点DFT,等价于先求出r2组r1点的DFT,其结果经过对应旋转因子的相位旋转后,再计算r1组r2点的DFT。实际应用中,DFT往往用它的快速算法FFT实现,因而式(2)中的r1点DFT和r2点DFT都用r1点FFT和r2点FFT实现。

三、可扩展FFT处理器实现结构

根据式(2)的FFT算法原理设计FFT处理器的可扩展结构如图1所示。

采用流水线模块化级联结构,把FFT处理器划分成短点数FFT、级间混序RAM和相位旋转等功能模块,设计的各功能模块可以重复利用,通过复用或增减各功能模块可以灵活改变FFT处理器的计算规模,而且不增加设计量。在图1结构中,当Li=1时,就演变成了基2 FFT;当Li=2时,就演变成了基4 FFT;同理,当Li≠Lj时,就演变成了高组合数的混合基FFT。

1.短点数FFT阵列结构

-Tukey算法结构实现时,有大量的复数乘法实际上转化为加减运算,所以用阵列结构实现不但具有速度快的优点,而且所用器件资源也减少很多,通过对阵列结构短点数FFT进行时分复用,可以提高运算单元的使用效率。

2.相位旋转运算单元

实现短点数FFT级间相位旋转,采用ROM存储旋转因子与数据复乘的传统方法,不仅涉及乘法运算,而且会消耗大量存储器资源。

利用CORDIC算法实现组合数FFT级间数据的相位旋转,把乘法转化成加减法运算,适合FPGA的大规模集成。可以设计出统一结构的CORDIC处理器模块,重复利用于不同级间实现相位旋转,而且其控制逻辑非常简单。

(1)CORDIC算法原理
  
如果旋转角度θ可以分解成n个小角度φi之和,即:

  


公式:

  

(2)CORDIC处理器结构设计

本文提出了一种流水线CORDIC处理器结构的解决方案。实现式子(4)的迭代运算时采用补码移位和补码加减运算,可以减少大量求补运算,其迭代结构如图2所示。

  


前者在于左移补零的位数的不同,这样,只需要改变n0k0的放大倍数(改变左移低位补零的位数),就可以把同一方向向量功能模块级联到图1 FFT处理器的不同级间来计算CORDIC处理器的MSBi,这就大大地减小了重复设计,其迭代结构如图3所示。

3.RAM结构及其级间数据混序用流水线读/写RAM地址发生器的设计

设计的RAM,每个存储单元为32 bit,高16位为复数的实部,低16位为复数的虚部。输入输出数据接口用RAM设计为乒乓结构,用两块相同的RAM交替读出或交替写入数据,这样就放宽了对I/O操作速度的要求,使得外围电路可以不必工作于FPGA系统时钟。

级与级之间数据混序用RAM设计为读/写RAM,对RAM同一存储单元用两个时钟完成一次读/写操作,即用流水线读/写同一块RAM来实现级与级之间的数据混序。此结构取代了用两块RAM完成数据混序的乒乓结构的传统方法,不涉及存储器之间的读写切换,控制逻辑非常简单,而且消耗的存储器资源节省一半,这是实现结构可灵活扩展的高速FFT处理器的关键和难点。可以通过理论推导,求得第i级FFT与第i-1级FFT级间混序用RAM的奇次读/写地址为

的基础上向左循环移位,位长为Li-Li-1位;同时,后者又表示在前者的基础上向左循环移位,位长为Li-Li-1位,从而形成地址的循环移位规律。把Li-1=Li和Li-1Li-1位和低Li-1位进行交替。利用此地址发生规律,可以设计基于图1结构的基2、基4等任意基x FFT以及混合基FFT级间数据混序用流水线读/写RAM地址发生器。

4.8×4×2点组合数FFT处理器的实验结果及其分析

我们利用FPGA实现的各功能模块按图1实现结构组装了8×4×2点组合数FFT处理器,通过仿真验证了其设计的正确性后,又在FPGA实验板上对它进行了硬件验证,其实验验证平台如图4所示。

硬件验证时采取的实验方法是,用相同的抽样频率fs等间隔地抽取不同频率单频正弦信号相同点数64点,即固定FFT的频率分辨率fr,利用设计的64点FFT处理器计算其幅度谱,观察其幅度谱中直流分量谱线和谐波分量谱线间隔大小的变化,把实验结果和理论分析结果进行对照,以确认FFT处理器工作的正常与否。

系统时钟工作在 40.861 MHz 时,抽样频率为 40.861/2=20.4305 MHz,抽样周期为1/20.4305 MHz="48".9 ns,抽取64个点的时间是48.9×64=3.13μs。因为每个采样数据间隔时间是48.9μs,所以用设计的流水线方式工作的6 4点FFT处理器计算其幅度谱的谱线间隔也为48.9 ns。当输入单频正弦信号的频率约为638.454 kHz时,其周期为1/638.454 kHz=1.567μs。用20.4305 MHz频率抽样,3.13μs时间内刚好在正弦信号的2个周期内抽取64点,输入单频正弦信号的频率是频率分辨率319.227 kHz的2倍,直流分量为幅度谱的第1根谱线,一次谐波分量为幅度谱的第3根谱线,其理论计算结果波形如图5所示,实验测试结果波形及其的局部放大波形如图6和图7所示。

从示波器上可以看出,横坐标单元格间隔为1μs,FFT变换周期间隔约为3格,即约为3μs,抽取了信号波形的2个周期,64点FFT计算时间也约为3μs。

输入单频正弦信号的频率是频率分辨率319.227 kHz的2倍,直流分量为幅度谱的第1根谱线,一次谐波分量为幅度谱的第2根谱线。由于幅度谱的谱线间隔为48.9 ns,也就是说,直流分量和一次谐波分量间隔约为100 ns。从示波器上可以看出,横坐标单元格间隔为100 ns,直流分量和一次谐波分量间隔约为100 ns,和理论分析结果一致。


四、结论
  
本文以高组合数混合基DFT算法为基础,设计并用FPGA实现了变换点数可灵活扩展的流水线FFT处理器。输入/输出数据速率为20 MHz时,读/写RAM工作在40 MHz时钟,计算出1 024点FFT的运算时间约为52μs。本设计采用模块化设计结构,便于系统调试和实现,而且各设计模块可以重复利用,避免重复相同的设计,从而缩短芯片设计开发时间,更易于FFT处理器的结构扩展。整个FFT设计结构新颖,实现容易,具有一定实用价值。

参考文献

[1]程佩清.数字信号处理教程[M].北京:清华大学出版社,2001.
[2]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版,1999.
[3]Stephan W.Mondwurf.BENEFITS OF THE CORDIC-ALGORITHM IN A VERSATILE COFDM MODULATOR/DEMODULATOR DESIGN[A]. Fourth IEEE International Caracas Conference on Devices, Circuits and Systems[C].Aruba, April 17~19, 2002.
[4]赵忠武,陈禾,韩月秋.基于FPGA的32位浮点FFT处理器的设计[J].电讯技术,2003,43(6).
[5]Y.Ma,L.Wanhammar.A Hardware efficient control of memory addressing for high performance FFT processors[J].IEEE transactions on signal processing, 2000,48(3):917~921.
[6]J.E.Volder.The CORDIC Trigonometric Computing Technique[J]. IRE Trans. on Electronic Computers,1959,8(3):330~334.
[7]韩颖,王旭,吴嗣亮.FPGA实现高速FFT处理器的设计[J].电讯技术,2003,43(2):74~78.
[8]A.M.Despain.Fourier Transform Computers Using CORDIC Iterations[J].IEEE Trans.on Computers,1993,C-23(10):993~1001.

关键字:算法  旋转  并行  流水 引用地址:基于FPGA的可扩展高速FFT处理器的设计与实现

上一篇:CEVA在上海举办DSP与多媒体技术研讨会
下一篇:基于DSP的人体皮肤测量仪的设计

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

采用汇编语言的BCH解码校验算法
  在信号传输中,BCH码以其独特的优点被广泛应用于微机级的通信中,但因其算法复杂,通常只用在动态实时的无线通信中,而对更底层的单片机级的信号传输纠错,往往只采用奇偶校验等简单的校验方法。本文结合一些测控系统和监控系统的开发,摸索出了在实时动态单片机中的BCH解码检纠方法,并通过汇编语言加以实现,取得了一定的效果。下面以BCH(15,7)码为例进行探讨。 1 BCH码在单片机中的放置结构   BCH码作为一种检纠能力较强的循环码,由信息多项式i(x)和监督多项式j(x)组成。这里以c(x)表示整个BCH(15,7)码的15位码组多项式,则有:   在单片机中其放置的具体结构如下:   其中,7位信息位放入寄存器
[单片机]
采用汇编语言的BCH解码校验<font color='red'>算法</font>
下代三星Gear智能表可能有个旋转表环
   旋转表环为手表带来新的功能交互与操作   新浪手机讯 7月31日上午消息,来自国外科技网站engadget的消息称,三星下一代的gear系列智能手表将有一个旋转表环。   目前尚不能100%确认此消息的真实性,但据说靠谱程度很高。这将改变三星Gear系列手表一直以来的方形设计,可能是一个很有意思的设计,旋转表圈,你能直接放大图像,或者切换菜单,甚至用它玩一些小游戏。   来自国外网站SamMobile的消息则是,这款手表将采用Tizen系统,Exynos 3472双核处理器,4GB存储空间,250毫安时的电池,和360×360像素显示屏。   目前还不确定它会何时发布,有可能是在8月13日,三星
[手机便携]
AI、HPC的助推器,下一代并行文件系统解决方案—EXA5
——翻译自Nextplatform DataDirect Networks (DDN)推出了EXA5,这是该公司第五代Exascaler Lustre文件系统平台,将用于填充DDN的全闪存、中档和高端存储设备系列。Exascaler主要客户是针对HPC人群,但这个最新版本也吸引了更多面向企业客户的特性,尤其是那些从事人工智能工作的客户。 DDN高级营销总监Kurt Kuckein表示:“对于那些不那么熟悉DDN的企业来说,这些需求变得越来越明显。因此这款产品结合了我们存储功能和一些企业特性。” 多年来,DDN一直在有条不紊地为Exascaler软件添加一些利于企业的功能,人工智能市场正促使DDN对这一领域给予额外关注。
[物联网]
AI、HPC的助推器,下一代<font color='red'>并行</font>文件系统解决方案—EXA5
音频信号采集与AGC算法的DSP实现
引言 电台等由于其自办频道的广告、新闻、广播剧、歌曲和转播节目等音频信号电平大小不一,导致节目播出时,音频信号忽大忽小,严重影响用户的收听效果。在转播时,由于传输距离等原因,在信号的输出端也存在信号大小不一的现象。过去,对大音频信号采用限幅方式,即对大信号进行限幅输出,小信号不予处理。这样,仍然存在音频信号过小时,用户自行调节音量,也会影响用户的收听效果。随着电子技术,计算机技术和通信技术的迅猛发展,数字信号处理技术已广泛地深入到人们生活等各个领域。其中语音处理是数字信号处理最活跃的研究方向之一,在IP电话和多媒体通信中得到广泛应用。语音处理可采用通用数字信号处理器DSP和现场可编程门阵列(FPGA) 实现,其中DSP实现方法具
[嵌入式]
居家小型KTV:小度添添旋转智慧屏T10内部拆解
喜欢唱歌的你,记得自己多久没去过KTV了吗?有去过现在很多的K歌小房间吗?是不是总在APP里K歌,却总觉得少了点什么? 其实现在已经有不少的智能设备,可以在家K歌了。例如,eWiseTech今天拆解的这款小度添添旋转智慧屏T10。一款可以当做智能音箱又可以当做一款K歌小神器的设备。 配置一览SoC: 联发科MT8768V 64位八核处理器屏幕:10.1英寸IPS触控屏,分辨率1280x800存储:4GB DRAM + 32GB Flash前置:200万像素电池:4900mAh锂离子电池特色:触控旋转屏幕,可打电话,支持WiFi、蓝牙连接,语音控制 拆解步骤 智慧屏T10前装饰面板用卡扣和双面胶固定, 装饰
[嵌入式]
居家小型KTV:小度添添<font color='red'>旋转</font>智慧屏T10内部拆解
Branto:可旋转的360度智能家居监控摄像头
    能否想象家中有个神奇的水晶球放在书柜或者茶几上,并且这个水晶球可以远程访问智能手机。这样一来,无论是否在家都能够掌控家中所发生的一切。 日前一款名为Branto的完整智能家居远程操控方案问世,其主体设备具有360度的视野和传感器能够对家中所有的智能家居设备进行控制。现阶段,Branto正在众筹网站Kickstarter进行筹资,众筹目标为50万美元。 Branto的外观如同水晶球一般,内置了一枚高清摄像头在其中。这套Branto设备的安装和使用均十分简单,用户需要在相配套的智能手机中安装应用程序。而后再让Branto智能家居监控球连接到使用环境当中的WIFI网络即可。Branto内置的高清摄像头可以拍摄图片或者视频
[安防电子]
BLDC电机控制算法及矢量控制
BLDC电机控制算法 无刷电机属于自换流型(自我方向转换),因此控制起来更加复杂。 BLDC电机控制要求了解电机进行整流转向的转子位置和机制。对于闭环速度控制,有两个附加要求,即对于转子速度/或电机电流以及PWM信号进行测量,以控制电机速度以及功率。 BLDC电机可以根据应用要求采用边排列或中心排列PWM信号。大多数应用仅要求速度变化操作,将采用6个独立的边排列PWM信号。这就提供了最高的分辨率。如果应用要求服务器定位、能耗制动或动力倒转,推荐使用补充的中心排列PWM信号。 为了感应转子位置,BLDC电机采用霍尔效应传感器来提供绝对定位感应。这就导致了更多线的使用和更高的成本。无传感器BLDC控制省去了对于霍尔传感器的
[嵌入式]
BLDC电机控制<font color='red'>算法</font>及矢量控制
手把手教学51单片机第二课 | 流水灯 蜂鸣器 继电器
crol循环左移函数 1.定义:a=下横杆crol下横杠 (变量x,一次左移位数n) 2.最高位左移变至最低位,次高位变最高位,以此类推。 3.执行顺序:变量先左移 再赋值给a 4.头文件**include intrins.h ** cror循环右移函数 参照循环左移函数,只是方向不同 续流二极管 反向接入二极管,短路感应电动势,从而保护三极管 流水灯蜂鸣器代码 #include reg52.h #include intrins.h //crol函数头文件 #define uint unsigned int #define uchar unsigned char uchar temp; sbit beep=P
[单片机]
手把手教学51单片机第二课 | <font color='red'>流水</font>灯 蜂鸣器 继电器
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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