




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA设计基础实验课程论文题 目 高速并行结构FFT的FPGA设计 学 院 专业班级 学生姓名 指导教师 2021年 6月 12日 摘 要高速FFT在雷达、通信和电子对抗等领域都有广泛应用,在某些场合要求对踩丫不放速率1GHZ以上的数据进行实时处理。利用FPGA器件的丰富资源采用全并行加流水线FFT算法,可对速率2.9GHZ的采样数据实现实时(数据不堆积)傅里叶变换。这里采用Xilinx公司的器件来对设计进行编译、综合、布局和布线,也可以采用Altera公司的器件来完成本设计。在用VHDL编程是可以用IP CoreGen(IP 核生成器向导)的方法制定DSP模块生成乘法器,用这种乘法器来做碟形
2、,然后用多个碟形来构成FFT运算级,再将多级串联,即可实现FFT核心运算的全并行流水结构。关键词:FPGA VHDL 碟形AbstractSpeed FFT in radar, communications and electronic warfare and other fields have a wide range of applications, in some cases called for stepped speed 1GHZ Ah hold more data in real-time processing. The use of the rich resources of t
3、he FPGA device plus a fully parallel pipelined FFT algorithm, can speed 2.9GHZ real-time sampling data (data not stacked) Fourier transform. Xilinx's devices used here to compile the design, synthesis, place and route, you can use Altera's devices to complete the design. In VHDL programming
4、can be used IP CoreGen (IP core generator wizard) method developed DSP module generates multiplier, multiplier to do with this dish, and then use the disc to form a plurality of FFT operation level, then the multi-tandem, you can achieve full parallel FFT core computing pipeline structure.Keywords:
5、FPGA VHDL dish目 录摘 要I第1章 绪论11.1 研究背景11.1.1 无线通信的发展和现状11.1.2 OFDM通信技术的发展21.1.3 可编程器件的发展31.2 本文主要内容3第2章 OFDM的基本原理及FFT算法42.1 OFDM的基本原理52.1.1 OFDM的产生和发展52.1.2 串并变换62.1.3 子载波调制62.1.4 DFT的实现72.2 FFT算法原理 92.2.1 时域抽取法 92.2.2 运算规律122.3 小结15第3章
6、定点FFT分析163.1 数的定标173.2 仿真模型说明183.3性能仿真213.3.1不同字长仿真213.3.2系统性能仿真 243.4小结 25第4章 FFT硬件实现264.1 设计准备264.1.1 VHDL语言简介264.1.2可编程器件简介274.2单蝶形设计方案294.2.1蝶形运算单元设计 314.2.2 地址产生单元设计 334.2.3双口RAM与旋转因子ROM:354.2.6 IFFT设计374.3双蝶形方案设计384.4小结42结论43参考文献45附 录46致 谢49 第1章 绪论1.
7、1 研究背景在现代通信中,提高频谱利用率一直是人们关注的焦点之一。近几年来,随着通信业务需求的迅速增长,寻找频谱利用率更高的数字调制方式已成为数字通信系统设计、研究的主要目标之一。为了实现这个目标,通信系统正采用比以前更加复杂的调制信号。OFDM(正交频分复用)是一种高效的多载波调制技术,其最大的特点是传输速率高,具有很强的抗码间干扰和信道选择性衰落能力,具有非常高的频谱利用率。OFDM最初用于高速MODEM、数字移动通信和无线调频信道上的宽带数据传输,随着IEEE802.11a协议和多媒体的发展,数字音频广播(DAB)、地面数字视频广播(DVB-T)和高清晰度电视(HDTV)都应
8、用了OFDM技术。 OFDM利用离散傅立叶反变换/离散傅立叶变换(IDFT/DFT)代替多载波调制和解调,调制解调的核心是快速傅立叶运算单元,在进行蝴蝶运算时,不可避免的要进行大量的乘法运算。由于FPGA具有强大的并行处理和计算能力,以及丰富的存储资源和逻辑运算资源,因此在FPGA器件上实现OFDM调制解调结构,具有很好的通用性和灵活性。 1.1.1 无线通信的发展和现状现代无线通信技术的发展始于本世纪20年代,经历了早期专用移动通信系统的发展,公用移动通信业务的发展,到1978年底,美国贝尔试验室研制成功先进移动 系统(AMPS),建成了蜂窝状移动通信网,大大
9、提高了系统容量。随后投入商用,服务区域在美国逐渐扩大。其它工业化国家也相继开发出蜂窝式公用移动通信网,这种模拟通信系统被称为第一代移动通信系统。 模拟蜂窝网虽然取得了很大成功,但也暴露了一些问题。例如,频谱利用率低,移动设备复杂,费用较贵,业务种类受限制以及通话易被窃听等,最主要的问题是其容量已不能满足日益增长的移动用户需求。解决这些问题的方法是开发新一代数字蜂窝移动通信系统。数字无线传输的频谱利用率高,可大大提高系统容量。另外,数字网能提供语音、数据多种业务服务,并与ISDN等兼容。到80年代中期,欧洲首先推出了泛欧数字移动通信网(G
10、SM)的体系。随后,美国和日本也制定了各自的数字移动通信体制。可以说,在近十多年内数字蜂窝移动通信迅猛发展,已经成为陆地公用移动通信的主要系统,以GSM为代表的数字移动通信系统被称为第二代移动通信系统。目前世界范围内存在的数字无线通信系统主要是第二代移动通信系统,包括全球移动通信系统(GSM)系统、IS-136时分多址复用(TDMA)系统以及IS-95码分多址复用(CDMA)系统。 蜂窝移动通信技术将传统的语音业务推向了一个新的高度。然而随着通过互联网进行的视频、语音和数据通信流量的显著增长,以及移动 的快速普及,用户更加迫切地希望移动通信系统可以提供移动多媒体业务的接入。但对于高速
11、数据业务来说,现有无线通信系统所使用的单载波TDMA系统和窄带CDMA系统都存在很大的缺陷。由于无线信道存在时延扩展,所以通常需要引入均衡器来解决由此所产生的符号间干扰问题。高速信息流的符号宽度很短, ISI相对会更加严重,这就对单载波TDMA系统中所使用的均衡器提出了非常高的要求,即抽头数量要足够大,训练符号要足够多,训练时间要足够长,而均衡算法的复杂度也会大大增加。对于窄带CDMA系统来说,其主要问题在于扩频增益与高速数据流之间的矛盾在保证相同带宽的前提下,对高速数据流所使用的扩频增益就不能太高,这样就大大限制了CDMA系统噪声平均的优点,从而使得系统的软容量会受到一定的影响,如
12、果保持原来的扩频增益,则必须要相应的提高带宽。因此,人们希望通过新的方法来解决高速信息流在无线信道中的传输问题。 倍受瞩目的第三代(3G)移动蜂窝系统(UMTS IMT 2021 )所设计的数据传输速率可达2Mb/s,而人们对于添加宽带数据业务以支持视频、互联网接入及其他更高速率业务的迫切需求推动了3G系统的发展与部署。 尽管3G系统提高了传输速率,满足了目前人们对多媒体的应用,但业界也存在着不同的观点。这种观点认为目前的第三代移动通信系统的核心网还没有完全脱离第二代移动通信系统的核心网结构,第三代移动通信的方案实际上只能算是第二代移动通信方
13、案的改进,算不上真正意义上的宽带接入网络,所以有理由认为第三代系统仅仅是一个从窄带向未来移动通信系统过渡的阶段。目前,人们已经把目光越来越多地投向3G以后(Beyond 3G)的移动通信系统,期望它可以容纳庞大的用户数,改善现有通信品质不良的状况以及达到高速数据传输的要求。若以技术层面来看,3G系统主要是以CDMA为核心技术,B3G系统则以正交频分复用(OFDM)最受瞩目,特别是有不少专家学者针对OFDM技术在移动通信技术上的应用进行了许多相关的理论研究,而且越来越多的通信系统也正在采用OFDM技术。 1.1.2 OFDM通信技术的发展正交频分复用(OFDM)是一种多载波数
14、字调制技术,它由多载波调制(MCM)发展而来。美国军方早在上世纪的50、60年代就创建了世界上第一个MCM系统,在1970年衍生出采用大规模子载波和频率重叠技术的OFDM系统。但在以后相当长的一段时间,OFDM理论迈向实践的脚步放缓了。由于OFDM的各个子载波之间相互正交,采用FFT实现这种调制,但在实际应用中,实时傅立叶变换设备的复杂度、发射机和接收机振荡器的稳定性以及射频功率放大器的线性要求等因素都成为OFDM技术实现的制约条件。随着DSP芯片技术的发展,大规模集成电路让FFT技术的实现不再是难以逾越的障碍,傅立叶变换/反变换、高速modem采用的64/128/256QAM技术、栅格编码技
15、术、软判决技术、信道自适应技术、插入保护时段、减少均衡计算量等成熟的技术逐步引入到移动通信领域中来,人们开始集中越来越多的精力开发OFDM 技术在移动通信领域的应用,预计第四代移动通信的主流技术也将是OFDM技术。 1.1.3 可编程器件的发展可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。自1985年Xilinx公司推出第一片现场可编程逻辑器件(FPGA)至今,FPGA已经历了十几年的发展历史。在这十几年的发展过程中,以FPGA为代表的
16、数字系统现场集成技术取得了惊人的发展:现场可编程逻辑器件从最初的1200个可利用门,发展到90年代的25万个可利用门,乃至当新世纪来临之即,国际上现场可编程逻辑器件的著名厂商Altera公司、Xilinx公司又陆续推出了数百万门的单片FPGA芯片,将现场可编程器件的集成度提高到一个新的水平。对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。 然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进行测试。 原型中使用的PLD器件与正式生产最终设备(如网络路由器、DSL调制解调器、DVD播放器、或汽车导航系统)时所使用的PLD完全相同。&
17、#160;这样就缩小了设计成本,最终的设计也比采用定制固定逻辑器件时完成得更快。FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场,特别是对小批量、多品种的产品需求,使FPGA成为首选。 1.2 本文主要内容OFDM调制系统的调制核心就是快速傅立叶逆变换(IFFT)。用IFFT实现OFDM调制时,N个子载波自然是正交的,由此避免了由本振产生各子载波调制和解调时导致的子载波频偏。随着可编程逻辑器件FPGA 的集成度、速度的不断提高,设计手段日益完善,极大地方便了
18、其使用和推广,研究用FPGA来实现快速傅立叶变换是为在数字信号处理领域中应用FPGA技术奠定基础。本文内容主要可以分为以下几个部分: 第一章介绍了无线通信的发展和现状、OFDM通信技术的发展情况以及可编程器件的发展和应用。 第二章从OFDM的基本原理着手,首先介绍了搭建OFDM系统的各种核心技术,包括串并变换、子载波调制等,以及OFDM的DFT实现,然后重点介绍了本文所实现的FFT算法。 第三章先对浮点数的定点表示进行了介绍,即如何用整数进行浮点数的相关运算,再对系统的定点分析模型进行讲解,对设计的定点系统进行了仿真分析,并得到最终的实现方案。 第四章给
19、出了应用FPGA实现FFT的具体设计,这也是本文的重点。第1节,讲述了的一些硬件设计的基础包括语言和芯片结构。在本章第2节,作者根据第二章论述的FFT算法的特点,设计了系统硬件的总体结构。随后的几节中,详细地给出了总体结构中的各个部件单元的硬件设计。 第2章 OFDM的基本原理及FFT算法本章首先对OFDM的基本原理进行介绍,然后介绍了OFDM系统的几种核心技术,包括串并变换、子载波调制等,接着讲述OFDM调制如何用DFT来实现,并详细介绍了本文设计实现的FFT算法。 2.1 OFDM的基本原理正交频分复用(OFDM)技术与已经普遍应用的频分复用技术
20、十分相似。与普通的频分复用基本原理相同,OFDM把高速的数据流通过串并变换分配到速率相对较低的若干个频率子信道中进行传输,不同的是,OFDM技术更好地利用了控制方法,使频谱利用率有所提高。 OFDM是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。多载波传输把数据流分解成若干子比特流,这样每个子数据流将具有低得多的比特速率,用这样的低比特率形成的低速率多状态符号再去调制相应的子载波,就构成多个低速率符号并行发送的传输系统。正交频分复用是对多载波调制(MCM, Multi-Carrier Modulation)的一种改进。它的特点是各
21、子载波相互正交,所以扩频调制后的频谱可以相互重叠,不但减小了子载波间的相互干扰,还大大提高了频谱利用率。OFDM的最大优点在于该系统能够很好地对抗频率选择性衰落和窄带干扰。在单载波系统中,一次衰落或者干扰会导致整个链路失效,但是在多载波系统中,某一时刻只会有少部分的子信道受到深衰落的影响。 2.1.1 OFDM的产生和发展OFDM的思想早在20世纪60年代就已经提出,由于使用模拟滤波器实现起来的系统复杂度较高,所以一直没有发展起来。在20世纪70年代,S.B.Weinstein提出用离散傅里叶变换(DFT)实现多载波调制,为OFDM的实用化奠定了理论基础;在80年代,L
22、.J.Cimini首先分析了OFDM在移动通信应用中存在的问题和解决方法,从此以后,OFDM在移动通信中的应用得到了迅猛的发展。 OFDM系统收发机的典型框图如图2.1所示。发送端将被传输的数字信号转换成载波幅度和相位的映射,并进行离散傅里叶反变换(IDFT)将数据的频谱表达式变换到时域上,IFFT变换与IDFT变换的作用相同,只是有更高的计算效率,所以适用于所有的应用系统。其中,上半部分对应于发射机链路,下半部分对应于接收机链路。由于FFT操作类似于IFFT,因此发射机和接收机可以使用同一硬件设备。当然,这种复杂性的节约则意味着该收发机不能同时进行发送和接收操作。图2.1 OFDM
23、收发机框图接收端进行与发送端相反的操作,将射频(RF, Radio Frequency)信号与基带信号进行混频处理,并用FFT变换分解频域信号,子载波的幅度和相位被采集出来并转换回数字信号。IFFT和FFT互为反变换,选择适当的变换将信号接收或发送。当信号独立于系统时,FFT变换和IFFT变换可以被交替使用。 2.1.2 串并变换数据传输的典型形式是串行数据流,符号被连续传输,每一个数据符号的频谱可占据整个可利用的带宽。但在并行数据传输系统中,许多符号被同时传输,减少了那些在串行系统中出现的问题。 在OFDM系统中,每个传输符号速率的大小大约在几十bit
24、/s到几十k bit/s之间,所以必须进行串并变换,将输入串行比特流转换成为可以传输的OFDM符号。由于调制模式可以自适应调节,所以每个子载波的调制模式是可变化的,因而每个子载波可传输的比特数也是可以变化的,所以串并变换需要分配给每个子载波数据段的长度是不一样的。在接收端执行相反的过程,从各个子载波处来的数据被转换回原始的串行数据。 当一个OFDM符号在多径无线信道中传输时,频率选择性衰落会导致某几组子载波受到相当大的衰减,从而引起比特错误。这些在信道频率响应上的零点会造成在邻近的子载波上发射的信息受到破坏,导致在每个符号中出现一连串的比特错误。与一大串错误连续出现的情况相
25、比较,大多数前向纠错编码(FEC, Forward Error Correction)在错误分布均匀的情况下会工作得更有效。所以,为了提高系统的性能,大多数系统采用数据加扰作为串并转换工作的部分。这可以通过把每个连续的数据比特随机地分配到各个子载波上来实现。在接收机端,进行一个对应的逆过程解出信号。这样,不仅可以还原出数据比特原来的顺序,同时还可以分散由于信道衰落引起的连串的比特错误,使其在时间上近似均匀分布。这种将比特错误位置的随机化可以提高前向纠错编码FEC的性能,并且系统的总的性能也得到改进。 2.1.3 子载波调制一个OFDM符号之内包含多个经过
26、相移键控(PSK)或者正交幅度调制(QAM)的子载波其中,N表示子载波的个数,T表示OFDM符号的持续时间(周期),id (i=0,1,2.,N-1)是分配给每个子信道的数据符号,if是第i个子载波的载波频率,矩形函数rect(t)=1, |t|<=T/2,则从t=ty开始的OFDM符号可以表示为式(2-1):通常采用等效基带信号来描述OFDM的输出信号,如式(2-2):其中s(t)的实部和虚部分别对应OFDM符号的同相(In-phase)和正交(Quadrature- phase)分量,在实际系统中可以分别与相应子载波的cos分量和sin分量相乘,构成最终
27、的子信道信号和合成的OFDM符号。在图2.2中给出了OFDM系统基本模型的框图,其中fi=fc+i/T。 在接收端,将接收到的同相和正交矢量映射回数据信息,完成子载波解调。图2.2 OFDM系统基本模型的框图2.1.4 DFT的实现傅立叶变换将时域与频域联系在一起,傅立叶变换的形式有几种,选择哪种形式的傅立叶变换由工作的具体环境决定。大多数信号处理使用DFT。DFT是常规变换的一种变化形式,其中,信号在时域和频域上均被抽样。由DFT的定义,时间上波形连续重复,因此导致频域上频谱的连续重复。快速傅立叶变换(FFT)仅是DFT计算应用的一种快速数学方法,由于其高效性,使OFD
28、M技术发展迅速。 对于N比较大的系统来说,式(2-2)中的OFDM复等效基带信号可以采用离散傅立叶逆变换(IDFT)方法来实现。为了叙述的简洁,可以令式(2-2)中的ts=0,并且忽略矩形函数,对于信号s(t)以T/N的速率进行抽样,即令t=kT/N(k=0,1,,N-1),则得到式(2-3):可以看到sk等效为对di进行IDFT运算。同样在接收端,为了恢复出原始的数据符号di,可以对sk进行逆变换,即DFT得到式(2-4):根据以上分析可以看到,OFDM系统的调制和解调可以分别由IDFT和DFT来代替。通过N点的IDFT运算,把频域数据符号id变换为时域数据符号ks,经过射频载波调
29、制之后,发送到无线信道中。其中每个IDFT输出的数据符号ks都是由所有子载波信号经过叠加而生成的,即对连续的多个经过调制的子载波的叠加信号进行抽样得到的。 在OFDM系统的实际运用中,可以采用更加方便快捷的IFFT/FFT。N点IDFT运算需要实施N2次的复数乘法,而IFFT可以显著地降低运算的复杂度。对于常用的基-2 IFFT算法来说,其复数乘法次数仅为(N/2)log(N),但是随着子载波个数N的增加,这种方法复杂度也会显著增加。对于子载波数量非常大的OFDM系统来说,可以进步采用基-4IFFT算法来实施傅立叶变换。 2.2 FFT算法原理
30、0;2.2.1 时域抽取法 FFT算法基本上分为两大类:时域抽取法FFT(DecimationInTime FFT,简称DITFFT)和频域抽取法FFT(DecimationInFrequency FFT,简称DIFFFT)。下面先介绍DITFFT算法。 设序列x(n)的长度为N,且满足式(2-5):图2.3 碟形运算符号这样,就将N点DFT分解为两个N2点的DFT和(2-11)式以及(2-12)式的运算。(2-11)式和(2-12)式的运算可用图2.3所示的流图符号表示,根据其形状称之为蝶形运算符号。采用这种图示法,可将上述分解运算表示于图2.4中,图
31、中,N238,X(0)X(3)由(2-11)式给出,而X(4)X(7)则由(2-12)式给出。 由图2.3可见,要完成一个蝶形运算,需要一次复数乘和两次复数加法运算。由图2.4容易看出,经过一次分解后,计算一个N点DFT共需要计算两个N2点DFT和N2个蝶形运算。而计算一个N2点DFT需要2(N/2)次复数乘和N2(N2-1)次复数加法。由此可见,仅仅经过一次分解,就使运算量减少近一半。既然这样分解对减少DFT的运算量是有效的,且NM2,N2仍然是偶数,故可以对N2点DFT再作进一步分解。图2.4 一次分解与第一次分解相同,将x1(r)按奇偶分解成两个N4长的子序列x3(l)和x4(
32、l),即式(2-13):那么,1()Xk又可表示为式(2-14):同理,由x3(k)和x4(k)的周期性和Wn/2m的对称性最后得到式(2-16):这样,经过第二次分解,又将N2点DFT分解为两个N4点DFT和(2-16)式或(2-17)式所示的N4个蝶形运算,如图2.5所示。依次类推,经过M-1次分解,最后将N点DFT分解成N2个2点DFT。一个完整的8点DITFFT运算流图如图2.5所示。图中输入序列不是顺序排列,但后面会看到,其排列是有规律的。图2.5二次分解图2.6 三次分解2.2.2 运算规律为了最终写出DITFFT运算程序或设计出硬件实现电路,下面介绍它的运算规律。
33、160; 1、 原位计算 由图可以看出,DIT-FFT的运算过程很有规律。N2M=点的FFT共进行M级运算,每级由N2个蝶形运算组成。同一级中,每个蝶形的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据结点又同在一条水平线上,这就意味着计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存贮单元。这样,经过M级运算后,原来存放输入序列数据的N个存贮单元中便依次存放X(k)的N个值。这种利用同一存贮单元存贮蝶形计算输入、输出数据的方法称为原位(址)计算。原位计算可节省大量内存,从而使设备成本降低。 2、 旋转因子的变换规律&
34、#160;如上所述,N点DIT-FFT运算流图中,每级都有N2个蝶形。每个蝶形都要乘以因子pNW,称其为旋转因子,p称为旋转因子的指数。但各级的旋转因子和循环方式都有所不同。为了编写计算程序,应先找出旋转因子pNW与运算级数的关系。用L表示从左到右的运算级数(L1,2,M)。观察图2.6不难发现,第L级共有12L-个不同的旋转因子。 N328时的各级旋转因子表示如式(2-20): 对N=2M的一般情况,第L级的旋转因子为式(2-21) :3、 序列的倒序 DIT-FFT算法的输入序列的排序看起来似乎很乱,但仔细分析就会发现这种倒序是很有规律的。由于N=2
35、M,所以顺序数可用M位二进制数(nM-1nM-2n1n2)表示。M次偶奇时域抽选过程如图2.7所示。 图2.7 时域抽选过程第一次按最低位0n的0和1将x(n)分解为偶奇两组,第二次又按次低位1n的0、l值分别对偶奇组分解;依次类推,第M次按1Mn-位分解,最后所得二进制倒序数如表2.1所示。 表2.1 二进制倒序数表2.1列出了N8时以二进制数表示的顺序数和倒序数,由表显而易见,只要将顺序数(210nnn)的二进制位倒置,则得对应的二进制倒序值(012nnn)。按这一规律,用硬件电路和汇编语言程序产生倒序数很容易。由表2.1可见,自然顺序数I增加1,是在顺序数的二进制数最
36、低位加1,向左进位。而倒序数则是在M位二进制数最高位加1,逢2向右进位。例如,在(000)最高位加1,则得(100),而(100)最高位为1,所以最高位加1要向次高位进位,其实质是将最高位变为0,再在次高位加1。用这种算法,可以从当前任一倒序值求得下一个倒序值。 4、 按时域抽取流图地址产生规律 1)按时域抽取流图结点数据地址的产生规律: 我们考察图2.6中上结点数据在每一次分组运算中地址的产生顺序。为了分析其规律,将地址用二进制表示(210aaa);同时,在左边一列之中,给出每次分组中蝶形运算的次数,也用二进制表示(10bb);在下一栏中,给出分组次数,用移位方
37、式计数(210rrr)。通过这样的表示,再进行观察,发现了上结点数据地址(210aaa)各二进制位有一定规律: a) a2a1a0中与移位码(r2r1r0)中1位的对应位恒为0; b) 其余两位和1b、0b相同。 表2.2 图2.5中上节点数据的地址(a0a1a2) 这样就得到a2、a1、a0的布尔表达式如式(2-24):(·表示逻辑与运算,+表示逻辑或运算) 对下结点数据地址的各二进制作同样的分析,也得到类似的规律,差别在于(a2a1a0)中与(r2r1r0)中1位的对应位恒为1,所以上、下节点数据的
38、地址各二进制位的逻辑表达式可以写在一起如式(2-25): (O=0,为上结点数据地址,O =1,为下结点数据地址) 2)按时域抽取流图结点旋转因子产生规律 旋转因子kNW存放在只读存储(ROM)中,我们仍然以图2.5为例来分析,假设ROM中存放了4个常数:08W,18W,28W,38W。 考察图2.5中各次蝶形运算单元常数kNW的地址(10CC),如表2.3,在蝶算计数(10bb)之后添加2个辅助位(00)。 表2.3 图2.5中旋转因子k研究表2.3,可以发现旋转因子kNW的产生规律:(a)每次分组运算,(10CC)总相
39、当于(10bb00)中的相邻两位; (b)分组次数增加,(10bb00)中与(10CC)相同的2位依次递进1位。0r=1, (10CC)=(00),1r= 1, (10CC)=(0b0),2r=1,(10CC)=(1b0b)。将1C、0C的布尔表达式合在一起,可以得到式(2-26):3)地址产生逻辑推广到普遍情况 上面分析得到的式(2-25) 是在时域抽取图对于8点数据做FFT的简例。对于同样按时域抽取法,但参与FFT运算的数据点数较多的情况,同样可以利用上面总结的规律找出上下结点地址的表达式。一般地,对2m点FFT,共需m次分组,每
40、次分组运算中包括12m-次蝶形运算,所以分组计数器需要m位rm-1rm-2.r0,按移位方式计数;蝶形运算计数器需要m-1位(bm-1bm-2.b0),按普通计数方式计数,结点数据地址为m位(am-1am-2.a0)。 式(2-26)推广为式(2-28): 2.3 小结本章介绍了OFDM的基本原理,并从特殊的多载波传输角度出发,讲述了如何用DFT来实现OFDM调制,FFT是DFT计算的一种快速方法,OFDM调制最终是用FFT来实现的,FFT算法基本上分为两大类:时域抽取法和频域抽取算法,对本文采用的是时域抽取FFT算法进行了介绍,重点分析了算法的运算规律,为具体的硬件实现打
41、下基础。 第3章 定点FFT分析因为FPGA芯片不能直接对浮点数进行操作,本章首先对浮点数的定点表示进行介绍,即如何用整数进行浮点数的相关运算,再对系统的定点仿真模型进行讲解,并对此定点系统进行了仿真分析,得到最终的定点实现方案。 3.1 数的定标在FPGA芯片中,不能直接对浮点数进行操作,只能采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于给定的字长。显然,字长越长,所能表示的数的范围越大,精度也越高。下面以16位字长为例进行说明。 FPGA芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的
42、正负,0表示数值为正,1则表示数值为负。其余15位表示数值的大小。因此 二进制数 0010000000000011b8195二进制数 1111111111111100b-4 对FPGA芯片而言,参与数值运算的数就是16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。FPGA芯片本身对小数无能为力。FPGA芯片处理小数的关键就是由程序员来确定一个数的小数点处于16位中的哪一位,这就是数的定标。 数的定标就是将要进行运算的浮点数扩大很多倍,然后取整,用这个整数去进行运算,运算得到的结果再缩小相应的倍数就是真正的运算结果了
43、,而这个扩大和缩小很多倍的过程,就是数的定标,实际上就是移动小数点位置的过程,FPGA芯片的数以二进制表示的,所以都是扩大或缩小的倍数一般都是2的幂次方,这样对于整数之间的扩大和缩小只需进行相应的移位操作就可以了。 通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有Q表示法和S表示法两种。16位有符号数的Q15和S0.15表示法的意义是整数Y与所表示的真实值X之间的关系为15Y=X2´。表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。 从表3.1可以看出,同样一个16位数,
44、若小数点设定的位置不同,它所表示的数也就不同。例如: 16进制数2021 H8192,用Q0表示 16进制数2021 H0.25,用Q15表示 但对于FPGA芯片来说,设定的小数点的位置在运算中并没有体现,都是按照16位的整型数来处理,而是程序员自己知道小数点的位置,知道将最终结果移动相应的位数才是真正的运算结果就可以了。表3.1 Q表示、S表示及数值范围从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0的数值范围是-32768到+3
45、2767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。浮点数与定点数的转换关系可表示为: 浮点数(x)转换为定点数( xq ): xq = (int)x
46、 Q2 定点数( xq )转换为浮点数(x): x = (float)xq -Q2 例如,浮点数 x=0.5,定标 Q15,则定点数xq 0.532768= 16384 ,式中表示下取整。反之,一个用 Q15 表示的定点数16384,其浮点数为:16384×-152=16384/32768=0.5。3.2 仿真模型说明为了确定用FPGA进行定点FFT设计的具体位宽,我
47、们需要对各种位宽下的定点FFT的运算性能进行仿真比较,选择合适的位宽进行设计,使资源的消耗和性能都能达到比较满意的结果。 在定点FFT中需要设定两个位宽,一个是进行FFT运算的数的位宽,即存储器的位宽,另一个是蝶形运算中旋转因子W的位宽。用整型数表示浮点数的处理过程如图3.1所示:图3.1 定点FFT过程输入的是复数形式的64个进行FFT运算的浮点数,为了能够进行一致的位数扩展,能用K位整数有效的表示它们。先对它们进行归一化处理。归一化的过程就是选出64个数当中最大的数,并用这个数去除全部的64个数。得到一个最大值为1的序列。将归一化后的数据进行位数扩展,即乘以
48、K-22,并向下取整,得到K位定点有符号整数。然后将这些位数扩展得到的整数送去做定点FFT运算。 下面分析定点FFT运算的处理过程。 一次蝶形运算的过程如下:图3.2 一次蝶形运算 旋转因子也要用定点表示,64点FFT共有32个旋转因子,它们本身就已经是归一化的了,无需再进行归一化,直接乘以L-22向下取整,即得到L位定点有符号整数。因为旋转因子将和上结点数据进行乘法运算,因此结果也相应被扩大了L-22倍,所以后来进行加减运算的下结点数据也要再乘以L-22,得到的加法结果才是正确结果的整数倍扩展关系。 蝶形运算得到的结果还要存到存储器中以进行下
49、一级蝶算,同时考虑到结果的溢出问题,所以还要将结果进行截位处理,选择L位存储到存储中,这样就是移动了小数点的位置,程序员要时刻清楚小数点此时所在的位置,以便在最后一级蝶形运算结果输时恢复出原始的运算结果。一种简单的处理方式就是直接截取前L位,这样处理虽然简单却容易丢失有效数据,使结果有较大偏差。所以在仿真的过程中还要根据每一级蝶形运算的数据范围,确定截取位数,截取尽可能多的有效数据进行存储。经过多次仿真验证,前四级截取L-1位,第五级截取L-2位,得到的数据比较有效并且没有溢出。所以定点FFT运算的流程如图3.3所示:图3.3 定点FFT运算流程 字长越长,所能表示的数的范
50、围越大,精度也越高,误差就越小,为了衡量比较定点FFT运算的性能,进行不同字长下定点FFT运算的性能比较,以便确定合适的字长位数,用图3.4所示的模型来衡量这种误差的大小。图3.4 误差模型 输入a在经过定点FFT运算后,再经过定点IFFT运算得到输出b,理想情况下,b和a应该是相等的,但由于定点处理,b和a实际上并不会相等,是有误差的,我们用b和a的差值v作为定点处理带来的误差:vba=-,把这种误差和信号加入噪声相类比,跟噪声的信噪比相似,我们也定义一种信噪比如式(3-1),用误差功率和信号功率的比值作为衡量定点运算性能的指标: 3.3性能仿真3.3.1不同字长仿真基
51、于上述的仿真模型进行定点FFT的性能仿真,首先确定输入数据的字长,仿真在输入数据字长一定的情况下,旋转因子为不同字长的信噪比情况。 1、 当输入字长为16位时,即K=16,旋转因子字长L变换的性能情况,仿真结果如表3.2所示: 表3.2 K=16时的误差仿真结果真从仿真结果可以看出,当输入数据字长为16时,旋转因子字长为15时的信噪比最高,为58.7736db。 2、 当输入字长为12位时,即K=12,旋转因子字长L变换的性能情况,仿真结果如表3.3所示: 表3.3 K=12时的误差仿真结果从仿真结果可以看出,当
52、输入数据字长为12时,旋转因子字长为10时的信噪比最高,为35.1605db。 3、 当输入字长为10位时,即K=10,旋转因子字长L变换的性能情况,仿真结果如表3.4: 表3.4 K=10时的误差仿真结果从仿真结果可以看出,当输入数据字长为10时,旋转因子字长为7时的信噪比最高,为25.0357 db。 4、 当输入字长为9位时,即K=9,旋转因子字长L变换的性能情况,仿真结果如表3.5: 表3.5 K=9时的误差仿真结果从仿真结果可以看出,当输入数据字长为9时,旋转因子字长为7时的信噪比最高,为17
53、.9339 db。 5、 当输入字长为8位时,即K=8,旋转因子字长L变换的信噪比情况,仿真结果如表3.6: 表3.6 K=8时的误差仿真结果从仿真结果可以看出,当输入数据字长为8时,旋转因子字长为4时的信噪比最高,为13.8839 db。 3.3.2系统性能仿真 下面分别用信噪比最高的组合16x15、12x10、10x7、9x7、8x4做调制解调误码性能仿真,比较他们的误差对QPSK调制信号的影响。 QPSK-OFDM系统的发送端、接收端分别采用定点IFFT、定点FFT,比较其误码性能。 仿真
54、模型如图3.5所示:图3.5 系统性能仿真模型图3.6 系统性能仿真结果 各种组合下系统性能仿真结果如图3.6所示,8X4的组合方式性能太差不能采用,其他方式和采用浮点的误比特性能接近,都可以采用,所以本系统设计采用了占用资源比较少的9X7的组合方式,即数据用9位定点表示,旋转因子用7位定点表示。3.4小结 本章首先介绍了浮点数的定点表示,阐述了FPGA芯片对浮点数操作的处理方式,接着对本系统采用的定点处理过程进行讲解,包括整个FFT的运算流程的定点处理,并对本文设计的定点系统进行了matlab仿真,根据仿真结果分析得到了最终的实现方案。第4章 FFT
55、硬件实现本章给出了应用FPGA实现FFT的具体设计,这也是本文的重点。首先讲述了的一些硬件设计的基础包括语言和芯片结构,接着根据第二章论述的FFT算法的特点,设计了系统硬件的总体结构,并在随后的几节中,详细地给出了总体结构中的各个部件的硬件设计。 4.1 设计准备4.1.1 VHDL语言简介VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言&
56、#160;。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。 VHDL主要用于
57、描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。 (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而
58、决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)
59、VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。4.1.2可编程器件简介可编程逻辑器件(Programmable Logic Device,PLD)是一类半定制的通用性器件,用户可以通过对PLD器件进行编程来实现所需的逻辑功能。与专用集成电路ASIC相比,PLD具有灵活性高、设计周期短、成本低、风险小等优势,因而得到了广泛应用,各项相关技术也迅速发展起来,PLD目前已经成为数字系统设计的重要硬件基础。目前使用最广泛的可编程逻辑器件有两类:现场可编程门阵列(Field Programmable&
60、#160;Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。FPGA和CPLD的内部结构稍有不同。通常,FPGA中的寄存器资源比较丰富,适合同步时序电路较多的数字系统;CPLD中组合逻辑资源比较丰富,适合组合电路较多的控制应用。在这两类可编程逻辑器件中,CPLD提供的资源较少,而FPGA提供了最高的逻辑密度、最丰富的特性和极高的性能,已经在通信、消费电子、医疗、工业和军事等各应用领域当中占据重要地位。因此,本文主要针对FPGA进行阐述。 FPGA是一类高集成度的可编程逻辑器件,起源于美
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度四川省房屋租赁租赁合同租赁双方违约责任合同
- 2025年润滑油购销合同范本8篇
- 2025年山西省运城市单招职业倾向性考试题库参考答案
- 第2.6讲 指数与指数函数(原卷版)-2024年高考数学一轮复习精讲精练宝典(新高考专用)
- 菏泽黄底真石漆施工方案
- 第三单元课外古诗词教学设计 2024-2025学年七年级上册同步
- 博物馆拆迁合同范本
- 优化公司供应商管理的工作计划
- 构建班级学习共同体的工作策略计划
- 老年肺炎区别护理
- 按小时收费合同范例
- 北师大版(2024新版)七年级上册数学第五章《一元一次方程》单元测试卷3(含答案解析)
- 2024金属非金属矿山(露天矿山)安全管理人员试题及解析
- 《脑胶质瘤诊疗指南2024版》解读
- 《铁路轨道维护》课件-单根更换混凝土枕作业
- 软件开发行业安全风险管理方案
- 检修车间安全风险辨识管控
- 金价走势分析
- 《青少年抑郁症的人际心理治疗》黄满丽
- 2022部编版道德与法治四年级下册《我们的好朋友》教学设计
- 经济法学学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论