基于matlab的MIMO通信系统.docx

上传人:b****7 文档编号:11158448 上传时间:2023-02-25 格式:DOCX 页数:28 大小:724.34KB
下载 相关 举报
基于matlab的MIMO通信系统.docx_第1页
第1页 / 共28页
基于matlab的MIMO通信系统.docx_第2页
第2页 / 共28页
基于matlab的MIMO通信系统.docx_第3页
第3页 / 共28页
基于matlab的MIMO通信系统.docx_第4页
第4页 / 共28页
基于matlab的MIMO通信系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于matlab的MIMO通信系统.docx

《基于matlab的MIMO通信系统.docx》由会员分享,可在线阅读,更多相关《基于matlab的MIMO通信系统.docx(28页珍藏版)》请在冰豆网上搜索。

基于matlab的MIMO通信系统.docx

基于matlab的MIMO通信系统

北京邮电大学实验报告

 

 

基于Matlab的MIMO通信系统仿真

 

 

一、概述

1.1课程设计目标:

(1)了解移动通信关键技术

(2)了解数字通信系统仿真流程

(3)学会用Matlab实现基本的信道编译码、调制解调等通信模块

(4)学习并实现MIMO空时处理技术

(5)学习和掌握性能分析的思路和方法。

1.2数字通信系统概述

信道中传输的是数字信号的通信方式称为数字通信,它包括将基带数字信号直接送往信道传输的数字基带传输和经载波调制后在送往信道传输的数字载波传输。

对应的通信系统称为数字通信系统。

具体的通信流程如上图所示。

对于本次实验中需要完成的MIMO通信系统,流程相应为:

产生信源,而后利用卷积码进行信道编码,调制方式使用QPSK调制,再将其通过双天线传输后通过白高斯噪声信道,传播后利用ML进行判决,译码方式采用维特比译码,最终得到传输后的数据。

二、基本原理

2.1MIMO概述及原理

MIMO表示多输入多输出。

在第四代移动通信技术标准中被广泛采用,例如IEEE802.16e(Wimax),长期演进(LTE)。

在新一代无线局域网(WLAN)标准中,通常用于IEEE802.11n,但也可以用于其他802.11技术。

MIMO有时被称作空间分集,因为它使用多空间通道传送和接收数据。

只有站点(移动设备)或接入点(AP)支持MIMO时才能部署MIMO。

MIMO技术的应用,使空间成为一种可以用于提高性能的资源,并能够增加无线系统的覆盖范围。

MIMO允许多个天线同时发送和接收多个空间流,并能够区分发往或来自不同空间方位的信号。

多天线系统的应用,使得多达min(Nt,Nr)的并行数据流可以同时传送。

同时,在发送端或接收端采用多天线,可以显著克服信道的衰落,降低误码率。

利用MIMO技术可以提高信道的容量,同时也可以提高信道的可靠性,降低误码率。

前者是利用MIMO信道提供的空间复用增益,后者是利用MIMO信道提供的空间分集增益。

实现空间复用增益的算法主要有贝尔实验室的BLAST算法、ZF算法、MMSE算法、ML算法。

目前MIMO技术领域另一个研究热点就是空时编码。

常见的空时码有空时块码、空时格码。

空时码的主要思想是利用空间和时间上的编码实现一定的空间分集和时间分集,从而降低信道误码率。

2.2MIMO信道模型

nT发送天线,nR接收天线

信道矩阵:

 

接收信号:

即接收信号为信道衰落系数

发射信号+接收端噪声

MIMO模型中有一个空时编码器,同时含有有多根天线,其系统模型和上述MIMO系统理论一致。

一般来说,移动终端所支持的天线数目总是比基站端要少所以发送天线的数目要大于接收天线。

2.3分集与复用

根据各根天线上发送信息的差别,MIMO可以分为发射分集技术和空间复用技术。

发射分集:

在不同的天线上发射包含同样信息的信号(信号的具体形式不一定完全相同),达到空间分集的效果,起到抗衰落的作用

典型代表:

空时块码(STBC)

空间复用:

在不同的天线上发射不同的信息,获得空间复用增益,从而大大提高系统的容量和频谱利用率

典型代表:

分层空时码。

2.3.1空时块码(STBC)

Alamouti提出了采用两个发射天线和一个接收天线的系统可以得到采用一个发射天线两个接收天线系统同样的分集增益。

将每k个输入字符映射为一个矩阵,矩阵的每行对应在p个不同的时间间隔里不同天线上所发送的符号。

2*2举例:

单天线接收,用表示第1,2个发射符号间隔接收天线的接收信号:

 

采用最优极大似然译码可得:

为了要满足各根天线上发送数据的正交,它的编码矩阵需要满足如下条件

 

多天线接收,发送端的编码与传输方案和单接收天线系统一样。

只是在接收端的处理变得复杂,需要对不同接收天线上接收到的信号进行合并处理。

多接收天线下的判决度量可以通过把各副接收天线上的接受信号得到的判决度量线性合并得到。

判决式如下:

2.3.2分层空时码(BLAST)

空时编码利用多天线组成的天线阵同时发送和接收。

在发送端,将数据流分离成多个支流,对每个支流进行空时处理和信号设计(空时编码),然后通过不同天线同时发送;在接收端,利用天线阵接收,并经过空时处理和空时码解码,还原成发送数据流。

图1分层空时码的发射端系统模型

在接收端,用多个天线分集接收,信道参数通过信道估计获得,由线性判决反馈均衡器实现分层判决反馈干扰抵消,然后进行分层空时译码,单个信道译码器完成信道译码,分层空时码接收端系统框图如下图所示:

三、仿真设计

3.1流程图

3.2主要模块

3.2.1信源产生

要求:

产生独立等概的二进制信源

实现:

matlab自带函数randint()

一个信源产生N/2个0,1随机等概数据

S1=randint(1,N/2);

S2=randint(1,N/2);

3.2.2信道编码

方式:

卷积码(3GPPTS25.2124.2.3.1)

卷积纠错编码函数convenc()

格式:

code=convenc(msg,trellis)

功能:

利用poly2trellis函数定义的格形trellis结构,对二进制矢量信息msg进行卷积编码。

将卷积编码多项式转换成格形(trellis)结构函数poly2trellis()

格式:

trellis=poly2trellis(constrainlength,codegenerator)

功能:

将前向反馈卷积编码器的多项式转换成一格形(trellis)结构。

Viterbi算法译卷积码函数vitdec()

格式:

decoded=vitdec(code,trellis,tblen,opmode,dectype)

功能:

利用Viterbi算法译卷积码。

Code为poly2trellis函数或istrellis函数定义的格形trellis结构的卷积码。

参数tblen取正整数,表示记忆(traceback)深度。

参数opmode代表解码操作模型。

3.2.3调制与解调

基本要求QPSK:

在数字信号的调制方式,QPSK四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。

QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45°,135°,225°,315°,调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。

每一个双比特码元是由两位二进制信息比特组成,它们分别代表四进制四个符号中的一个符号。

QPSK中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。

解调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。

实现方法:

调制:

Matlab自带函数reshape以及自定义star()利用星座点调制

解调:

Matlab自带函数reshape以及ML思想解调,过程中使用min()函数

提高要求16QAM:

16QAM是用两路独立的正交4ASK信号叠加而成,4ASK是用多电平信号去键控载波而得到的信号。

它是2ASK体制的推广,和2ASK相比,这种体制的优点在于信息传输速率高。

串/并变换器将速率为Rb的二进制码元序列分为两路,速率为Rb/2.2-4电平变换为Rb/2的二进制码元序列变成4个电平信号,4电平信号与正交载波相乘,完成正交调制,两路信号叠加后产生16QAM信号.在两路速率为Rb/2的二进制码元序列中,经2-4电平变换器输出为4电平信号,即M=16.经4电平正交幅度调制和叠加后,输出16个信号状态,即16QAM.

实现方法:

调制:

Matlab自带函数reshape以及star()用星座点进行调制

解调:

Matlab自带函数reshape以及ML思想解调,过程中使用min()函数

3.2.4空时分组码发送与接收

两发一收:

两发两收:

(1)

(2)

实现:

Matlab自带conj()与.*

3.2.5AWGN信道

加性高斯白噪声AWGN(AdditiveWhiteGaussianNoise)是最基本的噪声与干扰模型。

加性噪声:

叠加在信号上的一种噪声,通常记为n(t),而且无论有无信号,噪声n(t)都是始终存在的。

因此通常称它为加性噪声或者加性干扰。

白噪声:

噪声的功率谱密度在所有的频率上均为一常数,则称这样的噪声为白噪声。

如果白噪声取值的概率分布服从高斯分布,则称这样的噪声为高斯白噪声。

实现:

Matlab自带函数randn()

3.3主要参数

PACKET=10;%数据包个数

N=2560*4;%包长

SNR_dB=0:

2:

30;%信噪比范围(0~30),图中横坐标间隔为2

tblen=30;%卷积码记忆深度,寄存器的3~5倍最佳,选择30

四、程序块设计

4.1结构性和关键语句

4.1.1信源产生

ppt中建议使用randsrc()函数,但由于randsrc()产生的信源序列是+1和-1的序列,而进行卷积码编码时输入编码器的序列必须是单极性不归零序列,所以要将序列中的-1修改为0.

于是我采用了randi()函数,直接可以产生随机且等概的0,1序列。

S1=randi(1,N/2);%产生第1组信号,长度为N/2

S2=randi(1,N/2);%产生第2组信号,长度为N/2

4.1.2信道编码

4.1.2.1卷积码

codegen=[557663711];%8进制表示寄存器状态

trellis=poly2trellis(constlen,codegen);%转换为格行结构

forbag=1:

PACKET

S1=randi(1,N/2);%产生随机信号1

S2=randi(1,N/2);%产生随机信号2

S=[S1S2];

SJ_1=convenc(S1,trellis);%对1进行卷积编码

SJ_2=convenc(S2,trellis);%对2进行卷积编码

根据图可得,有9个移位寄存器,1个输入和3个输出。

将编码器的3个冲激响应写成二进制序列,最后转化成八进制,最后得到的结果为557,663,711,为八进制的表示形式。

4.1.2.2维特比译码

直接利用公式vitdec()即可

4.1.2.3CRC冗余校验

能被已知g(x)整除即判断为无错,否则产生错误

选取g(x)=1+x^5+x^12+x^16

加冗余过程:

检查过程

4.1.3调制与解调

QPSK星座图与调制

QPSK解调

16QAM星座图

16QAM调制

16QAM解调

4.1.4瑞利信道

4.1.4.1信道中的信号

根据瑞利信道衰减参数,加之公式可得两根天线在两个符号周期内在信道中的总信号rij(包括高斯噪声)

4.1.4.2误比特率的计算

利用matlab自带biterr()函数

Biterr()用于比较两组标量序列中不同位数的个数

用个数与总位数相除记得到本次循环中的误比特率

因为根据不同的系统可能需要多次循环,故而要对每次循环中的误比特率进行求和并与总循环次数相除,等到真正的误比特率。

4.2状态检验

每路信源产生N/2=5120个数据

经过卷积编码后生成15360个数据

因为有三路输出即

15360=5120*3个数据

QPSK星座图(即坐标数据)

16QAM星座图数据(格雷码顺序排列)

经过QPSK后生成每路信号7680个数据

因为QPSK将每路信号分成两路后调制即

7680=15360/2个数据

经过16QAM后生成每路信号3840个数据

因为16QAM将每路信号分成四路后调制即

3840=15360/4个数据

经过两发两收的QPSK信号

调制后产生的信号每路7680个数据

与发送前相同

两发两收未编码情况

每路产生2560个数据

经过两发一收的QPSK信号

调制后产生的信号每路7680个数据

经过两发两收的16QAM信号

调制后产生的信号每路3840个数据

与发送前相同

经过两发一收的16QAM信号

调制后产生的信号每路3840个数据

解调2发2收QPSK后产生序列15360个

经过维特比译码后2发2收产生序列5120个

已恢复为0,1序列

4.3性能测试

4.3.1

当采用packet=10时,每包长2460*4

共98400个数据

耗时:

34s

较为快捷,可见代码性能较优

4.3.2

此时加入冗余校验,速度大大下降

耗时:

8’45’’约是不添加冗余校验的17倍

且由于在此系统中冗余校验无法实现其功能,即实际纠错

故而认为冗余校验用处不大

4.3.3

增加包长,不加入冗余校验

packet=50,每包长为依然为2460*4

共492000个数据

耗时2’44’’

且两幅图得到的误比特率图线无明显差别,相较之下选择包长为10进行仿真.

五、误码性能

包长为packet=10时,数据共有98400个

此时得到的曲线与packet=50,数据增加5倍即492000个数据时的在QPSK下误码率图线无明显差异,细微来看,packet=50稍平滑一些

5.1Packet=10,tblen=30

5.2packet=50

当包长都取10时,改变卷积码的记忆深度。

查取资料可知,卷积码的记忆深度为寄存器个数的3~5倍时性能最佳。

本次仿真中因为寄存器个数为8个,所以记忆深度在24~40中选取比较合适。

于是我选取30作为常态。

比较大的记忆深度50和比较小的记忆深度3来画图比较,从中可以看出,记忆深度较小(=3)时,未编码曲线较为光滑

记忆深度增大(=30,=50),编码更为曲线光滑

5.3packet=10tblen=50

5.4packet=10tblen=3

六、仿真结果与分析

5.1QPSK情况下误码率图线

我选取了三个状态的误比特率来进行分析

分别是2发2收的卷积编码BER图线

2发1收的卷积编码BER图线

以及未进行卷积编码直接调制的BER图线。

首先我们已知2发2收的性能优于2发1收,观察图线,2发2收图线一直在2发1收图线之下,即相同信噪比时,2发2收的误比特率小于2发1收,正确。

对于未进行卷积编码的图线与进行编码的图线相比,在信噪比较小的时候(约小于10db)未编码信号的误比特率比2发1收的进行QPSK的信号误比特率低,因为本次仿真中的误比特率是经过逐次取平均,扩大范围继续平均,数据准确,于是可以得到信噪比小的时候,收发方式对误比特率影响较大。

而当超过10db时,未进行卷积码的信号误比特率远远高于经过编码的信号,可见在信噪比大时,编码对通信系统性能的影响更大。

5.216QAM误码率图线

16QAm部分选取2发2收及2发1收的误比特率进行分析。

可见在信噪比约为15dB以下时,两条曲线几乎交叠在一起,误比特率相当,然而当信噪比大于15dB时,2发2收误比特率大于2发1收的情况。

不符合常理,有待解决。

七、重点研究的问题

5.1、QPSK与16QAM的调制

最开始也考虑过使用matlab直接提供的函数pskmod(),qammod()和相应的解调函数来进行QPSK及16QAM的调制与解调。

但因为学习过通信原理,理解了调制的本质实际就是映射,将一维标量映射到QPSK的单位圆及16QAM的星座点上。

所以我采用了自己设计调制与解调的函数。

其实实施起来也很简单。

首先定义QPSK及16QAM的星座点。

我采用了这种在通信原理中因为错到相邻符号概率小而性能较好的方式,只用直接定义4个点的位置就完成了。

16QAM也很简单,同样采用通信原理中较为推荐的格雷码方式排序星座点,

用循环的方式定义星座点,以期获得较低的误符号率。

之后进行串并变化后,把数据分别变为2行和4行,一列看为一个符号,转换为10进制数字后+1得到在星座点中的序列位置,就完成了调制。

5.2、QPSK与16QAM的解调

完成了调制,解调的思想也比较简单。

最基础的先要应用ML准则,即找到离当前位置最近的星座点,记录它的位置,再回到回复序列中找到相应序号对应的2或4位数据,再次使用reshape即可恢复为原信号。

5.3、瑞利信道中的发送与接收

弹性要求中有瑞利信道这一项,所以我查阅了相关资料后了解到,只要定义好锐利信道的参数h0~h3,后就能利用书中的公式,将两根天线上相邻时刻到达的信号与瑞利信道系数想乘,就可以得到天线的发射信号,再加上随机噪声sgma.*2*(randn(1,len)+j*randn(1,len)),便得到了信道中的总函数。

译码部分比起发送要复杂一些。

发送的时候有相应的公式,直接就可以得到,而对于译码,则需要理解两发两收和一收进行的含义,才能写出相应的算法。

两发两收交两发一收复杂,但在理解了具体实现的基础上,需要我们用已有的简单的数学知识(如负数的共轭计算,算式相消技巧),最终将收端得到的信号恢复为原信号。

5.4、冗余校验

在本学期的《信息处理与编码》与编码课中,作为课余知识简单的了解了CRC冗余校验的实现。

即与给定的g(x)相除,整除可认为无差错。

根据一篇论文尝试编写了冗余校验的程序,虽然程序实现并不太难,但却给程序造成了极大的冗余。

在调制前要给两路信号添加冗余,解调译码后要对相应的8个结果解校验。

于是程序的运行时间平均提高了近20倍。

在之后的调试代码过程中一直将冗余校验注释掉,以免浪费过多的时间。

5.5、误比特率的计算

比起通信原理中误比特率的计算需要很长的公式,开根乘方不同,在matlab中只要使用简单的biterr()函数即可完成。

它指示了两个数组中不同比特数的个数(也可用异或实现),再与序列总长度相比,很方便的就能得出误比特率。

唯一需要注意的是本次仿真中数据量庞大,嵌套着循环,每进行一次发送接收都要计算出本次的误比特率,再加和求平均,便能得到较为可靠的误比特率值。

八、结论

通过两个星期的课程设计,我完成了MIMO通信系统的QPSK、16QAM调制,拥有循环冗余校验,通过瑞利衰减信道,最终成功传输解调的整个过程。

对于MIMO通信系统,最初我们只是在《移动通信》课上有所了解,但对于它的整个实现流程实际上是陌生的。

在第一节老师的指导课上,除了移动通信课程上涉及的MIMO、《通信原理》上涉及到了QPSK和16QAM调制方式,甚至于弹性要求中在《信息处理与编码》中涉及的冗余校验以及并未完全理解的瑞利信道的相关内容。

一次课程设计几乎涵盖了大三所学习的主要课程的最核心内容,让我在第一天就很感兴趣。

当然,同时也我也面临无从下手的困境,毫无头绪。

所幸Matlab在这一个学期的《通信网性能基础》实验中有了不小的进步,我可以掌握分模块变成的方法,便根据老师给出的基本流程图,一步步拆解,产生信源、调制、解调、最终完成两发两收,在这个过程中,我对基于MATLAB的MIMO通信系统仿真有了比较深刻的认识。

MIMO的优点是能够增加无线范围并提高性能。

MIMO允许多个天线同时发送和接收多个空间流。

它允许天线同时传送和接收。

利用MIMO技术可以提高信道的容量,同时也可以提高信道的可靠性,降低误码率。

前者是利用MIMO信道提供的空间复用增益,后者是利用MIMO信道提供的空间分集增益。

但是,后来深入了解了我才知道,MIMO不能够克服频率选择性深衰落。

所以出现了OFDM和MIMO结合在一起的技术。

目前,4G技术已经逐渐普及,未来是必要出现更先进的通信技术,但是无论科技如何发展,后来的技术都是对先前技术的改进和突破。

只有学好现有的技术,才能够发现其中的缺陷和弊端,才能够找准改进的方向。

三年的学习到本次课程设计结束就告一段落了,很感谢通过这次小学期,可以让我认识到自己在这三年中确实学到了很多有用的知识,对通信系统有了基本的了解,完成了一名通信专业学生应该掌握的基本内容。

如果不是课程设计,只有理论的学习,是不能让我认识到自己实实在在掌握了这些知识并能把它们综合在一起应用。

除此以外也让我认识到,遇到让自己觉得很困难的东西,不要主观认定自己不可以,从简单的地方入手,循序渐进,认真地查阅网上的资料与同学交流心得,一步一步是可以把难关攻破的。

九、参考文献

1、《通信系统性能估计》

2、《通信原理(第3版)》

3、《信息处理与编码(第3版)》

4、《MIMO通信系统编码》

5、《MATLAB函数速查手册(修订版)》

6、《空时分组码-STBC的性能分析》

7、《STBC块传输系统中的一种新型分集合并算法》

8、《基于MATLAB的独立瑞利衰落模型的的仿真》[J];广东通信技术;2006年12期

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1