OFDM技术仿真(MATLAB代码) - 图文

更新时间:2024-02-04 00:54:01 阅读量: 教育文库 文档下载

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

第一章 绪论

1.1简述

OFDM是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。多载波传输把数据流分解成若干子比特流,这样每个子数据流将具有低得多的比特速率,用这样的低比特率形成的低速率多状态符号再去调制相应的子载波,就构成多个低速率符号并行发送的传输系统。正交频分复用是对多载波调制(MCM,Multi-Carrier Modulation)的一种改进。它的特点是各子载波相互正交,所以扩频调制后的频谱可以相互重叠,不但减小了子载波间的干扰,还大大提高了频谱利用率。

符号间干扰是多径衰落信道宽带传输的主要问题,多载波调制技术包括正交频分复用(OFDM)是解决这一难题中最具前景的方法和技术。利用 OFDM技术和 IFFT方式的数字实现更适宜于多径影响较为显著的环境,如高速 WLAN 和数字视频广播 DVB等。OFDM作为一种高效传输技术备受关注,并已成为第4代移动通信的核心技术。如果进行OFDM系统的研究,建立一个完整的OFDM系统是必要的。本文在简要介绍了OFDM 基本原理后,基于MATLAB构建了一个完整的OFDM动态仿真系统。

1.2 OFDM基本原理概述

1.2.1 OFDM的产生和发展

OFDM的思想早在20世纪60年代就已经提出,由于使用模拟滤波器实现起来的系统复杂度较高,所以一直没有发展起来。在20世纪70年代,提出用离散傅里叶变换(DFT)实现多载波调制,为OFDM的实用化奠定了理论基础;从此以后,OFDM在移动通信中的应用得到了迅猛的发展。

OFDM系统收发机的典型框图如图1.1所示,发送端将被传输的数字信号转换成子载波幅度和相位的映射,并进行离散傅里叶变换(IDFT)将数据的频谱表达式变换到时域上。IFFT变换与IDFT变换的作用相同,只是有更高的计算效

1

基于MATLAB实现OFDM的仿真

率,所以适用于所有的应用系统。其中,上半部分对应于发射机链路,下半部分对应于接收机链路。由于FFT操作类似于IFFT,因此发射机和接收机可以使用同一硬件设备。当然,这种复杂性的节约则意味着接收发机不能同时进行发送和接收操作。 编码 解码 图1.1 OFDM系统收发机的典型框图 RF TX DAC 交织 数字调制 插入倒频 串并变换 并/串 IFFT FFT 串/并 去除循环前缀 加入循环前缀 解交织 数字解调 信道 正交 并串变换 ADC RF RX 定时和频率同步 接收端进行发送相反的操作,将射频(RF,Radio Frequency)信号与基带信号进行混频处理,并用FFT变换分解频域信号。子载波幅度和相位被采集出来并转换回数字信号。IFFT和FFT互为反变换,选择适当的变换将信号接收或发送。但信号独立于系统时,FFT变换和IFFT变换可以被交替使用。

1.2.2 串并变换

数据传输的典型形式是串行数据流,符号被连续传输,每一个数据符号的频谱可占据整个可以利用的带宽。但在并行数据传输系统中,许多符号同时传输,减少了那些在串行系统中出现的问题。在OFDM系统中,每个传输符号速率的

2

大小大约在几十bit/s到几十kbit/s之间,所以必须进行串并变换,将输入串行比特流转换成为可以传输的OFDM符号。由于调试模式可以自适应调节,所以每个子载波的调制模式是可以变化的,因为而每个子载波可传输的比特数也是可以变化的,所以串并变换需要分配给每个子载波数据段的长度是不一样的。在接收端执行相反的过程,从各个子载波出来的数据长度不一样。在接收端执行相反的过程,从各个子载波处来的数据被转换回原来的串行数据。

当一个OFDM符号在多径无线信道中传输时,频率选择性衰落会导致某几组子载波收到相当大的的衰减,从而引起比特错误。这些在信道频率响应的零点会造成在邻近的子载波上发射的信息受到破坏,导致在每个符号中出现一连串的比特错误。与一大串错误连续出现的情况相比较,大多数前向纠错编码(FEC,Forward Error Correction)在错误分布均与的情况下会工作得更有效。所以,为了提高系统的性能,大多数系统采用数据加扰作为串并变换工作的一部分。这可以通过把每个连续的数据比特随机地分配到各个子载波上来实现。在接收机端,进行一个对应的逆过程解出信号。这样,不仅可以还原出数据比特原来的顺序,同时还可以分散由于信号衰落引起的连串的比特错误使其在时间上近似均匀分布。这种将比特错误位置的随机化可以提高前向纠错编码(FEC)的性能,并且系统的总的性能也得到改善。

1.2.3 子载波调制

正交频分复用(OFDM)技术就是在频域内将给定信道分成许多正交子信道 ,在每个子信道上使用一个子载波进行调制,并且各子载波并行传输。尽管总的信道是非平坦的,具有频率选择性,但是每个子信道是相对平坦的,在每个子信道上进行的是窄带传输,信号带宽小于信道的相应带宽,因此大大消除了信号波形间的干扰。而且子信道的载波相互正交,一个OFDM符号包括多个经过 PSK调制或QAM调制的子载波的合成信号,每个子载波的频谱相互重叠,从而又提高了频谱利用率。用 N 表示子载波个数,T 表示 OFDM 符号的持续时间,di( i = 0 ,1 , …, N - 1)为分配给每个子信道的数据符号,fi为第i 个子载波的载波频率,从 t = t s开始的OFDM符号的等效基带信号可表示为(模拟信号表示式) :

3

基于MATLAB实现OFDM的仿真

s(t)?direct(t?t?0N?1?ts?T/2)exp?j2?i/T(t?ts)?(1-1) ts?t?ts?Ts(t)?0t?ts或t?T?ts

s(t)的实部和虚部分别对应于OFDM符号的同相分量和正交分量,在实际系统中可分别与相应子载波的余弦分量和正弦分量相乘,构成最终的子信道。其相应的数字表示式如下:令 ts= 0 ,采样速率为 N/ T ,则发送速率的第 k ( k =:0 ,1 , …, N - 1)个采样表示为:

s(k)?s(kT/N)?diexp(j2?ik/N)?t?0N?1 (1-2)

显然式上式恰好为IDFT的表达式,可知OFDM的调制和解调可以通过 IDFT 和DFT或(IFFT 和FFT)来实现。如图1.2所示,在一个OFDM符号内包含四个载波的实例。其中,所有的子载波都具有相同的幅度和相位,但在实际应用中,根据数据符号的调制方式,每个子载波都有相同的幅度和相位是不可能的。从图1.2可以看出每个子载波在一个OFDM符号周期内都包含整数倍个周期,而且各个相邻的子载波之间相差1个周期。这一特性可以用来解释子载波之间的正交性,即:

?11/T?exp(j?nt)exp(j?n)dt??o?0Tm?nm?nN?1i?0(1-3)

如对式1-3中的第j个子载波进行调制,然后在时间长度T内进行积分,即:

?bj?1/Tts?Tts?exp??j2?j/T(t?ts)??diexp?j2?i/T(t?ts)?dt(1-4) ??i?j?1/T?di?exp?j2?(t?ts)?dt?dj??Ti?0??N?1

根据对式1-4可以看到,对第J个子载波进行解调可以恢复出期望的符号。而对其他载波来说,由于积分间隔内,频率差别(I-J)/T可以产生整数倍个周期,所以积分结果为零。这种正交性还可以从频率角度来解释。根据式1-2 ,每个OFDM符号在其周期T内包含多个非零子载波。因此其频谱可以看作是周期为T的矩形脉冲的频谱与一组位于各个子载波频率上的δ函数的卷积。矩形脉冲频谱幅度值为sinc(?T)函数,这种函数的零点出现在频率为1/T整数倍的位置上。

4

图1.2 OFDM载波

图1.3 OFDM子载波频谱

这种现象可以参见图1.3,图中给出了相互覆盖的各个子信道内经过矩形波形成型得到的符号的sinc函数频谱。在每个子载波频率最大值处,所有其他子信道的频谱值恰好为零。因为在对OFDM符号进行解调过程中,需要计算这些点上所对应的每个子载波频率的最大值,所以可以从多个相互重叠的子信道中提

5

OFDM ?Rn?串并变换 IFFT OR IDFT 并行串行变换 插入保护间隔 数模变换 x(t)多径传播 反OFDM 并串变换 FFT OR DFT 串行并行变换 去除保护间隔 模数变换 h(?,t) y(t)?Sn?n(t) 图 2.1 0FDM系统原理框图

其中H(m)为信道h(n)的傅立叶转换,Z(m)为符号问干扰和载波问干扰z(n)的傅立叶转换,W(m)是加性高斯白噪声w(n)的傅立叶转换。

2.2 OFDM仿真构建

OFDM系统编译码的数据处理量很大,利用矩阵对信息序列进行编码,译码等大量的运算都涉及到了矩阵运算,因此采用MATLAB来进行仿真。根据OFDM系统原理,下面以数字广播电视(DVB)为例进行仿真。

数字视频广播(DVB)通过两种模式利用OFDM,这两种模式的子载波个数分别为1705和6817,根据这两种不同的子载波数量选择所需要的FFT/IFFT的规模,因此这两种模式也分别被称为2K模式和8K模式。

2K系统的子载波数量仅为8K的1/4,被称为8K的简化版本。本论文仿真的是2K模式的DVB,由于保护间隔也缩小到8K的1/4,因此在单频网络内,2K系统处理时延扩展以及发射机之间的传输能力要下降。8K系统的FFT长度为896us,而保护间隔可以介于28us到224us之间。而2K系统的取值只为前者的1/4,图2.4和图2.5分别为DVB系统的发射机和接收机框图。

11

基于MATLAB实现OFDM的仿真

扰码器 RS外编码 外交织 卷机内编码 内交织 RF发射机 D/A转换 插入保护间隔 插入导频 QAM映射

图2.4 DVB系统的发射机框图

在发射端,数据被分为若干组,每组内包含188B,它们通过加扰码和外码R-S编码,能够在204B帧内纠正8个错误字节。然后,对经过编码的比特由交织器在12B深度内进行交织。并在按编码效率为1/2,约束长度为7,生成多项式(171,133)的卷积码进行编码。通过打孔,编码效率可以提高到2/3,3/4,5/6以及7/8。最后,经卷积编码的比特再经过内交织器的交织,被映射为4QAM。

模拟前缀信号、与A/D转换、与降频转换 FFT 映射 频率解交织 帧同步 粗频率偏差估计 信道估计 卷积译码器 时间解交织 RS译码器

AGC

图2.5 DVB系统的接收框图

12

在接收端,要执行相干QAM解调,就必须得到参考幅度、相位,这就要求发送导频子载波。对8K模式来说,每个OFDM符号内包含768个导频,剩余6048个子载波用于数据传输,对于2K模式来说,每个OFDM符号内包含192导频,剩余1512个子载波提供数据使用。导频位置图样在每4个OFDM符号中重复一次,但是符号和符号之间是不同的。

13

基于MATLAB实现OFDM的仿真

第三章OFDM仿真实现及结果

3.1 OFDM 发送模块

一个从ts时刻开始的OFDM符号可以表示为:

??Ns/2?1s(t)?Re??di??t??Ns/2ts?t?ts?Ts(t)?0t?ts或?Ns/???i?0.5?2expj2?(fc-)(t?ts)???T????t?T?ts (3-1)

其中,di为复合调制符号,Ns为载波数,T为符号持续时间,fc为载波频率,标准的 DVB(数字视频广播)表示如下:

?j2?fcts(t)?Re?exp?

?cm,l,k??m,l,k(t)? ???m?0l?0k?kmin?max?67k

(3-2)

j2?k?(t???l?Ts?68?m?Ts)??expTu(l?68?m)?Ts?m,l,k(t)??

?其它?0

其中:

k 为载波数;

l 为OFDM符号数; m 为传输帧数; K 为已传输载波数; Ts 为符号持续时间; Tu 为时延载波间隔时间; ? 为保护间隔;

fc 为射频信号中心频率;

k?为载波相对中心频率,k??k?(Kmax?Kmin)/2;

cm,0,k 为复合符号表示m幁中第1个数据符号的第k个载波; cm,1,k 为复合符号表示m幁中第2个数据符号的第k个载波;

cm,63,k 为复合符号表示m幁中第64个数据符号的第k个载波;

14

?

在此采用传输速率为2K的数字广播发送标准,这种模式在数字广播电视(DTV)中被定义为移动接收标准。传送的OFDM符号由很多帧结构组成,每一帧持续时间为TF共包含68个OFDM符号。四个帧组成一个大帧结构.每一个符号是由2K模式下1705个子载波构成并且其传输持续时间为Ts.在符号持续时间Ts中有效符号持续时间为Tu,保护间隔时间为?。2K模式的具体参数参见表3.1:

表3.1 2K模式OFDM参数 参数 载波数目K 最小载波数Kmin2K模型 1705 0 1704 224?s 4464Hz 7.61MHz 1/4 1/8 1/16 1/32 最大载波数Kman 持续时间 Tu 载波间隔 1/Tu 最小载波Kmin与最大载波Kman(K-1)/Tu间隔 允许保护间隔时间 ?/Tu 有效符号持续时间 Tu 保护见个持续时间 ? 基本周期 T OFDM符号持续时间 Ts=?+Tu 2048×T 224?s 512×T 56?s 2560×T 280?s 256×T 28?s 2304×T 252?s 128×T 14?s 2176×T 238?s 64×T 56?s 2112×T 231?s 7/64?s 从t=0到t=Ts对式3-2进行分析可以得到式3-3:

?j2?fctkmax?j2?k(t??)/Tu?s(t)?Re?ec0,0,ke??k?Kmin??k??k?(Kmin?K(3-3)

max)/2

很明显上式与反傅里叶变换(IDF)有相似之处:

N?1xn?1/N?Xqeq?0j2?nqN (3-4)

15

基于MATLAB实现OFDM的仿真

有很多不同的FFT算法可以实现离散傅里叶变换(DFT)及离散傅里叶反变换(IDFT)这样就很方便实际应用中形成N个样本xn使其对应的每个符号有用部分的持续时间为Tu。在时间保护间隔内将后面N?/Tu个样点复制到前面,然后经过集成上行转换使信s(t)的中心频率为fc。

3.2 OFDM符号的产生

OFDM 频谱主要集中在fc附近,一种比较方便的实现方法是利用 2-FFT 和2-IFFT并且以T/2作为其基本周期。从表格2.1可以看出,OFDM符号持续时间为

Tu,其为2048点的IFFT变换;因此要进行4096点的IFFT。图3.2给出了OFDM符

号产生方框图,其中部分变量已标示出其用于 Matlab代码中以方便分析。T定义为信号的基本周期,既然模拟的是一个带通信号就必须考虑其时间周期(1/Rs)其至少为载波频率的两倍。更一般地,用其整数倍Rs=40/T。这样一个关系式使载波频率接近于902MHz,其描述如图3.2所示。首先,随机产生一个长为3412 的二进制序列。然后,采用QAM映射,每两位二进制比特映射成{ ±1 ±j} 中的一个。之后,进行4096点IFFT变换,先变为模拟值,再通过一个巴特沃斯低通滤波器,最后在发射端上变频到射频段以s ( t) 发送出去。

1705 4- QAM g(t) A info 4096 IFFT B 载波 carriers T/2 C U D S(t) E fp?1/T UOFT fc

3.2 3.2 模拟产生模拟产生OFDMOFDM符号符号 在信源符号A中加入4906-1708=2391个零使其取样为原来的两倍并达到预期的中心频率。从图3.3和3.4可以看出这样做的效果使得载波以T/2作为其时间周期。同时也注意到载波为离散时间的基带信号,用发送滤波器产生一个连续时间信号g(t)作为复信号载波。其脉冲响应和脉冲形状如图3.5所示。

16

幅度 时间(s)

幅度 时间(s)

图3.3 信号载波在B处时域响应

图3.4 在点B处载波信号的频率响应

图3.5 g(t)脉冲信号 这个发射滤波器在时域和频域的输出显示在图3.7和图3.8中。图3.8的频率响应是周期的,这是因为离散时间信号在频域是周期的,其频谱带宽取决于Rs。U(t)的周期是T/2,重建滤波器将会有(T/2=18.286)-7.61=10.675MHz的过渡带宽可以利用。如果用N点IFFT,过度带宽只有(1/T=9.143)-7.61=1.533MHz,

17

基于MATLAB实现OFDM的仿真

因此为了避免混淆需要一个非常尖锐的滚降来较少重建滤波器的复杂程度。

衰减(dB) 图3.6 D/A滤波器响应

3.8 信号U在点D处频域响应

图3.6给出了相对理想的D\\A滤波器器的频率响应。它是一个13阶的截止图3.7 信号U在点C处时域响应

频率为1/T的巴特沃斯滤波器。该滤波器的时域和频域响应分别为如图3.9和图3.10。首先值得注意的是在滤波过程中在延迟产生在2?10-7附近,除了这一时刻其将按照预期进行滤波。这时从子载波853到1705其位置都为位于中心频率(0Hz)的右边,而1号子载波到852号在中心频率(0Hz)以左4fc范围内。下一步要执行多重双正交单边带幅度调制uoft(t)。在这一调制中,存在一个同相信号mI(τ)和一个正交信号mQ(τ)其满足式(3-5):

s(t)?mI(t)cos(2?fct)?mQ(t)sin(2?fct) (3-5)

式2-3可以展开为式2-6:

18

s(t)??kK?K?maxmin???Kmax?K??k??2Re(c0,0,k)cos?2???Tu?????????min??????????fct????Tu????????????????fc?t????Tu??????????Kmax?K??k??K?max2??Im(c0,0,k)sin?2???Tu???k?Kmin?????? (3-6)

min其中将同相信号和正交信号分别作为cm,l,k和4-QAM的实部和虚部。对应的IFFT处理过程为:

s(t)?uoftIcos(2?fct)?uoftQsin(2?fct) (3-7)

信号s(t)的时域和频域响应如图3.11和图3.12。

图3.9 信号在D点处的时域响应

19

基于MATLAB实现OFDM的仿真

图3.10 信号在在点D处频率响应

图3.11信号s(t)在点E处时域响应 图3.12 信号s(t)在点E处频率响应

3.3 OFDM 接收部分

图3.20是一个基本的OFDM接收机结构。OFDM系统对时间和频率偏移非常敏感。即使在理想的模拟环境下也要考虑滤波过程产生的延时。重建滤波和解

20

grid on; figure(6);

f=(2/T)*(1:(FS))/(FS); subplot(211);

plot(f,abs(fft(r_data,FS))/FS); grid on; subplot(212);

pwelch(r_data,[],[],[],2/T); ?T

info_2N=(1/FS).*fft(r_data,FS); % (I)

info_h=[info_2N(1:A/2) info_2N((FS-((A/2)-1)):FS)]; %限幅 for k=1:N,

a_hat(k)=alphabet((info_h(k)-alphabet)==min(info_h(k)-alphabet)); %j end; figure(7)

plot(info_h((1:A)),'.k');

title('info-h Received Constellation') axis square; axis equal; figure(8)

plot(a_hat((1:A)),'or'); title('a_hat 4-QAM') axis square; axis equal; grid on;

axis([-1.5 1.5 -1.5 1.5]);; subplot(211);

stem(tt(1:20),(real(r_data(1:20)))); axis([0 12e-7 -60 60]);

31

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

Top