版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OFDM原理及实现研究报告通信原理小班讨论课学生报告【摘 要】OFDM 的全称为 Orthogonal Frequency Division Multiplexing,意为正交频分复用。 OFDM是多载波数字调制技术,它将数据经编码后调制为射频信号。 利用快速傅里叶逆变换 (IFFT,Inverse Fast Fourier Transform) 和快速傅里叶变换(FFT,Fast Fourier Transform)来分别实现调制和解调,是实现复杂度最低、应用最广的一种多载波传输方案。 本文介绍了 OFDM 通信技术基本原理和实现,分析了其优缺点,并对关键技术进行了分析。 【关键词】OFDM
2、;正交频分复用;多载波;快速傅里叶变换(FFT);信道估计1 OFDM 基本原理OFDM 是一种无线环境下的高速传输技术,该技术的基本原理是将高速的串行数据变换成多路相对低速的并行数据并对不同的载波进行调制。相比常规的单载波技术,如AM/FM(调幅/调频)在某一时刻只用单一频率发送单一信号,OFDM在经过特别计算的正交频率上同时发送多路相对低速的并行信号可以使其在噪声及其他干扰环境中一样能有效利用带宽进行通信。这种并行传输体制大大扩展了符号的脉冲宽度,提高了抗多径衰落的性能1。传统的频分复用方法中各个子载波的频谱互不重叠,需要使用大量的发送滤波器和接受滤波器,大大增加了系统的复杂度和成本。同时
3、,它将带宽分成几个子信道,中间用保护频带来减小干扰,降低了系统的频率利用率。而现代OFDM系统采用数字信号处理技术,各子载波的产生和接收都由数字信号处理算法完成,极大地简化了系统的结构。同时由于使用无干扰正交载波技术,单个载波间无需保护频带,提高了频谱利用率,由于这些频谱在整个符号周期内满足正交性,保证了接收端能够不失真地复原信号。另外,OFDM技术可动态分配在子信道上的数据,为获得最大的数据吞吐量,多载波调制器可以智能地分配更多的数据到噪声小的子信道上。当传输信道中出现多径传播时,接收子载波间的正交性就会被破坏,使得每个子载波上的前后传输符号间以及各个子载波间发生相互干扰。为解决这个问题,在
4、每个OFDM 传输信号前面插入一个循环前缀,它是由OFDM信号进行周期扩展得到的。只要多径时延不超过保护间隔,子载波间的正交性就不会被破坏。图1 正交频分复用信号的频谱示意图OFDM的基带信号表达式OFDM基带信号是个复信号:X=k=N2k0N/2dkejk0t注意到其中dk也是个复信号:dk = ak + jbk ,带入X的表达式,得: X=k=N2k0N/2dkejk0t=k=N2k0N2ak+jbk(cosk0t+jsink0t)=k=N2k0N2akcosk0tbksink0t+j(aksink0t+bkcosk0t)因此,可以将基带信号写成实部与虚部的形式:ReX=k=N2k0N2a
5、kcosk0tbksink0t , ImX=k=N2k0N2(aksink0t+bkcosk0t)。OFDM的射频信号表达式调制过程: Xejct= ReX+jImXcosct+jsinct=ReXcosctImXsinct+j(ReXsinct+ImXcosct)将实部取出,将它作为已调信号。Y=ReXejct= Rek=N2k0N2dkejk0tejct=Rek=N2k0N2dkejc+k0t=Rek=N2k0N2ak+jbkejc+k0t=k=N2k0N2akcos(c+k0)tbk(c+k0)tOFDM射频信号带宽从前面OFDM基带信号表达式可以看出,如果子载波总数是8个,正负子载波分
6、别是4个,基带子载波的频率分别是-4f0、-3f0、-2f0、-f0、+f0、+2f0、+3f0、+4f0,很明显子载波频率的间隔是f0。而其实-f0和+f0之间的间隔并不是f0,如果假想-f0和+f0之间有个频率为零的子载波,则所有相邻子载波之间的频率间隔就都是f0了。在WiMAX(802.16e)中,称这个子载波为DC子载波,及直流子载波,实际上这个子载波是个空子载波,并不存在2。对应的OFDM频带信号的频谱如下图所示:OFDM频带信号所占的带宽约为:282+1f0=10f0。如果子载波的总数是N(N为偶数),则OFDM频带信号所占的带宽约为:2N2+1f0=(N+2)f0。OFDM调制与
7、IQ调制的关系OFDM调制信号: sk(t) =akcos(c+k0)tbk(c+k0)t 其中 k = -N/2N/2,但k0。IQ调制信号: s(t) =acosctbctOFDM调制信号与IQ调制信号表达式,二者形式完全相同,只是a、b要换成第K个子载波对应的ak、bk,载波频率由c换成(c+k0)。如图: 图2 IQ调制原理框图 图3 OFDM调制原理框图OFDM射频信号就是由N路IQ数据分别调制在N路子载波上再叠加在一起的结果,子载波的频率分别为(c+k0),其中K是不等于零的整数,K=-N/2N/2。正交频分复用的概念因为三角函数的正交性,所以有:2T2T2Tcosm0t cosm
8、0tdt= 2T2T2T12(1+cos2m0t)dt=12T2T2Tsinm0t sinm0tdt= 2T2T2T12(1cos2m0t)dt=12T2Tcosm0t cosn0tdt=02T2Tsinm0t sinn0tdt=02T2Tcosm0t sinn0tdt=0这种正交性还可以从频域角度来理解。根据奈奎斯特第一准则,每个OFDM符号在其周期T内包括多个子载波,因此其频谱可以看作是周期为T的矩形脉冲的频谱与一组位于各个子载波频率上的函数卷积。矩形脉冲的频谱幅值为sinc(fT)函数,这种函数的零点出现在频率为1T整数倍的位置上。OFDM符号频谱实际上可以满足奈奎斯特准则,即多个子信道
9、频谱之间不存在相互干扰,但这是出现在频域中的。因此这种一个子信道频谱的最大值对应于其他子信道频谱的零点,可以避免子信道问干扰(ICI)的出现3。OFDM与DFS的关系很明显,OFDM基带复信号的表达式与复指数形式的傅里叶级数展开式是非常类似的,st=k=N2k0N/2dkejk0t 与 ft=+ckejk0t二者的唯一不同之处就是:傅里叶级数展开式中参与求和的项一般是无穷多个(k = -+)。而OFDM基带复信号的表达式中参与求和的项共有N个(k = -N/2N/2,但k0)。也就是说,OFDM调制使用N个加权的复指数信号合成了一个OFDM基带复信号s(t),其中加权系数就是待发送的IQ数据组
10、成的复数dk,相当于傅里叶系数ck4。对于OFDM调制,由于dk是由待发送的IQ数据组成的,不可能满足共轭对称关系,因此s(t)一般是复信号。OFDM 调制解调实现2.1常规调制解调的数学推导在发送端发送OFDM调制后的信号:s(t)=k=1Nakcosk0tbksink0t 在接收端,将接收到的s(t)乘以cosm0t,在-T/2,T/2区间进行积分即可得到am;将接收到的s(t)乘以sinm0t,在-T/2,T/2区间进行积分即可得到bm。2T2T2Tstcosm0tdt=2T2T2Tk=1Nakcosk0tbksink0tcosm0tdt=2T2T2Tk=1Nakcosk0t cosm0
11、tbksink0t cosm0tdt=2Tk=1N2T2Takcosk0t cosm0tbksink0t cosm0tdt=2Tk=1Nak2T2Tcosk0t cosm0tdt2Tk=1Nbk2T2Tsink0t cosm0tdt由于三角函数的正交性,上式第二项中的积分为0,第一项中除了k=m那一项积分为1外,其它km项积分也为0。由此得:2T2T2Tstcosm0tdt=2T2T2Tamcosm0t cosm0tdt=am同理可得:2T2T2Tst(sinm0t)dt=2T2T2Tbmsinm0t sinm0tdt=bm2.2常规调制解调的图形表述图4 OFDM常规调制解调原理2.3常规调
12、制解调的文字描述由OFDM原理框图可以看出,OFDM调制的过程,就是将输入数据a1,b1,a2,b2,an,bn作为傅里叶系数与正弦和余弦函数相合成信号s(t)的过程。s(t)=k=1Nakcosk0tbksink0tOFDM解调的过程就是对信号s(t)进行傅里叶级数展开,求傅里叶系数a1,b1,a2,b2,an,bn的过程。然而OFDM解调时需要使用很多个积分器同时工作才能分离数据分号,这样就使得实现成本太高,系统太复杂。当N很大时,需要大量的正弦波发生器,滤波器,调制器和解调器等设备,因此系统非常昂贵。为了降低OFDM 系统的复杂度和成本,我们考虑用离散傅里叶变换(DFT)和反变换(IDF
13、T)来实现上述功能5。2.4简化的调制解调要发送的串行二进制数据经过数据编,码器形成了N个复数序列, 此复数序列经过串并变换器变换后得到码元周期为T 的N路并行码,码型选用不归零方波。用这N路并行码调制N个子载波来实现频分复用。如果在发送端对d(k)做IDFT,把结果经信道发送到接收端,然后对接收到的信号再做DFT, 分解频域信号,子载波的幅度和相位被采集出来并解调成反映射数字信号,取其实部,再进行并串转换,则可以不失真地恢复出原始信号d(k)。这样就可以利用离散傅里叶变换来实现OFDM 信号的调制和解调。实现框图如图5所示。用DFT 和IDFT 实现的OFDM 系统,大大降低了系统的复杂度,
14、减小了系统成本,为OFDM 的广泛应用奠定了基础。图5 OFDM简化后的调制解调原理应注意的是,接收端对信号s(t)采样后再进行DFT就可以还原d(k),理论上,采N个点及以上,一定能无误地得到发射端各子载波承载的数据,与发射端是否使用IDFT无关。而在发送端,不论采多少个点,理论上都是不够的,都是一种近似处理,只是近似的程度不一样而已,因为该信号的频带是无限宽的,同时发射端也只需保证发出的信号确实是s(t),不需要知道接收方是否使用DFT。在实际中进行OFDM基带信号处理通常包含以下几个过程:在发射端,首先对比特流进行QAM或QPSK调制,然后依次经过串并变换和IFFT变换,再将并行数据转化
15、为串行数据,加上保护间隔(又称“循环前缀”),形成OFDM码元。在组帧时,须加入同步序列和信道估计序列,以便接收端进行突发检测、同步和信道估计,最后输出正交的基带信号。当接收机检测到信号到达时,首先进行同步和信道估计,当完成时间同步、小数倍频偏估计和纠正后,经过FFT变换,进行整数倍频偏估计和纠正,此时得到的数据是QAM或QPSK的已调数据。对该数据进行相应的解调,就可得到比特流。OFDM 循环前缀3.1多径时延产生码间串扰在无线通信领域,多径指无线电信号从发射天线经过多个路径抵达接收天线的传播现象。大气层对电波的散射、电离层对电波的反射和折射,以及山峦、建筑等地表物体对电波的反射都会造成多径
16、传播。各个路径的长度不同,因此信号到达的时间也不同,接收信号中不但包含直射的信号,还包含各个时延信号。码间串扰就是信号在通过多条路径到达接收端后,前一个码元的后端部分会干扰到下一个码元的前端部分。图6 多径效应引起码间串扰路径2的时延比路径1要大,接收端收到的经路径2传播的码元对经路径1传播的码元2形成了干扰,在采样时刻可能发生误判。最大多径时延不变时,码元周期越长,多径时延造成的干扰在取样判决时影响到判决结果的概率越小,则多径效应的影响越小。OFDM符号速率相对于比特速率低了很多,这样可以有效对抗多径效应引起的码间串扰。但增大码元周期只能减小多径效应的影响,并不能完全消除这种影响。3.2保护
17、间隔产生子载波干扰为了最大限度地消除符号间干扰,可以在每个OFDM符号之间插入保护问隔,而且该保护间隔长度Ts一般要大于无线信道的最大时延扩展,这样一个符号的多径分量就不会对下一个符号造成干扰。如下图所示。图6 保护间隔消除了码间串扰,却引起子载波干扰在这段保护间隔内,可以不插入任何信号,即是一段空闲的传输时段。然而在这种情况中,由于多径传播的影响,于加入了一段为0的保护间隔,导致积分区间内波形不再连续,破坏了子载波之间的正交性,则会产生信道间干扰。此时采样时刻的结果虽不会受到其他路径的码元符号影响,但不同的子载波之间会产生干扰。在FFT运算时间长度内,第1子载波与带有时延的第2子载波之间的周
18、期个数之差不再是整数,所以当接收机试图对第1子载波进行解调时,第2子载波会对此造成干扰,同样,当对第2子载波进行解调时,也会存在来自第l子载波的干扰。%假设在有两个路径的情况下,%其中一个路径的时延为0,另外一个路径的时延为0.125秒,t=0:0.001:1;y1=sin(2*pi*t);y2=0.*(t0.125);y=y1.*y2;hold onplot(t,y1); plot(t,y2-2);hold offfigure();plot(t,y);图6子载波干扰,积分不再为0若满足正交性,则有2T2Tcosm0t cosn0tdt=0,2T2Tsinm0t sinn0tdt=0。 而积分
19、区间内子载波不再连续,积分结果不为0(B区间与E区间抵消,C区间与F区间抵消,A区间积分为0,还剩下D区间的积分),子载波间的正交性不再满足。因此加了保护间隔后,虽然解决了码间串扰(ISI),却导致了子载波间干扰(ICI)。3.3循环前缀消除子载波干扰要解决子载波间干扰,需要在保护间隔内(持续时间用Tg表示)加入循环前缀,循环前缀中的信号与OFDM符号尾部宽度为Tg的部分相同。这样做之后,对于每个子载波来讲,在保护间隔位置的波形变成了连续的,也就是说在保护间隔+符号时长这整段时间里每个子载波的波形都是连续的,在积分区间内,两个波形相乘后再积分的结果为0,恢复了子载波的正交性。应注意到循环前缀的
20、长度应大于多径时延,才能保持子载波之间的正交性。为什么从后面补到前面能正好使波形连续呢,这与符号时长有关,积分区间等于符号时长,符号时长取最低频率载波的一个完整周期,所以它也是所有子载波的周期,平移整数个周期自然波形是连续的。在实际系统中,OFDM符号在送入信道之前,首先要加入循环前缀,然后送入信道进行传送。在接收端,首先将接收符号开始的宽度为Tg的部分丢弃,然后将剩余的宽度为T的部分进行傅立时变换,然后进行解调。这样就可以保证在一个FFT周期内,OFDM符号的延时副本内所包含的波形的周期个数也是整数。这样,时延小于保护间隔的时延信号就不会在解调过程中产生ICI。当OFDM系统中加入保护间隔之
21、后,由此会带来功率和信息速率的损失,其中功率损失可以定义为:vguard=10log10(TgT+1),从上式可以看出,当保护间隔占到20时,功率损失也不到1dB。但是带来的信息速率损失达20。而在传统的单载波系统中,由于升余弦滤波器也会带来信息速率(带宽)的损失,这个损失与滚降系数有关。但是插入保护间隔可以消除ISI和多径所造成的ICl的影响,因此这个代价是值得的。子载波个数较大时,OFDM的符号周期T相对于信道的脉冲响应长度max很大,则符号间干扰(ISI)的影响很小;而如果相邻OFDM符号之间的保护间隔Tg满足Tsmax的要求,则可以完全克服ISI的影响。同时为了保持子载波之间的正交性,
22、该保护间隔必须是循环前缀,即将每个OFDM符号的后Tg时间中的样点复制到OFDM符号的前面,形成前缀,此时OFDM的符号周期为:Ts = Tg + T 。OFDM 子载波间隔4.1 OFDM符号时长MATLAB实现QPSK映射:para=127;Ns=128;Signal=rand(1,para*2*Ns)0.5;SigPara=reshape(Signal,para,2*Ns); %串并转换,将随机产生的二进制矩阵变换为行数为para列数为2*Ns的矩阵 %进行QPSK数据调制 for j=1:Ns ich(:,j)=SigPara(:,2*j-1); qch(:,j)=SigPara(:,
23、2*j); end x1=ich+qch*sqrt(-1); %产生复信号 x2=ich-qch*sqrt(-1);figure(2); plot(ich*2-1,qch*2-1,o),axis(-2 2 -2 2);title(QPSK星座图);经过QPSK调制(映射)后,每两个比特映射为一个码元,对应一对IQ数据,码元速率降低为比特速率的1/2;经过串/并转换后,串行的4个码元转变为并行的4个码元,这4个并行的码元分别调制在4路载波上,叠加后再调制到射频载波上,得到的信号被称为一个OFDM符号。很明显,OFDM符号速率是串行码元速率的1/4,是串行比特率的1/8。一般地,如果数字调制方式为
24、MPSK或MQAM、子载波数为N,则OFDM符号速率是串行比特速率的1/(Nlog2M)6。OFDM 把信息通过多个子载波传输,在每个子载波上的信号时间就相应地比同速率的单载波系统上的信号时间长很多倍,使OFDM 对脉冲噪声和信道快速衰落的抵抗力更强。同时,通过子载波的联合编码,达到了子信道间的频率分集的作用,也增强了对脉冲噪声和信道快速衰落的抵抗力。OFDM 还可以根据每个子载波的信噪比来优化分配每个子载波上传送的信息比特,自动控制各个子载波的使用,有效避开噪声干扰以及频率选择性对数据传输可靠性的影响,实现对信道的自适应性。为了保证子载波之间的正交性:1TTejk0tejm0tdt=Tej(
25、km)0tdt=1,k=m0,km,接收端解调时的积分区间一般取最低频率载波的一个完整周期:T=20=1/f0,因此相应的OFDM符号时长也取这么长:Ts=1/f0。4.2 OFDM子载波间隔OFDM各个子载波的频率为:-(N/2) f0、-2f0、-f0、f0、2f0、(N/2) f0, X=k=N2k0N/2dkejk0t子载波频率间隔为:f=f0=02,因此OFDM符号时长与子载波间隔之间的关系为:Ts=1/f。一个OFDM符号的长度为1/f,则单位时间内传输的OFDM符号个数为f个。那么单位时间内整个系统能传输的数据符号个数为Bff=B。我们能够发现系统能传输的数据符号个数只与带宽有关
26、,与子载波间隔毫无关系!导频优化和信道估计5.1信道估计为了恢复出原始数据流, 接收端必须先进行信道估计, 获得OFDM符号每一子载波上的绝对参考相位和幅值,以便准确无误地恢复原始数据比特。信道估计的准确性直接影响到整个O F D M 系统的性能。常见的信道估计方法有两类: 基于导频信息的信道估计和基于循环前缀的盲信道估计。盲估计是指不使用导频信息,通过使用相应信息处理技术获得信道的估计值,与传统的非盲信道估计技术相比,盲信道估计技术使得系统的传输效率大大提高。然而由于盲信道估计算法般收敛速度较慢,尤其是在时变的快衰落信道中无法及时的反映出当时信道的情况,因此阻碍了它在实际系统中的应用;现在普
27、遍采用的是基于导频或训练符号的辅助信息信道估计算法和盲信道估计算法两大类方法,它在数据传输效率和收敛速度之问做一个折中,即采用较少的训练序列来获得信道的信息,又能较及时的反应出信道的情况,它是在估计阶段首先利用导频来获得导频位置的信道信息,然后为下面获得整个数据传输阶段的信道信息做好准备7。在单载波系统中,导频符号只能在时问轴方向插入;对于OFDM通信系统,由于多载波系统具有时频二维结构,因此采用导频符号的辅助信道估计将更加灵活。我们可以在时间轴和频率轴两个方向插入导频符号,只要导频故好在时间和频率方向上的间隔相对于信道带宽足够小,在接收端就可以先得到历插入导频符号位置的信道传输函数,然后再采
28、用二维内插滤波的方法来估计所有位置的信道传输函数。OFDM系统导频位置的信道估计常用的几种算法有迫零估计(ZF)、最大似然估计(ML),最小二乘估计(LS)、最小均方误差估计(MMSE),导频位置的信道信息为接收端接收到的信号与发射端发送的信号的比值。在衰落信道下,有Yn=Inhn+zn=k=Ikhnk+zn,其中,In是发送的信息符号,hn是离散的复基带信道,zn是噪声,Yn是对接收机复基带信号的采样。得到的Yn当中,存在符号间干扰和噪声。在通信当中,把符号间干扰去掉的技术叫做均衡(Equalization)。在信号处理领域,这种技术也叫信号恢复(Signal recovery)或者信号重构
29、(Signal reconstruction)。离散域接收信号是发射的符号与信道的卷积。卷积公式为yn=k=xkhnk+zn,在实际的系统当中,观测的数据不可能是无限长的,假设xn与hn的长度分别是Nx和Nh,则yn=k=0Nx1xkhnk+zn。可以知道,yn的长度NX+Nh-1。在有限长度的情况下,离散线性系统可以用矩阵来表示: y = Xh +z,其中,X=x0 x1xNx1 x0 x1xNx1 x0 x1xNx1NyN,信道的冲击响应为h=0,1,N1TN1,观测信号为y=y0,y1,yNy1TNy1,复高斯噪声为z=z0,z1,zNy1TNy1。如果知道了矩阵X,那么就可以用于均衡完
30、全相同的算法来获得对hn的估计。所以,发射机就可以发送事先约定的已知信号,从而帮助接收机事先对信道进行估计。这种事先约定的已知信号就是导频,而这种信道估计的方法叫做导频辅助的信道估计。以迫零估计为例,估计值为h=h+(XHX)1XHz,H为求转置运算。后面一项为噪声项,这个噪声项被相关矩阵XHX的逆所抑制。相关矩阵对角线上的元素为导频的总能量,也就是n=0Nx1xn2,所以导频长度越长,噪声被抑制得越厉害。假如导频的长度为长度为4的全1序列:1,1,1,1,而hn的长度为2,则矩阵X为:X=1011101111,则相关矩阵为:XHX=4334,主对角元素与非主对角元素太接近不利于方程求解。5.
31、2 病态问题二元一次方程求解,类似于两条直线求交点,当两条直线不平行时,交点是唯一的。方程组矩阵的逆存在。 当观测噪声时,阴影部分为 解的可能误差范围。这两条直线的夹角反映了问题的病态程度。 在实际的测量中总有一定的观测噪声,对于同样的观测噪声,当两条直线的夹角比较大的时候,问题是良态的,特别是当两条直线正交的时候,解具有最小的误差带。当两条直线的夹角很小时,解的误差带就很大,问题就变成病态的。当两条直线的夹角越来越小到完全重合时,问题就成为奇异问题,具有多解。5.3 导频优化理想的特性是相关矩阵的非对角元素为0,这样的话,相关矩阵就是个正交矩阵,能够得到最精确的估计结果。上例中,XHX=43
32、34,这个方程组对应的平面上的两条直线斜率分别为-3/4和-4/3,夹角很小,对观测噪声很敏感,造成信道估计结果有较大误差,造成这一现象的原因是导频序列的自相关特性太差。如果把导频序列优化为1,1,-0.5,1,则相关矩阵为XHX=3.25003.25,变成了一个对角矩阵,是一个理想的结果,可使解具有最小误差带。如果导频的长度比较长,可以忽略矩阵X的头部和尾部效应,相关矩阵XHX的病态程度取决于导频序列的自相关函数。如果自相关函数是一个函数,则相关矩阵是对角阵。因此实际应用当中,一般采用具有白噪声性质的序列作为导频。OFDM技术优缺点6.1 OFDM技术优点8(1)在窄带带宽下也能够发出大量的
33、数据。OFDM技术能同时分开至少1000个数字信号,而且在干扰的信号周围可以安全运行的能力将直接威胁到目前市场上已经开始流行的CDMA技术的进一步发展壮大的态势,正是由于具有了这种特殊的信号“穿透能力”使得OFDM技术深受欧洲通信营运商以及手机生产商的喜爱和欢迎。(2)OFDM技术能够持续不断地监控传输介质上通信特性的突然变化,由于通信路径传送数据的能力会随时间发生变化,所以OFDM能动态地与之相适应,并且接通和切断相应的载波以保证持续地进行成功的通信。(3)该技术可以自动地检测到传输介质下哪一个特定的载波存在高的信号衰减或干扰脉冲,然后采取合适的调制措施来使指定频率下的载波进行成功通信。(4
34、)OFDM技术特别适合使用在高层建筑物、居民密集和地理上突出的地方以及将信号散播的地区。高速的数据传播及数字语音广播都希望降低多径效应对信号的影响。(5)OFDM技术的最大优点是对抗频率选择性衰落或窄带干扰。在单载波系统中,单个衰落或干扰能够导致整个通信链路失败,但是在多载波系统中,仅仅有很小一部分载波会受到干扰。对这些子信道还可以采用纠错码来进行纠错。(6)可以有效地对抗信号波形间的干扰,适用于多径环境和衰落信道中的高速数据传输。当信道中因为多径传输而出现频率选择性衰落时,只有落在频带凹陷处的子载波以及其携带的信息受影响,其他的子载波未受损害,因此系统总的误码率性能要好得多。(7)通过各个子
35、载波的联合编码,具有很强的抗衰落能力。OFDM技术本身已经利用了信道的频率分集,如果衰落不是特别严重,就没有必要再加时域均衡器。通过将各个信道联合编码,则可以使系统性能得到提高。(8)OFDM技术抗窄带干扰性很强,因为这些干扰仅仅影响到很小一部分的子信道。(9)可以选用基于IFFT/FFT的OFDM实现方法,实现简单,成本不高。9(10)信道利用率很高,这一点在频谱资源有限的无线环境中尤为重要;当子载波个数很大时,系统的频谱利用率趋于2Baud/Hz。6.2 OFDM技术缺陷(1)对频率偏移和相位噪声很敏感。子信道的频谱相互覆盖,要求严格的正交性,在传输过程中出现的信号频谱偏移或发射机与接收机
36、本地振荡器之间存在频率偏差,都会使导致子载波干扰。(2)峰值与均值功率比相对较大,多载波系统的输出是多个子信道信号的叠加,如果多个信号的相位一致,所得到的叠加信号的瞬时功率会远高于信号的平均功率, 导致较大的峰值平均功率比,这个比值的增大会降低射频放大器的功率效率。附录% 文件名:OFDM调制解调.m% 2011-3-20 无线通信的MATLAB和FPGA实现西瑞克斯 人邮% p171 例4-9 用MATLAB实现OFDM调制、解调,其中假设OFDM信号包含6个%子载波。这里只是简单地说明OFDM调制方式,因此略去了交织、加窗等部分。c=6; %子载波个数bits=108; %每个信道的比特数
37、n=c*bits; %总的传送比特数data=2*round(rand(1,n)-1; %产生信源数据s=reshape(data,c,bits); %串/并变换tp=1:0.1:(1+10.8)-0.1;for i=1:c carrier(i,:)=cos(2*i*pi*tp); %产生载波信号 bpsk_sig(i,:)=s(i,:).*carrier(i,:); %产生调制信号 fin(i,:)=ifft(bpsk_sig(i,:); %对信号进行IFFTend%并串变换transmit=reshape(fin,1,648);%加噪声snr=10;rxdata=awgn(transmit
38、,snr,measured);%并串变换rec=reshape(rxdata,c,bits);for i=1:c rd(i,:)=fft(rec(i,:); %进行FFT处理 uncarry(i,:)=rd(i,:).*carrier(i,:); %解调endrdata=sign(real(uncarry); %判决输出结果%并串变换rdout=reshape(rdata,1,648); 比较信源发送的数据data和接收方收到的数据rdout可知,两者基本一致,误码率很低,由此我们可知,使用IFFT进行调制与FFT解调在OFDM系统中是可以实现无差错的发送接收的,而且抗噪声性能也很高。参考文献
39、【1】樊昌信,曹丽娜等通信原理北京:国防工业出版社,第6版,2006【2】尹长川,罗涛,乐光新多载波宽带无线通信技术【M】北京:北京邮电大学出版社,200423-39【3】Nobles P, Halsall F. OFDM for high bit rate data transmission over measured indoor radio channels. Proc. IEE Colloquium on Radio LANs and MANS, London, UK, April l99515【4】胡广书数字信号处理理论、算法与实现北京:清华大学出版社,1997【5】王文博,郑侃宽带
40、无线通信OFDM技术北京:人民邮电出版社,2003【6】 Corral,C.A.;Emami,S;Rasor,G Model of Multi-Band OFDM Inteferance On BroadbandQPSK ReceiversAcoustics, Speechand Signal Processing,2005【7】丁小峰.韩方景.王振伟OFDM移动通信信道估计与仿真期刊论文-数字通信世界2008(8)【8】Nee, Richard van. OFDM wireless multimedia communications Publishing House,2000【9】田继锋,姜
41、海宁,宋文涛,罗汉文“一种适用于OFDM系统的高效FFT处理器”系统工程与电子技术2004873-875【10】西瑞克斯. 无线通信的MATLAB和FPGA实现. 北京:人民邮电出版社,2011附录资料:不需要的可以自行删除 C语言图形模式速成第一节 图形模式的初始化Turbo C 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境options/Linker中的Graphics lib选为
42、on,只有这样才能保证正确使用图形函数。 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:void far initgraph(int far *gdriver, int far *gmode,char *path);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模
43、式的符号常数及对应的分辨率见graphics. h。图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。#include stdio.h#include graphics.hint main()int gdriver, gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closeg
44、raph();return 0;有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo C 提供了一个自动检测显示器硬件的函数,其调用格式为:void far detectgraph(int *gdriver, *gmode);其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化:#include stdio.h#include graphics.hint main()int gdriver, gmode;detectgraph(&gdriver, &gmode); /*自动测试硬件*/printf(the graphic
45、s driver is %d, mode is %dn,gdriver,gmode); /*输出测试结果*/getch();initgraph(&gdriver, &gmode, C:TC2.0BGI);/* 根据测试结果初始化图形*/bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/getch();closegraph();return 0;上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法, 即用gdriver=DETECT 语句后再跟initgraph()函数就行了。采用这种方法后,上例可改为
46、:#include stdio.h#include graphics.hint main()int gdriver=DETECT, gmode;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(50, 50, 150, 30, 50, 1);getch();closegraph();return 0;另外,Turbo C 提供了退出图形状态的函数closegraph(),其调用格式为:void far closegraph(void);第二节 屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别
47、用下面两个函数: 设置背景色: void far setbkcolor(int color);设置作图色: void far setcolor(int color);其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见graphics.h。清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下: voide far cleardevice(void);#include stdio.h#include graphics.hint main()int gdriver, gmode, i,aa;gdriver=DETECT;initgraph(&
48、gdriver, &gmode, C:TC2.0BGI); /*图形初始化*/setbkcolor(0); /*设置图形背景*/cleardevice();for(i=0; i=15; i+)setcolor(i); /*设置不同作图色*/circle(320, 240, 20+i*10); /*画半径不同的圆*/getch();for(i=0; i=15; i+)setbkcolor(i); /*设置不同背景色*/cleardevice();circle(320, 240, 20+i*10);getch();aa=getmaxcolor();printf(maxcolor=%d,aa);ge
49、tch();closegraph();return 0;另外,TURBO C也提供了几个获得现行颜色设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。int far getcolor(void); 返回现行作图颜色值。int far getmaxcolor(void); 返回最高可用的颜色值。第三节 基本画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。 、画点. 画点函数 void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的
50、点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640 x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数 int far get
51、maxx(void);返回x轴的最大值。int far getmaxy(void);返回y轴的最大值。int far getx(void); 返回游标在x轴的位置。void far gety(void); 返回游标有y轴的位置。void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。、画线I. 画线函数TURBO C提供了一系列画线函数: void far line(int x0,
52、 int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。void far arc(int x, int y, int stangle, int endangle,in
53、t radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周, 依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=36
54、0时, 画出一个完整的椭圆。void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。 void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoin
55、ts中第一个和最后一个点的坐标相同。下面举一个用drawpoly()函数画箭头的例子。#include stdio.h#include graphics.hint main()int gdriver, gmode, i;int arw16=200,102,300,102,300,107,330,100,300,93,300,98,200,98,200,102;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(12); /*设置作图颜色*/drawpoly(
56、8, arw); /*画一箭头*/getch();closegraph();return 0;II、设定线型函数在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。void far setlinestyle(int linestyle,unsigned upattern,int thickness);该函数用来设置线的有关信息,其中linestyle是线形状的规定,见graphics.h。对于upattern,只有lin
57、estyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此时uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:struct linesettingstypeint linestyle;unsigned upattern;int thickness;例如下面两句程序可以读出当
58、前线的特性 struct linesettingstype *info;getlinesettings(info);void far setwritemode(int mode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO C的默认方式)。如果mode=1, 则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。有关线型设定和画线函数的例子如下所示。#include stdio.h#include graphics.hin
59、t main()int gdriver, gmode, i;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320, 240, 98);setlinestyle(0, 0, 3); /*设置三点宽实线*/setcolor(2);rectangle(220, 140, 420, 340);setcolor(WHITE);setlinestyle(4, 0 xaaaa, 1);/*设置一点宽用户定义线*/line(220, 240
60、, 420, 240);line(320, 140, 320, 340);getch();closegraph();return 0;第四节 基本图形的填充填充就是用规定的颜色和图模填满一个封闭图形。 一般是先画轮廓再填充。TURBO C提供了一些先画出基本图形轮廓, 再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBO C 以默认方式填充。 void far bar(int x1, int y1, int x2, int y2);确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某村年度工作总结
- 信息技术(第2版)(拓展模块)教案3-模块3 3.3 大数据工具
- 中班秋季安全教育教案20篇
- 班级心理健康教育工作计划
- 课时7 七年级 Unit 7 2025年中考英语(仁爱版)一轮复习基础练(含答案)
- 【中考考点基础练】阶段训练三 第11~15章 2025年中考物理总复习 (广东)(含答案)
- 高中物理第三章相互作用实验:探究互成角度力的合成课件粤教版必修第一册
- 2013-2018年中国噻吩行业发展前景与投资战略规划分析报告
- 2024至2030年中国数码彩激纸数据监测研究报告
- 2024至2030年中国感应擦鞋机数据监测研究报告
- 湘少版英语六年级上册全册教学课件
- 活动数据分析报告
- 环境设计生涯发展展示
- 公共服务满意度指数调查
- 2023-2024学年成都市石室联合中学八年级上英语期末考试题
- 应急除雪演练方案
- 二次函数(最全的中考二次函数知识点总结)
- 电梯维保数字化转型策略与实践
- 《有机化学》课程教案
- 远大住工-装配式建筑发展现状和技术标准
- 上海大学计算机网络实验报告4
评论
0/150
提交评论