主要内容

将OSTBC与TCM连接

这个例子展示了一个正交空时分组码(OSTBC)与网格编码调制(TCM)连接,用于在具有2个发射天线和1个接收天线的多输入多输出(MIMO)信道上进行信息传输。示例使用通信系统对象™来模拟这个系统。

介绍

OSTBCs [1], [2是一种具有吸引力的MIMO无线通信技术。它们充分利用空间分集顺序,并享受符号上的最大似然(ML)解码。然而,它们不提供编码增益。接收端用于OSTBC的合成器提供了传输符号的软信息,可用于解码或解调外部码。

中医(3.是一种集成了编码和调制的带宽有效方案,以提供较大的编码增益。将TCM与内部代码连接起来通常会提高性能。

这个例子说明了OSTBC和TCM级联方案的优势:OSTBC提供的空间分集增益和TCM提供的编码增益。为了比较,还提供了两个只包含TCM或OSTBC的参考系统。从仿真结果可以清楚地观察到级联方案在参考模型上的分集增益和编码增益。更多关于连接OSTBC和TCM的讨论,请参见:[4], [5及其参考文献。

configureTCMOSTBCDemo.m脚本创建用于模拟连接的OSTBC系统的System对象。它还初始化了一些仿真参数。

% TCM调制器的格子结构Trellis = poly2trellis([2,3], [1,2,3, 0;4、1、2);%创建连接的OSTBC系统的System对象并设置仿真%参数,如信噪比和帧长。configureTCMOSTBCDemo

PSK TCM调制解调器和解调器

PSK TCM调制器System对象将随机消息数据调制到具有单位平均能量的PSK星座。TrellisStructure属性接受一个MATLAB®结构来指定TCM的网格。ModulationOrder属性指定PSK星座的大小。本例使用Ungerboeck TCM方案对8- psk星座进行8格状态的计算[3.],并将相应的网格结构属性设置为poly2trellis的结果([2 3],[1 2 0;4 1 2])。该对象的输出长度为50,因为每两个输入位产生一个符号。

PSK TCM解调器系统对象使用用于TCM的维特比算法对来自OSTBC组合器的信号进行解码。该示例将TerminationMethod属性设置为“截断”;因此独立处理每个帧。该示例还将TracebackDepth属性设置为30,与TCM的约束长度相比,该属性很长h以确保几乎无损的性能。

psktcmMod = comm.PSKTCMModulator(格子,...“TerminationMethod”“截断”);
psktcmDemod=comm.PSKTCMDemodulator(网格,...“TerminationMethod”“截断”...“TracebackDepth”30岁的...“OutputDataType”“逻辑”);

正交空时分组码(OSTBC)

OSTBC编码器系统对象使用Alamouti代码对来自TCM编码器的信息符号进行编码[1为2个发射天线。这个对象的输出是一个50x2矩阵,其中每一列的条目对应于从一个天线传输的数据。

OSTBC组合器System对象使用单个天线并利用信道状态信息(CSI)对接收的信号进行解码。该目标的步长方法的输出表示传输符号的估计,然后将这些估计输入PSK TCM解调器。在本例中,假定CSI在接收端是完全已知的。

ostbcEnc = comm.OSTBCEncoder;ostbcComb = comm.OSTBCCombiner;

2x1 MIMO衰落信道

2x1 MIMO衰落信道系统对象模拟从2个发射天线到1个接收天线的空间独立平坦瑞利衰落信道。

该示例将channel对象的maximumDopplerShift属性设置为30。使用这个值的原因是为了使MIMO信道表现得像准静态衰落信道,即在一帧传输中保持恒定,在多帧传输中变化。该示例将PathGainsOutputPort属性设置为true,以使用通道路径增益值作为CSI的完美估计。该示例还将RandomStream属性设置为“mt19937ar with seed”,以便对象使用一个自包含的随机数生成器来生成可重复的通道系数。2x1 MIMO信道具有归一化路径增益。

mimoChan = comm.MIMOChannel (...“SampleRate”1 / Tsamp,...“MaximumDopplerShift”maxDopp,...“SpatialCorrelationSpecification”“没有”...“NumReceiveAntennas”, 1...“RandomStream”“带种子的mt19937ar”...“PathGainsOutputPort”,真正的);

将OSTBC与TCM连接

这部分代码调用连接的OSTBC系统的处理循环。主回路逐帧处理数据,发射机使用8-PSK TCM调制器调制随机数据,然后应用Alamouti编码。来自OSTBC编码器的两个传输信号通过2x1 MIMO瑞利衰落信道,也受到AWGN的影响。该OSTBC合成器使用一个接收天线,并为8-PSK TCM解调器提供软输入。该示例比较解调器的输出与产生的随机数据,以获得帧误码率(FER)。

流处理

带= 0 (3,1);虽然(fer(3) < maxNumFrms) && (fer(2) < maxNumFrms) data = logical(randi([0 1], frameLen, 1));%生成数据modData = psktcmMod(数据);%调节txSignal=ostbcEnc(modData);%应用Alamouti编码[chanOut,chanEst]=mimoChan(txSignal);% 2x1衰落信道rxSignal = awgnChan (chanOut);%增加接收机噪声modDataRx = ostbcComb (rxSignal,...挤压(chanEst));%解码dataRx = psktcmDemod (modDataRx);%解调frameErr=任何(数据接收-数据);%检查帧错误fer = FERData(false, frameErr);%更新帧错误率结束

错误率测量系统对象FERData的步进方法,输出一个3乘1的矢量,其中包含测量的FER值的更新、错误的数量和传输的帧总数。显示带值。

frameErrorRate=fer(1)
frameErrorRate = 0.1481

平坦衰落信道下的TCM

本节示例在单输入单输出(SISO)平坦瑞利衰落信道上模拟先前级联方案中的TCM,无需空时编码。衰落信道具有与先前系统中2x1 MIMO衰落信道的一个子信道相同的规范。因此,示例的这一部分在释放衰落信道系统对象后,将其NumTransmitAntennas属性设置为1。本节示例还将AWGN信道系统对象的SignalPower属性设置为1,因为每个符号周期仅传输一个符号。

初始化处理循环

释放(mimoChan);mimoChan。NumTransmitAntennas = 1;awgnChan。SignalPower = 1;reset(FERData) fer = 0 (3,1);

流处理循环

虽然(fer(3) < maxNumFrms) && (fer(2) < maxNumFrms) data = logical(randi([0 1], frameLen, 1));%生成数据modData = psktcmMod(数据);%调节[chanOut,chanEst]=mimoChan(modData);%SISO衰落信道rxSignal = awgnChan (chanOut);%增加接收机噪声modDataRx = (rxSignal.*conj(chanEst)) /...(陈* chan);%平衡dataRx = psktcmDemod (modDataRx);%解调frameErr=任何(数据接收-数据);%检查帧错误fer = FERData(false, frameErr);%更新帧错误率结束

在2x1平坦瑞利衰落信道上的OSTBC

本节的示例用QPSK调制代替了前面连接方案中的TCM,以便两个系统具有相同的符号(帧)速率。它使用与TCM-OSTBC级联模型相同的2x1平坦瑞利衰落信道。QPSK调制器系统对象(qpskMod)将信息位映射到QPSK星座,QPSK解调器系统对象(QPSKDemod)从OSTBC合成器解调信号。

初始化处理循环

释放(mimoChan);mimoChan。NumTransmitAntennas = 2;awgnChan。SignalPower = 2;reset(FERData) fer = 0 (3,1);

流处理循环

虽然(fer(3) < maxNumFrms) && (fer(2) < maxNumFrms) data = logical(randi([0 1], frameLen, 1));%生成数据modData=qpskMod(数据);%调节txSignal=ostbcEnc(modData);%应用Alamouti编码[chanOut,chanEst]=mimoChan(txSignal);% 2x1衰落信道rxSignal = awgnChan (chanOut);%增加接收机噪声modDataRx = ostbcComb (rxSignal,...挤压(chanEst));%解码dataRx = qpskDemod (modDataRx);%解调frameErr=任何(数据接收-数据);%检查帧错误fer = FERData(false, frameErr);%更新帧错误率结束

您可以在前面的处理循环周围添加一个for循环,以运行一组信噪比值的模拟。模拟脱机运行,信噪比为(10:2:24)dB,目标错误数等于1000,最大传输数等于5e6。下图显示了模拟的结果。

总结

本例使用了几个System对象来模拟在2x1平坦瑞利衰落信道上使用TCM连接的OSTBC。该基础系统被改进为在SISO平坦衰落信道上建立一个TCM系统模型,在相同的2x1平坦瑞利衰落信道上建立一个OSTBC系统模型。系统性能测量使用FER曲线得到的错误率测量系统对象。这个例子表明,级联方案比TCM方案提供了显著的分集增益,比Alamouti码提供了大约2dB的编码增益。

附录

此示例使用以下脚本和助手函数:

选定的参考书目

  1. S. M. Alamouti,《无线通信的简单传输分集技术》,IEEE®通信选定领域期刊,第16卷,第8期,第1451-1458页,1998年10月。

  2. V.Tarokh,H.Jafarkhami和A.R.Calderbank,“正交设计的空时分组码,”IEEE信息理论汇刊第45卷第5期5、第1456-1467页,1999年7月。

  3. G. Ungerboeck, "多电平/相位信号的信道编码"IEEE信息理论汇刊, vol. IT-28, no。1, 55页。?67年,1982年1月。

  4. S. M. Alamouti, V. Tarokh, P. Poon,“栅格编码调制和发射分集:设计标准和性能评估”,出版IEEE国际通用个人会议论文集通讯(ICUPC'98),意大利佛罗伦萨,1998年10月5-9日,第1卷,第703-707页。

  5. 龚勇,“衰落信道中基于栅格编码调制的级联空时分组编码”,IEEE无线通信, vol. 1, no. 1第4页580-590页,2002年10月。