hslogic_OFDM系统原理及仿真实现

现代移动通信是一门复杂的高新技术,不但集中了无线通信和有线通信的最新技术成就,而且集中了网络接收和计算机技术的许多成果。目前,移动通信已从模拟通信发展到了数字移动通信阶段,并且正朝着个人通信这一更高级阶段发展。未来移动通信的目标是,能在任何时间、任何地点、向任何人提供快速可靠的通信服务。1978年底,美国贝尔实验室研制成功先进移动电话系统(AMPS),建成了蜂窝状模拟移动通信网,大大提高了系统容量。与此同时,其它发达国家也相继开发出蜂窝式公共移动通信网。这一阶段的特点是蜂窝移动通信网成为实用系统,并在世界各地迅速发展,这个系统一般被当作是第一代移动通信系统。

从20世纪80年代中期开始,数字移动通信系统进入发展和成熟时期。蜂窝模拟网的容量已不能满足日益增长的移动用户的需求。80年代中期,欧洲首先推出了全球移动通信系统(GSM:Global System for Mobile)。随后美国和日本也相继指定了各自的数字移动通信体制。20世纪90年代初,美国Qualcomm公司推出了窄带码分多址(CDMA:Code-Division Multiple Access)蜂窝移动通信系统,这是移动通信系统中具有重要意义的事件。从此,码分多址这种新的无线接入技术在移动通信领域占有了越来越重要的地位。这些目前正在广泛使用的数字移动通信系统是第二代移动通信系统。

第二代移动通信系统主要是为支持话音和低速率的数据业务而设计的。但随着人们对通信业务范围和业务速率要求的不断提高,已有的第二代移动通信网将很难满足新的业务需求。为了适应新的市场需求,人们正在制定第三代(3G)移动通信系统。但是由于3G系统的核心网还没有完全脱离第二代移动通信系统的核心网结构,所以普遍认为第三代系统仅仅是一个从窄带向未来移动通信系统过渡的阶段。目前,人们已经把目光越来越多得投向超三代(beyong 3G)的移动通信系统中,使其可以容纳市场庞大的用户数、改善现有通信品质不良,以及达到高速数据传输的要求。若从技术层面来看,第三代移动通信系统主要是以CDMA为核心技术,三代以后的移动通信系统则以正交频分复用OFDM(Orthogonal Frequency Division Multiplexing)最受瞩目,特别是有不少专家学者针对OFDM技术在无线通信技术上的应用,提供了相关的理论基础,例如无线区域环路(WLL:Wireless Local Loop)、数字音讯广播(DAB: Digital Audio Broadcasting)等,都将在未来采用OFDM技术。

目前世界范围内存在有多种数字无线通信系统,然而基于支持话音业务的电路交换模式的第二代移动通信系统不能满足多媒体业务的需要,但是对于高速数据业务来说,单载波TDMA(Time Division Multiple Access系统和窄带CDMA系统中都存在很大的缺陷。由于无线信道存在时延扩展,而且高速信息流的符号宽度又相对较窄,所以符号之间会存在较严重的符号间干扰(ISI:Inter-Symbol Interference),因此对单载波TDMA系统中使用的均衡器提出非常高的要求,即抽头数量要足够大,训练符号要足够多,训练时间要足够长,而均衡算法的复杂度也会大大增加。对于窄带CDMA来说,其主要问题在于扩频增益与高速数据流之间的矛盾。保证相同带宽的前提下,高速数据流所使用的扩频增益就不能太高,这样就大大限制了CDMA系统噪声平均的优点,从而使得系统的软容量受到一定的影响,如果保持原来的扩频增益,则必须要相应的提高带宽。此外,CDMA系统内的一个非常重要的特点是采用闭环的功率控制,这在电路交换系统中比较容易实现,但对于分组业务来说,对信道进行探测,然后再返回功率控制命令会导致较大的时延,因此对于高速的无线分组业务来说,这种闭环的功率控制问题也存在缺陷。

因此,人们开始关注正交频分复用(OFDM)系统,希望通过这种方法来解决高速信息流在无线信道中的传输问题,从而可以满足带宽要求更高的多种多媒体业务和更快的网络浏览速度。

正交频分复用(OFDMOrthogonal Frequency Division Multiplexing)的提出已有近40年的历史,第一个OFDM技术的实际应用是军用的无线高频通信链路。但这种多载波传输技术在双向无线数据方面的应用却是近十年来的新趋势。经过多年的发展,该技术在广播式的音频和视频领域已得到广泛的应用。近年来,由于DSPdigital signal processing)技术的飞速发展,OFDM作为一种可以有效对抗ISI的高速传输技术,引起了广泛关注。OFDM技术已经成功地应用于数字音频广播(DAB)、高清晰度电视HDTVHigh-definition Television)、无线局域网WLANWireless Local Area Network),它在移动通信中的运用也是大势所趋。1999年IEEE802.11a通过了一个5GHz的无线局域网标准,其中OFDM调制技术被采用并作为它的物理层标准。

    接收端进行发送端相反的操作,将RF信号与基带信号进行混频处理,并用FFT变换分解频域信号,子载波的幅度和相位被采集出来并转换回数字信号。IFFT和FFT互为反变换,选择适当的变换将信号接收或发送。当信号独立于系统时,FFT变换和IFFT变换可以被交替使用。

    3.3.1调制和解调

一 以下是以本次仿真所使用的调制方式QPSK这种调制方式来分析调制的原理。

function mod_out=modulation(mod_in,mod_mode)

扫描二维码关注公众号,回复: 11600827 查看本文章

%% Function discription:

%%根据输入的调制方式,对输入序列MOD_IN进行调制,分别采用BPSK, QPSK, 16QAM, 64QAM,

%%完成对星座图的映射,输出为Y.转化的方法为:先写出十进制情况下从0 到N-1

%%(N为星座图的点数)所对应的星座坐标;再将输入的二进制序列转化为相应的

%%十进制,以查表的方法查出对应点的复数坐标,即为调制映射后的结果。

%% Input:

%% mod_in:输入的二进制序列(The sequence to be modulated)

%% Output:

%% mod_out:星座图映射后得到的调制复数结果(The output after modulation)

%% Global Variable:

%% g_RT (the vector which contains the modulation mode)

%% Z :选择调制方式的参数 (the parameter to choose the modulation mode)

%% R :输入二进制序列重新排列(按一定要求)后的结果,

例如:对16QAM,要把输入序列调整为4行,length(g_MOD_IN_16QAM )/4  列的矩阵。%% B2D :二进制向十进制转化后的结果 (convert the binary sequence to  dec )

%% Temp:星座图阵列 (the  constellation)

%%********************************************************

%system_parameters 

switch (mod_mode)

case 4                                       %本论文采用的就是QPSK的调制方式

    mod_out=zeros(1,length(mod_in)/2);

    R=reshape(mod_in,2,length(mod_in)/2);       %将输入序列转化为(2,length(x)/2)的矩阵

    B2D=bi2de(R','left-msb')+1;  %将二进制转为十进制,注意加1,因为matlab没有a(0)项,而是从a(1)开始

    Temp=[-1-j  -1+j  1-j   1+j];

    for i=1:length(mod_in)/2

       mod_out(i)=Temp(B2D(i))/sqrt(2);%归一化

    end

otherwise

    disp('Error! Please input again');

end

二 解调方法是调制方法的逆向运算,因本论文的仿真是以QPSK为调制和解调方法为基础的,此处就以case 4(QPSK)为主介绍解调的实现。

case4                                                              %QPSK 调制

d=zeros(4,length(demod_in));                           % 'd ' 是信道值和星座点的距离

m=zeros(1,length(demod_in));

temp=[-1-j  -1+j  1-j   1+j]/sqrt(2);

for i=1:length(demod_in)

    for n=1:4

 d(n,i)=(abs(demod_in(i)*sqrt(2)-temp(n))).^2;%由信道值,求出该值与星座图中所有点的距离

    end                                              %计算信道值和星座点的距离

    [min_distance,constellation_point] = min(d(:,i)) ;                             %排序

    m(i) = constellation_point;

end

A=de2bi([0:3],'left-msb');                             %写出0到N-1(N为星座图点数)

for i=1:length(demod_in)

    DEMOD_OUT(i,:)=A(m(i),:);  % 最小值对应的星座点序号的二进制表示即为解调结果

end

demod_out=reshape(DEMOD_OUT',1,length(demod_in)*2);   

 

3.3.2 不同信道环境下的系统仿真实现

    在本程序中,我仿真了具有64个子载波,保护间隔为16点,每帧包含5个符号的OFDM系统,部分主要程序如下

系统发送部分:

Source_Bits=randint(1,2*NumOfSubcarrier*NumOfSymbolPerFrame); %产生信息序列

Modulated_Sequence=modulation(Source_Bits,modulation_mode);

%进行QPSK调制

 R_Modulated_Sequence=reshape(Modulated_Sequence,NumOfSubcarrier,NumOfSymbolPerFrame);%重置矩阵

IFFT_Out_Data(:,:) =sqrt(NumOfSubcarrier)* ifft (R_Modulated_Sequence);

%进行IFFT变换

GI_Added_Frame(1:LengthOfGI,:)= IFFT_Out_Data((NumOfSubcarrier-LengthOfGI+1):NumOfSubcarrier,:);

GI_Added_Frame((LengthOfGI+1):(NumOfSubcarrier+LengthOfGI),:)= IFFT_Out_Data(1:NumOfSubcarrier,:);

%加保护间隔和循环编码

Serial_Signal= reshape(GI_Added_Frame,1,NumOfSymbolPerFrame*(NumOfSubcarrier+LengthOfGI));%并串变换

 系统接收部分:

for jj=1:NumOfSymbolPerFrame

            for ii=1:NumOfSubcarrier

                GI_Removed_Rx_Signal(ii+(jj-1)*NumOfSubcarrier)=Noised_Transmited_Signal(LengthOfGI*jj+ii+(jj-1)*NumOfSubcarrier);

            end

        end

%去除保护间隔

Parallel_Rx_Signal = reshape(GI_Removed_Rx_Signal,NumOfSubcarrier,NumOfSymbolPerFrame);

%串并变换

Freq_Rx_Signal = fft(Parallel_Rx_Signal)/sqrt(NumOfSubcarrier);

Demod_In_Data(1:NumOfSubcarrier,1:NumOfSymbolPerFrame)= Freq_Rx_Signal(1:NumOfSubcarrier,1:NumOfSymbolPerFrame);

FFT_Out = conj(Demod_In_Data(:,1:NumOfSymbolPerFrame)');

Serial_Output= reshape(Demod_In_Data,1,NumOfSubcarrier*NumOfSymbolPerFrame);

%进行FFT变换

Demod_Sequence= demodulation(Serial_Output,modulation_mode);

%解QPSK调制

for jj = 1:(length(Source_Bits))

            if  Demod_Sequence(jj) ~= Source_Bits(jj)

                NumOfErrorBit = NumOfErrorBit + 1;

            end

        end

    end

       

BER(counter)= NumOfErrorBit/(NumOfFrames*NumOfSubcarrier*2*NumOfSymbolPerFrame);

%计算系统的误码率

 

以上程序是OFDM系统的实现,并没有包括信道干扰,下面考虑两种信道干扰,仅有高斯白噪声干扰和同时存在高斯白噪声干扰与多径干扰的信道

仅有高斯白噪声干扰的信道

for i=1:NumOfSymbolPerFrame*(NumOfSubcarrier+LengthOfGI)

            [n_I n_Q]=gngauss(sgma);

            noise(i)=n_I+j*n_Q;

end

%产生高斯干扰,n_I 和n_Q分别服从N(0,1)分布,noise为复数

        Noised_Transmited_Signal=Serial_Signal+noise;

%把高斯干扰叠加到信号上

同时存在高斯干扰和多径干扰的信道

for i=1:NumOfSymbolPerFrame*(NumOfSubcarrier+LengthOfGI)

            [n_I n_Q]=gngauss(sgma);

            noise(i)=n_I+j*n_Q;

end

%产生高斯干扰,n_I 和n_Q分别服从N(0,1)分布,noise为复数

Ray_delay=4;%Rayleigh衰落的时延

Ray_amp=0.3;%Rayleigh衰落的增益

Serial_Signal_2path=[zeros(1,Ray_delay),Ray_amp*Serial_Signal(1:length(Serial_Signal)-Ray_delay)];%产生第二径衰落信号

Noised_Transmited_Signal=Serial_Signal+ Serial_Signal_2path+noise;

%把高斯干扰叠加到两路信号上

   3.3.3 系统不同实现方式的仿真实现

OFDM系统为了克服多径干扰带来的影响,需要加入保护间隔和循环编码,为了分析保护间隔和循环编码对系统误码性能的影响,我在系统实现时特别设计了两种不同的方式,即带有保护间隔和循环编码的实现方式与无保护间隔的实现方式,其中在3.3.2中系统的发送与接收部分中已经写明带有保护间隔与循环编码的实现方式,下面来看一下无保护间隔的实现方式:

系统发送部分

Source_Bits=randint(1,2*NumOfSubcarrier*NumOfSymbolPerFrame); %产生信息序列

Modulated_Sequence=modulation(Source_Bits,modulation_mode);

%进行QPSK调制

 R_Modulated_Sequence=reshape(Modulated_Sequence,NumOfSubcarrier,NumOfSymbolPerFrame);%重置矩阵

IFFT_Out_Data(:,:) =sqrt(NumOfSubcarrier)* ifft (R_Modulated_Sequence);

%进行IFFT变换

Serial_Signal= reshape(IFFT_Out_Data,1,NumOfSymbolPerFrame*NumOfSubcarrier);

%并串变换

系统接受部分:

Parallel_Rx_Signal= reshape(Noised_Transmited_Signal,NumOfSubcarrier,NumOfSymbolPerFrame);

%串并变换

Freq_Rx_Signal = fft(Parallel_Rx_Signal)/sqrt(NumOfSubcarrier);

Demod_In_Data(1:NumOfSubcarrier,1:NumOfSymbolPerFrame)= Freq_Rx_Signal(1:NumOfSubcarrier,1:NumOfSymbolPerFrame);

FFT_Out = conj(Demod_In_Data(:,1:NumOfSymbolPerFrame)');

Serial_Output= reshape(Demod_In_Data,1,NumOfSubcarrier*NumOfSymbolPerFrame);

%进行FFT变换

Demod_Sequence= demodulation(Serial_Output,modulation_mode);

%解QPSK调制

for jj = 1:(length(Source_Bits))

            if  Demod_Sequence(jj) ~= Source_Bits(jj)

                NumOfErrorBit = NumOfErrorBit + 1;

            end

        end

    end

       

BER(counter)= NumOfErrorBit/(NumOfFrames*NumOfSubcarrier*2*NumOfSymbolPerFrame);

%计算系统的误码率

第四章 OFDM系统的仿真结果及性能分析

     下面,我将以上述程序为基础,对系统进行仿真,画出误码率随信噪比变化的图并分析其结果。

      4.1 不同信道环境下的误码特性

在加性高斯白噪声干扰下的误码特性

以上章中提出的仿真程序进行仿真,系统及仿真参数如下

NumOfSubcarrier = 64;     %子载波数

LengthOfGI = 16;          %保护间隔大小

modulation_mode = 4;      %调制方式为QPSK

NumOfSymbolPerFrame=5;  %每帧符号数为5

NumOfFrames=200;        %仿真帧数为200

SNR_in_dB=[0:12];        %信噪比从0db到12db

 如41所示,用+号表示的蓝线代表理论分析的误码率,其曲线是由Qfunct函数产生的,由通信原理课程上所学知识可知,经过QPSK调制的系统在有加性高斯白噪声干扰下的理论误码率公式为。图中用*号表示的红线代表实际仿真出来的误码率,由于仿真的点数只有数量级,所以误码率只能仿真到数量级。由图中看出,两条曲线基本吻合,说明经过QPSK调制的OFDM系统在误码性能上与原始的QPSK调制的系统的误码性能是一致的,即IFFT与FFT变换不改变系统的误码性能。

在多径干扰下的误码特性比较(有OFDM与无OFDM

42所示下方的线表示系统经过OFDM调制后在多径干扰下的误码性能,上方的线表示系统不经过OFDM调制情况下在多径干扰下的误码性能,由图中可以看出,OFDM调制可以降低多径干扰带来的影响,使误码性能得到改善

 

在加性高斯白噪声干扰和多径干扰下的误码特性

以上章中提出的仿真程序进行仿真,系统及仿真参数如下

NumOfSubcarrier = 64;     %子载波数

LengthOfGI = 16;          %保护间隔大小

modulation_mode = 4;      %调制方式为QPSK

NumOfSymbolPerFrame=5;  %每帧符号数为5

NumOfFrames=200;        %仿真帧数为200

SNR_in_dB=[0:12];        %信噪比从0db到12db

Ray_delay=4;             %多径时延为4点

Ray_amp=0.3;            %多径衰落幅度为0.3

43所示,以+号表示的蓝线(上方)表示在有多径衰落情况下的系统误码性能,以*号表示的红线(下方)表示仅有加性高斯白噪声干扰下的系统误码性能。从图中可以看出,在多径干扰下的系统误码特性比加性高斯白噪声干扰下的误码性能要差许多,这主要是因为多径时延引起的码间干扰影响了系统的误码特性。

多径衰落中不同时延对系统误码性能的影响

下面比较随着多径衰落中时延的增大,系统误码性能的改变,在此次仿真中,逐渐使时延从4点开始增大,依次为10点,20点,在前两种情况下时延未超出保护间隔,而第三种情况下,时延已超出保护间隔,仿真结果如下:

  44所示,最下方的线表示多径时延为4点的情况,中间的线表示多径时延为10点的情况,最上面的线表示多径时延为20点的情况。从图中可以看出,当信噪比比较小的时候,这三者的误码特性几乎相同,只有到10db以后,三者的误码率才有所区别,但区别程度不大。还可从图中近一步看出,在多径时延未超出保护间隔的时候,系统误码性能比较接近,虽然误码率会随着多径时延的增大而增大,但增加的幅度很小,而当多径时延大于保护间隔时,系统的误码率要比前两种情况大,而且增加的幅度更大。

多径衰落中不同幅度对系统误码性能的影响

下面比较随着多径衰落中幅度的增大,系统误码性能的改变,在此次仿真中,逐渐使幅度从0.3开始增大,依次为0.4,0.5,仿真结果如45,最下方的线表示多径衰落中幅度为0.3,中间的线表示多径衰落幅度为0.4,最上方的线表示多径衰落为0.5。从图中可以看出,随着多径衰落幅度的增加,系统的误码率逐渐变大,而且增加的幅度比较快。对比多径衰落中时延对误码率的影响,可以看出,系统对衰落幅度的敏感程度要远大于系统对时延大小的敏感程度。因此在以后对OFDM系统分析时,要更加注意考虑多径衰落的幅度的因素。

46所示,下方的线表示在系统有保护间隔和循环编码下的系统误码率,上方的曲线表示在系统无保护间隔下的误码率,可以从中看出,当系统采用保护间隔措施时,可以在一定程度上克服多径衰落带来的信道间干扰,使误码率下降,但付出的代价是使系统的容量变小,但与其带来的误码特性的改善相比,是值得的

 

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/108432922