主要内容

MIMO系统简介

这个例子展示了多输入多输出(MIMO)系统,它在无线通信系统的发射端和接收端使用多个天线。MIMO系统在通信系统中被越来越多地采用,因为当使用多根天线时,它们可以实现潜在的容量增益。多根天线除了使用时间和频率维度外,还使用空间维度,不改变系统对带宽的要求。

对于一般的通信链路,本例着重于传输分集,而不是传统的接收分集。利用平坦衰落的瑞利信道,说明了正交空时分组编码的概念,该编码在多天线发射时是可行的。这里假设信道在多个发射-接收天线对之间经历独立衰落。

对于所选的系统,它还提供了在接收端对信道不完全估计的情况下,与接收端对信道完全了解的情况相比,性能退化的度量。

第一部分:发送多样性与接收多样性

使用分集接收是一种众所周知的技术,可以减轻通信链路上衰落的影响。然而,它大多被归为接收端。在[1], Alamouti提出了一种发射分集方案,该方案提供了类似的分集增益,在发射机使用多个天线。这被认为是更实际的,例如,与蜂窝通信系统中每个移动设备都需要多个天线相比,它只需要在基站上安装多个天线。

本节通过模拟平坦衰落瑞利信道上的相干二相移键控(BPSK)调制,重点介绍发射和接收分集的比较。对于发射分集,我们使用两个发射天线和一个接收天线(标记为2x1),而对于接收分集,我们使用一个发射天线和两个接收天线(标记为1x2)。

仿真包括显示编码和/或传输信号、通道模型以及接收信号的接收和解调的端到端系统。给出了无分集链路(单收发天线盒)和二阶分集链路的理论性能对比。这里假设所有系统的接收端都完全知道信道。我们在Eb/No点的范围内运行模拟,以生成BER结果,使我们能够比较不同的系统。

我们首先定义一些常见的模拟参数

frmLen = 100;%帧长度numPackets = 1000;包数%EbNo = 0:2:20;% Eb/不变化为20 dBN = 2;Tx天线的最大数量%M = 2;Rx天线的最大个数%

然后设置模拟。

%创建comm.BPSKModulator和comm.BPSKDemodulator系统对象(TM)P = 2;%调制顺序bpskMod = comm.BPSKModulator;bpskDemod = comm.BPSKDemodulator (“OutputDataType”“双”);创建com . ostbcencoder和com . ostbccombiner系统对象ostbcEnc = comm.OSTBCEncoder;ostbcComb = comm.OSTBCCombiner;将Eb/No值转换为信噪比值。BPSK调制器的输出%产生单位功率信号。信噪比= convertSNR (EbNo,“ebno”“BitsPerSymbol”1);创建com . errorrate计算器系统对象来计算误码率。errorCalc1 = comm.ErrorRate;errorCalc2 = comm.ErrorRate;errorCalc3 = comm.ErrorRate;%因为AWGN函数和RANDI函数都使用默认值%随机流,执行以下命令,使结果%是可重复的,也就是说,每次运行都会得到相同的结果%的例子。的末尾将恢复默认流%的例子。s = rng (55408);为速度预分配变量H = 0 (frmLen, N, M);ber_noDiver = 0(3、长度(EbNo));ber_Alamouti = 0(3、长度(EbNo));ber_MaxRatio = 0(3、长度(EbNo));ber_thy2 = 0(1、长度(EbNo));
为可视化BER结果设置一个数字无花果=图;网格;ax = fig.CurrentAxes;(ax,“上”);斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax,[1军医1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Renderer =“zbuffer”;fig.Name =“发送与接收多样性”;标题(ax,“发送与接收多样性”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([15 50 25 30]);循环几个EbNo点idx = 1:length(EbNo) reset(errorCalc1);重置(errorCalc2);重置(errorCalc3);循环遍历包的数量packetIdx = 1: numPackets每帧生成数据向量data = randi([0 P-1], frmLen, 1);%调整数据modData = bpskMod(数据);Alamouti时空块编码器encData = ostbcEnc (modData);创建瑞利分布通道响应矩阵%表示两个发射和两个接收天线H(1:N:end,:,:) = (randn(frmLen/2, N, M) +...1我* randn (frmLen / 2 N M)) /√(2);%假设在两个符号周期内保持不变H(2:N:end,:) = H(1:N:end,::);%提取H的一部分来表示1x1, 2x1和1x2通道H11 = H (:, 1, 1);H21 = H(:,: 1) /√(2);H12 =挤压(H (: 1:));通过通道chanOut11 = H11 .* modData;chanOut21 = (H21求和。* encData, 2);* repmat(modData, 1,2);%增加情况下rxSig11 = awgn (chanOut11,信噪比(idx));rxSig21 = awgn (chanOut21,信噪比(idx));rxSig12 = awgn (chanOut12,信噪比(idx));Alamouti时空块合成器decData = ostbcComb(rxSig21, H21);% ML检测器(最小欧氏距离)demod11 = bpskDemod (rxSig11。*连词(H11));demod21 = bpskDemod (decData);demod12 = bpskDemod(sum(rxSig12.*conj(H12), 2));计算并更新当前EbNo值的BER%用于未编码的1x1系统ber_noDiver(:,idx) = errorCalc1(data, demod11);%为Alamouti编码2x1系统ber_Alamouti(:,idx) = errorCalc2(data, demod21);%为最大比组合1x2系统ber_MaxRatio(:,idx) = errorCalc3(data, demod12);结束为numPackets的FOR循环%结束计算当前EbNo的理论二阶分集误码率ber_thy2 (idx) = berfading (EbNo (idx),相移键控的2、2);%绘制结果semilogy (ax, EbNo (1: idx) ber_noDiver (1,1: idx),的r *...EbNo (1: idx) ber_Alamouti (1,1: idx),“去”...EbNo (1: idx) ber_MaxRatio (1,1: idx),“废话”...EbNo (1: idx) ber_thy2 (1: idx),“米”);传奇(ax,“没有多样性(1Tx, 1Rx)”“Alamouti (2 tx, 1 rx)”...最大比例组合(1Tx, 2Rx)...“多样性理论二阶”);drawnow;结束为EbNo的for循环结束执行曲线拟合并重新绘制结果fitBER11 = berfit(EbNo, ber_noDiver(1,:));fitBER21 = berfit(EbNo, ber_Alamouti(1,:));fitBER12 = berfit(EbNo, ber_MaxRatio(1,:));semilogy (ax, EbNo, fitBER11“r”EbNo fitBER21,‘g’EbNo fitBER12,“b”);(ax,“关闭”);%恢复默认流rng(年代);

发射分集系统的计算复杂度与接收分集系统非常相似。

仿真结果表明,采用双发射天线和一接收天线的系统与单发射天线和双接收天线的最大比组合(MRC)系统具有相同的分集阶数。

与MRC接收分集相比,传输分集有3 dB的缺点。这是因为我们在两种情况下建模的总传输功率是相同的。如果我们对发射功率进行校准,使这两种情况的接收功率相同,那么性能将是相同的。二阶分集链路的理论性能与发射分集系统相匹配,因为它标准化了所有分集分支的总功率。

附带的函数脚本,mrc1m.m而且ostbc2m.m帮助感兴趣的用户进一步探索。

第2部分:带信道估计的空时块编码

在正交设计理论的基础上,Tarokh等人[2将Alamouti的发射分集方案推广到任意数量的发射机天线,从而产生空时分组码的概念。对于复杂信号星座,他们表明Alamouti方案是唯一的双发射天线的全速率方案。

在本节中,我们研究了带有两个接收天线(即2x2系统)的具有和不具有信道估计的这种方案的性能。在接收端不知道信道状态信息的现实场景中,必须从接收信号中提取信道状态信息。我们假设信道估计器使用每个包前的正交导频信号[3.].假定信道在包的长度内保持不变(即,它经历缓慢的衰落)。

这里使用了与上一节中描述的类似的模拟,它使我们可以估计使用两个发射和两个接收天线的空时分组编码系统的误码率性能。

我们再次从定义公共模拟参数开始

frmLen = 100;%帧长度maxNumErrs = 300;%最大错误数maxNumPackets = 3000;%最大包数EbNo = 0:2:12;% Eb/不变化为12 dBN = 2;Tx天线的百分比M = 2;Rx天线的百分比全= 8;每帧导频符号的%数量W =阿达玛(全);导频= W(:, 1:N);%正交设置每个发射天线

然后设置模拟。

创建一个comm.MIMOChannel系统对象来空间模拟2x2独立平坦衰落瑞利通道陈= comm.MIMOChannel (...“MaximumDopplerShift”0,...“SpatialCorrelationSpecification”“没有”...“NumTransmitAntennas”N...“NumReceiveAntennas”米,...“PathGainsOutputPort”,真正的);更改hAlamoutiDec系统的numreceiveantenars属性值%对象到M,也就是2释放(ostbcComb);ostbcComb。NumReceiveAntennas = M;为可重复性设置全局随机流s = rng (55408);为速度预分配变量hst = 0 (frmLen, N, M);ber_Estimate = 0(3、长度(EbNo));ber_Known = 0(3、长度(EbNo));
为可视化BER结果设置一个数字无花果=图;网格;ax = fig.CurrentAxes;(ax,“上”);斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax,[1军医1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Name =“正交空时块编码”;fig.Renderer =“zbuffer”;标题(ax,“Alamouti-coded 2 x2系统”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([41 50 25 30]);循环几个EbNo点idx = 1:length(EbNo) reset(errorCalc1);重置(errorCalc2);%循环直到错误数量超过'maxNumErrs'%或模拟的最大数据包数(ber_Estimate(2,idx) < maxNumErrs) &&...(ber_Known(2,idx) < maxNumErrs) &&...(ber_Estimate (idx) / frmLen < maxNumPackets)每帧生成数据向量data = randi([0 P-1], frmLen, 1);%调整数据modData = bpskMod(数据);Alamouti时空块编码器encData = ostbcEnc (modData);为每一帧添加导频符号。txSig =[飞行员;encData];通过2x2通道重置(陈);[chanOut, H] = chan(txSig);%增加情况下rxSig = awgn (chanOut,信噪比(idx));%信道估计%对于每个链接=> N*M估计命令(1::)=飞行员(:,:)。' * rxSig(1:pLen,:) / pLen;%假设在整个坐标系中保持不变HEst = HEst(ones(frmLen, 1),:,:);%合成器使用估计的通道decDataEst = ostbcComb(rxSig(pLen+1:end,:), HEst);%合成器使用已知通道decDataKnown = ostbcComb (rxSig(全+ 1:最终,),...挤压(H(全+ 1:结束 ,:,:,:)));% ML检测器(最小欧氏距离)陈旧的= bpskDemod (decDataEst);%估计demodKnown = bpskDemod (decDataKnown);%已知计算并更新当前EbNo值的BER估计通道百分比ber_Estimate(:,idx) = errorCalc1(data, demodEst);已知信道百分比ber_Known(:,idx) = errorCalc2(data, demodKnown);结束为numPackets的FOR循环%结束%绘制结果semilogy (ax, EbNo (1: idx) ber_Estimate (1,1: idx),“罗”);semilogy (ax, EbNo (1: idx) ber_Known (1,1: idx),“g *”);传奇(ax, [“航道估计”num2str(全)“飞行员符号/框架”),...“已知的通道”);drawnow;结束为EbNo的for循环结束执行曲线拟合并重新绘制结果fitBEREst = berfit(EbNo, ber_Estimate(1,:));fitBERKnown = berfit(EbNo, ber_Known(1,:));semilogy (ax, EbNo, fitBEREst“r”EbNo fitBERKnown,‘g’);(ax,“关闭”);%恢复默认流rng (s)

对于2x2模拟系统,分集顺序与前一节中看到的1x2或2x1系统的分集顺序不同。

请注意,如果每100个数据符号对应8个导频符号,对于所选的Eb/No范围,信道估计会导致性能下降约1 dB。随着每帧导频符号数量的增加,这一点得到了改善,但增加了链接的开销。在这种比较中,我们保持在两种情况下每个符号的传输信噪比相同。

附带的函数脚本,ostbc2m_e.m帮助感兴趣的用户进行进一步的实验。

第3部分:正交空时块编码及进一步探索

在这最后一节中,我们提出了使用四发射天线(4x1系统)的正交空时分组编码的一些性能结果,使用半速率码G4,按[4].

我们期望该系统提供4的分集顺序,并将其与具有相同分集顺序的1x4和2x2系统进行比较。为了进行公平的比较,我们使用四元PSK和半速率G4码来实现相同的1比特/秒/赫兹的传输速率。

在单个核心上生成这些结果需要一些时间。如果没有安装并行计算工具箱™(PCT),我们将加载先前模拟的结果。功能的脚本ostbc4m.m包括在内,连同mrc1m.m而且ostbc2m.m,用来产生这些结果。如果安装了PCT,这些模拟将并行执行。在本例中是函数脚本ostbc4m_pct.mmrc1m_pct.m而且ostbc2m_pct.m使用。建议用户将这些脚本作为学习其他代码和系统的起点。

[licensePCT ~] =许可证(“签出”“Distrib_Computing_Toolbox”);如果(licensePCT & & ~ isempty(版本(“平行”)) EbNo = 0:2:20;[ber11, ber14, ber22, ber41] = mimoOSTBCWithPCT(100,4e3,EbNo);其他的负载ostbcRes.mat结束为可视化BER结果设置一个数字无花果=图;网格;ax = fig.CurrentAxes;(ax,“上”);fig.Renderer =“zbuffer”;斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax, [1 e-5 1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Name =“正交空时块编码(2)”;标题(ax,“g4编码的4x1系统和其他比较”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([30 15 25 30]);QPSK四阶分集的理论性能BERthy4 = berfading (EbNo,相移键控的、4、4);%绘制结果semilogy (ax, EbNo, ber11的r *EbNo ber41,“女士”EbNo ber22,“c ^”...EbNo ber14,“柯”EbNo BERthy4,‘g’);传奇(ax,“没有多样性(1Tx, 1Rx), BPSK”'OSTBC (4Tx, 1Rx), QPSK'...Alamouti (2Tx, 2Rx), BPSK'最大比组合(1Tx, 4Rx), BPSK'...“理论四阶分集,QPSK”);%执行曲线拟合fitBER11 = berfit(EbNo, ber11);fitBER41 = berfit(EbNo(1:9), ber41(1:9));fitBER22 = berfit(EbNo(1:8), ber22(1:8));fitBER14 = berfit(EbNo(1:7), ber14(1:7));semilogy (ax, EbNo, fitBER11“r”fitBER41 EbNo (1:9),“米”...fitBER22 EbNo (1:8),“c”fitBER14 EbNo (1:7),“k”);(ax,“关闭”);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。

正如预期的那样,4x1、2x2和1x4系统的误码率曲线的相似斜率表明每个系统的分集顺序相同。

还要观察4x1系统的3db损失,这可以归因于三个系统的总传输功率假设相同。如果我们对发射功率进行校准,使这三个系统的接收功率相同,那么这三个系统的性能将完全相同。同样,当总功率经过分集分支归一化时,理论性能与4x1系统的仿真性能相匹配。

附录

这个例子使用了以下helper函数:

参考文献

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

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

  3. A.F. Naguib, V. Tarokh, N. Seshadri和A.R. Calderbank,“高数据速率无线通信的空时码:不匹配分析”,IEEE国际通信会议论文集,309-313页,1997年6月。

  4. V. Tarokh, H. Jafarkhami和A.R. Calderbank,“用于无线通信的空时分组码:性能结果”,《IEEE通信选定领域杂志》,第17卷第3期,1999年3月,第451-460页。

Baidu
map