本科毕业设计:基于MATLAB的OFDM系统仿真及分析

更新时间:2024-05-13 02:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

正交频分复用(OFDM) 是第四代移动通信的核心技术。该文首先简要介绍了OFDM的发展状况及基本原理, 文章对OFDM 系统调制与解调技术进行了解析,得到了OFDM 符号的一般表达式,给出了OFDM 系统参数设计公式和加窗技术的原理及基于IFFT/FFT 实现的OFDM 系统模型,阐述了运用IDFT 和DFT 实现OFDM 系统的根源所在,重点研究了理想同步情况下,保护时隙(CP)、加循环前缀前后和不同的信道内插方法在高斯信道和多径瑞利衰落信道下对OFDM系统性能的影响。在给出OFDM系统模型的基础上,用MATLAB语言实现了传输系统中的计算机仿真并给出参考设计程序。最后给出在不同的信道条件下,研究保护时隙、循环前缀、信道采用LS估计方法对OFDM系统误码率影响的比较曲线,得出了较理想的结论。 关键词:

正交频分复用;仿真;循环前缀;信道估计

Title: MATLAB Simulation and Performance Analysis of OFDM System ABSTRACT

OFDM is the key technology of 4G in the field of mobile communication. In this article OFDM basic principle is briefly introduced. This paper analyzes the modulation and demodulation of OFDM system, obtaining a general expression of OFDM mark, and giving the design formulas of system parameters, principle of windowing technique, OFDM system model based on IFFT/FFT, the origin which achieves the OFDM system by using IDFT and DFT. Then, the influence of CP and different channel estimation on the system performance is emphatically analyzed respectively in Gauss and Rayleigh fading channels in the condition of ideal synchronization. Besides, based on the given system model OFDM system is computer simulated with MATLAB language and the referential design procedure is given. Finally, the BER curves of CP and channel estimation are given and compared. The conclusion is satisfactory.

KEYWORDS:OFDM; Simulation; CP; Channel estimation

目 次

1 概述.............................................................. 1

1.1 OFDM的发展及其现状.......................................... 2 1.2 OFDM的优缺点................................................ 2 2 OFDM的基本原理 ................................................... 4

2.1基于IFFT/FFT 的OFDM 系统模型................................ 4 2.2 OFDM信号的频谱特性.......................................... 7 2.3 0FDM 系统调制与解调解析 ..................................... 8 2.4 加窗 ....................................................... 10 3 循环前缀及信道估计对系统误码率的改善分析......................... 13

3.1循环前缀.................................................... 13 3.2 OFDM系统的峰值平均功率比................................... 17 3.3信道估计.................................................... 18

3.3.1信道估计概述 .......................................... 18 3.3.2基于导频的信道估计方法 ................................ 19 3.3.3信道的插值方法 ........................................ 20 3.3.4仿真结果及分析 ........................................ 21

结 论............................................................. 22 致 谢............................................................. 23 参 考 文 献........................................................ 24 附 录............................................................. 26

1 概述

随着移动通信和无线因特网需求的不断增长,越来越需要高速无线系统设计,而这其中的一个最直接的挑战就是克服无线信道带来的严重的频率选择性衰落。正交频分复用(OFDM)技术可以很好地克服无线信道的频率选择性衰落,由于其简单高效,OFDM已成为实现未来无线高速通信系统中最核心的技术之一。

现代移动通信发展至今,已经经历了三代,而3G 的后续技术也在加速研究中。目前,国际标准化组织正在推动无线传输技术从2Mb/s 的传输速率向100Mb/s 和1000Mb/s 的目标发展,对4G 的定义也已经逐渐清晰起来。基本上可以确定,OFDM/OFDMA、MIMO和智能天线等技术将成为4G 的主流技术。OFDM 相关的技术很多, 实际应用中的OFDM 复杂度很高。因此, 建立适合自己研究方向的OFDM 模型, 无论是为了理解OFDM 技术的理论,还是对后续的OFDM 与其他技术相结合的研究工作,都有着非常重要意义。

OFDM是一种特殊的多载波调制技术,它利用载波间的正交性进一步提高频谱利用率,而且可以抗窄带干扰和多径衰落。多载波调制原理最早在20 世纪60 年代中期由Collins kinep lex 提出。70 年代,主要用于美国军用无线高频通信系统;80 年代,OFDM的研究主要用在高速调制解调器、数字移动通信及高密度录音带中;90 年代以后,OFDM主要用在非对称的数字用户环路(ADSL) 、ETSI 标准的数字音广播(DAB) 、数字视频广播(DVB) 、高清晰度电视(HDTV) 、无线局域网(WLAN)等。OFDM与CDMA技术结合主要有两种形式, 一种是多载波CDMA(MC-CDMA) , 一种是多载波直扩CDMA (MC-DS-CDMA) 。前者是频域扩展和多载波调制技术相结合,后者是时域扩展和多载波调制技术相结合。

OFDM通过多个正交的子载波将串行的数据并行传输,可以增大码元的宽度,减少单个码元占用的频带,抵抗多径引起的频率选择性衰落;可以有效克服码间串扰( ISI) ,降低系统对均衡技术的要求,适用于多径环境和衰落信道中的高速数据传输;而且信道利用率很高,这一点在频谱资源有限的无线环境中尤为重要。这些方案都是基于OFDM 之上的, 因此, 研究OFDM系统的性能就显得非常必要。本文首先简要介绍OFDM基本原理,在这个基础上建立了OFDM仿真模型,然后通过加保护时隙及进行信道估计, 分析OFDM 系统在AWGN和多径Rayleigh衰

落信道下不用的插入算法的性能,最后给出仿真结果。

1.1 OFDM的发展及其现状

OFDM是一种特殊的多载波频分复用(FDM)技术。在传统的多载波频分复用系统中,各个子信道采用不同的载波并行传送数据,子载波之间间隔足够远,采用隔离带来防止频谱重叠,故频谱效率很低。在均衡器未被采用以前,人们就是用这种多载波方式在时间色散信道中进行高速通信的。

1966年,R.W.Chang分析了在多载波通信系统中如何使经过滤波后带限的子载波保持正交。随后不久B.R.Saltzberg给出了一篇性能分析的文章,他指出在设计一个有效的并行传输系统时,应该把注意力更多地集中在减少相邻信道的串扰上,而不是使各个独立的信道工作得更好,因为此时信道串扰是造成信号失真的主要因素。1971年,S.B.Weinstein和P.M.Ebert提出用傅立叶变换(DFT)进基带OFDM调制和解调。通过DFT进行OFDM基带调制和解调避免了生成多个子载波和多个窄带带通滤波器,使系统的模拟前端由多个变为一个,同时由于DFT可以用FFT来快速实现,这进一步降低了系统实现的复杂度。为对抗符号间干扰和载波闻干扰,他们提出在符号间插入一段空白时隙作为保护间隔。他们的系统虽然没有能在色散信道中获得很好的子载波正交性,但对OFDM仍是一个很大贡献。另一个重要贡献来自A.Peled和A.Rmz,他个人提出了采用循环前缀来解决色散信道中子载波间的正交性问题。当信道响应长度小于循环扩展时,循环前缀的存在使信号与信道响应的线性卷积变成循环卷积,从而使色散OFDM信号可以通过频域单点均衡进行去相关。当然,循环扩展的引入会导致少量的信噪比损失。由于无线信道的多径传播会使宽带OFDM信号产生频率选择性衰落,导致各个子信道上的信噪比不同,因此实际的OFDM系统都是与交织、纠错编码结合在一起,形成编码的正交频分复用(COFDM)。交织和编码能够使OFDM系统获得良好的频率和时间二维分集。

1.2 OFDM的优缺点

虽然OFDM已经得到广泛的应用,但是在使用中我们也要清楚的认识到它的

优缺点,下面简要的从这两方面介绍下OFDM。

OFDM技术的优点主要有:

(1) OFDM调制方式适用于多径和衰落信道中的高速数据传输。当信道因为多径的影响出现频率选择性衰落时,只有落在频率凹陷处的载波及其携带的信息受到影响,其它子载波未受损害;。

(2) 在OFDM调制方式中,通过插入保护间隔,可以很好地克服符号间干扰(ISI)和载波间干扰(ICI)

(3) 由于OFDM各子载波相互正交,允许各子载波有1/2重叠,因此可以大大提高频谱利用率:

(4) 由于深度衰落而丢失的一些子载波可通过编码、交织等措施来很好的恢复,提高系统抗误码性能,且通过各子载波的联合编码,具有很强的抗衰落能力;

(5) OFDM技术抗脉冲及窄带干扰的能力很强,因为这些干扰仅仅影响到很小一部分的子信道;

(6) 与单载波系统相比,对采样定时偏移不敏感。 OFDM技术的缺点主要有:

(1) 由于要求各子载波正交,所以对频率偏移和相位噪声很敏感; (2) 由于各子载波相互独立,峰值功率与均值功率比相对较大,且随子载波数目的增加而增加。高峰均比信号通过功放时,为了避免信号的非线性失真和带外频谱再生,功放需要具有较大的线性范围,导致射频放大器的功率效率降低。

国外对OFDM技术的研究已有近50年的历史。最初无线OFDM传输系统是用在军用无线高频通信链路中,随着数字信号处理(DSP)超大规模集成电路(VLSI)技术的发展,OFDM技术获得了长足的进步并广泛应用于社会生活的各个方面。其应用主要有:

(1) 广泛应用于音频和视频传输中,如欧洲数字音频广播18J(DAB)、数字视频广播(DVB)以及日本的综合业务数字广播(ISDB)等;

(2) 非对称数字用户链路(ADSL);

(3) 无线局域网标准IEEE802.1la、欧洲电信标准协会(ETSI)推出的局域网标准Hyperlan2等;

(4) 无线城域网标准IEEE802.16a; (5) 已具雏形的4G蜂窝系统;

2 OFDM的基本原理

在宽带无线通信系统中,影响高速信息传输的最主要一类干扰是频率选择性干扰。它表现为对信号的某些频率成分衰减严重,而对另外一些频率成分有较高的增益。为克服这类衰落,一个很自然的想法是在信道上划分多个子信道,使每一个子信道的频率特性都近似于平坦,使用这些独立的子信道传输信号并在接收机中予以合并,以实现信号的频率分集,这就是多载波调制的基本思想。在无线通信中应用最广的是OFDM多载波调制技术,它的每一个子载波都是正交的,提高了频谱的利用率。还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,最大限度的消除由于多径带来的符号间干扰。

2.1基于IFFT/FFT 的OFDM 系统模型

基于IFFT/FFT 实现的OFDM 系统方框图如图2.2.1 所示

图2.1.1 IFFT/FFT 实现的OFDM 系统

图2.1.1中串行输入数据为经过信道编码后的序列(如Turbo码),将该序列转换成包含R个比特的块,每块再分成N个组,每个组对应一个子载波。根据所采用调制方式的不同,每个组包含的比特数可以不同,设第K 组的比特数为mk, 则有?mk?R0采用ASK、PSK、QAM等调制方式将这mk个比特映射成复值符

k?1No号。

除了上述经过数据调制的信息符号外,还有NP个不需要经过数据调制的用于同步与信道估计的导频符号,一共有Nv?Nd?Np 组有用数据。在适当的位置上添加一定数量的零使得总的信息符号个数为刚好大于N的2 的整数幂,记为

N,即有N?N0个子信道不用,其上传输的复值符号为0。这样处理的目的一方面是为了采用IFFTFFT,另一方面是为了防止谱外泄。对于连续的OFDM信号模型,假设系统的总带宽是W,OFDM码元周期为TS,Tg为保护间隔。一个OFDM复值基带码元可以表示为:

Sa(t)??SK?K(t) (2.1)

K?0N?1式(2.1)中的信号以1/Δ(Δt = T / N )的速率从时刻Tg开始采样,所得的N 个样本为:

S[n]?Sa(Tg?n?t)?1Se?Tkk?oN?1k?0N?11Se?TkK?0N?1j2??f(n?t)

=

j2?k?f(nTN)

=

1Se?Tkj2?knN , k=0,1,2,3.......N-1 (2.2)

显然,这N个样值??S?n??n?0N?1N?1的IDFT,除了系数外完全一?与序列S=?Sk?n?0样。由于对每个连续OFDM 码元采样N 个样本,正好满足Nyquist 采样定理,所以可以通过这些样值重构原始的连续信号。这样样值可以通过IDFT 来得到,这就是用IDFT 和DFT 可以实现OFDM 系统的根源。下面给出OFDM载波的幅度谱和相位谱,分别如下图2.1.2和图2.1.3所示

OFDM Carrier Frequency Magnitude1.51Magnitude0.50-0.502004006008001000IFFT Bin12001400160018002000 图2.1.2 OFDM载波幅度谱

OFDM Carrier Phase20015010050Phase (degrees)0-50-100-150-20002004006008001000IFFT Bin12001400160018002000 图2.1.3 OFDM载波相位谱

2.2 OFDM信号的频谱特性

当各个子载波用QAM或MPSK进行调制时,如果基带信号采用矩形波形,则每个子信道上已调的频谱为Sa(x)形状,其主瓣宽度为2TSHZ,其中TS为OFDM信号长度(不包括CP)。由于在TS时间内共有OFDM信号的N个抽样,所以OFDM信号的时域信号的抽样周期为TSN。由于相邻子载波之间的频率间隔为

?f?fsN,所以

?f?fsN?1TS

即这些已调子载波信号频谱Sa(x)函数的主瓣宽度为2TS,间隔为1TS。根据函数性质,知道它们在频域上正交,这就是正交频分复用(OFDM)名称的由来。

一般的频分复用传输系统的各个子信道之间要有一定的保护频带,一便在接收端可以用带通滤波器分离出各个信道的信号。保护频带降低了整个系统的频谱利用率。OFDM系统的子系统间不但没有保护频带,而且各个信道的信号频谱还相互重叠。如图2.2.1所示:

图2.2.1 OFDM信号正交性的频域解释示意图

这使得OFDM系统的频谱利用率相比普通频分复用系统有很大的提高,而各子载波可以采用频谱效率高的QAM和MPSK调制方式,进一步提高OFDM系统的频谱效率。

2.3 0FDM 系统调制与解调解析

以t =ts为起始时刻的OFDM符号可以表示为:

s(t)??dtrect(t?ts?t)exp(j2?fi(t?ts)),ts?t?ts?T, (2.3)

2t?0N?1式(2.3)实部和虚部分别对应于OFDM 符号的同相和正交分量,实际应用中可以分别与相应子载波的cos 分量和sin 分量相乘,构成最终的子信道信号和合成的OFDM 符号。

收端对应OFDM 解调,其第k 路子载波信号解调过程为:将接收信号与第k 路的解调载波exp(?j?2k?Nt)相乘,然后将得到的结果在OFDM 符号的持续T时间T 内进行积分,即可获得相应的发送信dk'。实际上,式(2.3)中定义的OFDM 复等效基带信号可以采用离散逆傅里叶变换(IDFT)实现。令式(2.3)的

ts=0,t=KT/N(k=0,1,…,N-1),则可以得到:

sk?s(kT)??diexp(ji?0N?1N2?ki),0?K?N?1 (2.4) N在式(2.4)中,sk即为di的IDFT 运算。在接收端,为了恢复出原始的数据符号

di,可以对sk进行DFT 变换得到:

di??skexp(?jk?0N?12?ki),0?i?N?1 (2.5) N由上述分析可以看出,OFDM 系统可以通过N 点IDFT运算,把频域数据符号di变换为时域数据符号sk,经过载波调制之后,发送到信道中;在接收端,将接收信号进行相干解调。然后将基带信号进行N 点DFT 运算,即可获得发送的数据符号di。实际应用中, 可用快速傅里叶变换(FFT/IFFT)来实现OFDM 调制和解调。N 点IDFT 运算需要实施N2次的复数乘法,而IFFT 可以显著地降低运算的复杂度。对于常用的基2IFFT 算法来说,其复数乘法的次数仅为

(N2)log2(N)。

本文中假设FFT的点数是2048,载波数量是200,每个符号代表2bit,每个载

波使用100个符号,则OFDM的时域和频域图形如下:

OFDM Time Signal, One Symbol Period0.040.030.020.01Amplitude0-0.01-0.02-0.03-0.0405001000Time150020002500 图2.3.1 OFDM一个符号周期的时域OFDM信号

OFDM Time Signal0.20.150.10.05Amplitude (volts)0-0.05-0.1-0.15-0.200.51Time (samples)1.522.5x 105 图2.3.2 OFDM每一个载波对应的时域信号

2.4 加窗

由式(2.3)所定义的OFDM 符号存在的缺点是功率谱的带外衰减速度不够快。技术上,可以对每个OFDM 符号进行加窗处理,使符号周期边缘的幅度值逐渐过渡到零。经常被采用的窗函数是式(2.6)定义的升余弦窗

?0.5?0.5cos(??t?(?Ts)),?w(t)??1.0 (2.6)

?0.5?0.5cos((t?T)?(?T)),SS?(2.6)式中, Ts表示加窗前的符号长度。而加窗后符号的长度应该为

(1??)Ts,从而允许在相邻符号之间存在有相互覆盖的区域。在实际系统中,经过加窗的OFDM 符号的产生过程为:首先,在Nc个经过数字调制的符号后面补零,构成N 个输入样值序列,然后进行IFFT 运算;将IFFT 输出的最后Tprefix个样值插入到OFDM 符号的最前面,将IFFT 输出的最前面的Tpostfix 个样值插入到OFDM 符号的最后面;接下来,将OFDM 符号与式(2.6)定义的升余弦窗函数?(t)时域相乘;最后将经过加窗的OFDM 符号延时Ts,与前一个经过加窗的OFDM 符号相加。应当指出,式(2.6)中β值的选择要适当,如对于64 个子载波的OFDM 符号,可取?=0.025。

用matlab可以画出其频谱密度仿真图。如图2.4.1(a),2.4.1(b)所示;其中,每一个子图横轴表示归一化频率,纵轴表示归一化幅度衰减(单位:dB)。(a)、(b)两个子图分别表示包含128、256个子载波的OFDM符号的功率密度谱。从图中可以看出,随子载波数增加,OFDM符号功率密度谱下降速度会增快。但是即使在256个子载波情况下,其3dB带宽仍然会是128个载波3dB带宽的2倍。

为了加快OFDM信号功率谱带外衰减部分的下降速度,可以对每个OFDM时域符号进行加窗,使符号周期边缘的幅度值逐渐过渡到零,这与成型滤波的原理相当的类似。成型滤波是在频域加平方根升余弦窗,降低时域信号的拖尾振荡;而OFDM符号在时域加升余弦窗,降低频域信号拖尾振荡,使带外衰减速度加快。

图2.4.1(a)载波数为256的信号频谱信号仿真图

图2.4.1(b)载波数128的信号频谱信号功率谱带外衰减仿真图 对OFDM时域符号加窗之前,首先要添加循环前缀和循环后缀,添加了循环前缀和循环后缀后的归一化功率的OFDM复信号表示为:

1s?t??N??1????i2?fitdirec?t? 0?t??1???T' (2.7) ?e?2?i?0?N?12加入循环前缀、循环后缀后的OFDM功率谱密度为:

1N?1s?f???di(1??)T'sinc???f?fi??1???T'? (2.8)

Ni?0

如图2.4.2(a)和2.4.2(b)所示,通过对OFDM信号加窗前后的信号频谱进行仿真比较,得到加窗后信号的带外衰减大副减小,但是对信号的误码率也有一定的影响。

图 2.4.2(a)未加窗OFDM功率频谱带外衰减仿真

图2.4.2(b)加升余弦窗后OFDM功率谱带外衰减仿真

3 循环前缀及信道估计对系统误码率的改善分析

3.1循环前缀

OFDM系统中,每个并行数据支路都是窄带信号,可近似认为每个支路都经历平坦衰落,这样就减小了频率选择性衰落对信号的影响。同时,每路子数据流速率的降低,减小了符号间干扰( ISI) 。此外,还可以通过加保护间隔的办法完全消除符号间干扰。假设每个OFDM符号由Y个样值组成,由于时延扩展,接收端将会有和信道冲激响应持续时间相对应的前L (L < Y) 个样值发生错误,为此,可以在发送信号前端加上M个样值,接收端收到信号时,先去掉前M个样值,然后再进行FFT,只要M ≥L就可完全消除ISI。

最初的保护间隔是用空数据填充的,这虽然消除了ISI,但却破坏了信道间的正交性。后来, Peled和Ruiz 提出了用循环前缀填充保护间隔的方法,即把Y个样值的最后M个复制到个OFDM符号的前端作为保护间隔,利用循环卷积的概念,只要循环前缀的长度大于信道的冲激响应,信道间仍是正交的。符号周期由T增加至T′= T +ΔT,ΔT是保护时隙,增加保护时隙会降低频谱利用率, 所以ΔT一般小于等于T/4。

为了清楚的说明循环前缀抗符号间干扰(ISI)和载波间干扰(ICI)影响,本文将通过图3.1.1和图3.1.2进行详细说明。

图3.1.1是无循环前缀时产生符号问干扰和载波间干扰韵示意图。从图中可以看到,OFDM两个子载波都采用了BPSK调制,即在符号边界处,载波相位可能产生180度的跳变。

(1)从图3.1.1(a)可以看出,在理想的高斯信道条件下,可以保证在FFT运算时间内,不会发生信号相位的跳变,因此OFDM接收机接收到的信号仅是多个单纯连续的正弦波的叠加,这种叠加不会破坏子载波之间的正交性。

(2) 从图3.1.1(b)可以看出,在多径信道下,会产生信号的延迟。在图中载波2的延迟信号会在FFT的运算时间内产生相位的跳变,破坏了子载波的正

交性,从而在接收机中会对载波2的解调造成符号间的干扰。

图3.1.1无循环前缀时产生符号间干扰和载波间干扰示意图

(3) 从图3.1.1(c)可以看出,载波2的延迟信号会在FFT的运算时间内产相位的跳变,破坏了子载波的正交性,从而在接收机中会对载波1的解调造成载波间的干扰。

图3.1.2是有循环前缀时,OFDM信号抗符号间干扰和载波间干扰的示意图,其中OFDM两个子载波也采用了BPSK调制。图中CP代表循环前缀的位置。

(1) 从图3.1.2(a)可以看出,在理想的高斯信道条件下,在FFT的运算长度内,不会发生信号相位跳变,相位跳变仅发生在循环前缀的位置内,在接收端进行FFT之前会将其去掉,因此OFDM接收机接收到的信号也仅是多个单纯连续的正弦波的叠加,这种叠加不会破坏子载波之间的正交性。

(2) 从图3.1.2(b)可以看出,在多径信道下,会产生信号的延迟。在图中,载波2的延迟信号会在循环前缀内产生相位的跳变,但在FFT的运算时间内没有跳变,保持了子载波的正交性,从而在接收机中不会对载波2的解调造成干扰,

这就是循环前缀抗符号间干扰的体现。

(3) 从图3.1.2(c)可以看出,载波2的延迟信号会在循环前缀内产生相位的跳变,但在FFT的运算时间内没有跳变,保持了子载波的正交性,从而在接收机中不会对载波1的解调造成干扰,这就是循环前缀抗载波间干扰的体现。

图3.1.3和图3.1.4是OFDM符号仅仅存在两个子载波对的情况,实际的OFDM接收机接收到的是多个子载波和这些子载波不同延迟的信号的叠加,是较为杂的。

图3.1.2 循环前缀抗符号间干扰和载波间干扰示意图

通过仿真可以直观的说明时延超过循环前缀对OFDM系统造成的影响。仿真 的OFDM系统有1024个子载波,循环前缀长度是其1/4,信道为高斯信道且无噪声影响。图3.1.3(a)和图3.1.3(b)给出接收到的OFDM频谱结构,图3.1.4给出的OFDM信号采用QPSK调制,不考虑频偏和定时等因素,只经过信道估计条件下.时延对循环前缀的影响。图3.1.4第一个图表示时延没有超过保护间隔时,星座点没有畸变;图3.1.4第二个图表示的是时延超过循环前缀长度的2%时,这时载波间干扰仍然较小,星座点较为清晰,约有16个错误比特。

OFDM Receive Spectrum, Magnitude1.51Magnitude0.50-0.50100200300400500FFT Bin6007008009001000 图3.1.3(a)接收到的OFDM幅度谱

OFDM加入循环前缀后,显然会带来功率和信息速率的损失,其中功率损失定义为:

?Tg? v?10lg?+1? (3.1)

?T?从上式可以看到,当循环前缀占到20%时,功率损失不到ldB,带来的信息速率损失达20%。但是插入循环前缀可以消除符号间干扰和多径所造成的载波间干扰的影响,因此这个代价是值得的。

OFDM Receive Spectrum, Phase20015010050Phase (degrees)0-50-100-150-2000100200300400500FFT Bin6007008009001000 图3.1.3(b)接收到的OFDM信号相位谱

图3.1.4 时延扩展超过循环前缀对星座点的影响仿真图

3.2 OFDM系统的峰值平均功率比

OFDM系统一个主要缺点就是峰均功率比过高。OFDM符号是由多个独立的经过调制的子载波信号相加而成的,这样合成信号有可能产生比较大的峰值功

率,由此带来较大的峰值平均功率比,简称峰均Hfi(PAR)。与单载波系统相比,OFDM发射机的输出信号的瞬时值会有较大的波动。这要求系统内的一些部件,例如功率放大器、A/D、D/A转换器等具有很大的线性动态范围。而反过来,这些部件的非线性也会对动态范围较大的信号产生非线性失真,所产生的谐波造成信道间的相互十扰,从而影响OFDM系统的性能。定义峰均比如下:

maxxnnPAR?dB??10lg?? (3.1)

E?x?22其中,xn表示经过IFFT运算之后的OFDM信号:

1 xn?NnkXW?kN (3.2) k?0N?1 对OFDM系统来说,当N个子信号都以相同的相位求和时,所得到信号的

峰值功率在极限情况下是平均功率的N倍,因而基带信号的峰均比为

PRP?10lgN,例如N=1024的情况中,PAR=30.1dB。当然OFDM系统内的峰

均比通常不会达到这一数值。实际的OFDM传输系统中,峰均比抑制是制约OFDM技术应用的一个主要瓶颈。抑制峰均比的技术主要包括信号预畸变技术、编码技术和非预畸变技术等。

3.3信道估计

3.3.1信道估计概述

无线通信系统的性能受到无线信道的制约。无线信道的特性如前面所介绍,发射机和接收机之间的传播路径非常复杂,从简单的视距传播到遭受各种复杂的地貌如建筑物、山脉和森林等影响的传播。此外,无线信道不像有线信道那样固定并可预见,而且无线信道具有很大的随机性,这导致接收信号的幅度、相位和频率失真,难以进行分析。这些问题对接收机的设计提出了很大的挑战,因此在接收机中,信道估计器是一个很重要的部分。OFDM系统中,信道估计器的设计主要有两个问题:一是导频信息的选择,因为无线信道的时变特性,需要接收机不断对信道进行跟踪,所以导频信息必须不断的传送;二是既有较低的复杂度又有良好的导频跟踪能力的信道估计器设计,在确定导频发送方式和信道估计准则

条件下,寻找最佳的信道估计器结构。

信道估计从大的角度可以分为非盲估计和盲估计以及在此基础上产生的半盲估计。非盲估计是指在估计阶段首先利用导频来获得导频位置的信道信息,然后为获得整个数据传输阶段的信道信息做好准备,它的一个好处是应用广泛,几乎可以用于所有的无线通信系统。同时,它的缺点也显而易见,导频信息占用了信息比特,降低了信道传输的有效性,也浪费了带宽。盲估计是指不使用导频信息,通过使用相应信息处理技术获得信道的估计值,这与传统的非盲信道估计技术相比,盲信道估计技术使系统的传输效率大大提高,但是由于盲信道估计算法运算量较大,收敛速度较慢,灵活性比较差,阻碍了它在实际系统中的应用。因此出现了半盲信道估计,它在数据传输效率和收敛速度之间做一个折中,采用较少的训练序列来获得信道的信息。基于OFDM的新一代无线通信系统中,由于传输速率较高,需要使用相干检测技术获得较高的性能,因此通常使用非盲估计获得较好的估计效果,这样可以更好的跟踪无线信道的变化,提高接收机性能。本文所研究的信道估计方法也是基于导频的信道估计。 3.3.2基于导频的信道估计方法

基于导频信道的方法是在系统中设置专用导频信道来发送导频信号。由于OFDM系统具有时频二维结构,所以采用导频符号辅助信道估计更加灵活。所谓的基于导频符号的信道估计是指在发送端的信号中的某些位置插入接收端己知的符号或序列,接收端利用这些信号或序列受传输信道衰落影响的程度,再根据某些算法来估计信道的衰落性能,当然也可以用MMSE和LS算法,这一技术叫作导频信号辅助(PSAM)。在各种衰落估计技术,PSAM是一种有效的技术,在单载波系统中,导频符号或序列只能在时间方向上插入,在接收端提取导频信号估计信道的冲击响应。但是在多载波系统中,导频信号可以在时间和频率两个方向上插入,在接收端可提取导频信号估计信道的传递函数。只要导频信号在时间和频率方向上间隔对于信道带宽足够少,就可以采用二维内插滤波的方法来估计传递函数,当然也可以采用分离的一维估计。

OFDM系统中常用的导频信号分布方法有导频信号块状分布、梳状分布和星状分布三种。

考虑到实现的复杂度,信道估计准则选用LS估计准则。

3.3.3信道的插值方法

插值方法有常值内插、线性内插和DFT插值,常值内插一般用在块状导频结构中,是比较简单的插值方法,本文接下来就来讨论LS算法下不同插值方式下对信道的估计;

首先线性内插是最简单也是最传统的内插方法之一,它利用两个导频信号来进行内插估计。

时间方向的线性内插的公式为:

H(k,l)?H(k,m?T?n)?(1? (3.3) nn)Hp(k?p,m)?HP(k?p,m?1),?k???T?T其中0?n??T?1 , m?T?l?(m?1)?T。同理,可以得到频率方向的一阶线性内插的公式为:

H(k,l)?H(p?p?q,l)

?(1? (3.4) qq)Hp(p,l?T)?HP(p?1,l?T),?k???p?p ,

其中

0?q??p?1p?p?k?(p?1)?p。

其次是DFT插值,由于信道冲击响应与信道传输函数是傅氏变换对,内插可以利用DFT的性质。但是DFT插值一般用在基于梳状导频的结构中设信道冲击向为

h?[h(0),h(1),…h(L?1),0,0…0]N?1。

信道的传输函数为:

H(m)?1h(n)e?Nn?0N?1?j2?mnN?1h(n)e?Nn?0L?1?j2?mnN m?0,1,......N?1

(3.5)

取整数M?L,且N是M的整数倍,对信道传输函数在频.率方向以N/M为 间隔进行抽取,得到其中的元素是:

N1H(p)?MN?h(n)en?0N?1?j2?NPnNM?1h(n)e?Nn?0N?1?j2?PnN

?1h(n)e?Nn?0M?1?j2?pnM p?0,1,.....M?1 (3.6)

可以看出,由频率轴的M个抽样值可以恢复信道冲击响应。再进行N点的DFT就可以得到所有子信道的传输函数值。

至于常值插入比较简单就不再赘述。 3.3.4仿真结果及分析

基于LS算法的以上三种方法的信道估计matlab仿真如下图3.3.1所示,由图可以看出同一信噪比下DFT最为理想,线性内插效果最差,而常值内插介于他俩之间,但在要求同一REB的情况下DFT要求更大信噪比。所以在大信噪比下还是选择DFT更为理想,如果是在要求小的误码率且在小的信噪比下常值内插是一种比较简单而且效果较理想的内插恢复方法。

100DFT线性内插常值内插10-1BER10-210-305101520信噪比/dB25303540 图3.3.1不同内插算法仿真结果

结 论

本文针对目前的研究热点OFDM技术进行计算机仿真研究,在OFDM仿真模型的基础上用MATLAB语言编写出OFDM发送、信道及接收整个系统上的仿真图形,在系统仿真正确的前提下,对在OFDM信道上加上窗函数前后以及加上循环前缀后,采用不同的内插方法接收信号的改善程度进行了研究,得出预想的结果。

致 谢

参 考 文 献

[1] Erich Cosby. Orthogonal Frequency Division Multiplexing (OFDM) Tutorial and Analysis[M ]. Northern Virginia Center,2001.

[2] Mingqi Li ,Qicong Peng, Yubai Li, Performance Evaluation of MC - DS - CDMA Systems in Multipath Fading Channels[ J ]. 0- 7803 - 7547 - 5 /02, IEEE , 2002.

[ 3 ] A Peled, A Ruiz. Frequency domain data transmission using reduced computational complexity algorithms[C ]. In Proc. IEEE Int. Conf. Acoust. , Speech, Signal Processing, 1980.964 - 967.

[ 4 ] R van Nee. OFDM Wireless Multimedia Communications[M ].Rrasad R. Artech House, 1998

[ 5 ] 周正兰,等. OFDM及其链路级平台的Simulink实现[ J ]. 中国数据通信, 2003, (10) : 90 – 92

[ 6 ] 尹泽明,等. 精通MATLAB6 [M ]. 清华大学出版社, 2002. [ 7 ] 蔡涛, 等译. 无线通信原理与应用[M ]. 电子工业出版社,1999. [ 8 ] 丁玉美,等. 数字信号处理[M]. 西安电子科技大学出版社, 2003 [9 ] Reiniers U.DVB-T: the COFDM-based system for terrestrial television[J]. Electronics & Communication Engineering Journal, 1997,9,(01):28-32.

[10] 尹长川,罗涛,乐光新.多载波宽带无线通信技术[M].北京:北京邮电大学出版社,2004:20-45.

[11] 王文博,郑侃. 宽带无线通信OFDM技术[M]. 第2版,内蒙古:人民 邮电出版社,2007:8-9.

附 录

clear all; close all;

IFFT_bin_length = 1024; % FFT的点数 carrier_count = 200; % 载波的数量

bits_per_symbol = 2; % 每个符号代表的比特数 symbols_per_carrier = 50; % 每个载波使用的符号数

SNR = 10; % 信道中的信噪比(dB) baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symbol;%总比特数 carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2)); conjugate_carriers = IFFT_bin_length - carriers + 2;

%发送端>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %产生随机二进制数据:

baseband_out = round(rand(1,baseband_out_length));

convert_matrix=reshape(baseband_out,bits_per_symbol,length(baseband_out)/bits_per_symbol); for k = 1:(length(baseband_out)/bits_per_symbol) modulo_baseband(k) = 0; for i = 1:bits_per_symbol

modulo_baseband(k)=modulo_baseband(k)+convert_matrix(i,k)*2^(bits_per_symbol-i); end end

% 串并转换

carrier_matrix = reshape(modulo_baseband, carrier_count, symbols_per_carrier)'; % 对每一个载波的符号进行差分编码

carrier_matrix = [zeros(1,carrier_count);carrier_matrix]; for i = 2:(symbols_per_carrier + 1)

carrier_matrix(i,:)=rem(carrier_matrix(i,:)+carrier_matrix(i-1,:),2^bits_per_symbol); end

% 把差分符号代码转换成相位

carrier_matrix = carrier_matrix * ((2*pi)/(2^bits_per_symbol)); % 把相位转换成复数

[X,Y] = pol2cart(carrier_matrix, ones(size(carrier_matrix,1),size(carrier_matrix,2))); complex_carrier_matrix = complex(X,Y); % 分配载波到指定的IFFT位置

IFFT_modulation = zeros(symbols_per_carrier + 1, IFFT_bin_length); IFFT_modulation(:,carriers) = complex_carrier_matrix;

IFFT_modulation(:,conjugate_carriers) = conj(complex_carrier_matrix); % 画出频域中的OFDM信号代表 figure (1)

stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)),'b*-') grid on

axis ([0 IFFT_bin_length -0.5 1.5])

ylabel('Magnitude') xlabel('IFFT Bin')

title('OFDM Carrier Frequency Magnitude') %

figure (2)

plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bin_length)), 'go') hold on

stem(carriers-1, (180/pi)*angle(IFFT_modulation(2,carriers)),'b*-')

stem(conjugate_carriers-1, (180/pi)*angle(IFFT_modulation(2,conjugate_carriers)),'b*-') axis ([0 IFFT_bin_length -200 +200]) grid on

ylabel('Phase (degrees)') xlabel('IFFT Bin')

title('OFDM Carrier Phase')

% 通过IFFT将频域转化为时域,得到时域信号 time_wave_matrix = ifft(IFFT_modulation'); time_wave_matrix = time_wave_matrix'; %画出一个符号周期的时域OFDM信号 figure (3)

plot(0:IFFT_bin_length-1,time_wave_matrix(2,:)) grid on

ylabel('Amplitude') xlabel('Time')

title('OFDM Time Signal, One Symbol Period')

%画出每一个载波对应的时域信号(分离的OFDM信号) for f = 1:carrier_count

temp_bins(1:IFFT_bin_length)=0+0j;

temp_bins(carriers(f))=IFFT_modulation(2,carriers(f));

temp_bins(conjugate_carriers(f))=IFFT_modulation(2,conjugate_carriers(f)); temp_time = ifft(temp_bins'); figure(4)

plot(0:IFFT_bin_length-1, temp_time) hold on end grid on

ylabel('Amplitude') xlabel('Time')

title('Separated Time Waveforms Carriers') for i = 1:symbols_per_carrier + 1

windowed_time_wave_matrix(i,:)=real(time_wave_matrix(i,:)).*hamming(IFFT_bin_length)'; windowed_time_wave_matrix(i,:) = real(time_wave_matrix(i,:)); end

%串并转换

ofdm_modulation=reshape(windowed_time_wave_matrix',1,IFFT_bin_length*(symbols_per_carr

ier+1));

% 画出整个时域OFDM

temp_time = IFFT_bin_length*(symbols_per_carrier+1); figure (5)

plot(0:temp_time-1,ofdm_modulation) grid on

ylabel('Amplitude (volts)') xlabel('Time (samples)') title('OFDM Time Signal') % 画出频域OFDM信号

symbols_per_average = ceil(symbols_per_carrier/5);

avg_temp_time = IFFT_bin_length*symbols_per_average; averages = floor(temp_time/avg_temp_time); average_fft(1:avg_temp_time) = 0; for a = 0:(averages-1)

subset_ofdm=ofdm_modulation(((a*avg_temp_time)+1):((a+1)*avg_temp_time)); subset_ofdm_f = abs(fft(subset_ofdm));

average_fft = average_fft + (subset_ofdm_f/averages); end

average_fft_log = 20*log10(average_fft); figure (6)

plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log) hold on

plot(0:1/IFFT_bin_length:1, -35, 'rd') grid on

axis([0 0.5 -40 max(average_fft_log)]) ylabel('Magnitude (dB)')

xlabel('Normalized Frequency (0.5 = fs/2)') title('OFDM Signal Spectrum')

% 上变频,这个模型中我们把经过IFFT运算后OFDM直接发送 Tx_data = ofdm_modulation;

%信道======================================================= % The channel model is Gaussian (AWGN) +Multipath(时延为1) Tx_signal_power = var(Tx_data); linear_SNR = 10^(SNR/10);

noise_sigma = Tx_signal_power/linear_SNR; noise_scale_factor = sqrt(noise_sigma);

noise = randn(1, length(Tx_data))*noise_scale_factor; copy1=zeros(1,length(ofdm_modulation)); for i=2:length(ofdm_modulation) copy1(i)=ofdm_modulation(i-1); end

Rx_Data = Tx_data + noise;

%RECEIVE

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % 根据符号长度和符号数将串行的符号转换为并行的 % - 每一列是符号周期

Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, symbols_per_carrier + 1); %对每一列信号做FFT得到频域信号 Rx_spectrum = fft(Rx_Data_matrix); % 画出接收到的OFDM信号频域代表

%--------1---------2---------3---------4---------5---------6---------7---------8 figure (7)

stem(0:IFFT_bin_length-1, abs(Rx_spectrum(1:IFFT_bin_length,2)),'b*-') grid on

axis ([0 IFFT_bin_length -0.5 1.5]) ylabel('Magnitude') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Magnitude') figure (8)

plot(0:IFFT_bin_length-1, (180/pi)*angle(Rx_spectrum(1:IFFT_bin_length,2)), 'go') hold on

stem(carriers-1, (180/pi)*angle(Rx_spectrum(carriers,2)),'b*-')

stem(conjugate_carriers-1, (180/pi)*angle(Rx_spectrum(conjugate_carriers,2)),'b*-') axis ([0 IFFT_bin_length -200 +200]) grid on

ylabel('Phase (degrees)') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Phase') % 抽取接收信号中有载波的点

Rx_carriers = Rx_spectrum(carriers,:)'; %画出每个接收符号分布图 figure (9)

Rx_phase_P = angle(Rx_carriers); Rx_mag_P = abs(Rx_carriers);

polar(Rx_phase_P, Rx_mag_P,'bd'); % 计算载波的相位 % - 弧度转换为角度

% - 归一化相位(0-360)

Rx_phase = angle(Rx_carriers)*(180/pi); phase_negative = find(Rx_phase < 0);

Rx_phase(phase_negative) = rem(Rx_phase(phase_negative)+360,360); % 用diff()计算相位差

Rx_decoded_phase = diff(Rx_phase);

phase_negative = find(Rx_decoded_phase < 0);

Rx_decoded_phase(phase_negative) = rem(Rx_decoded_phase(phase_negative)+360,360);

%--------1---------2---------3---------4---------5---------6---------7---------8 % 相位转化为符号

base_phase = 360/2^bits_per_symbol; delta_phase = base_phase/2;

Rx_decoded_symbols= zeros(size(Rx_decoded_phase,1),size(Rx_decoded_phase,2)); for i = 1:(2^bits_per_symbol - 1) center_phase = base_phase*i;

plus_delta = center_phase+delta_phase; minus_delta = center_phase-delta_phase;

decoded=find((Rx_decoded_phase<=plus_delta)&(Rx_decoded_phase>minus_delta)); Rx_decoded_symbols(decoded)=i; end

% Convert the matrix into a serial symbol stream

Rx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded_symbols,1)*size(Rx_decoded_symbols,2));

% Convert the symbols to binary for i = bits_per_symbol: -1: 1 if i ~= 1

Rx_binary_matrix(i,:) = rem(Rx_serial_symbols,2); Rx_serial_symbols = floor(Rx_serial_symbols/2); else

Rx_binary_matrix(i,:) = Rx_serial_symbols; end end

baseband_in=reshape(Rx_binary_matrix,1,size(Rx_binary_matrix,1)*size(Rx_binary_matrix,2)); % 查找错位比特

bit_errors = find(baseband_in ~= baseband_out); bit_error_count = size(bit_errors,2);

d_out,bits_per_symbol,length(baseband_out)/bits_per_symbol); for k = 1:(length(baseband_out)/bits_per_symbol) modulo_baseband(k) = 0; for i = 1:bits_per_symbol

modulo_baseband(k)=modulo_baseband(k)+convert_matrix(i,k)*2^(bits_per_symbol-i); end end

% 串并转换

carrier_matrix = reshape(modulo_baseband, carrier_count, symbols_per_carrier)'; % 对每一个载波的符号进行差分编码

carrier_matrix = [zeros(1,carrier_count);carrier_matrix]; for i = 2:(symbols_per_carrier + 1)

carrier_matrix(i,:)=rem(carrier_matrix(i,:)+carrier_matrix(i-1,:),2^bits_per_symbol); end

% 把差分符号代码转换成相位

carrier_matrix = carrier_matrix * ((2*pi)/(2^bits_per_symbol)); % 把相位转换成复数

[X,Y] = pol2cart(carrier_matrix, ones(size(carrier_matrix,1),size(carrier_matrix,2))); complex_carrier_matrix = complex(X,Y); % 分配载波到指定的IFFT位置

IFFT_modulation = zeros(symbols_per_carrier + 1, IFFT_bin_length); IFFT_modulation(:,carriers) = complex_carrier_matrix;

IFFT_modulation(:,conjugate_carriers) = conj(complex_carrier_matrix); % 画出频域中的OFDM信号代表 figure (1)

stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)),'b*-') grid on

axis ([0 IFFT_bin_length -0.5 1.5]) ylabel('Magnitude') xlabel('IFFT Bin')

title('OFDM Carrier Frequency Magnitude') figure (2)

plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bin_length)), 'go') hold on

stem(carriers-1, (180/pi)*angle(IFFT_modulation(2,carriers)),'b*-')

stem(conjugate_carriers-1, (180/pi)*angle(IFFT_modulation(2,conjugate_carriers)),'b*-') axis ([0 IFFT_bin_length -200 +200]) grid on

ylabel('Phase (degrees)') xlabel('IFFT Bin')

title('OFDM Carrier Phase')

% 通过IFFT将频域转化为时域,得到时域信号 time_wave_matrix = ifft(IFFT_modulation'); time_wave_matrix = time_wave_matrix'; %画出一个符号周期的时域OFDM信号 figure (3)

plot(0:IFFT_bin_length-1,time_wave_matrix(2,:)) grid on

ylabel('Amplitude') xlabel('Time')

title('OFDM Time Signal, One Symbol Period')

%画出每一个载波对应的时域信号(分离的OFDM信号) for f = 1:carrier_count

temp_bins(1:IFFT_bin_length)=0+0j;

temp_bins(carriers(f))=IFFT_modulation(2,carriers(f));

temp_bins(conjugate_carriers(f))=IFFT_modulation(2,conjugate_carriers(f)); temp_time = ifft(temp_bins'); figure(4)

plot(0:IFFT_bin_length-1, temp_time) hold on end grid on

ylabel('Amplitude') xlabel('Time')

title('Separated Time Waveforms Carriers') for i = 1:symbols_per_carrier + 1

windowed_time_wave_matrix(i,:)=real(time_wave_matrix(i,:)).*hamming(IFFT_bin_length)'; windowed_time_wave_matrix(i,:) = real(time_wave_matrix(i,:)); end

%串并转换

ofdm_modulation=reshape(windowed_time_wave_matrix',1,IFFT_bin_length*(symbols_per_carrier+1));

% 画出整个时域OFDM

temp_time = IFFT_bin_length*(symbols_per_carrier+1); figure (5)

plot(0:temp_time-1,ofdm_modulation) grid on

ylabel('Amplitude (volts)') xlabel('Time (samples)') title('OFDM Time Signal') % 画出频域OFDM信号

symbols_per_average = ceil(symbols_per_carrier/5);

avg_temp_time = IFFT_bin_length*symbols_per_average; averages = floor(temp_time/avg_temp_time); average_fft(1:avg_temp_time) = 0; for a = 0:(averages-1)

subset_ofdm=ofdm_modulation(((a*avg_temp_time)+1):((a+1)*avg_temp_time)); subset_ofdm_f = abs(fft(subset_ofdm));

average_fft = average_fft + (subset_ofdm_f/averages); end

average_fft_log = 20*log10(average_fft); figure (6)

plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log) hold on

plot(0:1/IFFT_bin_length:1, -35, 'rd') grid on

axis([0 0.5 -40 max(average_fft_log)]) ylabel('Magnitude (dB)')

xlabel('Normalized Frequency (0.5 = fs/2)') title('OFDM Signal Spectrum')

% 上变频,这个模型中我们把经过IFFT运算后OFDM直接发送

Tx_data = ofdm_modulation;

%信道======================================================= % The channel model is Gaussian (AWGN) +Multipath(时延为1) Tx_signal_power = var(Tx_data); linear_SNR = 10^(SNR/10);

noise_sigma = Tx_signal_power/linear_SNR; noise_scale_factor = sqrt(noise_sigma);

noise = randn(1, length(Tx_data))*noise_scale_factor; copy1=zeros(1,length(ofdm_modulation)); for i=2:length(ofdm_modulation) copy1(i)=ofdm_modulation(i-1); end

Rx_Data = Tx_data + noise; %RECEIVE

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % 根据符号长度和符号数将串行的符号转换为并行的 % - 每一列是符号周期

Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, symbols_per_carrier + 1); %对每一列信号做FFT得到频域信号 Rx_spectrum = fft(Rx_Data_matrix); % 画出接收到的OFDM信号频域代表

%--------1---------2---------3---------4---------5---------6---------7---------8 figure (7)

stem(0:IFFT_bin_length-1, abs(Rx_spectrum(1:IFFT_bin_length,2)),'b*-') grid on

axis ([0 IFFT_bin_length -0.5 1.5]) ylabel('Magnitude') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Magnitude') figure (8)

plot(0:IFFT_bin_length-1, (180/pi)*angle(Rx_spectrum(1:IFFT_bin_length,2)), 'go') hold on

stem(carriers-1, (180/pi)*angle(Rx_spectrum(carriers,2)),'b*-')

stem(conjugate_carriers-1, (180/pi)*angle(Rx_spectrum(conjugate_carriers,2)),'b*-') axis ([0 IFFT_bin_length -200 +200]) grid on

ylabel('Phase (degrees)') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Phase') % 抽取接收信号中有载波的点

Rx_carriers = Rx_spectrum(carriers,:)'; %画出每个接收符号分布图 figure (9)

Rx_phase_P = angle(Rx_carriers); Rx_mag_P = abs(Rx_carriers);

polar(Rx_phase_P, Rx_mag_P,'bd'); % 计算载波的相位 % - 弧度转换为角度

% - 归一化相位(0-360)

Rx_phase = angle(Rx_carriers)*(180/pi); phase_negative = find(Rx_phase < 0);

Rx_phase(phase_negative) = rem(Rx_phase(phase_negative)+360,360); % 用diff()计算相位差

Rx_decoded_phase = diff(Rx_phase);

phase_negative = find(Rx_decoded_phase < 0);

Rx_decoded_phase(phase_negative) = rem(Rx_decoded_phase(phase_negative)+360,360); %--------1---------2---------3---------4---------5---------6---------7---------8 % 相位转化为符号

base_phase = 360/2^bits_per_symbol; delta_phase = base_phase/2;

Rx_decoded_symbols= zeros(size(Rx_decoded_phase,1),size(Rx_decoded_phase,2)); for i = 1:(2^bits_per_symbol - 1) center_phase = base_phase*i;

plus_delta = center_phase+delta_phase; minus_delta = center_phase-delta_phase;

decoded=find((Rx_decoded_phase<=plus_delta)&(Rx_decoded_phase>minus_delta)); Rx_decoded_symbols(decoded)=i; end

% Convert the matrix into a serial symbol stream

Rx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded_symbols,1)*size(Rx_decoded_symbols,2));

% Convert the symbols to binary for i = bits_per_symbol: -1: 1 if i ~= 1

Rx_binary_matrix(i,:) = rem(Rx_serial_symbols,2); Rx_serial_symbols = floor(Rx_serial_symbols/2); else

Rx_binary_matrix(i,:) = Rx_serial_symbols; end end

baseband_in=reshape(Rx_binary_matrix,1,size(Rx_binary_matrix,1)*size(Rx_binary_matrix,2)); % 查找错位比特

bit_errors = find(baseband_in ~= baseband_out); bit_error_count = size(bit_errors,2);

本文来源:https://www.bwwdw.com/article/uoug.html

Top