LTE 调制与解调——QPSK,16QAM,64QAM误码率比较

原文 Understanding LTE with MATLAB  ,作者Houman Zarrinkoub,本文是对于该书的翻译,书中的专业性词汇给出了英文原文,图和表的排版都是参考原文,翻译不准确的地方请读者多多包涵。

本文仅限于个人学习,研究,交流,不得用于其他商业用途!

 

 

第 4 章 调制与编码

 

LTE(长期演进)下行链路PHY(物理层)链可以看作应用于下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)的处理的组合。DLSCH处理也称为下行链路传输信道(TrCH)处理。它包括循环冗余校验(CRC)码附加、数据子块处理、基于turbo编码器的信道编码、速率匹配、混合自动重复请求(HARQ)处理和码字重构等步骤。码字是PDSCH处理的输入,包括加扰、调制、多天线多输入多输出(MIMO)处理、时频资源映射和正交频分复用(OFDM)传输。我们将这个两步DLSCH和PDCH处理链的组件细分为三个部分,将在接下来的三章中讨论。

 

在本章中,我们研究LTE标准中使用的调制和编码方案。这些包括所有组合的DLSCH和PDSCH处理步骤,不包括MIMO和OFDM操作。接下来的两章将讨论OFDM和MIMO。首先,我们将研究PDSCH处理中的耦合操作,包括加扰和调制。然后我们将研究TrCH处理,包括一系列操作,这些操作将逻辑信道和用户比特有效负载映射到码字,这些码字被传递到共享物理信道。

 

我们将创建Matlab®程序,在发射机和接收机中完全指定TrCH处理。我们将使用MATLAB函数研究不同调制方案和不同编码速率对加性高斯白噪声(AWGN)信道模型误码率(BER)性能的影响。这些操作完全指定如何处理用户数据位,以产生用于后续MIMO和OFDM功能块传输的输入符号。MIMO和OFDM的细节在接下来的两章中被研究。

 

4.1 LTE调制方案

LTE标准中使用的调制方案包括QPSK(正交相移键控)、16QAM(正交幅度调制)和64QAM。图4.1显示了这三种调制方案的星座图。


在QPSK调制的情况下,每个调制符号可以具有四个不同值中的一个,这些值被映射到星座图中的四个不同位置。QPSK需要2位来编码它的四个不同的调制符号中的每一个。16QAM调制涉及使用16个不同的信令选择,因此利用4比特信息对每个调制符号进行编码。64QAM调制涉及64个不同的可能信令值,因此需要6位来表示单个调制符号。

多个调制方案的可用性有助于实现基于信道条件的自适应调制。当无线电链路相对干净——即,信噪比(SNR)相对高——我们可以使用密集星座的调制方案,例如64QAM。在这种情况下,发送单个码元导致6比特的传输,因此可以增加吞吐量。然而,随着信道变得更加嘈杂,我们应该使用具有更多码间分离的调制方案,例如QPSK。这又将减少每个样本的位数,并降低吞吐量。

 

在LTE的调制映射,它指定如何调制符号位序列分配到每一个这样的表,如表4.1和4.2的QPSK和16QAM所示。64QAM调制映射表尺寸过大,可以参考文献[1]。

我们注意到位(bit)到符号(symbols)的映射既不是基于典型的二进制,也不是基于灰阶编码(graycoded)方法。 LTE 定义使用了一种星座映射的方式。LTE使用同样的方式定义了的调制符号,这种方式平均信号功率是一个统一的标准。

 

4.1.1 MATLAB 案例

模拟LTE下行链路的第一步,我们从LTE调制方式开始。如下的两个MATLAB算法显示了LTE的调制和解调算法,在此我们调用了系统工具箱。

 1function y = Modulator( u,Mode )
 2%% Initialization
 3persistent QPSK QAM16 QAM64
 4if isempty(QPSK)
 5    QPSK = comm.PSKModulator(4,'BitInput',true,'PhaseOffset',pi/4,...
 6        'SymbolMapping','Custom','CustomSymbolMapping',[0 2 3 1]);
 7
 8    QAM16 = comm.RectangularQAMModulator(16, 'BitInput',true,...
 9        'NormalizationMethod','Average power', 'SymbolMapping',...
10        'Custom','CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7]);
11
12    QAM64 = comm.RectangularQAMModulator(64, 'BitInput',true,...
13        'NormalizationMethod','Average power', 'SymbolMapping',...
14        'Custom', 'CustomSymbolMapping', [47 46 42 43 59 58 62 63 45 44 40 ...
15        41 57 56 60 61 37 36 32 33 49 48 52 53 39 38 34 35 51 50 54 55 7 ...
16        6 2 3 19 18 22 23 5 4 0 1 17 16 20 21 13 12 8 9 25 24 28 29 15 14 ...
17        10 11 27 26 30 31]); 
18end
19
20%% Processing
21switch Mode
22    case 1
23        y = step(QPSK,u);
24    case 2
25        y = step(QAM16,u);
26    case 3
27        y = step(QAM64,u);    
28end

 

调制器函数具有两个输入参数:输入比特流(U)和表示调制模式(MODE)的参数。作为其输出,函数计算调制符号。该函数实现了LTE标准中使用的三种不同类型的调制器。例如,在QPSK的情况下,我们使用一个COM.PSK调制器系统对象,并将其调制顺序设置为4。类似地,对于16QAM和64QAM,我们使用comm.RectangulatQAMModulator() 系统对象,并将它们的调制顺序分别设置为16和64。根据调制模式的值,我们处理输入比特以产生调制符号作为输出。

 

为了确保系统对象精确地匹配LTE标准所指定的内容,我们可以设置其他属性:

 

 

  • 1.我们可以设置 BitInput=true,这意味着调制器输入被解释为比特值的向量。例如,在QPSK调制器的情况下,因为每2位被映射到一个调制符号,所以输出向量的大小是输入向量的一半。

  • 2.我们可以设置PasieOffice=PI/4。这意味着调制符号对应于具有单位长度的复平面中的四个点,其角度从以下集合中选择: [3?/4, ?/4, −?/4, −3?/4]。

  • 3.使用CustomSymbolMapping属性,可以确保LTE中指定的位模式产生相应的输出符号。

 

本文所涉及的接收机默认执行发射器的逆操作,这些提出的逆运算表示恢复传输比特的估计。虽然标准中没有规定,但是为了评估系统的精度和性能,有必要包括这些接收机侧的逆操作。
 

 

 

作为解调的逆操作调制,我们现在提出一些典型的解调方法。在解调器功能中,我们使用LTE中使用的相同的三种调制类型,并且根据调制模式,我们处理输入符号以生成解调输出。如前一节所讨论的,解调可以基于硬判决译码或软判决译码。在硬判决译码中,解调器的输入符号被映射到估计比特,而在软判决译码中,输出是对数似然比(LLR)的向量。

 

解调函数 DemodulatorHard.m 采用硬判决译码的解调实现。该函数将接收到的调制符号(U)和调制模式(模式)作为输入, 函数输出包括解调比特。

 1function y = DemodulatorHard(u, Mode) 
 2%% Initialization 
 3persistent QPSK QAM16 QAM64 
 4if isempty(QPSK)
 5    QPSK = comm.PSKDemodulator( 'ModulationOrder', 4, 'BitOutput', true, ... 
 6        'PhaseOffset', pi/4, 'SymbolMapping', 'Custom', 'CustomSymbolMapping', [0 2 3 1]);
 7
 8    QAM16 = comm.RectangularQAMDemodulator( 'ModulationOrder', 16, ...
 9        'BitOutput', true, 'NormalizationMethod', 'Average power', ...
10        'SymbolMapping', 'Custom', 'CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7]);
11
12    QAM64 = comm.RectangularQAMDemodulator('ModulationOrder', 64, ... 
13        'BitOutput', true, 'NormalizationMethod', 'Average power', 'SymbolMapping', 'Custom', ...
14        'CustomSymbolMapping', [47 46 42 43 59 58 62 63 45 44 40 41 57 56 60 61 37 ...
15        36 32 33 49 48 52 53 39 38 34 35 51 50 54 55 7 6 2 3 ... 
16        19 18 22 23 5 4 0 1 17 16 20 21 13 12 8 9 25 24 28 29 ...
17        15 14 10 11 27 26 30 31]); 
18end
19%% Processing
20switch Mode 
21    case 1
22        y = QPSK.step(u);
23    case 2
24        y = QAM16.step(u); 
25    case 3
26        y = QAM64.step(u); 
27    otherwise
28        error('Invalid Modulation Mode. Use {1,2, or 3}'); 
29end
30end

 

函数 DemodulatorSoft.m 采用软判决译码进行解调。该函数有三个输入参数:接收的调制符号流(u)、当前子帧中噪声方差的估计(NoiseVar)和表示调制模式的参数。作为其输出,函数计算LLR。检查函数之间的差异,我们可以看到,通过在解调器系统对象中设置几个属性,包括名为DecisionMethod的属性,我们可以实现软判决解调。

 1function y = DemodulatorSoft(u, Mode,NoiseVar) 
 2%% Initialization 
 3persistent QPSK QAM16 QAM64 
 4if isempty(QPSK)
 5    QPSK = comm.PSKDemodulator( 'ModulationOrder', 4, 'BitOutput', true, ... 
 6        'PhaseOffset', pi/4, 'SymbolMapping', 'Custom', 'CustomSymbolMapping', [0 2 3 1],...
 7        'DecisionMethod','Approximate log-likelihood ratio','VarianceSource','Input port');
 8
 9    QAM16 = comm.RectangularQAMDemodulator( 'ModulationOrder', 16, ...
10        'BitOutput', true, 'NormalizationMethod', 'Average power', ...
11        'SymbolMapping', 'Custom', 'CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7],...
12        'DecisionMethod','Approximate log-likelihood ratio','VarianceSource','Input port');
13
14    QAM64 = comm.RectangularQAMDemodulator('ModulationOrder', 64, ... 
15        'BitOutput', true, 'NormalizationMethod', 'Average power', 'SymbolMapping', 'Custom', ...
16        'CustomSymbolMapping', [47 46 42 43 59 58 62 63 45 44 40 41 57 56 60 61 37 ...
17        36 32 33 49 48 52 53 39 38 34 35 51 50 54 55 7 6 2 3 ... 
18        19 18 22 23 5 4 0 1 17 16 20 21 13 12 8 9 25 24 28 29 ...
19        15 14 10 11 27 26 30 31],'DecisionMethod','Approximate log-likelihood ratio',...
20        'VarianceSource','Input port'); 
21end
22%% Processing
23switch Mode 
24    case 1
25        y = step(QPSK,u,NoiseVar);
26    case 2
27        y = step(QAM16,u,NoiseVar); 
28    case 3
29        y = step(QAM64,u,NoiseVar); 
30    otherwise
31        error('Invalid Modulation Mode. Use {1,2, or 3}'); 
32end
33end

 

4.1.2 误码率BER 测量

LTE中使用多种调制方法的动机是在给定的传输带宽内提供更高的数据速率。带宽利用率以 bit/s/Hz 表示。与QPSK相比,16QAM和64 QAM的带宽利用率分别提高了2倍和3倍。然而,高阶调制方案对信道噪声的鲁棒性降低。与QPSK相比,对于给定的比特错误概率,诸如16QAM或64QAM之类的调制方案在接收机处要求更高的Eb/N0值。

下面的MATLAB函数说明了一系列函数中的第一个,这些函数最终将在MATLAB中实现用于LTE PHY建模的现实收发器。我们从这个简单的系统开始,这个系统由调制器、解调器和AWGN信道组成,并且根据Eb/N0比计算BER。通过以一系列Eb/N0值运行该函数,并改变ModulationMode参数,我们可以可视化调制顺序和对信道噪声的鲁棒性之间的关系。

 1function [ ber,numBits ] = chap4_ex01( EbNo,maxNumErrs,maxNumBits )
 2%% Constants
 3FRM = 2400; % Size of bit frame
 4% ModulationMode = 1;
 5% ModulationMode = 2;
 6ModulationMode = 3; %QAM64
 7k = 2* ModulationMode; % Number of bits per modulation symbol
 8snr = EbNo +10*log10(k);
 9%% Processing loop
10numErrs = 0;
11numBits = 0;
12while((numErrs < maxNumErrs)&&(numBits<maxNumBits))
13% Transmitter
14u = randi([0 1],FRM,1);
15t0 = Modulator(u,ModulationMode);
16% Channel 
17c0 = AWGNChannel(t0,snr);
18% Receiver
19r0 = DemodulatorHard(c0,ModulationMode);
20y = r0(1:FRM);
21% Measurements
22numErrs = numErrs + sum(y~=u);    
23numBits = numBits + FRM;
24end
25ber = numErrs/numBits;
26end

第一函数chap4_ex01.m使用基于硬判决解调的解调器,而第二函数chap4_ex02.m 基于软判决解码。在这两个函数中常见的元素,代表了一系列函数的模式,如下:

  • 签名和输入输出参数;

  • 用户有效载荷的大小(对PHY的输入)(用表示一帧数据中输入比特数的参数(FRM)指定);

  • 停止标准;

  • 发射机、信道模型、接收机和测量部分;

  • 在模拟结束时计算BER。

 

为了达到一定的传输质量——即,对于给定的误码率——当我们从QPSK移动到16QAM和64QAM调制时,所需的E/N值逐渐变高。这表明,诸如QPSK之类的低阶调制方案被用于具有高度退化的信道中,以便以较低数据速率运行的成本降低出错的概率。更高阶的调制方案如64 QAM被应用在更干净的信道中,并且可以提供数据速率的提升。通过运行具有不同E/N值和不同调制模式参数的chap4_ex01.m函数,获得了图4.2中捕获的结果。结果比较了LTE标准中使用的调制方案的理论和仿真BER曲线。

图4.2 不同调制方式下,误码率BER 与Eb/No的关系曲线

 

在第7章中,我们将讨论各种可用于调度器的方法,用于基于信道条件在每个调度间隔中改变调制方案的选择。到目前为止,我们只讨论了调制方案,并没有添加编码和扰码到混合。其次,介绍了比特级置乱技术及其在MATLAB中的实现。接着介绍了基于turbo编码的纠错编码以及CRC检测处理的纠错机制。

 

 


 

未完待续

2018/11/21

点击关注了解更多精彩内容!!

 

 

 

 

 

 

  • 15
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值