FFT算法的一种FPGA实现-Read.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FFT算法的一种FPGA实现-Read.doc

FFT算法的一种FPGA实现 摘 要:FFT运算在OFDM系统中起调制和解调的作用。针对OFDM系统中FF T运算的要求,研究了一种易于FPGA实现的FFT处理器的硬件结构。接收单元采用乒乓RAM结构,扩大了数据吞吐量。中间数据缓存单元采用双口RAM,减少了访问RAM的时钟消耗。计算单元采用基2算法,流水线结构,可在4个时钟后连续输出运算结果。各个单元协调一致的并行工作,提高了系统时钟频率,达到了高速处理。采用块浮点机制,动态扩大数据范围,在速度和精度之间得到折衷。模块化设计,易于实现更多点数的FFT运算。   关键词:FFT;FPGA;蝶型运算;乒乓RAM结构 1引言 OFDM(正交频分复用)是一种多载波数字调制技术,被公认为是一种实现高速双向无线数据通信的良好方法。在OFDM系统中,各子载波上数据的调制和解调是采用FFT(快速傅里叶变换)算法来实现的。因此在OFDM系统中,FFT的实现方案是一个关键因素。其运算精度和速度必须能够达到系统指标。对于一个有512个子载波,子载波带宽20 kHz的OFDM系统中,要求在50 μs内完成512点的FFT运算。   硬件实现FFT算法的主要方案有:DSP(通用数字信号处理器);FFT专用芯片;FPGA(现场可编程门阵列)。DSP具有纯软件实现的灵活性,适合用于流程复杂的算法,例如在通信系统中的信道编、解码,QAM映射等算法。如果在DSP中完成FFT运算,不仅要占用大量D SP的运算时间,使整个系统的数据吞吐率降低,也无法发挥DSP软件实现的灵活性。因此,前端的FFT运算应由ASIC或FPGA完成。采用专用的FFT处理芯片,虽然速度能达到要求,但其可扩展性差。FPGA具有硬件结构可重构的特点。适合于算法结构固定、运算量大的前端数字信号处理。新近推出的FPGA产品都采用多层布线结构,更低的核心电压,更丰富的IO管脚,容量可达到100 k个逻辑单元(LES),内置嵌入式RAM资源,内部集成多个数字锁相环,多个嵌入的硬件乘法器,所有这一切都使得FPGA在数字信号处理领域显示出自己特有的优势。   本设计根据OFDM系统的实际需要,提出一种用FPGA实现FFT运算的方案,并以64点FFT为例,在Quartus II软件上通过了综合和仿真。  2方案分析   FFT是DFT(离散傅里叶变换)的快速算法。以图1为例,N点FFT共需要log2N级运算,每级需要N/2个蝶型运算。因为系统中FFT运算点数为2的奇数次方,因此本设计采用的是按时间抽取的基二FFT运算。   FPGA实现FFT需考虑的问题有:   (1) 整体实现结构的设计。   对FFT算法进行合理的模块划分,各个模块在中央控制单元的管理下并行工作,实现框图如图2所示。 ?   (2) 数据格式和长度的选择   通常的数据表示方法有3种:浮点,定点和块浮点。浮点数用2组固定的bit来表示指数和小数,动态范围大。只要表示指数的位数足够多,浮点运算就不会发生溢出现象。但是完成浮点运算所需要的电路复杂,运算速度慢。定点数小数点位置固定,用固定的bit来表示整数和小数部分。定点数动态范围小,容易溢出。但是其运算电路简单、速度快。块浮点介于浮点和定点之间。在FFT运算过程中,逐级进行溢出判断和移位选择,实现动态范围扩展。   本方案采用块浮点运算。即小数点的位置随中间运算结果动态范围的增大而右移。入口基带 数据为10 b补码格式。FFT运算结果输出2路10 b。实部、虚部各一路,补码表示。由于入口数据精度的限制,旋转因子的实部、虚部取和输入数据同样的量化位数[3]。   (3) 地址生成单元的设计   在FFT中,输入数据和旋转因子的寻址是设计中最灵活的部分。一种容易想到的实现方案是 利用RAM为每级蝶型运算生成地址查找表,蝶型运算序数作为查找表地址,读出的内容为输入数据和旋转因子地址。优点是地址生成速度快,缺点是消耗大量的片上RAM资源。N点FFT需要log2N b表示地址。N/2个旋转因子用log2(N/2) b表示地址。每级地址查找表都需要(N·log2N+N/2·log(N/2)) b。   本文设计的一种地址生成逻辑,采用流水线结构,通过简单的移位和加法运算,延迟4个时钟得到数据地址,并对原理进行了详细的阐述。 3实现技术   整体设计分为数据接收部分和FFT运算部分。数据接收部分工作在频率低的clk_data。其他逻辑工作在频率高的clk_fast。两个时钟通过双口的接收RAM进行衔接。 3.1数据接收单元   数据接收单元将每帧数据按码位倒置的顺序乒乓存入接收RAM1或接收RAM2。数据接收模块 有2 b的标志信息通知给中心控制单元。中心控制单元根据标志位,交替的对接收RAM中的数据进行处理。当中央控制单元将接收RAM中

文档评论(0)

wendang_12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档